Haitao 선생님께서 키 문제를 풀어버려서 contribution이 날아갔다.

Problem

Polygonal domain 와, free space 위의 정점 가 주어졌다고 가정하자. shortest path to a segment query(SPSQ)는 free space 위의 간선 이 주어지면 에서 까지의 최단 거리를 반환하는 문제이다. 짧게 쓰면 아래와 같다.

  • 목표 : preprocessing, storage & queries

Strategy

1. Extended Corridor & Extended Ocean

Chen, Wang의 Extended Corridor structure를 구성한다. [Chen, 2015]

  • Polygonal domain triangulation -
  • 개의 (open, closed) hourglasses 계산하는 데 (graph reduction, shortest path inside a simple polygon)
  • 개의 bay, canal (전체 복잡도 )
  • Ocean(funnel, open hrgls, jctn tri) 계산
  • Ocean은 개의 convex polygonal chain으로 구성

시간 안에 크기의 자료구조로 만들 수 있다.

  • 여기서 ray shooting 자료구조도 미리 만들어놓을 수 있다.
    • 근데 그러면 polylog 시간복잡도 계산이 필요하고, Agarwal 써도 무방함

2. Pseudo-triangular Decomposition

Quickest Visibility query를 위한 자료구조를 참고한다. [Wang, 2019]

  • 개의 경로로 polygonal domain을 분할하는 게 핵심
  • Shortest path map(SPM) : 단일 시작점 에 대해 구성, 최단경로 길이 query 및 backtracing 가능
    • shortest path의 predecessor - partition
    • 개의 bisection endpoint()와 triple point()
  • Ocean에서 위 정점들까지의 경로들로 분할하면
    • 모든 파티션이 pseudo-triangle 꼴(또는 2개 연접)

3. Cell Ordering and Stabbing Query

Free space를 개의 pseudo-triangle로 분할하면 몇 가지 성질을 만족함.

  • 각 cell 안에 있는 정점 또는 선분까지의 거리는 둘 이하의 cell root로부터의 거리와 일치함
  • 한 선분과 cell의 교집합은 연결되어 있음(외부 공간으로 단절되지 않음)
  • 모든 pseudo-triangle의 복잡도 합은
  • 등등

Ocean의 obstacle 에 대해, 각 cell의 상대적인 거리를 매긴다. 도형에 접하는 반직선에 부딪히는 cell의 순서가 전체 순서에서 보존되도록 순서를 매길 수 있으며(Balanced tree), 각 obstacle마다 cell들의 순서를 주면 총 복잡도는 가 된다. ( preprocessing, storage)

접선의 자유도는 1()임. theta가 주어졌을 때, 해당 접선에 포함된 cell의 목록을 segment tree로 관리할 수 있다. 개의 cell 뭉텅이 tree가 주어지면, 각 뭉텅이의 convex hull로부터 거리 추정.

각 cell은 wavefront를 무더기로 가짐. 뭉텅이마다 convex hull 만들고 머시기 하고 있었는데 잘 기억이 안남.

4. Segment가 주어졌을 때

  • segment가 bay 또는 canal을 지나는지 먼저 파악한다.
    • 만약 지나간다면 simple polygon 문제이므로 쉽게 풀 수 있음
    • 최대 번 발생
  • 의 양 끝점을 이라 하자.
    • 만약 이 같은 cell 에 포함되어 있으면 안에 자명한 해를 얻는다.
  • 이 서로 다른 cell에 속하면
    • 우선 포함된 각 cell에서의 최단거리를 구한다.
    • 을 위, 아래로 평행이동하여 부딪히는 장애물의 index(), 접선이 되는지 여부를 확인한다.
    • 평행이동한 선분이 접선이 아닌 경우 있을 수 있다. 도형의 convexity를 이용해 직선 수직방향으로 최대한 이동한 후, feasibility(ray shooting)를 확인한다.

5. Segment Dragging in Polygonal Domain

Lemma. 선분 까지의 최단경로가 에 수직하게 인접하면, 이고, 는 각각 을 위, 아래로 적절히 최대한 평행이동한 선분을 의미한다.

이 포함된 과의 배치 여부에 따라 3가지 경우.

  1. 에 인접한 장애물과 부딪히는 경우

이 경우에는 인접한 장애물의 tangential로 바꿔서 처리해도 된다.

  1. 와 disjoint한 장애물과 접하는 경우

마찬가지로 해당 장애물의 tangential로 생각한 뒤 거리를 계산하면 된다.

  1. 와 disjoint한 장애물에 접하지 않고 부딪히는 경우

골치아파지는 경우긴 한데, 이런 조건을 만족하려면 이 평행이동하면서 pseuodtriangle의 gate를 지나가야 한다. Gate와 “먼저” 접하는 점 기준, 사다리꼴 영역의 emptiness에 대해 parametric search 사용

Rectangle intersection 참고.