내가 감독하는 학생들에게 다음 운동이 전달되었습니다.
평면에 점이 주어지면 , 모든 점 쌍 중 거리가 최소 인 한 쌍의 점을 찾는 알고리즘을 고안하십시오. 알고리즘은 시간에 실행되어야합니다 .o ( n 2 )
엔영형(엔2)
시간 의 작업을 해결하는 (상대적으로) 간단한 나누기 및 정복 알고리즘이 있습니다.
Θ(엔로그엔)질문 1 : 최악의 시간 에서 주어진 문제를 정확하게 해결하는 알고리즘이 있습니까?
영형(엔로그엔)이것이 가능할 것으로 의심되는 것은 몇 가지 이야기에서 본 기억 (결과는 감사합니다)입니다. 그것은 그하게 일정 수 이상의 라인을 따라 무언가 바와 어떤 점 주위면에 배치 될 수있는 점을 반경의 원 안에 와 관련된 두 지점 사이의 최소 거리 나는 이라고 생각 합니다. 점 은 중심에 가 있는 등변 육각형을 형성합니다 (극단 한 경우). p r ∈ R r c = 7 p
씨∈엔피
아르 자형∈아르 자형
아르 자형
씨=7
피
이 경우 다음 알고리즘은 단계로 문제를 해결해야 합니다.
엔fun mindist [] | p::[] = INFINITY
| mindist p1::p1::[] = dist(P[0], P[1])
| mindist p::r = let m = mindist(r) in
min(m, nextNeighbour(p, r, m))
end
점에서 단지 일정 수 있기 때문에 이것은 선형 시간 (주장)되어 있습니다 r
에는보다 더 멀리 떨어져있을 수있는 m
발 p
(문 위 가정); 새로운 최소값을 찾기 위해서는 이러한 점만 조사하면됩니다. 물론 캐치가 있습니다. 어떻게 구현합니까 nextNeighbour
(선형 시간의 전처리로)?
질문 2 : 점 과 점 의 집합을 보자 . 하자 로를P ∉ R m ∈ R
아르 자형피∉아르 자형
미디엄∈아르 자형
미디엄≤분{디나는에스티(피1,피2)∣피1,피2∈아르 자형}
과
아르 자형피,미디엄: ={피‘∣피‘∈아르 자형∧디나는에스티(피,피‘)≤미디엄}
.
이 유한 가정합니다 . in (amortised) 시간 에서 최소 거리로 을 찾을 수 있습니까? ( 조사 된 포인트 하나씩 추가하여 을 구성 한다고 가정 할 수 있습니다 .)
아르 자형피,미디엄피‘∈아르 자형피,미디엄
피
영형(1)
아르 자형
피
답변
대수적 결정 트리를 사용하는 것과 같은 표준 모델에서 시간 이내에 문제를 해결하는 것은 불가능합니다 . 이것은 Yao와 Ben-Or의 연구에서이 모델에서 입력 숫자 세트 가 모두 다른지 여부를 결정할 수 없음을 보여줍니다 ( http://people.bath.ac.uk/masnnv 참조) . /Teaching/AAlg11_8.pdf ). 문제가 발생하면 모두 실제 라인에 있다고 상상해보십시오. 두 점이 동일하면 출력이 거리가 0 인 두 점이되고 그렇지 않은 경우에는 문제 해결 방법으로도 DISTINCT NUMBERS 문제가 해결됩니다. 모든 포인트가 다르다고 가정 하려면 을 추가하십시오.
씨엔로그엔엔 나는ϵ
엑스나는
DISTINCT NUMBERS 문제의 입력,이 경우 출력이 최대 인 경우 숫자가 모두 고유하지는 않습니다. (어떤 두 가지 숫자의 차이가 어디 있는지이 경우 당신은 약속 버전을 사용할 필요가 있지만 적어도 ,하지만 난 같은 증거는 당신이 또한 필요 보여 작동 생각 이에 케이스.)
엔ϵ2엔ϵ
Ω(엔로그엔)
답변
Rabin에 의한 무작위 선형 예상 시간 알고리즘이 있습니다. Lipton의 블로그에서 Rabin Flips a Coin 을 참조하십시오 .
답변
질문 2를 이해하는 한, Rabin의 알고리즘은 그것에 대한 일종의 답변을 제공합니다. 각 시간 단계에서 데이터 구조는 셀 폭이 지금까지 본 점 쌍 사이의 가장 작은 거리보다 작은 격자를 √로 나눈 격자입니다. (셀에 단일 포인트 이상을 포함하지 않도록). 질문 2의 쿼리에 답하려면p를 그리드의 셀에매핑하고 그 주변의 일정한 수의 셀만 살펴보십시오. 알고리즘의 분석에 의해, 입력 포인트 세트가 랜덤 순서로 검사되는 경우, 그리드의 상각 업데이트 시간이새로운 포인트 당 예상O(1)보다 큽니다.
2피
영형(1)