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에는보다 더 멀리 떨어져있을 수있는 mp(문 위 가정); 새로운 최소값을 찾기 위해서는 이러한 점만 조사하면됩니다. 물론 캐치가 있습니다. 어떻게 구현합니까 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.