Skip to main content
QUICK REVIEW

[논문 리뷰] An Optimal Algorithm for the Separating Common Tangents of two Polygons

Mikkel Abrahamsen|arXiv (Cornell University)|2015. 11. 12.
Computational Geometry and Mesh Generation참고 문헌 14인용 수 4
한 줄 요약

이 논문은 정점의 읽기 전용 배열로 주어진 두 간단한 다각형의 분리 공통 탄젠트를 선형 시간, 상수 워크스페이스로 계산하는 알고리즘을 제시한다. 알고리즘은 두 포인터를 사용한 순회를 통해 분리된 볼록껍데기를 탐지하고, 존재할 경우 분리 탄젠트를 반환하며, 이러한 조건 하에서 이 문제에 대해 최적의 해결책을 제공한다. 또한 볼록껍데기가 분리되어 있을 경우 외부 공통 탄젠트로도 확장된다.

ABSTRACT

We describe an algorithm for computing the separating common tangents of two simple polygons using linear time and only constant workspace. A tangent of a polygon is a line touching the polygon such that all of the polygon lies to the same side of the line. A separating common tangent of two polygons is a tangent of both polygons where the polygons are lying on different sides of the tangent. Each polygon is given as a read-only array of its corners. If a separating common tangent does not exist, the algorithm reports that. Otherwise, two corners defining a separating common tangent are returned. The algorithm is simple and implies an optimal algorithm for deciding if the convex hulls of two polygons are disjoint or not. This was not known to be possible in linear time and constant workspace prior to this paper. An outer common tangent is a tangent of both polygons where the polygons are on the same side of the tangent. In the case where the convex hulls of the polygons are disjoint, we give an algorithm for computing the outer common tangents in linear time using constant workspace.

연구 동기 및 목표

  • 읽기 전용 배열로 주어진 두 간단한 다각형의 분리 공통 탄젠트를 선형 시간 내에 상수 워크스페이스만을 사용하여 계산하는 알고리즘을 개발하는 것.
  • 두 다각형의 볼록껍데기가 분리되어 있는지 판단하는 오랫동안 열려 있던 문제를 O(log n) 비트의 메모리만을 사용하여 해결하는 것.
  • 볼록껍데기가 분리되어 있을 경우 외부 공통 탄젠트를 계산하기 위해 접근법을 확장하여, 선형 시간과 상수 워크스페이스를 유지하는 것.
  • 이전 버전에서의 결함을 보완하여 분리 탄젠트 알고리즘의 정확성에 대한 보다 단순화된 정확한 증명을 제공하는 것.

제안 방법

  • 알고리즘은 두 개의 병렬 두 포인터 (s0, s1)와 (t0, t1)를 사용하여 두 다각형의 정점들을 동기적으로 순회한다.
  • 각 반복 단계에서, (p0[s0], p1[s1])로 정의된 일시적 선분에 대해 다음 정점의 방향을 교차곱 기반의 T(a,b,c) 함수를 사용해 확인한다.
  • 만약 정점이 일시적 선분의 잘못된 쪽에 위치해 있다면, 알고리즘은 해당 s-포인터를 진행시키고 다른 다각형의 순회 포인터를 재설정하여 탄젠트 후보를 갱신한다.
  • 알고리즘은 일시적 선분이 분리 탄젠트 후보로 유효한 상태를 유지하는 인variants를 유지하며, 올바른 탄젠트가 발견되거나 분리성이 배제될 때까지 종료되지 않는다.
  • 외부 공통 탄젠트의 경우, 유사한 두 포인터 접근법을 사용하지만, 두 다각형이 탄젠트의 같은 쪽에 위치하도록 보장하기 위해 종료 조건과 갱신 조건을 다르게 설정한다.
  • 정확성은 기하학적 인variants와 볼록껍데기 성질에 기반하며, 특히 분리 탄젠트가 존재하는 것은 볼록껍데기가 분리되어 있을 때에만 성립한다는 점에 초점된다.

실험 결과

연구 질문

  • RQ1읽기 전용 배열로 주어진 두 간단한 다각형의 분리 공통 탄젠트 문제를 O(log n) 비트의 워크스페이스만을 사용하여 선형 시간 내에 해결할 수 있는가?
  • RQ2O(log n) 비트의 메모리만을 사용하여 두 다각형의 볼록껍데기가 분리되어 있는지 판단하는 것이 가능한가?
  • RQ3두 포인터 알고리즘의 정확성을 보장하는 최소한의 기하학적 인variants 집합은 무엇인가?
  • RQ4볼록껍데기가 분리되어 있을 경우, 동일한 자원 제약 조건 하에서 외부 공통 탄젠트를 계산하기 위해 알고리즘을 어떻게 수정할 수 있는가?
  • RQ5알고리즘은 볼록껍데기가 겹치거나 내포되어 있을 경우에도 워크스페이스나 시간 복잡도를 증가시키지 않고 안정적으로 작동하도록 만들 수 있는가?

주요 결과

  • 알고리즘은 O(n0 + n1) 시간 내에 오직 O(log n) 비트의 워크스페이스만을 사용하여 두 간단한 다각형의 분리 공통 탄젠트를 정확히 계산한다.
  • 이 알고리즘은 이전까지 이러한 제약 조건 하에서 해결되지 않았던, 두 다각형의 볼록껍데기가 분리되어 있는지 판단하는 문제에 대해 최초의 최적 해결책을 제공한다.
  • 알고리즘이 분리 공통 탄젠트가 존재하지 않는 경우를 정확히 식별하며, 이는 볼록껍데기가 겹치거나 내포되어 있을 때에 정확히 해당된다.
  • 외부 공통 탄젠트의 경우, 볼록껍데기가 분리되어 있을 때 선형 시간과 상수 워크스페이스로 실행되며, 접근법의 적용 범위를 확장한다.
  • 알고리즘의 정확성은 기하학적 인variants와 볼록껍데기 성질에 기반하며, 초안 버전 대비 단순화된 증명을 제공한다.
  • 이 방법은 강건하고 효율적이며, 볼록껍데기를 명시적으로 계산할 필요 없이 O(n) 추가 공간을 절약한다.

더 나은 연구,지금 바로 시작하세요

논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.

카드 등록 없음 · 무료 플랜 제공

이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.