Cặp điểm gần nhất giữa hai bộ, ở dạng 2D


11

Tôi có hai tập hợp của các điểm trong mặt phẳng 2 chiều. Tôi muốn tìm cặp điểm gần nhất sao cho , và khoảng cách Euclide giữa càng nhỏ càng tốt. Làm thế nào hiệu quả có thể được thực hiện? Nó có thể được thực hiện trong thời gian , trong đó?s , t s S t T s , t O ( n log n ) n = | S | + | T |S,Ts,tsStTs,tO(nlogn)n=|S|+|T|

Tôi biết rằng nếu tôi được cung cấp một tập hợp , thì có thể tìm thấy cặp điểm gần nhất trong bằng thuật toán chia và chinh phục tiêu chuẩn . Tuy nhiên, thuật toán đó dường như không khái quát cho trường hợp của hai tập hợp, bởi vì không có mối liên hệ nào giữa khoảng cách giữa hai điểm gần nhất trong hoặc so với khoảng cách giữa hai điểm gần nhất trên các tập hợp đó.s , s 'S O ( n log n ) S TSs,sSO(nlogn)ST

Tôi đã nghĩ đến việc lưu trữ tập hợp trong cây -d, sau đó cho mỗi , sử dụng truy vấn lân cận gần nhất để tìm điểm gần nhất trong đến . Tuy nhiên, thời gian chạy trường hợp xấu nhất có thể tệ như thời gian . Có kết quả nói rằng nếu các điểm của được phân phối ngẫu nhiên, thì thời gian chạy dự kiến ​​cho mỗi truy vấn là , vì vậy chúng tôi sẽ có được thuật toán với thời gian chạy dự kiến nếu chúng tôi được đảm bảo rằng các điểm được phân phối ngẫu nhiên - nhưng tôi đang tìm kiếm một thuật toán sẽ hoạt động cho bất kỳ tập hợp điểm nào (không nhất thiết phải được phân phối ngẫu nhiên).k s S T s O ( n 2 ) T O ( log n ) O ( n log n )TksSTsO(n2)TO(logn)O(nlogn)

Động lực: Một thuật toán hiệu quả sẽ hữu ích cho câu hỏi khác này .

Câu trả lời:


10

Có, đây có thể là thời gian . Xây dựng một sơ đồ Voronoi cho . Sau đó, với mỗi điểm , hãy tìm ô nào của sơ đồ Voronoi mà nó được chứa. Trung tâm của ô đó là điểm gần nhất với .T s S t T sO(nlogn)TsStTs

Bạn có thể xây dựng sơ đồ Voronoi trong thời gian và mỗi truy vấn (tìm ô chứa ) có thể được thực hiện trong thời gian , vì vậy tổng thời gian chạy là thời gian.s O ( log n ) O ( n log n )O(nlogn)sO(logn)O(nlogn)


Đẹp, đơn giản hơn nhiều so với những gì tôi có thể nghĩ ra :).
aelguindy

Cách tiếp cận tốt đẹp! Liên kết sẽ giúp mặc dù, đặc biệt là cho phía truy vấn của sự vật. Tôi có thể tìm thấy một trang Wikipedia cho thấy vấn đề vị trí điểm chung có thể được giải quyết trong thời gian , nhưng có cách nào hay hơn cho trường hợp đặc biệt của các ô Voronoi không? Việc tìm kiếm của tôi chỉ đưa ra câu trả lời này , theo cách . O ( n )O(logn)O(n)
j_random_hacker

Độ phức tạp của bài toán Vị trí điểm thường được đưa ra theo tổng số đỉnh (ở đây của Biểu đồ Voronoi). Con số này có thể lớn hơn số điểm trong và thậm chí. Tôi không chắc chắn nếu số lượng đỉnh được giới hạn bởi , phải không? Tn=|S|+|T|O(n)
Albjenow

1
@Albjenow, tôi không chắc điều này có giải quyết được mối quan tâm của bạn không, nhưng vâng, trong 2 chiều, tôi tin rằng số đỉnh trong biểu đồ Voronoi trên điểm là (tôi dường như nhớ lại nó là hoặc đại loại như thế). nO(n)6n
DW

Điều đó có vẻ đúng như câu hỏi này trên math.stackexchange.
Albjenow

5

Tôi đang mở rộng nhận xét của mình thành một câu trả lời, vì tôi đã tìm ra một câu trả lời nửa thỏa đáng. Điều này chỉ giải quyết vấn đề cho -distance. Câu trả lời này về cơ bản là sai.L1

Bài viết này giải quyết vấn đề tìm cặp điểm gần nhất theo kích thước cho trường hợp khi các bộ được phân tách bằng một siêu phẳng trong .dO(nlogd1n)

Đối với hai chiều, điều này giải quyết trường hợp trong câu trả lời mà bạn tham chiếu làm động lực chính cho câu hỏi của bạn trong . Nó cũng có thể được sử dụng để giải quyết trường hợp chung của vấn đề 2D trong .O(nlogn)O(nlog2n)

Với hai bộ điểm trong 2D, nhúng chúng trong không gian 3D, thay thế bộ bởi một số và bộ bởi trong hướng. Lựa chọn có thể được thực hiện để không ảnh hưởng đến việc lựa chọn cặp điểm gần nhất bằng cách lấy nhỏ hơn độ chính xác của các điểm đầu vào của bạn (và nhân đôi số bit chính xác cho mỗi tọa độ đầu vào). Sử dụng thuật toán 3D từ giấy được trích dẫn.S,TSδzTδzzδzδz


+1, nhưng một vài điều về bài báo đó (mà tôi chỉ mới bắt đầu đọc): (i) họ chỉ yêu cầu giải quyết vấn đề cho trường hợp khoảng cách trực tràng (Manhattan); (ii) Tôi không hiểu tại sao họ nghĩ rằng khu vực trên p. 2 chứa đúng 1 điểm. Tôi đã giả sử rằng là điểm trong với tọa độ y trung bình trong và là điểm trong với tọa độ y trung bình trong , nhưng tôi không thấy cách trên có thể xảy ra từ đây. p m P P q m Q QP2pmPPqmQQ
j_random_hacker

1
@j_random_hacker bài báo chỉ giải quyết vấn đề cho khoảng cách L1 và câu trả lời này là sai :). Và tôi nghĩ đó là bức thư :). l
aelguindy

Liên kết bị hỏng :(
Keerthana Gopalakrishnan 6/12/18
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.