Diberi set yang terbatas poin dalam , bagaimana kita dapat menghitung "titik paling terisolasi" secara efisien ?
Kami mendefinisikan "titik paling terisolasi" oleh
(Saya menggunakan notasi meskipun belum tentu unik. Sini menunjukkan jarak euclidean.) Jadi dengan kata lain kita mencari titik dengan jarak terbesar ke tetangga terdekat.
Algoritma naif akan menghitung semua jarak berpasangan, menemukan tetangga dengan jarak terkecil untuk setiap titik dan kemudian menemukan maksimumnya. Ini dibutuhkan operasi, tetapi bisakah kita melakukan lebih baik dari itu?
Jawaban:
Gunakan algoritma apa pun untuk semua tetangga terdekat ; maka Anda dapat dengan mudah menyelesaikan masalah Anda. Algoritma seperti itu menemukan, untuk setiap titik data, tetangga terdekatnya. Titik paling terisolasi adalah yang tetangga terdekatnya paling jauh, jadi setelah Anda menyelesaikan semua tetangga terdekat, Anda dapat menemukan titik paling terisolasi dengan pemindaian linier sederhana.
Rupanya semua tetangga terdekat dapat ditemukan diO(nlogn) waktu; lihat referensi di Wikipedia. Atau, jika Anda menginginkan sesuatu untuk diterapkan, ambil struktur data apa pun untuk tetangga terdekat, dan untuk setiap titikp , cari tetangga terdekatnya.
sumber
Seperti yang disarankan dalam komentar saya akan melihat ke pertanyaan tetangga terdekat.
Melakukan satu NN-Kueri per poin harus dalam urutanO(n∗log(n)) jadi itu sudah lebih baik daripada solusi naif.
Anda dapat lebih meningkatkannya dengan menambahkan parameter ke NN-Query yang berisi jarak tetangga terdekatdmax dari titik paling terisolasi yang Anda temukan sejauh ini. Anda kemudian dapat membatalkan NN-kueri segera setelah menemukan titik yang lebih dekat daripadadmax . Ini akan mempercepat pencarian Anda.
Btw, orang sering menyarankan KD-Trees untuk NN-Search. KD-Trees sangat mudah diimplementasikan tetapi dalam pengalaman saya secara konsisten skala kurang baik dengan dimensi lebih tinggi daripada pohon lain. Untukd>10 atau jadi saya akan merekomendasikan menggunakan R-Tree, seperti R * Tree (R-Star-Tree), X-Tree atau STR-loaded R-Tree, atau PH-Tree (yang lebih mirip quadtree bitwise).
sumber