o (n log n)에서 가장 짧은 페어 와이즈 포인트 찾기?


11

내가 감독하는 학생들에게 다음 운동이 전달되었습니다.

평면에 점이 주어지면 , 모든 점 쌍 중 거리가 최소 인 한 쌍의 점을 찾는 알고리즘을 고안하십시오. 알고리즘은 시간에 실행되어야합니다 .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)아르 자형피


2
키워드로 "가장 가까운 짝"을 사용하여 검색 할 것을 제안합니다.
— 오카모토 요시오

이것은 지금까지 표준적인 내용입니다. 여기에서 처음 두 장을보십시오 : goo.gl/pLiEO
— Har-Peled

추신. 예상 시간을 원하면 최소 거리가 포함 된 들로네 삼각 분할 (Delaunay Triangulation)을 계산할 수도 있습니다.
— domotorp

질문 1 다음에 "반지름 r의 원 안에있는 일부 점 p 주위의 평면에 일정한 수의 점을 배열 할 수 있으며, r은 p와 다른 점 사이의 최소 거리입니다." 이것은 실제로 사실이 아닙니다 : 반경 r의 원에서 임의의 수의 점을 취할 수 있습니다. r이 두 점 사이의 최소 거리 인 경우 진술은 사실이며,이 경우 증명은 매우 간단합니다.
— domotorp

첫 번째 질문은 이미 지적했듯이 교과서에 관한 것입니다. 확실히 연구 수준은 아닙니다. 나는 두 번째 질문을 이해하지 못합니다 : 어떤 에 대해, 당신이 요구 하는 는 존재하지 않거나 에 가장 가까운 이웃 입니다. 질문 1과 어떻게 다른가요? 무엇을 상각하고 있습니까 (즉, 이것이 데이터 구조 질문 인 경우 업데이트와 쿼리는 무엇입니까)? 미디엄피'피아르 자형
— Sasho Nikolov

답변:


12

대수적 결정 트리를 사용하는 것과 같은 표준 모델에서 시간 이내에 문제를 해결하는 것은 불가능합니다 . 이것은 Yao와 Ben-Or의 연구에서이 모델에서 입력 숫자 세트 가 모두 다른지 여부를 결정할 수 없음을 보여줍니다 ( http://people.bath.ac.uk/masnnv 참조) . /Teaching/AAlg11_8.pdf ). 문제가 발생하면 모두 실제 라인에 있다고 상상해보십시오. 두 점이 동일하면 출력이 거리가 0 인 두 점이되고 그렇지 않은 경우에는 문제 해결 방법으로도 DISTINCT NUMBERS 문제가 해결됩니다. 모든 포인트가 다르다고 가정 하려면 을 추가하십시오.씨엔로그⁡엔엔나는ϵ엑스나는DISTINCT NUMBERS 문제의 입력,이 경우 출력이 최대 인 경우 숫자가 모두 고유하지는 않습니다. (어떤 두 가지 숫자의 차이가 어디 있는지이 경우 당신은 약속 버전을 사용할 필요가 있지만 적어도 ,하지만 난 같은 증거는 당신이 또한 필요 보여 작동 생각 이에 케이스.)엔ϵ2엔ϵΩ(엔로그⁡엔)


감사합니다. 그것은 질문 2 (음수)에도 대답합니다.
— Raphael

언급 한 문제는 분명히 요소 구별 문제 라고도 합니다.
— Raphael

@Sariel Har-Peled의 참조 ( goo.gl/pLiEO )는 가장 가까운 쌍을 찾기위한 실용적인 선형 시간 알고리즘을 제시합니다. 이 문서는이 주장을 직접 다루고 있으며 알고리즘이 더 강력한 계산 모델을 사용하기 때문에 적용되지 않는다고 설명합니다.
— kevin cline

1
예, 그러나이 질문은 특히 최악의 경우 실행 시간을 요구했습니다. 그러나 나는 나의 모든 관찰이 이미 Sariel의 논문에 나타나는 것에 동의합니다.
— domotorp


0

질문 2를 이해하는 한, Rabin의 알고리즘은 그것에 대한 일종의 답변을 제공합니다. 각 시간 단계에서 데이터 구조는 셀 폭이 지금까지 본 점 쌍 사이의 가장 작은 거리보다 작은 격자를 √로 나눈 격자입니다. (셀에 단일 포인트 이상을 포함하지 않도록). 질문 2의 쿼리에 답하려면p를 그리드의 셀에매핑하고 그 주변의 일정한 수의 셀만 살펴보십시오. 알고리즘의 분석에 의해, 입력 포인트 세트가 랜덤 순서로 검사되는 경우, 그리드의 상각 업데이트 시간이새로운 포인트 당 예상O(1)보다 큽니다.2피영형(1)


BTW Lipton이 설명하는 알고리즘 버전이 아니라 첫 번째 주석 (및 Kleinberg and Tardos book)에 설명되어 있습니다.
— 사쇼 니콜 로프

기대할 때만 domotorps answer를 참조하십시오.
— Raphael

결정적 알고리즘으로 자신을 제한하려는 곳은 없습니다. 라빈의 알고리즘은 결정 트리의 하한을 돌고 있기 때문에 정확하게 흥미 롭습니다 (이는 비교 정렬 대 정수 정렬 알고리즘의 하한과 유사합니다). BTW, 아마 더 라빈가 사용하는 액세스 그리드를 사용 하한, 즉 해싱 트릭 주변을 둘러 것을이
— Sasho 니콜 로프

4
"Rabin이 사용하는 것 이상": 실수 입력을 정수로 반올림하는 기능. 이 점에 매우 신중해야합니다. 표준 산술 연산과 실수에 대한 반올림을 수행 할 수있는 계산 모델을 모두 연산 당 일정한 시간으로 설정하면 다항식 시간에 PSPACE 완료 문제를 해결할 수 있습니다 이 모델에서. 그러나 라빈은 입력 숫자 만 반올림하고 (다른 반복에서 다른 수준의 정밀도로),이 외접 반올림 형식은 문제가되지 않습니다.
— David Eppstein

@SashoNikolov 나는 o ( n log n ) 에서 최악의 시간을 찾고 있었기 때문에 질문 2에서 최악의 경우 O ( 1 ) 를 찾고있었습니다 . 예상 시간과 상각 시간을 결합하면 어떻게 될지 잘 모르겠습니다. 영형(엔로그⁡엔) 영형(1)
— Raphael
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.