Masalah cakupan (pemancar dan penerima)

14

Saya mencoba menyelesaikan masalah cakupan berikut.

Ada pemancar dengan area jangkauan 1 km dan n penerima. Putuskan dalam O ( n log n ) bahwa semua penerima dilindungi oleh pemancar apa pun. Semua pengirim dan pengirim diwakili oleh koordinat x dan y mereka .nnO(nlogn)xy

Solusi paling maju yang bisa saya gunakan adalah . Untuk setiap penerima, urutkan semua pemancar berdasarkan jarak ke penerima saat ini, lalu bawa pemancar dengan jarak terpendek dan jarak terpendek ini harus dalam 0,5 km.O(n2logn)

Tetapi pendekatan naif terlihat jauh lebih baik dalam kompleksitas waktu . Hitung saja semua jarak antara semua pasangan pemancar dan penerima.O(n2)

Saya tidak yakin apakah saya bisa menerapkan algoritma pencarian rentang dalam masalah ini. Sebagai contoh kd-tree memungkinkan kami untuk menemukan rentang seperti itu, namun saya tidak pernah melihat contohnya, dan saya tidak yakin apakah ada semacam range-search untuk lingkaran.

Kompleksitas yang diberikan mengasumsikan bahwa solusinya harus mirip dengan penyortiran.O(nlogn)

com
sumber
1
Jika diharapkan waktu baik-baik saja, saya pikir Anda bisa membangun sebuah k d tree atas pemancar (mengambil waktu O ( n log n ) ), dan kemudian melakukan query tetangga terdekat untuk masing-masing penerima (mengambil rata-rata dari O ( log n ) waktu untuk setiap penerima). Ini seharusnya untuk trik, tetapi saya menganggap Anda perlu kompleksitas kasus terburuk. Tampaknya ada beberapa trik untuk speedup ketika Anda melakukan beberapa terdekat query tetangga di k d tree. O(nlogn)kdO(nlogn)O(logn)kd
utdiscant
1
Saya kira algoritma garis sapu dapat melakukan trik: mengurutkan pemancar dan penerima dengan koordinat x dan melangkah melalui daftar. Manajemen pintar dari set pemancar yang layak sangat penting.
Raphael
@ Raphael, bisakah Anda menjelaskan sedikit lebih lanjut, sepertinya ini akan sangat lambat dalam kasus terburuk.
com
1
Saya pikir perlu melihat algoritma Fortune untuk menghitung diagram Voronoi di pesawat. Ia bekerja di , dan diberi diagram Voronoi, masalah Anda menjadi mudah. O(nlogn)
Syzygy

Jawaban:

4

Anda dapat menggunakan diagram Voronoi, bersama dengan struktur data Kirkpatrick untuk menyelesaikan masalah ini.

Seperti yang disarankan Raphael dan Syzygy, Anda dapat menggunakan algoritme Fortune (sweepline) untuk membuat diagram Voronoi. Waktu kasus terburuk: .O(nlogn)

Diagram Voronoi akan memiliki banyak poligon, masing-masing berisi pemancar. Setiap titik dalam poligon paling dekat dengan pemancar itu. Jadi, jika Anda dapat mengetahui poligon mana yang berisi penerima, Anda dapat menemukan pemancar terdekat dengan entah bagaimana mencari tahu di mana poligon itu berada. Setelah itu, Anda memeriksa apakah pemancar itu berada dalam jarak .1 km

Untuk menentukan poligon Voronoi mana yang berisi penerima, Anda terlebih dahulu melakukan triangulasi setiap poligon dalam diagram. Sekarang Anda memiliki mesh segitiga. Selanjutnya Anda menggunakan struktur data Kirkpatrick untuk menemukan segitiga yang mengandung titik tertentu dalam waktu , kasus terburuk. Membangun struktur data Kirkpatrick membutuhkan O ( n log n ) kasus terburuk. Setelah Anda tahu segitiga, Anda akan tahu poligon yang berisi itu, dan dengan demikian pemancar terdekat. Melakukan ini untuk semua penerima akan menjadi O ( nO(logn)O(nlogn) , kasus terburuk.O(nlogn)

Setiap sel dalam diagram Voronoi adalah poligon cembung, mungkin tidak terikat.

...

Jumlah simpul [dari diagram Voronoi dari n situs] V ≤ 2n-5

- www.cs.arizona.edu

Setiap poligon dalam diagram Voronoi adalah poligon cembung. Oleh karena itu, karena triangulasi poligon cembung membutuhkan waktu , v sebagai jumlah sisi, kita dapat melakukan triangulasi setiap sel secara efisien. Jika Anda takut bahwa triangulasi dapat menjadi patologis (bahwa kita mungkin memiliki n sel, masing-masing dengan n sisi), maka pertimbangkan ini. Diagram Voronoi memiliki O ( n ) simpul (lihat kutipan di atas). Triangulasi diagram Voronoi adalah planar, dan begitu juga grafik yang jarang, dan dengan demikian memiliki O ( n ) tepi dan wajah. Jadi triangulasi sel tertentu mungkin diperlukanΘ(v)vnnO(n)O(n)O(n)O(n)O(n)

Realz Slaw
sumber