2D에서 두 세트 사이의 가장 가까운 점 쌍


11

2 차원 평면에 두 개의 세트 점이 있습니다. I 포인트의 가장 가까운 쌍 찾을 , t를 하도록 S S , t T 와, 상기 유클리드 거리 , t는 가능한 한 적다. 이것을 얼마나 효율적으로 할 수 있습니까? O ( n log n ) 시간 내에 수행 할 수 있습니다 . 여기서 n = | S | + | T | ?S,Ts,tsStTs,tO(nlogn)n=|S|+|T|

나는 하나의 세트가 주어진 경우 알아 , 다음 포인트의 가장 가까운 쌍을 찾을 가능성 , 'S 에서 O ( N 로그 N ) 시간을 사용하여 표준 분할 정복 알고리즘을 . 그러나 S 또는 T 내의 가장 가까운 두 지점 사이의 거리와 해당 세트에서 가장 가까운 두 지점 사이의 거리 사이에 연결이 없기 때문에 해당 알고리즘은 두 세트의 경우 일반화되지 않는 것 같습니다 .Ss,sSO(nlogn)ST

집합 k- d 트리에 저장 한 다음 가장 가까운 이웃 쿼리를 사용하여 각 s S 에 대해 T 에서 s 에 가장 가까운 점을 찾습니다 . 그러나이 경우 최악의 실행 시간은 O ( n 2 ) 시간 만큼 나쁠 수 있습니다 . 의 포인트 경우 말하는 결과가 있습니다 T는 무작위 후, 분산되어 각 쿼리의 예상 실행 시간이 O ( 로그 N ) 우리가 예상 실행 시간과 알고리즘을 얻을 것, 그래서 O를 ( N 로그 , n은 )TksSTsO(n2)TO(logn)O(nlogn) 점이 무작위로 분포된다는 보장을 받았지만 임의의 점 모음에서 작동하는 알고리즘을 찾고 있습니다 (무작위로 분포되지는 않음).

동기 부여 : 이 다른 질문에 효율적인 알고리즘이 유용 할 것 입니다.

답변:


10

예, 시간 이 될 수 있습니다 . T에 대한 보로 노이 다이어그램을 작성하십시오 . 그런 다음 각 점 s S대해 포함 된 Voronoi 다이어그램의 셀을 찾으십시오. 해당 셀의 중심은 s에 가장 가까운 점 t T 입니다 .O(nlogn)TsStTs

시간 에 Voronoi 다이어그램을 작성할 수 있으며 각 쿼리 ( s를 포함하는 셀 찾기 )는 O ( log n ) 시간에 수행 할 수 있으므로 총 실행 시간은 O ( n log n ) 시간입니다.O(nlogn)sO(logn)O(nlogn)


내가 생각해 낼 수있는 것보다 훨씬 간단합니다. :).
aelguindy

좋은 접근 방식! 링크는 특히 쿼리 측면에서 도움이 될 것입니다. 일반적인 지점 위치 문제가 시간 내에 해결 될 수 있음을 보여주는 Wikipedia 페이지를 찾을 수 있지만 Voronoi 셀의 특별한 경우에 더 좋은 방법이 있습니까? 내 검색은 켜져 이 답변 그것에게하지, O ( N ) 방법을. O(logn)O(n)
j_random_hacker

점 위치 문제의 복잡성은 일반적으로 총 정점 수 (여기서는 보로 노이 다이어그램)로 표시됩니다. 이 수는 의 점 수보다 클 수 있으며 n = | S | + | T | . 꼭짓점 수가 O ( n )로 묶여 있는지 확실하지 않습니까? Tn=|S|+|T|O(n)
Albjenow

1
nO(n)6n

math.stackexchange에 대한이 질문 에서 올바른 것으로 보입니다 .
Albjenow

5

L1

dO(nlogd1n)

O(nlogn)O(nlog2n)

S,TSδzTδzzδzδz


P2pmPPqmQQ

1
l

링크가 끊어졌습니다 :(
Keerthana Gopalakrishnan
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.