You are on page 1of 5

Universidad Nacional de Ingeniera

Ciencias de la Computacin
Geometra Computacional
Anthony Carrera, Jhordan Prez*
yohelacarrera20@gmail.com, jor_sk13@hotmail.com

Resumen 2. Storage: Cunta memoria es requerida para la


estructura de datos?
El articulo tiene como objetivo presentar los 3. Processing time: Cunto tiempo es necesario
para arrancar los datos de la bsqueda?
conceptos fundamentales de la geometra
4. Update time: Dado un elemento especfico,
computacional, para ello buscaremos estructuras cunto tiempo me tomar aadirlo o borrarlo
de datos para resolver los problemas geomtricos de la estructura de datos?
de la localizacin de puntos y las consultas de
rango ortogonal. Estos problemas abarcan 2. Localizacin de Puntos Planos
aplicaciones tales como la determinacin en qu
elemento GUI un usuario ha hecho clic en una
ciudad , en que conjunto de coordenadas GPS est La localizacin de puntos planos es un problema
, y ciertos tipos de consultas de base de datos. en el que se nos da un grfico plano (sin cruces)
que define un mapa, como el lmite de los
1. Introduccin elementos GUI. Entonces queremos apoyar una
consulta que toma un punto dado por sus
Una cuestin bsica para las aplicaciones coordenadas (x, y) y devuelve la cara que lo
informticas que emplean estructuras geomtricas contiene (vea la Figura 1 para un ejemplo).
(por ejemplo, en DAC, sistemas de informacin Como suele ocurrir con estos problemas, hay
geogrfica, robtica, bases de datos...) es: "Dnde una versin esttica y dinmica de este
estoy?" Dado un conjunto de objetos geomtricos, problema. En la versin esttica, se nos da el
el "problema de localizacin del punto" pregunta mapa completo de antemano y slo queremos
por el objeto que contiene a un determinado ser capaces de responder consultas. Para la
punto. Existen numerosas variantes de este versin dinmica, tambin queremos permitir la
problema en funcin de la dimensin y del tipo de adicin y eliminacin de aristas.
objetos, adems de si el conjunto es esttico o
dinmico. Las soluciones varan en el
procesamiento usado, el espacio necesario y el
tiempo de respuesta. La localizacin ha inspirado
numerosas tcnicas de modelado de datos
geomtricos, algunas de las cuales sern
examinadas.

1. Query time: Cunto tiempo es requerido, en


caso mejor o peor, para responder a la simple
cuestin (query)?
Figura1.-Ejemplo de mapa planar

