Saya memiliki satu set titik yang didefinisikan dalam ruang metrik - jadi saya dapat mengukur 'jarak' antara titik tetapi tidak ada yang lain. Saya ingin menemukan titik paling sentral dalam himpunan ini, yang saya definisikan sebagai titik dengan jumlah minimum jarak ke semua titik lainnya. Perhitungan metrik lambat, jadi harus dihindari sedapat mungkin.
Cara yang jelas untuk menemukan titik ini menggunakan perhitungan jarak metrik, karena hanya (a) menghitung untuk setiap titik jumlah jarak ke semua titik lainnya dan kemudian (b) mengambil titik minimum.
Apakah ada cara untuk melakukan ini dalam perbandingan jarak kurang dari ? (Mungkin memanfaatkan ketimpangan segitiga dalam beberapa cara, yang seharusnya berlaku dengan metrik saya.)
Perkiraan yang baik mungkin cukup jika metode yang tepat tidak ada.
sumber
Jawaban:
Tidak. Anda tidak dapat melakukan lebih baik dari dalam kasus terburuk.Θ(n2)
Pertimbangkan pengaturan titik di mana setiap pasangan titik berada pada jarak dari satu sama lain. (Ini adalah konfigurasi yang mungkin.) Maka Anda tidak dapat melakukan lebih baik daripada memeriksa setiap sisi. Khususnya, jika ada sisi yang belum Anda periksa, maka musuh dapat memilih panjang sisi itu menjadi 0,9 , 1,0 , atau 1,1 ; semua pilihan itu konsisten dengan semua pengamatan lain yang telah Anda buat dan dengan persyaratan metrik (misalnya, dengan ketimpangan segitiga), sehingga ketiganya mungkin; tetapi mereka membutuhkan keluaran yang berbeda. Jadi, jika algoritme Anda tidak memeriksa tepi itu dan kemudian mengeluarkan sesuatu, musuh selalu dapat memilih panjang untuk tepi yang tidak diperiksa yang akan membuat output algoritme Anda salah.1 0.9 1.0 1.1
Namun, jika Anda tahu bahwa semua titik hidup dalam (meskipun Anda tidak diberi koordinatnya), maka masalahnya dapat diselesaikan dengan mengukur jarak O ( ( d + 1 ) n ) , dengan asumsi tidak ada degenerasi (tanpa subset dari d + 1 poin adalah co-planar).Rd O((d+1)n) d+1
Secara khusus, pilih poin secara acak. Ini akan menjadi titik jangkar. Mengingat jarak berpasangan mereka, Anda dapat menghitung koordinat untuk mereka yang konsisten dengan jarak berpasangan mereka. Sekarang, untuk setiap titik P lainnya , hitung jarak dari P ke setiap titik jangkar. Menggunakan triangulasi dan jarak ini, Anda dapat menghitung lokasi P relatif terhadap jangkar poin dan dengan demikian koordinat untuk P . Lakukan ini untuk setiap titik non-jangkar Pd+1 P P P P P . Sekarang Anda memiliki koordinat untuk setiap titik, dan Anda dapat menggunakan koordinat itu untuk menemukan titik pusat tanpa meminta oracle untuk memberi Anda jarak berpasangan lagi. Saya tidak tahu apakah langkah terakhir ini dapat dilakukan lebih cepat dari waktu , tetapi hal itu dapat dilakukan tanpa mengukur lagi jarak berpasangan.O ( n2)
sumber
Lihat karya Piotr Indyk tentang algoritme cepat untuk ruang metrik. ( Algoritma Sublinear untuk Masalah Ruang Metrik , dalam Prosiding STOC '99 , hal.428-434. ACM, 1999; PS ) Bagian 3 memberikan waktu linear algoritma perkiraan 1-median.
sumber