Ini masalah tetangga terdekat.
Diberikan real (sangat besar !), Plus target real , cari dan yang paling dekat dengan . Kami mengizinkan pra-pemrosesan / pengindeksan yang dari (hingga ), tetapi pada waktu kueri (diberikan ), hasilnya harus dikembalikan dengan sangat cepat (misalnya, waktu). n p a i a j p a 1 , … , a n O ( n log n ) p O ( log n )
(Contoh sederhana: jika kita hanya menginginkan SINGLE yang paling dekat dengan , kita akan mengurutkan offline, , lalu melakukan pencarian biner pada waktu kueri, ). p a 1 , … , a n O ( n log n ) O ( log n )
Solusi yang tidak berfungsi:
1) Urutkan offline, lalu pada waktu kueri, mulai dari kedua ujung & pindahkan dua pointer ke dalam ( http://bit.ly/1eKHHDy ). Tidak bagus, karena waktu permintaan.
2) Urutkan offline, lalu pada waktu kueri, ambil setiap dan lakukan pencarian biner untuk "teman" yang membantunya menjumlahkan sesuatu yang dekat dengan . Tidak bagus, karena waktu kueri .a i p O ( n log n )
3) Urutkan semua pasangan offline, lalu lakukan pencarian biner. Tidak bagus, karena pra-pemrosesan.O ( n 2 )
Terima kasih!
ps. Diperlukan generalisasi lebih lanjut untuk latihan: (1) dan menjadi vektor 50-dimensi, (2) "tutup" menjadi jarak vektor kosinus, dan (3) -pasangan terdekat terdekat-jumlah itu, bukan hanya 1-terbaik. p k