1
En el caso de la toma de rayos verticales, en una dimensin
2.1 Disparos de Rayos Verticales podemos resolver el problema con un rbol de bsqueda
binario equilibrado. Ms especficamente, estamos
Un problema estrechamente relacionado con la haciendo consultas sucesivas. En la ltima conferencia vimos
localizacin de puntos planos es el disparo con rayos cmo hacer un rbol de bsqueda binario equilibrado
verticales. Al igual que en la localizacin de puntos planos, parcialmente persistente con consultas de tiempo O (log n),
nos interesa un grfico plano que defina un mapa. En este y sabemos que una estructura de consulta sucesora
caso, cuando consultamos un punto (x, y) estamos completamente retroactiva tambin se puede hacer con
interesados en el primer segmento de lnea que est consultas O (log n). Obsrvese, sin embargo, que en este
sobre l. Equivalentemente, si imaginamos disparar un caso la estructura sucesora slo nos permite manejar
rayo vertical desde el punto de consulta, queremos segmentos horizontales, ya que la funcin de comparacin
devolver el primer segmento de mapa que intersecta
entre segmentos generales depende de la coordenada x.
Podemos usar el disparo de rayo vertical para resolver el
Qu sucede cuando aplicamos barrido de lnea para
problema de localizacin de puntos planares en el caso
resolver el problema de dos dimensiones?
esttico precomputando, para cada borde, cul es la cara
que est debajo de ella. Para el problema de localizacin A medida que nuestra seccin transversal vertical barre de
de puntos planos dinmicos, podemos usar de nuevo esta izquierda a derecha, primero notamos que ningn segmento
tcnica, pero necesitamos mantener los datos de la cara
de lnea cambia nunca de orden debido a la suposicin de
dinmicamente, dando lugar a una sobrecarga aditiva O
que no hay cruces en nuestro mapa. Esto significa que la
(log n). El problema de disparo de rayos verticales se
estructura de rbol slo cambia en unos pocos tiempos
puede resolver con una tcnica llamada barrido de lnea.
discretos. En particular, cuando alcanzamos el punto final
izquierdo de un segmento estamos realizando una insercin
de ese segmento, y cuando alcanzamos el punto final
derecho estamos realizando una eleccin. Supongamos
que implementamos este barrido de lnea usando un rbol
de bsqueda binario equilibrado parcialmente persistente,
para hacer una consulta de disparo de rayo vertical para el
punto (x, y), encontramos la actualizacin correspondiente
a la coordenada xy hacemos una consulta (usando
persistencia) para (x, y) en esa versin de la estructura de
datos. Tambin es til tener en cuenta que esta estructura
Figura 2: El mismo mapa y puntos de consulta en la se puede calcular en O (n log n) tiempo de
vista de disparo de rayos preprocesamiento, como lo demuestra Dobkin y Lipton
en[8].
2.2 Barrido de Lneas Adems, si usamos la estructura de datos sucesor
totalmente retroactiva, podemos resolver el problema
El barrido de lnea es una tcnica relativamente general para dinmico de disparo de rayos verticales con segmentos
reducir la dimensin de un problema geomtrico en 1. Dado horizontales con consultas de tiempo O (log n). Vase [4] y
un problema geomtrico en el espacio d-dimensional, [10].
podemos considerar una seccin transversal dimensional Varias variantes del problema de disparo de rayo vertical
"vertical" (d - 1), que significa un hiperplano perpendicular todava estn abiertas. Ejemplos incluyen:
al eje x1. Ahora imaginamos nuestro problema de geometra *OPEN: Podemos hacer O (log n) disparos dinmicos de
dentro de ese hiperplano y consideramos cmo cambia al rayos verticales en un grfico planar general?
mover el hiperplano a lo largo del eje x1. Si esta dimensin
x1 tiene una interpretacin "parecida a un tiempo"
adecuada, como ocurre en el disparo vertical de rayos, *OPEN: Podemos hacer O (log n) rayos estticos cuando
entonces una estructura de datos persistente o totalmente los rayos no tienen que ser verticales? Tenga en cuenta que
retroactiva para el problema dimensional (d - 1) nos la versin tridimensional de este problema est motivada
permitir resolver el problema d - dimensional. por el trazado de rayos.

2
determinada (una caja se define como el producto cruzado
2.3 Intersecciones de intervalos d, en dos dimensiones, esto es slo un
rectngulo). Vea la Figura 4 para un ejemplo. ste es, en
El mtodo de barrido de lnea tambin se puede usar para cierto sentido, el inverso del problema anterior, en el que
encontrar intersecciones en un conjunto de segmentos de se nos dio un grfico plano, y la consulta estaba en forma
lnea, y este problema da una buena ilustracin del mtodo de punto.
de barrido de lnea.
Dado un conjunto de segmentos de lnea en el plano definido
por sus extremos, queremos encontrar todas las
intersecciones entre ellos.

Figura 4: Bsqueda de rango ortogonal

En la versin esttica del problema podemos preprocesar los


puntos, mientras que en la versin dinmica los puntos se
aaden y eliminan. En ambos casos, consultamos los puntos
Figura 3: Un barrido de lnea para detectar intersecciones dinmicamente. La consulta tiene versiones diferentes:

