Articulo de referencia

Búsqueda de rango

Búsqueda de rango simplex. En informática , el problema de búsqueda de rango consiste en procesar un conjunto S de objetos para determinar qué objetos de S se intersecan con un ...

Búsqueda de rango simplex.

En informática , el problema de búsqueda de rango consiste en procesar un conjunto S de objetos para determinar qué objetos de S se intersecan con un objeto de consulta, denominado rango . Por ejemplo, si S es un conjunto de puntos que corresponden a las coordenadas de varias ciudades, se busca el subconjunto de ciudades dentro de un rango dado de latitudes y longitudes .

El problema de búsqueda de rangos y las estructuras de datos que lo resuelven son un tema fundamental de la geometría computacional . Las aplicaciones de este problema surgen en áreas como los sistemas de información geográfica (SIG), el diseño asistido por computadora (CAD) y las bases de datos .

Variaciones

Existen varias variantes del problema, y ​​pueden ser necesarias diferentes estructuras de datos para cada variante. [ 1 ] Para obtener una solución eficiente, es necesario especificar varios aspectos del problema:

  • Tipos de objetos: Los algoritmos dependen de si S está compuesto por puntos , líneas , segmentos de línea , cajas , polígonos ... Los objetos más simples y estudiados para la búsqueda son los puntos.
  • Tipos de rangos: Los rangos de consulta también deben extraerse de un conjunto predeterminado. Algunos conjuntos de rangos bien estudiados, y los nombres de los problemas respectivos, son rectángulos alineados con ejes (búsqueda de rango ortogonal), símplices , semiespacios y esferas / círculos .
  • Tipos de consulta: Si se debe informar la lista de todos los objetos que intersecan el rango de consulta, el problema se llama informe de rango y la consulta se llama consulta de informe . A veces, solo se requiere el número de objetos que intersecan el rango. En este caso, el problema se llama conteo de rango y la consulta se llama consulta de conteo . La consulta de vacío informa si hay al menos un objeto que interseca el rango. En la versión de semigrupo , se especifica un semigrupo conmutativo ( S ,+), a cada punto se le asigna un peso de S , y se requiere informar la suma del semigrupo de los pesos de los puntos que intersecan el rango.
  • Búsqueda de rango dinámico frente a búsqueda de rango estático: En la configuración estática, el conjunto S se conoce de antemano. En la configuración dinámica, los objetos pueden insertarse o eliminarse entre consultas.
  • Búsqueda de rango sin conexión: Tanto el conjunto de objetos como el conjunto completo de consultas se conocen de antemano.

Estructuras de datos

búsqueda de rango ortogonal

Una consulta de rango ortogonal en 2D. En este caso, una consulta de informe de rango devolvería los dos puntos marcados con un círculo, una consulta de conteo de rango devolvería 2 y una consulta de vacío devolvería falso.

En la búsqueda de rango ortogonal, el conjunto S consta denorte{\displaystyle n}puntos end{\displaystyle d}dimensiones, y la consulta consiste en intervalos en cada una de esas dimensiones. Por lo tanto, la consulta consiste en un rectángulo multidimensional alineado con los ejes . Con un tamaño de salida dek{\displaystyle k}, Jon Bentley utilizó un árbol kd para lograr (en notación Big O )O(norte){\displaystyle O(n)}espacio yO(norte11d+k){\displaystyle O{\big (}n^{1-{\frac {1}{d}}}+k{\big )}}tiempo de consulta. [ 2 ] Bentley también propuso usar árboles de rango , lo que mejoró el tiempo de consulta aO(registrodnorte+k){\displaystyle O(\log ^{d}n+k)}pero mayor espacio paraO(norteregistrod1norte){\displaystyle O(n\log ^{d-1}n)}. [ 3 ] Dan Willard utilizó downpointers, un caso especial de cascada fraccionaria para reducir aún más el tiempo de consulta aO(registrod1norte+k){\displaystyle O(\log ^{d-1}n+k)}. [ 4 ]

Si bien los resultados anteriores se lograron en el modelo de máquina de punteros , se han realizado mejoras adicionales en el modelo de RAM de palabras de computación en dimensiones bajas (2D, 3D, 4D). Bernard Chazelle utilizó árboles de rango comprimido para lograrO(registronorte){\displaystyle O(\log n)}tiempo de consulta yO(norte){\displaystyle O(n)}espacio para el conteo de rangos. [ 5 ] Joseph JaJa y otros mejoraron posteriormente este tiempo de consulta aO(registronorteregistroregistronorte){\displaystyle O\left({\dfrac {\log n}{\log \log n}}\right)}para el conteo de rangos, que coincide con un límite inferior y, por lo tanto, es asintóticamente óptimo . [ 6 ]

A partir de 2015, los mejores resultados (en dimensiones bajas (2D, 3D, 4D)) para la presentación de informes de rango encontrados por Timothy M. Chan , Kasper Larsen y Mihai Pătrașcu , también utilizando árboles de rango comprimidos en el modelo de computación Word RAM, son uno de los siguientes: [ 7 ]

  • O(norte){\displaystyle O(n)}espacio,O(registroϵnorte+kregistroϵnorte){\displaystyle O(\log ^{\epsilon }n+k\log ^{\epsilon }n)}tiempo de consulta
  • O(norteregistroregistronorte){\displaystyle O(n\log \log n)}espacio,O(registroregistronorte+kregistroregistronorte){\displaystyle O(\log \log n+k\log \log n)}tiempo de consulta
  • O(norteregistroϵnorte){\displaystyle O(n\log ^{\epsilon }n)}espacio,O(registroregistronorte+k){\displaystyle O(\log \log n+k)}tiempo de consulta

