Geometric Approximation Algorithms(Sariel Har-Peled 저)의 1장 내용입니다.

Preliminaries

  • 특정 width 을 가지는 Grid는 아래 함수로 정의
  • 은 평면 공간을 정사각형 영역으로 분할하는데, 각 영역을 cell이라 부른다.

  • 개의 연속한 grid cell을 grid cluster라고 정의

  • 각 cell은 idx를 가진다()

  • 정점 에 대해

  • 점 집합 에 대해 양방향 접근 가능

    • 주어진 점 가 소속된 cell 계산
    • 특정 grid에 소속된 점 enumerate
    • perfect hashing 가정

최단거리 쌍 찾기(Closest Pair)

Closest Pair Example

그림에서 빨간색 점 두개가 최단거리를 가짐.

    • n개의 점 중 거리가 가장 짧은 두 개의 점을 찾기
    • naive한 접근 : 반복문 - for p in P, q in P -
  • 결정 문제 풀기
    • Grid 쓰면 선형 시간 안에 풀 수 있어
$\mathcal{CP}(P) \le r$ 여부 계산하는데 선형 시간 소요
$G_r(P)$ 계산하는 데 O(n)이 걸린다. 각 cell을 3x3 크기의 정사각형들로 분할하자. 2개 이상의 점이 들어가는 사각형이 있으면 True를 리턴하고 종료. ($d(x, y) \le \sqrt{2}r / 3$)
모든 cell에 대해 위를 실행하고 종료 안 되었다면 각 cell에 많아야 9개의 정점이 있다는 이야기가 됨. 인접한 cell의 정점들과 거리를 측정. 기껏해야 $8 \times 9$개의 정점들과 거리 측정이므로 cell당 최대 $9 \times (8 \times 9) = 648$번의 거리 계산 여기서도 거리가 r 미만인 정점 쌍을 발견시 즉시 리턴 cell의 갯수가 $O(n)$이므로 총 연산시간도 linear.
Correctness: cell 내부 및 인접 탐색을 통해 r보다 작은 거리의 정점을 탐색하는 방식이다. r보다 작은 거리의 두 정점이 반드시 같은 cell에 있거나 인접한 cell에 소속되어 있으므로 OK
  • 결정 문제에서 계산 문제로 올리기
    • 정점 시퀀스
    • 부분 문제의 정답
    • 당연히
    • 구하기
      • grid 삽입하고, cell 내부 및 주변 정점들과 거리 비교 -
      • 이면 자료구조 유지 =
      • 이면 자료구조 다시 만들어야 =
    • 번 줄어든다면 총 시간 소요 예상
    • Brute-Force보다 느린거 아니냐
    • 근데 아님 ㅋ
$\mathcal{CP}(P)$를 평균 선형 시간(Expected linear time) 안에 구할 수 있다.
집합 $P : \| P \| \ge 3$의 무작위 순열을 $\langle p_1, p_2, \cdots, p_n \rangle$이라 하자. $r_2 = \| p_1 - p_2 \|$을 계산하고, 이후 앞의 incr construction을 사용하자. 실행 시간을 계산하기 위해 확률 변수 $X_i$를 $r_i \neq r_{i - 1}$이면 1이고 같으면 0이라 정의하자. 이때 실행시간은 아래 변수 $R$에 비례할 것이다.

그리고 의 기댓값은

고정된 에 대해 가 최단거리 쌍에 포함될 확률은 이다. 따라서 이고, 이를 수식에 대입하면

이므로 기대 실행 시간은 입력에 선형 비례함.

  • 이야깃거리
    • grid update는 평균적으로 회 일어남
      • 점의 갯수가 많아질수록 빈도 하락
    • : 에다가 정사영
      • : 를 만족하는 존재여부
    • Comparison based에서 Element Uniqueness(distinctness) 문제는
    • hash, 정수화, 랜덤화를 통한 계산 능력 상승

k-덮개 원반(-Enclosing Disk) 문제의 느린 2-근사 알고리즘

  • : 의 정점 중 개를 포함하는 가장 작은 반지름의 원

  • : 의 반지름

  • 개의 horizontal line 을 위에서 아래로 그리되, 인접한 직선 사이 공간에는 개 이하의 정점만이 있도록 분포

  • 개의 vertical line 을 비슷하게 그림

  • 선형 시간 안에 median 찾는 기법을 사용하면 위 개의 직선을 찾는 데 시간 소요

  • 에서 유도된 non-uniform grid

  • 원반 의 중심을 라고 부르고, 가 속한 cell을 라고 하자.

  • 그러면 원반이 네 귀퉁이 중 하나 이상을 포함하고 있어야 한다.

    • 만약에 안 그렇다면 원이 포함할 수 있는 정점 수
  • optimal case의 원반을 포함하는 원반 구하기

    • 원반의 중심을 위에서 찾는다 -
    • 최악의 경우 원반을 포함하는 크기의 반지름을 잡는다
    • 이 때 2근사가 됨(pf. 현재 반지름 \le 원래 반원 지름)
    • 정점을 고정한 다음에는 n개의 정점과 거리 계산, k번째로 가까운 원소까지 거리로 변경 - (quick sort 변형)
$O(n (n/k)^2)$ 시간 안에 $P$의 정점을 $k$개 포함하는 반원 $D$를 찾을 수 있고, $D$의 반지름은 $D_\text{opt}(P, k)$의 두배 이하이다.
  • 이야깃거리
    • 해의 후보가 - 2개의 정점(가로축, 세로축 pivot), 축의 교차점에서 번째로 가까운 점
    • 이면 실행시간이 선형에 근접
      • 를 고정하고 을 줄여도 되겠네?
    • 일 때의 문제를 minimum enclosing circle이라 부름
      • 정확한(exact = 1-approx) 선형시간 알고리즘 존재
      • -approx는 걍 bounding rectangle을 포함하는 가장 작은 원 구하면 충분

k-덮개 원반(-Enclosing Disk) 문제의 선형 시간 2-근사 알고리즘(draft)

  • idea : n개의 정점 집합을 타노스 k개 이하로 줄어들 때까지 반복()
  • 에 대해 위의 느린 알고리즘 적용 - , 크기의 grid 만들어 정점 관리
  • 에서 추가된 정점을 grid에 추가
    • cell 안에 정점이 개를 초과하면 그 정점 수에 대해 알고리즘 적용
  • 알고리즘의 업데이트 기대 횟수가 , 정점 수가 적은 초기에 업데이트 빈번히 일어나는 특성
  • 기대 실행시간