Para resolver este problema, utilizamos la tcnica de barrido Hay puntos en la caja? Esta es la versin de
de lnea donde almacenamos los segmentos de lnea en un "existencia" del problema, y es la ms fcil.
rbol de bsqueda binario equilibrado. Las modificaciones Cuntos puntos hay en la caja? Esto puede resolver la
en el rbol de bsqueda son las siguientes. existencia tambin.
Cules son todos los puntos en la caja?
El extremo izquierdo de un segmento nos hace Alternativamente, qu es un punto, o cules son diez
insertar ese segmento en el rbol. puntos, en la caja?
El punto final derecho de un segmento nos hace
eliminar ese segmento del rbol. Estas preguntas son muy similares, y podemos resolverlas
Dos segmentos de cruce nos hacen intercambiar su con la misma eficiencia. Una vez que la excepcin es la ltima
orden dentro del rbol. pregunta -para una entrada dada, la respuesta puede
implicar devolver todos los puntos del conjunto, lo que
Podemos utilizar estas ideas para resolver el problema de tomara O (n) tiempo. Por lo tanto, estamos buscando una
interseccin de segmentos de lnea en O (n log n + k) cuando solucin similar a O (log n + k), donde k es el tamao de la
hay k intersecciones. Para ello, debemos ser capaces de salida.
determinar de manera eficiente la prxima vez que se
cruzarn dos segmentos. Observamos que, si un cruce 3.1- Arboles de Rango
ocurrira antes de agregar o eliminar ms segmentos, Comencemos con el caso 1-dimensional, d = 1. Para
tendra que involucrar dos segmentos que estn resolverlo, podemos simplemente ordenar los puntos y usar
actualmente adyacentes en la orden de rbol. Luego, para la bsqueda binaria. La consulta es un intervalo [a, b];
cada segmento, rastreamos cundo cruzara su sucesor en el podemos encontrar el predecesor de a y el sucesor de b en
rbol y cada nodo interno rastrea el cruce ms temprano en la lista ordenada y usar los resultados para averiguar si hay
su subrbol. No es difcil mantener estos datos adicionales algn punto en la caja; restar los ndices para determinar el
en O (log n) tiempo por actualizacin, y al realizar un nmero de puntos; o imprimir directamente una lista de
intercambio se puede hacer en tiempo constante. puntos en el cuadro. Desafortunadamente las matrices no
generalizan bien, aunque las utilizaremos ms adelante.
3.- Bsqueda de Rango Ortogonal Podemos lograr los mismos tiempos de ejecucin usando
una estructura llamada Range Trees. Los rboles del rango
En este problema se nos dan n puntos en dimensiones d, y
fueron inventados por un nmero de personas
la consulta es determinar qu puntos caen en una caja
simultneamente a finales de los aos setenta [3], [2], [11],
3
[12], [16]. Podemos construir un rbol de rango como sigue.
Considere un rbol de bsqueda binario equilibrado (BBST)
con los datos almacenados en las hojas solamente. Esto ser
conveniente para las dimensiones ms altas. Cada nodo no-
hoja almacena el min y el mximo de las hojas en sus
subrboles; alternativamente, podemos almacenar el valor
mximo en el subrbol izquierdo si queremos almacenar
solo un valor por nodo. De nuevo, buscamos pred (a) y succ Figura 6: Los subrboles de todos los elementos entre a y b
(b) (ver la Figura 5). A medida que buscamos, nos
Ahora queremos ordenar los puntos por coordenadas y. No
moveremos por el rbol y la rama en un nmero de puntos.
podemos usar un rbol de rango sobre todos los puntos,
(Como antes, la bsqueda de pred (a) y succ (b) toma O (log
porque slo estamos interesados en los puntos que
n) tiempo.) Una vez que los caminos de pred (a) y succ (b)
conocemos entre a1 y b1, en lugar de todos los puntos del
divergen, en cualquier momento giramos a la izquierda en
conjunto. Podemos restringir nuestra atencin a estos
un nodo mientras
puntos creando, para cada subrbol x, un rbol de rango y
dimensional correspondiente, que consta de todos los
puntos de esa sub-rbol x, pero ahora ordenados por su
coordenada y. Tambin almacenaremos un puntero en cada
nodo del rbol de rangos x al correspondiente rbol y (ver
Figura 7 para un ejemplo). Por ejemplo, x, x y x apuntan
a subrboles correspondientes y, y y y. x es un subrbol
de x en x, pero y es disjunto de y (aunque y x
Figura 5: Ruta de ramificacin a pred (a) y succ (b) almacenan el mismo conjunto de puntos).
buscando a pred (a), sabemos que todas las hojas del
subrbol derecho de ese nodo estn en el intervalo dado. Lo
mismo ocurre con los subrboles izquierdos de la rama
derecha. Si el rbol izquierdo se ramifica a la derecha o el
rbol derecho a la izquierda, no nos importa el subrbol del
otro; esas hojas estn fuera del intervalo. La respuesta se
representa implcitamente de la siguiente manera: Si
almacenamos el tamao del subrbol de cada nodo en el
nodo, podemos calcular el nmero de elementos en nuestra
Figura 7: Cada uno de los nodos en el nivel x tiene un
lista en tiempo O (log n). Para encontrar los primeros k
puntero a todos los nios de ese nodo ordenados en la
nmeros, podemos visitar los primeros elementos k despus
dimensin y, que se indica en naranja.
de pred (a) en tiempo O (k) (las operaciones en las dos
oraciones anteriores podran ser ms fciles de visualizar subrboles correspondientes y, y y y. x es un subrbol
con referencia a la Figura 6). Estos son los mismos resultados de x en x, pero y es disjunto de y (incluso aunque
que recibimos con matrices, pero los rboles de rango son y y x almacenan el mismo conjunto de puntos). Esta
ms fciles de generalizar a mayor d. estructura ocupa mucho espacio: cada punto se almacena
en rboles de rango de log y, por lo que estamos usando
Veamos el caso 2-d, buscando puntos entre a1 y b1 en x y a2 y
(nlogn) espacio. Sin embargo, ahora podemos hacer la
b2 en y. Podemos construir un rbol de rango usando slo la
bsqueda eficientemente - podemos filtrar primero nuestro
coordenada x de cada punto, y luego repetir el
conjunto de puntos por x coordinar y luego buscar los
procedimiento anterior para averiguar qu puntos caen
correspondientes rboles de rangos y para filtrar por la
entre a1 y b1.
coordenada y. Fueron buscando a travs de O (log n) y
subrboles, por lo que la consulta se ejecuta en tiempo O
(log2 n). Podemos extender esta idea a dimensiones d,
almacenando un subrbol y para cada subrbol x, un
subrbol z para cada uno y subrbol, y as sucesivamente.

