title: Búsqueda de rango
text: # Búsqueda de rango
  
  La búsqueda de rango consiste, en su forma más general, en realizar un preprocesamiento a un conjunto S de objetos con el objetivo de determinar cuáles de estos se intersecan con otro objeto denominado rango. Por ejemplo, S puede ser un conjunto de puntos correspondientes a las coordenadas de varias ciudades, y queremos encontrar aquellas que se encuentran dentro de un determinado rango de longitud y latitud.
  
  Los problemas y estructura de datos de la búsqueda de rango son una temática fundamental de la Geometría computacional. El problema de la búsqueda de rango tiene aplicaciones no solo en áreas relacionadas con el procesamiento de datos geométricos (como sistema de información geográfica o diseño asistido por computadora), sino también en bases de datos.
  
  ## Variaciones
  
  Este problema presenta diversas variantes y estructuras de datos que pueden ser necesarias para las distintas variantes. Para obtener una solución eficiente, varios aspectos del problema necesitan ser especificados:
  
  * Tipos de objetos: Los algoritmos dependen de si S es un conjunto de puntos, líneas, segmentos, rectángulos, polígonos... Los objetos más simples y estudiados son los puntos.
  * Tipos de rangos: Los rangos de cola también necesitan ser dibujados desde un conjunto predeterminado. Algunos conjuntos de rangos bien estudiados y el nombre de los respectivos problemas son: polígonos rectilíneos (búsqueda de rango ortogonal), simplex (búsqueda de rango simples), Semiespacio (búsqueda de rango semiespacial), Esferas / Círculos (búsqueda de rango esférica / búsqueda de rango circular).
  * Tipos de consulta: Si se debe reportar la lista de todos los objetos que se intersecan con el rango consultado, el problema se llamaría reporte de rango y la consulta reporte de consulta. En ocasiones, solo hace falta conocer cuántos objetos se encuentran dentro del rango consultado, en este caso el problema se denomina conteo de rango y la consulta consulta de conteo. La consulta vacía informa si hay al menos un objeto que se interseca con el rango pedido. En la versión de semigrupo se especifica un semigrupo conmutativo (S,+), a cada punto en S se le asigna un peso, y se debe informar la suma de semigrupo de los pesos de los puntos que se intersecan con el rango consultado.
  * Búsqueda de rango dinámico vs. búsqueda de rango estático: En el caso estático el conjunto S se conoce de antemano. En el dinámico los objetos pueden ser insertados o borrados entre consultas.
  * Búsqueda de rango desconectado: Ambos, el conjunto de objetos y todo el conjunto de consultas son conocidas de antemano.
  