Tôi hiện đang cố gắng tìm K Lân cận gần nhất của tất cả các nút trong số cân bằng KD-Tree (với K = 2).Phương pháp hiệu quả để tìm KNN của tất cả các nút trong KD-Tree
Triển khai của tôi là biến thể của mã từ Wikipedia article và nhanh chóng tìm kiếm KNN của bất kỳ nút nào O (nhật ký N).
Vấn đề nằm ở chỗ tôi cần tìm KNN của mỗi nút. Sắp tới với khoảng O (N log N) nếu tôi lặp qua từng nút và thực hiện tìm kiếm.
Có cách nào hiệu quả hơn để thực hiện việc này không?
Bạn có muốn lưu trữ kết quả trong một số danh sách hoặc lặp qua các bộ dữ liệu (t, knn1, knn2) không? –
Chỉ cần lặp lại. Mặc dù tôi tò mò, sự khác biệt trong cách tiếp cận là gì? –
Sự khác biệt chính giữa tìm kiếm KNN và tìm kiếm của bạn là tất cả giá trị tìm kiếm của bạn đã có trong cây. Vì vậy, tìm kiếm của bạn bắt đầu trong một nút không phải là nút gốc. Bắt đầu từ mỗi nút, bạn có thể đi qua cây, tìm 2 ứng cử viên và đi qua cho đến khi không thể có một ứng cử viên gần hơn. Điều này có thể an toàn một số traversals nút nhưng vẫn là O (n log n) nếu cây được cân bằng. Có thể có một cách để sử dụng lại tính toán (mà vẫn sẽ là O (n log n)). –