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)