Làm thế nào để tính toán hiệu quả điểm cô lập nhất?


8

Cho tập hợp hữu hạn của các điểm trong , làm thế nào chúng ta có thể tính toán một "điểm cô lập nhất" một cách hiệu quả ?R d x SSRdxS

Chúng tôi xác định một "điểm cô lập nhất" bởix

x=argmaxpSminqS{p}d(p,q)

(Tôi đã sử dụng ký hiệu x=argmin mặc dù nó không nhất thiết phải là duy nhất. Ở đây d biểu thị khoảng cách euclide.) Vì vậy, nói cách khác, chúng tôi đang tìm kiếm một điểm có khoảng cách lớn nhất với hàng xóm gần nhất.

Một thuật toán ngây thơ sẽ tính toán tất cả các khoảng cách theo cặp, tìm ra hàng xóm có khoảng cách nhỏ nhất cho mọi điểm và sau đó tìm tối đa các khoảng cách này. Điều này cần các thao tác O(n2) , nhưng chúng ta có thể làm tốt hơn thế không?


Tôi đề nghị nhìn vào cấu trúc dữ liệu để tìm kiếm hàng xóm gần nhất . Tôi nghi ngờ họ có thể thích nghi để giúp giải quyết vấn đề này hiệu quả hơn phương pháp ngây thơ.
DW

@DW Cảm ơn lời khuyên. Tôi đã thử nhìn vào cây kd, nhưng tôi không tìm thấy cách nào hiệu quả hơn để giải quyết vấn đề này.
flawr

Câu trả lời:


1

Sử dụng bất kỳ thuật toán cho tất cả các hàng xóm gần nhất ; sau đó bạn có thể giải quyết vấn đề của bạn Một thuật toán như vậy tìm thấy, cho mỗi điểm dữ liệu, hàng xóm gần nhất của nó. Điểm cô lập nhất là điểm có hàng xóm gần nhất ở xa nhất, vì vậy một khi bạn đã giải quyết được tất cả các hàng xóm gần nhất, bạn có thể tìm thấy điểm cô lập nhất bằng cách quét tuyến tính đơn giản.

Rõ ràng tất cả các hàng xóm gần nhất có thể được tìm thấy trong thời gian ; xem các tài liệu tham khảo trên Wikipedia. Hoặc, nếu bạn muốn thực hiện một cái gì đó, hãy lấy bất kỳ cấu trúc dữ liệu nào cho các hàng xóm gần nhất và cho mỗi điểm , hãy tìm hàng xóm gần nhất của nó.pO(nlogn)p


0

Theo đề xuất trong các ý kiến ​​tôi sẽ xem xét các truy vấn hàng xóm gần nhất.

Thực hiện một truy vấn NN cho mỗi điểm phải theo thứ tự để nó tốt hơn giải pháp ngây thơ.O(nlog(n))

Bạn có thể cải thiện thêm bằng cách thêm một tham số vào Truy vấn NN có chứa khoảng cách lân cận gần nhất của điểm bị cô lập nhất mà bạn tìm thấy cho đến nay. Sau đó, bạn có thể hủy bỏ mọi truy vấn NN ngay khi tìm thấy điểm gần hơn . Điều này sẽ tăng tốc độ tìm kiếm của bạn khá nhiều. d m a xdmaxdmax

Btw, mọi người thường đề xuất cây KD cho NN-Search. Cây KD rất dễ thực hiện nhưng theo kinh nghiệm của tôi thì quy mô không ổn định với kích thước cao hơn các cây khác. Đối với hoặc lâu hơn, tôi khuyên bạn nên sử dụng R-Tree, chẳng hạn như R * Tree (R-Star-Tree), X-Tree hoặc STR-Tree R-Tree hoặc PH-Tree (giống như một cây tứ giác bitwise).d>10

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.