Intento resolver el siguiente problema de cobertura.
Hay transmisores con un área de cobertura de 1 km receptores. Decida en que todos los receptores están cubiertos por cualquier transmisor. Todos los reverentes y transmisores están representados por sus coordenadas e .O ( n log n ) x y
La solución más avanzada que puedo encontrar toma . Para cada receptor, clasifique todos los transmisores por su distancia a este receptor actual, luego tome el transmisor con la distancia más corta y esta distancia más corta debe estar dentro de 0.5 km.
Pero el enfoque ingenuo parece mucho mejor en la complejidad del tiempo . Simplemente calcule toda la distancia entre todos los pares de transmisor y receptor.
No estoy seguro si puedo aplicar algoritmos de búsqueda de rango en este problema. Por ejemplo, los árboles kd nos permiten encontrar tales rangos, sin embargo, nunca vi un ejemplo, y no estoy seguro de si hay algún tipo de búsqueda de rango para círculos.
La complejidad dada supone que la solución debería ser de alguna manera similar a la ordenación.
Respuestas:
Puede usar el diagrama de Voronoi, junto con la estructura de datos de Kirkpatrick para resolver este problema.
Como sugirieron Raphael y Syzygy, puede usar el algoritmo de Fortune (línea de barrido) para crear el diagrama de Voronoi. El peor caso: .O ( n logn )
El diagrama de Voronoi tendrá un montón de polígonos, cada uno con un transmisor. Cualquier punto dentro del polígono está más cerca de ese transmisor. Por lo tanto, si puede averiguar qué polígono contiene el receptor, puede encontrar el transmisor más cercano al mismo de alguna manera descubriendo en qué polígono se encuentra. Después de eso, verifica si ese transmisor está dentro de .1 km
Para determinar qué polígono de Voronoi contiene el receptor, primero triangula cada polígono en el diagrama. Ahora tienes una malla triangular. Luego, usa la estructura de datos de Kirkpatrick para localizar cualquier triángulo que contenga un punto dado en el tiempo , el peor de los casos. La construcción de la estructura de datos de Kirkpatrick toma O ( n log n ) en el peor de los casos. Una vez que conozca el triángulo, sabrá el polígono que lo contiene y, por lo tanto, el transmisor más cercano. Hacer esto para todos los receptores será O ( n log n ) , el peor de los casos.O ( logn ) O ( n logn ) O( n logn )
fuente