4
Esto resulta en un tiempo de consulta de O (logd n). Cada
dimensin aade un factor de O (log n) en el espacio;
podemos almacenar el rbol en O (n logd-1 n) espacio en
total. Si el conjunto de puntos es esttico, podemos
preprocesarlos en O (n logd-1) tiempo para d> 1; la
clasificacin toma tiempo O (n log n) para d = 1. La
construccin de los rboles de rango en este tiempo lmite
no es trivial, pero se puede hacer.

4.- Referencias
[1] S. Alstrup, G. Stolting Brodal, T. Rauhe, New data structures
for orthogonal range searching, Foundations of Computer
st
Science, 2000. Proceedings, 41 annual symposium, 198-
207.

[2] J.L. Bentley, Multidimensional Binary Search Trees in


Database Applications, IEEE Transactions on Software
Engineering, 4:333-340, 1979.

[3] M. de Berg, O. Cheong, M. van Kreveld, M. Overmars,


Computational Geometry: Algorithms and Applications,
rd
Springer, 3 edition, 2008.
[4] G. Blelloch, Space-efficient dynamic orthogonal point
location, segment intersection, and range reporting, SODA
2008:894-903.

[5] B. Chazelle, Reportin and counting segment intersections,


Journal of Computer and System Sciences 32(2):156-182,
1986.

[6] B. Chazelle, L. Guibas, Fractional Cascading: I. A Data


Structuring Technique, Algorithmica, 1(2):133-162, 1986.
[7] B. Chazelle, L. Guibas, Fractional Cascading: II. Applications,
Algorithmica, 1(2):163-191, 1986.

[8] D. Dobkin, R. Lipton, Multidimensional searching problems,


SIAM Journal on Computing, 5(2):181-186, 1976.

You might also like