En el caso ortogonal, si uno de los límites es infinito , la consulta se denomina trilateral. Si dos de los límites son infinito, la consulta es bilateral, y si ninguno de los límites es infinito, entonces la consulta es tetralateral.

Búsqueda de rango dinámico

Mientras que en la búsqueda de rango estático el conjunto S se conoce de antemano, en la búsqueda de rango dinámico se permiten inserciones y eliminaciones de puntos. En la versión incremental del problema, solo se permiten inserciones, mientras que la versión decremental solo permite eliminaciones. Para el caso ortogonal, Kurt Mehlhorn y Stefan Näher crearon una estructura de datos para la búsqueda de rango dinámico que utiliza cascada fraccionaria dinámica para lograrO(norteregistronorte){\displaystyle O(n\log n)}espacio yO(registronorteregistroregistronorte+k){\displaystyle O(\log n\log \log n+k)}tiempo de consulta. [ 8 ] Tanto las versiones incrementales como decrementales del problema se pueden resolver conO(registronorte+k){\displaystyle O(\log n+k)}tiempo de consulta, pero se desconoce si se puede realizar una búsqueda de rango dinámico general con ese tiempo de consulta.

Búsqueda de rango de colores

El problema del conteo de rangos coloreados considera el caso en que los puntos tienen atributos categóricos . Si las categorías se consideran como colores de puntos en el espacio geométrico, entonces una consulta es cuántos colores aparecen en un rango particular. Prosenjit Gupta y otros describieron una estructura de datos en 1995 que resolvió el conteo de rangos coloreados ortogonales 2D enO(norte2registro2norte){\displaystyle O(n^{2}\log ^{2}n)}espacio yO(registro2norte){\displaystyle O(\log ^{2}n)}tiempo de consulta. [ 9 ] Esto se generalizó posteriormente a dimensiones superiores. [ 10 ]

Aplicaciones

Además de considerarse en geometría computacional , la búsqueda por rangos, y en particular la búsqueda por rangos ortogonales, tiene aplicaciones en consultas de rangos en bases de datos . La búsqueda por rangos con colores también se utiliza y se justifica por la búsqueda en datos categóricos. Por ejemplo, determinar las filas en una base de datos de cuentas bancarias que representan a personas cuya edad está entre 25 y 40 años y que tienen entre $10 000 y $20 000 podría ser un problema de informes de rangos ortogonales donde la edad y el dinero son dos dimensiones.

Véase también

Referencias

  1. Agarwal, PK ; Erickson, J. (1999), "Búsqueda de rango geométrico y sus parientes" , en Chazelle, Bernard ; Goodman, Jacob ; Pollack, Richard (eds.), Avances en geometría discreta y computacional: actas de la conferencia conjunta de investigación de verano AMS-IMS-SIAM de 1996, Geometría discreta y computacional: diez años después, 14-18 de julio de 1996 , Mount Holyoke College , Matemáticas contemporáneas, vol.  223, American Mathematical Society Press, pp. 1–56 
  2. Bentley, Jon (1975). "Árboles de búsqueda binaria multidimensionales utilizados para la búsqueda asociativa" . Communications of the ACM . 18 (9): 509– 517. doi : 10.1145/361002.361007 . S2CID 13091446 . 
  3. Bentley, Jon (1980). "Multidimensional divide y vencerás" . Communications of the ACM . 23 (4): 214– 229. doi : 10.1145/358841.358850 . S2CID 3997186 . 
  4. Willard, Dan (1985). "Nuevas estructuras de datos para consultas de rango ortogonal". SIAM Journal on Computing . 14 (1): 232– 253. doi : 10.1137/0214019 .
  5. Chazelle, Bernard (1988). "Un enfoque funcional de las estructuras de datos y su uso en la búsqueda multidimensional". SIAM Journal on Computing . 17 (3): 427– 462. CiteSeerX 10.1.1.133.9153 . doi : 10.1137/0217026 . 
  6. JaJa, Joseph; Mortensen, Christian; Shi, Qingmin (2005). "Algoritmos rápidos y eficientes en espacio para la presentación de informes y el conteo de dominancia multidimensional". Simposio Internacional sobre Algoritmos y Computación : 558–568 .
  7. Chan, Timothy ; Larsen, Kasper; Pătrașcu, Mihai (2011). "Búsqueda de rango ortogonal en el RAM, revisada". Simposio sobre Geometría Computacional : 1–10 . arXiv : 1103.5510 .
  8. Mehlhorn, Kurt ; Näher, Stefan (1990). "Cascada fraccionada dinámica" (PDF) . Algorítmica . 5 (2): 215– 241. doi : 10.1007/BF01840386 . S2CID 7721690 . 
  9. Gupta, Prosenjit; Janardan, Ravi; Smid, Michiel (1995). "Resultados adicionales sobre problemas generalizados de búsqueda de intersecciones: conteo, reporte y dinamización". Journal of Algorithms . 19 (2): 282– 317. doi : 10.1006/jagm.1995.1038 . hdl : 11858/00-001M-0000-0014-B721-F .
  10. Kaplan, Haim; Rubin, Natan; Sharir, Micha; Verbin, Elad (2008). "Conteo eficiente de rangos ortogonales coloreados". SIAM Journal on Computing . 38 (3): 982– 1011. doi : 10.1137/070684483 .

Lecturas adicionales