Solución 1: Encuentre las bisectrices perpendiculares entre pares de puntos y construya la disposición de estas líneas. La disposición tiene celdas Θ ( n 4 ) , dentro de las cuales el orden ordenado es constante. Por lo tanto, cree una estructura de datos de ubicación de puntos para la disposición y decore cada celda con el orden ordenado que se devolverá para los puntos dentro de esa celda. Los pedidos ordenados entre celdas adyacentes difieren solo en una sola transposición, por lo que puede usar una estructura de datos persistente para permitir que las representaciones de estos pedidos clasificados compartan espacio. El espacio total es O ( n 4 ) y el tiempo de consulta es OΘ(n2)Θ(n4)O(n4) .O(logn)
Solución 2: Elija una muestra aleatoria de de estas mismas bisectrices perpendiculares, construya su disposición y divida cada celda de disposición por segmentos de línea vertical a través de cada cruce de dos líneas muestreadas. La partición resultante tiene celdas Θ ( n 2 ) , cada una de las cuales con alta probabilidad es cruzada por O ( n ) bisectrices sin muestrear. Decora cada celda de la partición mediante un orden ordenado válido de los puntos como se ve desde alguna x dentro de la celda. El espacio total es O ( n 3 ) .Θ(n)Θ(n2)O(n)O(n3)
Ahora, para hacer una consulta, ubique el punto de consulta en la partición, busque el orden almacenado con la celda de partición y use el algoritmo de clasificación de comparación de árbol cartesiano de Levcopoulos y Petersson (1989) comenzando con este orden almacenado. El tiempo para este paso es proporcional a donde k i es el número de puntos que están fuera de orden con el punto y i . Pero Σ k i es O ( n ) (cada uno sin muestrear causas bisectrices a lo sumo uno fuera de orden par de puntos), por lo que el tiempo de consulta∑iO(1+logki)kiyi∑kiO(n) también es O ( n ) .∑iO(1+logki)O(n)