SlideShare une entreprise Scribd logo
1  sur  119
Télécharger pour lire hors ligne
Estructuras de Datos Espaciales
Tópico Especial
Demián Gutierrez
Departamento de Computación
Septiembre 2013
Demián Gutierrez Universidad de Los Andes
Estructuras de Datos Espaciales 1/119
introducción
Demián Gutierrez Universidad de Los Andes
Estructuras de Datos Espaciales 2/119
¿qué tipos de datos vamos a manejar?
P1
P2
P3
P4
P5
L1
L2
L3
R1
R2
R3
R5
R6
R4
...generalmente en 2D, en 3D,
y en algunos casos, también n-dimensionales
Demián Gutierrez Universidad de Los Andes
Estructuras de Datos Espaciales 3/119
¿qué operaciones vamos a realizar?
¿qué problemas vamos a resolver?
Demián Gutierrez Universidad de Los Andes
Estructuras de Datos Espaciales 4/119
“construir” una estrucura de datos en base a un conjunto de datos
(puntos, líneas, rectángulos, etc)
insertar/eliminar elementos en una estructura de datos
(no aplica a todas)
realizar algún tipo de consulta
realizar algún tipo de combinación, división, etc
Demián Gutierrez Universidad de Los Andes
Estructuras de Datos Espaciales 5/119
P1
P2
P3
P4
P5
L1
L2
L3
R1
R2
R3
R5
R6
R4
consultas:
¿qué “formas” están contenidas en un área dada?
Demián Gutierrez Universidad de Los Andes
Estructuras de Datos Espaciales 6/119
P1
P2
P3
P4
P5
L1
L2
L3
R1
R2
R3
R5
R6
R4
consultas:
¿qué “formas” están contenidas en un área dada?
Demián Gutierrez Universidad de Los Andes
Estructuras de Datos Espaciales 7/119
P1
P2
P3
P4
P5
L1
L2
L3
R1
R2
R3
R5
R6
R4
stabbing:
¿qué “formas” son atravesadas por una recta dada?
Demián Gutierrez Universidad de Los Andes
Estructuras de Datos Espaciales 8/119
P1
P2
P3
P4
P5
L1
L2
L3
R1
R2
R3
R5
R6
R4
stabbing:
¿qué “formas” son atravesadas por una recta dada?
Demián Gutierrez Universidad de Los Andes
Estructuras de Datos Espaciales 9/119
L1
L2
L3
L4
L5
L6
ordenamiento:
¿qué “formas” están atrás (o adelante) de qué “formas”?
Demián Gutierrez Universidad de Los Andes
Estructuras de Datos Espaciales 10/119
L1
L2
L3
L4
L5
L6
1
¿2 , 3?
4
5
6
ordenamiento:
¿qué “formas” están atrás (o adelante) de qué “formas”?
Demián Gutierrez Universidad de Los Andes
Estructuras de Datos Espaciales 11/119
P3
P2
P1
P4
P5
P6
P7
P8
P9
punto/objeto más cercano:
¿cuál es el punto u objeto más cercano a un punto dado?
(no tratado en el presente tópico especial)
Demián Gutierrez Universidad de Los Andes
Estructuras de Datos Espaciales 12/119
P3
P2
P1
P4
P5
P6
P7
P8
P9
¿se ve trivial?
¿qué algoritmo se les ocurre?
Demián Gutierrez Universidad de Los Andes
Estructuras de Datos Espaciales 13/119
P3
P2
P1
P4
P5
P6
P7
P8
P9
k=3
una variante:
¿cuáles son los k-puntos más cercanos?
(no tratado en el presente tópico especial)
Demián Gutierrez Universidad de Los Andes
Estructuras de Datos Espaciales 14/119
P3
P2
P1
P4
P5
P6
P7
P8
P9
par de puntos más cercanos:
dado un conjunto de puntos ¿cuál es el par de puntos más
cercanos entre si?
(no tratado en el presente tópico especial)
Demián Gutierrez Universidad de Los Andes
Estructuras de Datos Espaciales 15/119
P3
P2
P1
P4
P5
P6
P7
P8
P9
¿se ve trivial?
¿qué algoritmo se les ocurre?
Demián Gutierrez Universidad de Los Andes
Estructuras de Datos Espaciales 16/119
búsqueda de patrones y grupos / clasificación:
¿qué patrones o grupos existen en un conjunto de puntos?
¿dado un nuevo punto ¿a qué grupo pertenece?
Demián Gutierrez Universidad de Los Andes
Estructuras de Datos Espaciales 17/119
tomado de:
https://onramps.instructure.com/courses/723227/wiki/classifying-data
Demián Gutierrez Universidad de Los Andes
Estructuras de Datos Espaciales 18/119
clasificación / compresión:
¿qué áreas o bloques contienen información
similar o del mismo tipo?
Demián Gutierrez Universidad de Los Andes
Estructuras de Datos Espaciales 19/119
tomado de:
http://ivrg.epfl.ch/supplementary_material/RK_SIGGRAPH_Asia09
Demián Gutierrez Universidad de Los Andes
Estructuras de Datos Espaciales 20/119
pathfinding:
¿camino óptimo del punto A al punto B? ¿hay un camino?
¿cómo explotar ciertas características espaciales para optimizar
algoritmos tradicionales de búsqueda?
Demián Gutierrez Universidad de Los Andes
Estructuras de Datos Espaciales 21/119
muchas otras
en general, las estructuras de datos espaciales
tienen un campo de aplicación extremadamente ámplio
Demián Gutierrez Universidad de Los Andes
Estructuras de Datos Espaciales 22/119
objetivos
Demián Gutierrez Universidad de Los Andes
Estructuras de Datos Espaciales 23/119
implementar un conjunto de estructuras de datos
espaciales para aprender lo más posible sobre el tema
sentar las bases de lo que puede ser en el futuro una
biblioteca de estructuras de datos espaciales y geometría
computacional escrita en Java
Demián Gutierrez Universidad de Los Andes
Estructuras de Datos Espaciales 24/119
plan inicial de trabajo
Demián Gutierrez Universidad de Los Andes
Estructuras de Datos Espaciales 25/119
basado principalmente en el libro de
Hanan Samet,
The Design and Analisys of Spatial Data Structures
+ BSPs (binary space partition)
Demián Gutierrez Universidad de Los Andes
Estructuras de Datos Espaciales 26/119
Point Data
Nonhierarchical Data Structures
Point Quadtrees
K-D Trees
Range Trees
Region Based Quadtrees
Demián Gutierrez Universidad de Los Andes
Estructuras de Datos Espaciales 27/119
Collection of Small Rectangles
Plane-Sweep Methods and the Rectangle Intersection Problem
Multiple Quadtree Block Representations
R-Trees
Demián Gutierrez Universidad de Los Andes
Estructuras de Datos Espaciales 28/119
Volume Data
Region Octrees
PM Octrees
BSP (Binary Space Partition)
Demián Gutierrez Universidad de Los Andes
Estructuras de Datos Espaciales 29/119
Algunos Extras/Aplicaciones
Hierarchical A*
Marching Squares
Convex Hull (Polígono/Casco Convexo)
Algoritmo de Douglas-Peucker (Suavizado de Polígonos)
Demián Gutierrez Universidad de Los Andes
Estructuras de Datos Espaciales 30/119
point quadtrees
Demián Gutierrez Universidad de Los Andes
Estructuras de Datos Espaciales 31/119
son el equivalente, en 2D de un árbol binario de búsqueda
1 3
2
4
5
6
8
7 9
10
11
12
14
13 15
Demián Gutierrez Universidad de Los Andes
Estructuras de Datos Espaciales 32/119
cada punto en un Point Quadtree
divide el espacio en cuatro cuadrantes
P1
NW NE
SESW
Demián Gutierrez Universidad de Los Andes
Estructuras de Datos Espaciales 33/119
la división del espacio se hace recursivamente
por cada punto que se inserta
P1
NE
SESW
P2
NW
NW NE
SESW
Demián Gutierrez Universidad de Los Andes
Estructuras de Datos Espaciales 34/119
el resultado es una estructura “arborea”,
donde cada nodo tiene cuatro hijos
NW NE SW SENW NE SW SE NW NE SW SE NW NE SW SE
NW NE SW SE
...
esta “forma” es bastante común y se verá
también en otras estructuras
Demián Gutierrez Universidad de Los Andes
Estructuras de Datos Espaciales 35/119
la estrategia de búsqueda consiste en encontrar características
geométricas que permitan descartar caminos completos para así
“podar” ramas completas
NW NE SW SENW NE SW SE NW NE SW SE NW NE SW SE
NW NE SW SE
...
esta estrategia es usada también en otras estructuras “arboreas”
Demián Gutierrez Universidad de Los Andes
Estructuras de Datos Espaciales 36/119
la eliminación, es una operación más compleja que en un árbol
binario de búsqueda (1/3)
1 3
2
4
5
6
8
7 9
10
11
12
14
13 15
Demián Gutierrez Universidad de Los Andes
Estructuras de Datos Espaciales 37/119
la eliminación, es una operación más compleja que en un árbol
binario de búsqueda (2/3)
1 3
2
5
4
6
8
7 9
10
11
12
14
13 15
Demián Gutierrez Universidad de Los Andes
Estructuras de Datos Espaciales 38/119
la eliminación, es una operación más compleja que en un árbol
binario de búsqueda (3/3)
1 3
2
5
6
8
7 9
10
11
12
14
13 15
Demián Gutierrez Universidad de Los Andes
Estructuras de Datos Espaciales 39/119
si se analiza el siguiente point quadtree
P1
P2
P3
P4
P5
P6
P7
P8
P9
Demián Gutierrez Universidad de Los Andes
Estructuras de Datos Espaciales 40/119
se obtiene el siguiente árbol
... ... P7 ...... ... ... P6 ... P8 ... ... P9 ... ... ...
P2 P3 P4 P5
P1
si queremos eliminar P1, ¿quién es el sucesor o el predecesor?
¿con quién se intercambia el nodo que queremos eliminar?
¿hay un orden natural en los datos?
Demián Gutierrez Universidad de Los Andes
Estructuras de Datos Espaciales 41/119
en este caso, ¿con quién intercambiamos P1?
P1
P6
P7
P8
P9
Demián Gutierrez Universidad de Los Andes
Estructuras de Datos Espaciales 42/119
¿y en este caso? ¿con quién intercambiamos P1?
P1
P6 P7
P8
P9
Demián Gutierrez Universidad de Los Andes
Estructuras de Datos Espaciales 43/119
¿y en este otro caso? ¿con quién intercambiamos P1?
P1
P6
P7
P8
P9
Demián Gutierrez Universidad de Los Andes
Estructuras de Datos Espaciales 44/119
buscar un nodo e insertar un hijo tiene un costo promedio de
O(log4N)
el peor caso en la búsqueda de un rango es de O(2N1/2
)
eliminación (algoritmo simple): se busca el nodo a eliminar
(O(log4N)) y se reinsertan los nodos que están por debajo del
nodo eliminado (¿O((M +1)log4N), donde M es el número de
hijos del nodo eliminado?)
eliminación (algoritmo complejo): hay algoritmos más complejos y
difíciles de implementar que reducen la cantidad de nodos que es
necesario reinsertar
Demián Gutierrez Universidad de Los Andes
Estructuras de Datos Espaciales 45/119
Demián Gutierrez Universidad de Los Andes
Estructuras de Datos Espaciales 46/119
10.000 nodos (ver la barra de estado de la captura de pantalla)
Demián Gutierrez Universidad de Los Andes
Estructuras de Datos Espaciales 47/119
k-d-trees
Demián Gutierrez Universidad de Los Andes
Estructuras de Datos Espaciales 48/119
cada punto divide el espacio en dos “semiespacios”
P1
x<=Px1
x> Px1
la división se hace usando sólo una de las coordenadas del punto
y una línea paralela a uno de los ejes
Demián Gutierrez Universidad de Los Andes
Estructuras de Datos Espaciales 49/119
la coordenada y el eje seleccionados para hacer la división
dependen del nivel del punto dentro del árbol que conforma la
estructura de datos
P1
x<=Px1
x> Px1
y<=Py2
y> Py2
P2
P3
y<=Py3
y> Py3
Demián Gutierrez Universidad de Los Andes
Estructuras de Datos Espaciales 50/119
para niveles impares se utiliza la coordenada X del punto y la
división se hace paralela al eje Y, de lo contrario, se utiliza la
coordenada Y y la división se hace paralela al eje X
P1
P2 P3
... ...
P4
... ...
P5
... ...
P6
... ...
P7
x<=Px1
x> Px1
y<=Py2
y> Py2
y<=Py3
y> Py3
x <= > <= > <= > <= >
L1: X
L2: Y
L3: X
L4: Y
...
esta idea puede fácilmente extenderse a datos
multidimensionales
Demián Gutierrez Universidad de Los Andes
Estructuras de Datos Espaciales 51/119
buscar un nodo e insertar un hijo tiene un costo promedio de
O(log2N)
el peor caso en la búsqueda de un rango es de O(kN1−1/k
),
donde k es el número de claves o dimensión del árbol
eliminación: la eliminación es un algoritmo complejo, tiene
similitud con la eliminación en un árbol binario.
la cota máxima de eliminar un nodo seleccionado aleatoriamente
es O(log2N), siendo el peor caso eliminar la raiz, que es
linealmente acotado
Demián Gutierrez Universidad de Los Andes
Estructuras de Datos Espaciales 52/119
Demián Gutierrez Universidad de Los Andes
Estructuras de Datos Espaciales 53/119
10.000 nodos (ver la barra de estado de la captura de pantalla)
Demián Gutierrez Universidad de Los Andes
Estructuras de Datos Espaciales 54/119
point region quadtree
Demián Gutierrez Universidad de Los Andes
Estructuras de Datos Espaciales 55/119
dada una región bien definida
usualmente un rectángulo cuyos lados miden 2n
Demián Gutierrez Universidad de Los Andes
Estructuras de Datos Espaciales 56/119
el espacio se divide recursivamente en cuatro partes según sea
necesario, de tal forma que cada parte tenga 1/4 del área del
rectángulo inicialmente definido
P1
el rectángulo inicial corresponde al nodo raiz del árbol,
cada división corresponde a un nodo hijo
Demián Gutierrez Universidad de Los Andes
Estructuras de Datos Espaciales 57/119
en algunos casos no es necesario hacer ninguna división, porque
el punto insertado corresponde a un nodo vacío
P1
P2
Demián Gutierrez Universidad de Los Andes
Estructuras de Datos Espaciales 58/119
las divisiones se hacen recursivamente a medida que se insertan
puntos. . .
P1
P2
P3
Demián Gutierrez Universidad de Los Andes
Estructuras de Datos Espaciales 59/119
garantizando que siempre haya sólo un punto por nodo
P1
P2
P3
P4
Demián Gutierrez Universidad de Los Andes
Estructuras de Datos Espaciales 60/119
esto puede traer algunos problemas
¿cómo se resuelven?
Demián Gutierrez Universidad de Los Andes
Estructuras de Datos Espaciales 61/119
Plane-Sweep Methods and the Rectangle
Intersection Problem
Demián Gutierrez Universidad de Los Andes
Estructuras de Datos Espaciales 62/119
PROBLEMA:
¿Qué rectángulos se intersectan con qué rectángulos?
R1
R2
R3
R4
R5
R6
R7
R8
Solución ingenua, todos contra todos (muy poco eficiente)
Demián Gutierrez Universidad de Los Andes
Estructuras de Datos Espaciales 63/119
Dada una línea, alineada con el eje X se puede “barrer” el plano
de izquierda a derecha
R1
R2
R3
R4
R5
R6
R7
R8
Las coordenadas de inicio y de fin en X de cada rectángulo se
pueden almacenar en un árbol binario de búsqueda (o alguna
otra estructura similar) para mantener un orden
Demián Gutierrez Universidad de Los Andes
Estructuras de Datos Espaciales 64/119
Cuando se encuentra un rectángulo, se añade a una estructura
de datos adicional, pero esta vez, ordenada por el inicio y el fin
en Y de cada rectángulo
R1
R2
R3
R4
R5
R6
R7
R8
R1
Por la naturaleza del barrido en X se sabe que cada rectángulo
en la estructura de datos adicional se intersectan al menos en X
Demián Gutierrez Universidad de Los Andes
Estructuras de Datos Espaciales 65/119
Cada vez que se añade un elemento a la estructura de datos
adicional se verifica si el rectángulo nuevo se intersecta con
alguno de los rectángulos previamente insertados
R1
R2
R3
R4
R5
R6
R7
R8
R1
, R2
Demián Gutierrez Universidad de Los Andes
Estructuras de Datos Espaciales 66/119
Si se encuentra una intersección en Y, entonces se sabe que
ambos rectángulos se intersectan en el espacio
R1
R2
R3
R4
R5
R6
R7
R8
R1
, R2
, R3
Demián Gutierrez Universidad de Los Andes
Estructuras de Datos Espaciales 67/119
Cuando el barrido en X llega al final de un rectángulo, lo remueve
de la estructura de datos adicional
R1
R2
R3
R4
R5
R6
R7
R8
R2
, R3
Demián Gutierrez Universidad de Los Andes
Estructuras de Datos Espaciales 68/119
etc. . .
R1
R2
R3
R4
R5
R6
R7
R8
R3
Demián Gutierrez Universidad de Los Andes
Estructuras de Datos Espaciales 69/119
etc. . .
R1
R2
R3
R4
R5
R6
R7
R8
R3
, R4
Demián Gutierrez Universidad de Los Andes
Estructuras de Datos Espaciales 70/119
etc. . .
R1
R2
R3
R4
R5
R6
R7
R8
R4
Demián Gutierrez Universidad de Los Andes
Estructuras de Datos Espaciales 71/119
Multiple Quadtree Block Representations
Demián Gutierrez Universidad de Los Andes
Estructuras de Datos Espaciales 72/119
. . .
dada una región bien definida,
usualmente rectangular
Demián Gutierrez Universidad de Los Andes
Estructuras de Datos Espaciales 73/119
. . .
R1
Demián Gutierrez Universidad de Los Andes
Estructuras de Datos Espaciales 74/119
. . .
R1
R2
Demián Gutierrez Universidad de Los Andes
Estructuras de Datos Espaciales 75/119
. . .
R3
R1
R2
Demián Gutierrez Universidad de Los Andes
Estructuras de Datos Espaciales 76/119
. . .
R3
R4
R1
R2
Demián Gutierrez Universidad de Los Andes
Estructuras de Datos Espaciales 77/119
. . .
Demián Gutierrez Universidad de Los Andes
Estructuras de Datos Espaciales 78/119
R-Trees
Demián Gutierrez Universidad de Los Andes
Estructuras de Datos Espaciales 79/119
para entender un R-Tree, es necesario entender un B+ Tree
5 5 7 5 7 97 9
11 5 7 9 11 Oops... 5 7 9 11
5 7 9 11
9
...
Demián Gutierrez Universidad de Los Andes
Estructuras de Datos Espaciales 80/119
5 7 9 11
9
5 7 8 9 11
9
8
5 7 86 9 11
9
6
5 6 7 8
7 9
...
9 11
Demián Gutierrez Universidad de Los Andes
Estructuras de Datos Espaciales 81/119
5 6 7 8
7 9
9 11
4 653 7 8
7 9
9 11
3, 4
43 7 8
5 7 9
9 11
...
5 6
Demián Gutierrez Universidad de Los Andes
Estructuras de Datos Espaciales 82/119
eventualmente, no sólo se desborda un nodo hoja sino que
también se desborda un nódo interno
43 7 8
5 7 9
9 115 6
43 7 8
5 7 9
9 11 12 13
12, 13
5 6
Demián Gutierrez Universidad de Los Andes
Estructuras de Datos Espaciales 83/119
en ese momento, el árbol crece un nivel
y al mismo tiempo se mantiene balanceado
43 7 8
5 7 9 12
9 11
...
5 6 12 13
43 7 8
9 12
9 11
...
5 6 12 13
5
7
Demián Gutierrez Universidad de Los Andes
Estructuras de Datos Espaciales 84/119
un R-Tree funciona de forma similar, salvo por el hecho de que no
existe un orden absoluto en los datos a almacenar
a b c
a
b
c
a
b
c
d
w x
a c b d
a
b
c
d
e
f
w x
a c e b d f
es perfectamente válido que los rectángulos se solapen entre sí
Demián Gutierrez Universidad de Los Andes
Estructuras de Datos Espaciales 85/119
a medida que se insertan nodos, estos se van agrupando en
zonas rectangulares, que a su vez se agrupan en zonas
rectangulares y así de forma recursiva.
w y x
c e b d fa g w y
c e b fa g d h
x z
u v
a
b
c
d
e
f
g
w
y x
a
b
c
d
e
f
g h
y x vu
w
z
Demián Gutierrez Universidad de Los Andes
Estructuras de Datos Espaciales 86/119
dos de las heurísticas principales usadas para agrupar
rectángulos
a
c e
g
a
c e
g
a
c e
g
a
c e
g
(1)
(2)
(1) minimizar el área de los rectángulos y (2) minimizar el área o
la cantidad de intersecciones de los rectángulos
Demián Gutierrez Universidad de Los Andes
Estructuras de Datos Espaciales 87/119
también es posible tener r-trees en 3D
(tomado de wikipedia)
Demián Gutierrez Universidad de Los Andes
Estructuras de Datos Espaciales 88/119
Octrees
Demián Gutierrez Universidad de Los Andes
Estructuras de Datos Espaciales 89/119
son estructuras muy similares a los quadtrees, pero en 3D
en lugar de dividir el plano en 4 partes como en los quadtrees,
el espacio se divide en 8 partes
(http://en.wikipedia.org/wiki/File:Octree2.svg)
Demián Gutierrez Universidad de Los Andes
Estructuras de Datos Espaciales 90/119
los órdenes de ejecución son similares a los de los respectivos
quadtrees, sólo que en lugar de usar log4 se usa log8
(por razones evidentes)
Demián Gutierrez Universidad de Los Andes
Estructuras de Datos Espaciales 91/119
Binary Space Partitioning
BSP
Demián Gutierrez Universidad de Los Andes
Estructuras de Datos Espaciales 92/119
en un mundo plano, desde el punto de vista de la cámara,
tenemos que “dibujar” los siguientes segmentos
L1
L2
L2
, L1
L1
, L2
dependiendo del orden en que se dibujen se obtienen
distintos resultados, sólo hay un orden correcto
Demián Gutierrez Universidad de Los Andes
Estructuras de Datos Espaciales 93/119
sin embargo, aquí tenemos un problema:
L1
L2
L2
, L1
L1
, L2
correcto
Demián Gutierrez Universidad de Los Andes
Estructuras de Datos Espaciales 94/119
para resolverlo, es necesario “cortar” uno de los segmentos,
transformándolo en dos segmentos distintos
L1
L2
L3
Correcto: L3
, L2
, L1
Demián Gutierrez Universidad de Los Andes
Estructuras de Datos Espaciales 95/119
BSP 2D: Prestar atención al punto amarillo (1/2)
Demián Gutierrez Universidad de Los Andes
Estructuras de Datos Espaciales 96/119
BSP 2D: Prestar atención al punto amarillo (2/2)
Demián Gutierrez Universidad de Los Andes
Estructuras de Datos Espaciales 97/119
BSP 3D
Demián Gutierrez Universidad de Los Andes
Estructuras de Datos Espaciales 98/119
Algunos “Extras"
Demián Gutierrez Universidad de Los Andes
Estructuras de Datos Espaciales 99/119
desde hace algún tiempo, me interesa mucho el problema de la
búsqueda de caminos
después de todo, si se desea implementar un “ambiente virtual” o
un buen juego masivo multijugador de rol es importante tener una
buena IA, y para esto es muchas veces es crítico tener una
buena búsqueda de caminos
Demián Gutierrez Universidad de Los Andes
Estructuras de Datos Espaciales 100/119
con mapas pequeños, es fácil y eficiente buscar caminos entre
dos puntos usando Dijkstra, una búsqueda por amplitud o A*
Tomado de:
http://theory.stanford.edu/ amitp/GameProgramming/
Demián Gutierrez Universidad de Los Andes
Estructuras de Datos Espaciales 101/119
con un mapa grande tenemos problemas de rendimiento
cada pixel es un nodo: 1024 nodos por 1024 nodos = 1048576
Demián Gutierrez Universidad de Los Andes
Estructuras de Datos Espaciales 102/119
Dijkstra: 6.9 segundos
Demián Gutierrez Universidad de Los Andes
Estructuras de Datos Espaciales 103/119
A*: 3.6 segundos
Demián Gutierrez Universidad de Los Andes
Estructuras de Datos Espaciales 104/119
una posible solución. . .
Demián Gutierrez Universidad de Los Andes
Estructuras de Datos Espaciales 105/119
A* jerárquico: 0.15 segundos
Demián Gutierrez Universidad de Los Andes
Estructuras de Datos Espaciales 106/119
el problema también se puede atacar desde otro punto de vista
Demián Gutierrez Universidad de Los Andes
Estructuras de Datos Espaciales 107/119
el mapa original
Tomado de: http://www.ai-blog.net/archives/000152.html
Demián Gutierrez Universidad de Los Andes
Estructuras de Datos Espaciales 108/119
una posibilidad es usando waypoints,
pero esta estrategia trae muchos problemas
Demián Gutierrez Universidad de Los Andes
Estructuras de Datos Espaciales 109/119
la mejor solución es usando mallas de navegación,
pero el problema es construir las mallas para cada mapa
Demián Gutierrez Universidad de Los Andes
Estructuras de Datos Espaciales 110/119
recast: genera automáticamente mallas de navegación
detour: calcula caminos en función de las mallas de navegación
http://www.mooncollider.com/recast-and-detour/
Demián Gutierrez Universidad de Los Andes
Estructuras de Datos Espaciales 111/119
mi intento:
En 2D y es un trabajo en progreso. . .
Demián Gutierrez Universidad de Los Andes
Estructuras de Datos Espaciales 112/119
calcular los contornos de las paredes y obstáculos
(usando marching squares)
Demián Gutierrez Universidad de Los Andes
Estructuras de Datos Espaciales 113/119
marching squares: casos posibles
Demián Gutierrez Universidad de Los Andes
Estructuras de Datos Espaciales 114/119
marching squares: detalle de la imagen
Demián Gutierrez Universidad de Los Andes
Estructuras de Datos Espaciales 115/119
bien, pero: ¿cual es el problema con el “marching squares”?
ver la imagen a detalle:
Demián Gutierrez Universidad de Los Andes
Estructuras de Datos Espaciales 116/119
para resolver el problema, se implementó el algoritmo de Douglas
Peucker, que básicamente sirve para simplificar polígonos
Demián Gutierrez Universidad de Los Andes
Estructuras de Datos Espaciales 117/119
aún quedan algunos problemas que resolver
pero la idea es, una vez que se resuelva el problema de los
contornos, aplicar una Triangulación Delaunay y usar el resultado
como malla de navegación
to be continued. . .
Demián Gutierrez Universidad de Los Andes
Estructuras de Datos Espaciales 118/119
¿Futuro?
Continuar desarrollando la colección de estructuras de datos y
algoritmos para transformarla en una biblioteca de estructuras de
datos espaciales y algoritmos de geometría computacional
Demián Gutierrez Universidad de Los Andes
Estructuras de Datos Espaciales 119/119

Contenu connexe

Plus de Demián Gutierrez

Plus de Demián Gutierrez (20)

Clase 04 diseno_ui
Clase 04 diseno_uiClase 04 diseno_ui
Clase 04 diseno_ui
 
Hg mini manual
Hg mini manualHg mini manual
Hg mini manual
 
Clase 14b uml_actividades
Clase 14b uml_actividadesClase 14b uml_actividades
Clase 14b uml_actividades
 
Clase 14a uml_estados
Clase 14a uml_estadosClase 14a uml_estados
Clase 14a uml_estados
 
Clase 13 uml_paquetes
Clase 13 uml_paquetesClase 13 uml_paquetes
Clase 13 uml_paquetes
 
Clase 12b uml_clases_ejemplos
Clase 12b uml_clases_ejemplosClase 12b uml_clases_ejemplos
Clase 12b uml_clases_ejemplos
 
Clase 12a uml_clases
Clase 12a uml_clasesClase 12a uml_clases
Clase 12a uml_clases
 
Clase 11 uml_casos_de_uso
Clase 11 uml_casos_de_usoClase 11 uml_casos_de_uso
Clase 11 uml_casos_de_uso
 
Clase 10 mvc
Clase 10 mvcClase 10 mvc
Clase 10 mvc
 
Clase 09c seleccion
Clase 09c seleccionClase 09c seleccion
Clase 09c seleccion
 
Clase 09a frameworks_ejemplo
Clase 09a frameworks_ejemploClase 09a frameworks_ejemplo
Clase 09a frameworks_ejemplo
 
Clase 09a frameworks
Clase 09a frameworksClase 09a frameworks
Clase 09a frameworks
 
Clase 08c ejemplo_maquina_virtual
Clase 08c ejemplo_maquina_virtualClase 08c ejemplo_maquina_virtual
Clase 08c ejemplo_maquina_virtual
 
Clase 08b ejemplo_capas_cleda
Clase 08b ejemplo_capas_cledaClase 08b ejemplo_capas_cleda
Clase 08b ejemplo_capas_cleda
 
Clase 08a estilos_arquitectonicos
Clase 08a estilos_arquitectonicosClase 08a estilos_arquitectonicos
Clase 08a estilos_arquitectonicos
 
Clase 07b patrones_diseno_ejemplo
Clase 07b patrones_diseno_ejemploClase 07b patrones_diseno_ejemplo
Clase 07b patrones_diseno_ejemplo
 
Clase 07a patrones_diseno
Clase 07a patrones_disenoClase 07a patrones_diseno
Clase 07a patrones_diseno
 
Clase 06 diseno_arquitectura
Clase 06 diseno_arquitecturaClase 06 diseno_arquitectura
Clase 06 diseno_arquitectura
 
Clase 05d cobertura de codigo
Clase 05d cobertura de codigoClase 05d cobertura de codigo
Clase 05d cobertura de codigo
 
Clase 05c niveles de pruebas
Clase 05c niveles de pruebasClase 05c niveles de pruebas
Clase 05c niveles de pruebas
 

Dernier

Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxNombre Apellidos
 
Tecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxTecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxGESTECPERUSAC
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.241514949
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxazmysanros90
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptchaverriemily794
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son241514984
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx241522327
 
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOAREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOnarvaezisabella21
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadMiguelAngelVillanuev48
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptJavierHerrera662252
 
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxModelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxtjcesar1
 
Presentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia ArtificialPresentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia Artificialcynserafini89
 
Trabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfTrabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfedepmariaperez
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxaylincamaho
 
Los Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, AplicacionesLos Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, AplicacionesEdomar AR
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfjeondanny1997
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxAlexander López
 
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúRed Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúCEFERINO DELGADO FLORES
 
tarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzztarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzzAlexandergo5
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx241523733
 

Dernier (20)

Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
 
Tecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxTecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptx
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptx
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx
 
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOAREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidad
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
 
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxModelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
 
Presentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia ArtificialPresentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia Artificial
 
Trabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfTrabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdf
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
 
Los Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, AplicacionesLos Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, Aplicaciones
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
 
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúRed Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
 
tarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzztarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzz
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx
 

Estructuras de Datos Espaciales (Topico Especial)

  • 1. Estructuras de Datos Espaciales Tópico Especial Demián Gutierrez Departamento de Computación Septiembre 2013 Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 1/119
  • 2. introducción Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 2/119
  • 3. ¿qué tipos de datos vamos a manejar? P1 P2 P3 P4 P5 L1 L2 L3 R1 R2 R3 R5 R6 R4 ...generalmente en 2D, en 3D, y en algunos casos, también n-dimensionales Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 3/119
  • 4. ¿qué operaciones vamos a realizar? ¿qué problemas vamos a resolver? Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 4/119
  • 5. “construir” una estrucura de datos en base a un conjunto de datos (puntos, líneas, rectángulos, etc) insertar/eliminar elementos en una estructura de datos (no aplica a todas) realizar algún tipo de consulta realizar algún tipo de combinación, división, etc Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 5/119
  • 6. P1 P2 P3 P4 P5 L1 L2 L3 R1 R2 R3 R5 R6 R4 consultas: ¿qué “formas” están contenidas en un área dada? Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 6/119
  • 7. P1 P2 P3 P4 P5 L1 L2 L3 R1 R2 R3 R5 R6 R4 consultas: ¿qué “formas” están contenidas en un área dada? Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 7/119
  • 8. P1 P2 P3 P4 P5 L1 L2 L3 R1 R2 R3 R5 R6 R4 stabbing: ¿qué “formas” son atravesadas por una recta dada? Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 8/119
  • 9. P1 P2 P3 P4 P5 L1 L2 L3 R1 R2 R3 R5 R6 R4 stabbing: ¿qué “formas” son atravesadas por una recta dada? Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 9/119
  • 10. L1 L2 L3 L4 L5 L6 ordenamiento: ¿qué “formas” están atrás (o adelante) de qué “formas”? Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 10/119
  • 11. L1 L2 L3 L4 L5 L6 1 ¿2 , 3? 4 5 6 ordenamiento: ¿qué “formas” están atrás (o adelante) de qué “formas”? Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 11/119
  • 12. P3 P2 P1 P4 P5 P6 P7 P8 P9 punto/objeto más cercano: ¿cuál es el punto u objeto más cercano a un punto dado? (no tratado en el presente tópico especial) Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 12/119
  • 13. P3 P2 P1 P4 P5 P6 P7 P8 P9 ¿se ve trivial? ¿qué algoritmo se les ocurre? Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 13/119
  • 14. P3 P2 P1 P4 P5 P6 P7 P8 P9 k=3 una variante: ¿cuáles son los k-puntos más cercanos? (no tratado en el presente tópico especial) Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 14/119
  • 15. P3 P2 P1 P4 P5 P6 P7 P8 P9 par de puntos más cercanos: dado un conjunto de puntos ¿cuál es el par de puntos más cercanos entre si? (no tratado en el presente tópico especial) Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 15/119
  • 16. P3 P2 P1 P4 P5 P6 P7 P8 P9 ¿se ve trivial? ¿qué algoritmo se les ocurre? Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 16/119
  • 17. búsqueda de patrones y grupos / clasificación: ¿qué patrones o grupos existen en un conjunto de puntos? ¿dado un nuevo punto ¿a qué grupo pertenece? Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 17/119
  • 18. tomado de: https://onramps.instructure.com/courses/723227/wiki/classifying-data Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 18/119
  • 19. clasificación / compresión: ¿qué áreas o bloques contienen información similar o del mismo tipo? Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 19/119
  • 20. tomado de: http://ivrg.epfl.ch/supplementary_material/RK_SIGGRAPH_Asia09 Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 20/119
  • 21. pathfinding: ¿camino óptimo del punto A al punto B? ¿hay un camino? ¿cómo explotar ciertas características espaciales para optimizar algoritmos tradicionales de búsqueda? Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 21/119
  • 22. muchas otras en general, las estructuras de datos espaciales tienen un campo de aplicación extremadamente ámplio Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 22/119
  • 23. objetivos Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 23/119
  • 24. implementar un conjunto de estructuras de datos espaciales para aprender lo más posible sobre el tema sentar las bases de lo que puede ser en el futuro una biblioteca de estructuras de datos espaciales y geometría computacional escrita en Java Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 24/119
  • 25. plan inicial de trabajo Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 25/119
  • 26. basado principalmente en el libro de Hanan Samet, The Design and Analisys of Spatial Data Structures + BSPs (binary space partition) Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 26/119
  • 27. Point Data Nonhierarchical Data Structures Point Quadtrees K-D Trees Range Trees Region Based Quadtrees Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 27/119
  • 28. Collection of Small Rectangles Plane-Sweep Methods and the Rectangle Intersection Problem Multiple Quadtree Block Representations R-Trees Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 28/119
  • 29. Volume Data Region Octrees PM Octrees BSP (Binary Space Partition) Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 29/119
  • 30. Algunos Extras/Aplicaciones Hierarchical A* Marching Squares Convex Hull (Polígono/Casco Convexo) Algoritmo de Douglas-Peucker (Suavizado de Polígonos) Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 30/119
  • 31. point quadtrees Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 31/119
  • 32. son el equivalente, en 2D de un árbol binario de búsqueda 1 3 2 4 5 6 8 7 9 10 11 12 14 13 15 Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 32/119
  • 33. cada punto en un Point Quadtree divide el espacio en cuatro cuadrantes P1 NW NE SESW Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 33/119
  • 34. la división del espacio se hace recursivamente por cada punto que se inserta P1 NE SESW P2 NW NW NE SESW Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 34/119
  • 35. el resultado es una estructura “arborea”, donde cada nodo tiene cuatro hijos NW NE SW SENW NE SW SE NW NE SW SE NW NE SW SE NW NE SW SE ... esta “forma” es bastante común y se verá también en otras estructuras Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 35/119
  • 36. la estrategia de búsqueda consiste en encontrar características geométricas que permitan descartar caminos completos para así “podar” ramas completas NW NE SW SENW NE SW SE NW NE SW SE NW NE SW SE NW NE SW SE ... esta estrategia es usada también en otras estructuras “arboreas” Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 36/119
  • 37. la eliminación, es una operación más compleja que en un árbol binario de búsqueda (1/3) 1 3 2 4 5 6 8 7 9 10 11 12 14 13 15 Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 37/119
  • 38. la eliminación, es una operación más compleja que en un árbol binario de búsqueda (2/3) 1 3 2 5 4 6 8 7 9 10 11 12 14 13 15 Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 38/119
  • 39. la eliminación, es una operación más compleja que en un árbol binario de búsqueda (3/3) 1 3 2 5 6 8 7 9 10 11 12 14 13 15 Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 39/119
  • 40. si se analiza el siguiente point quadtree P1 P2 P3 P4 P5 P6 P7 P8 P9 Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 40/119
  • 41. se obtiene el siguiente árbol ... ... P7 ...... ... ... P6 ... P8 ... ... P9 ... ... ... P2 P3 P4 P5 P1 si queremos eliminar P1, ¿quién es el sucesor o el predecesor? ¿con quién se intercambia el nodo que queremos eliminar? ¿hay un orden natural en los datos? Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 41/119
  • 42. en este caso, ¿con quién intercambiamos P1? P1 P6 P7 P8 P9 Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 42/119
  • 43. ¿y en este caso? ¿con quién intercambiamos P1? P1 P6 P7 P8 P9 Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 43/119
  • 44. ¿y en este otro caso? ¿con quién intercambiamos P1? P1 P6 P7 P8 P9 Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 44/119
  • 45. buscar un nodo e insertar un hijo tiene un costo promedio de O(log4N) el peor caso en la búsqueda de un rango es de O(2N1/2 ) eliminación (algoritmo simple): se busca el nodo a eliminar (O(log4N)) y se reinsertan los nodos que están por debajo del nodo eliminado (¿O((M +1)log4N), donde M es el número de hijos del nodo eliminado?) eliminación (algoritmo complejo): hay algoritmos más complejos y difíciles de implementar que reducen la cantidad de nodos que es necesario reinsertar Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 45/119
  • 46. Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 46/119
  • 47. 10.000 nodos (ver la barra de estado de la captura de pantalla) Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 47/119
  • 48. k-d-trees Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 48/119
  • 49. cada punto divide el espacio en dos “semiespacios” P1 x<=Px1 x> Px1 la división se hace usando sólo una de las coordenadas del punto y una línea paralela a uno de los ejes Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 49/119
  • 50. la coordenada y el eje seleccionados para hacer la división dependen del nivel del punto dentro del árbol que conforma la estructura de datos P1 x<=Px1 x> Px1 y<=Py2 y> Py2 P2 P3 y<=Py3 y> Py3 Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 50/119
  • 51. para niveles impares se utiliza la coordenada X del punto y la división se hace paralela al eje Y, de lo contrario, se utiliza la coordenada Y y la división se hace paralela al eje X P1 P2 P3 ... ... P4 ... ... P5 ... ... P6 ... ... P7 x<=Px1 x> Px1 y<=Py2 y> Py2 y<=Py3 y> Py3 x <= > <= > <= > <= > L1: X L2: Y L3: X L4: Y ... esta idea puede fácilmente extenderse a datos multidimensionales Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 51/119
  • 52. buscar un nodo e insertar un hijo tiene un costo promedio de O(log2N) el peor caso en la búsqueda de un rango es de O(kN1−1/k ), donde k es el número de claves o dimensión del árbol eliminación: la eliminación es un algoritmo complejo, tiene similitud con la eliminación en un árbol binario. la cota máxima de eliminar un nodo seleccionado aleatoriamente es O(log2N), siendo el peor caso eliminar la raiz, que es linealmente acotado Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 52/119
  • 53. Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 53/119
  • 54. 10.000 nodos (ver la barra de estado de la captura de pantalla) Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 54/119
  • 55. point region quadtree Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 55/119
  • 56. dada una región bien definida usualmente un rectángulo cuyos lados miden 2n Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 56/119
  • 57. el espacio se divide recursivamente en cuatro partes según sea necesario, de tal forma que cada parte tenga 1/4 del área del rectángulo inicialmente definido P1 el rectángulo inicial corresponde al nodo raiz del árbol, cada división corresponde a un nodo hijo Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 57/119
  • 58. en algunos casos no es necesario hacer ninguna división, porque el punto insertado corresponde a un nodo vacío P1 P2 Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 58/119
  • 59. las divisiones se hacen recursivamente a medida que se insertan puntos. . . P1 P2 P3 Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 59/119
  • 60. garantizando que siempre haya sólo un punto por nodo P1 P2 P3 P4 Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 60/119
  • 61. esto puede traer algunos problemas ¿cómo se resuelven? Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 61/119
  • 62. Plane-Sweep Methods and the Rectangle Intersection Problem Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 62/119
  • 63. PROBLEMA: ¿Qué rectángulos se intersectan con qué rectángulos? R1 R2 R3 R4 R5 R6 R7 R8 Solución ingenua, todos contra todos (muy poco eficiente) Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 63/119
  • 64. Dada una línea, alineada con el eje X se puede “barrer” el plano de izquierda a derecha R1 R2 R3 R4 R5 R6 R7 R8 Las coordenadas de inicio y de fin en X de cada rectángulo se pueden almacenar en un árbol binario de búsqueda (o alguna otra estructura similar) para mantener un orden Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 64/119
  • 65. Cuando se encuentra un rectángulo, se añade a una estructura de datos adicional, pero esta vez, ordenada por el inicio y el fin en Y de cada rectángulo R1 R2 R3 R4 R5 R6 R7 R8 R1 Por la naturaleza del barrido en X se sabe que cada rectángulo en la estructura de datos adicional se intersectan al menos en X Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 65/119
  • 66. Cada vez que se añade un elemento a la estructura de datos adicional se verifica si el rectángulo nuevo se intersecta con alguno de los rectángulos previamente insertados R1 R2 R3 R4 R5 R6 R7 R8 R1 , R2 Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 66/119
  • 67. Si se encuentra una intersección en Y, entonces se sabe que ambos rectángulos se intersectan en el espacio R1 R2 R3 R4 R5 R6 R7 R8 R1 , R2 , R3 Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 67/119
  • 68. Cuando el barrido en X llega al final de un rectángulo, lo remueve de la estructura de datos adicional R1 R2 R3 R4 R5 R6 R7 R8 R2 , R3 Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 68/119
  • 69. etc. . . R1 R2 R3 R4 R5 R6 R7 R8 R3 Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 69/119
  • 70. etc. . . R1 R2 R3 R4 R5 R6 R7 R8 R3 , R4 Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 70/119
  • 71. etc. . . R1 R2 R3 R4 R5 R6 R7 R8 R4 Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 71/119
  • 72. Multiple Quadtree Block Representations Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 72/119
  • 73. . . . dada una región bien definida, usualmente rectangular Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 73/119
  • 74. . . . R1 Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 74/119
  • 75. . . . R1 R2 Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 75/119
  • 76. . . . R3 R1 R2 Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 76/119
  • 77. . . . R3 R4 R1 R2 Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 77/119
  • 78. . . . Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 78/119
  • 79. R-Trees Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 79/119
  • 80. para entender un R-Tree, es necesario entender un B+ Tree 5 5 7 5 7 97 9 11 5 7 9 11 Oops... 5 7 9 11 5 7 9 11 9 ... Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 80/119
  • 81. 5 7 9 11 9 5 7 8 9 11 9 8 5 7 86 9 11 9 6 5 6 7 8 7 9 ... 9 11 Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 81/119
  • 82. 5 6 7 8 7 9 9 11 4 653 7 8 7 9 9 11 3, 4 43 7 8 5 7 9 9 11 ... 5 6 Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 82/119
  • 83. eventualmente, no sólo se desborda un nodo hoja sino que también se desborda un nódo interno 43 7 8 5 7 9 9 115 6 43 7 8 5 7 9 9 11 12 13 12, 13 5 6 Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 83/119
  • 84. en ese momento, el árbol crece un nivel y al mismo tiempo se mantiene balanceado 43 7 8 5 7 9 12 9 11 ... 5 6 12 13 43 7 8 9 12 9 11 ... 5 6 12 13 5 7 Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 84/119
  • 85. un R-Tree funciona de forma similar, salvo por el hecho de que no existe un orden absoluto en los datos a almacenar a b c a b c a b c d w x a c b d a b c d e f w x a c e b d f es perfectamente válido que los rectángulos se solapen entre sí Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 85/119
  • 86. a medida que se insertan nodos, estos se van agrupando en zonas rectangulares, que a su vez se agrupan en zonas rectangulares y así de forma recursiva. w y x c e b d fa g w y c e b fa g d h x z u v a b c d e f g w y x a b c d e f g h y x vu w z Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 86/119
  • 87. dos de las heurísticas principales usadas para agrupar rectángulos a c e g a c e g a c e g a c e g (1) (2) (1) minimizar el área de los rectángulos y (2) minimizar el área o la cantidad de intersecciones de los rectángulos Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 87/119
  • 88. también es posible tener r-trees en 3D (tomado de wikipedia) Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 88/119
  • 89. Octrees Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 89/119
  • 90. son estructuras muy similares a los quadtrees, pero en 3D en lugar de dividir el plano en 4 partes como en los quadtrees, el espacio se divide en 8 partes (http://en.wikipedia.org/wiki/File:Octree2.svg) Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 90/119
  • 91. los órdenes de ejecución son similares a los de los respectivos quadtrees, sólo que en lugar de usar log4 se usa log8 (por razones evidentes) Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 91/119
  • 92. Binary Space Partitioning BSP Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 92/119
  • 93. en un mundo plano, desde el punto de vista de la cámara, tenemos que “dibujar” los siguientes segmentos L1 L2 L2 , L1 L1 , L2 dependiendo del orden en que se dibujen se obtienen distintos resultados, sólo hay un orden correcto Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 93/119
  • 94. sin embargo, aquí tenemos un problema: L1 L2 L2 , L1 L1 , L2 correcto Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 94/119
  • 95. para resolverlo, es necesario “cortar” uno de los segmentos, transformándolo en dos segmentos distintos L1 L2 L3 Correcto: L3 , L2 , L1 Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 95/119
  • 96. BSP 2D: Prestar atención al punto amarillo (1/2) Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 96/119
  • 97. BSP 2D: Prestar atención al punto amarillo (2/2) Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 97/119
  • 98. BSP 3D Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 98/119
  • 99. Algunos “Extras" Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 99/119
  • 100. desde hace algún tiempo, me interesa mucho el problema de la búsqueda de caminos después de todo, si se desea implementar un “ambiente virtual” o un buen juego masivo multijugador de rol es importante tener una buena IA, y para esto es muchas veces es crítico tener una buena búsqueda de caminos Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 100/119
  • 101. con mapas pequeños, es fácil y eficiente buscar caminos entre dos puntos usando Dijkstra, una búsqueda por amplitud o A* Tomado de: http://theory.stanford.edu/ amitp/GameProgramming/ Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 101/119
  • 102. con un mapa grande tenemos problemas de rendimiento cada pixel es un nodo: 1024 nodos por 1024 nodos = 1048576 Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 102/119
  • 103. Dijkstra: 6.9 segundos Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 103/119
  • 104. A*: 3.6 segundos Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 104/119
  • 105. una posible solución. . . Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 105/119
  • 106. A* jerárquico: 0.15 segundos Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 106/119
  • 107. el problema también se puede atacar desde otro punto de vista Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 107/119
  • 108. el mapa original Tomado de: http://www.ai-blog.net/archives/000152.html Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 108/119
  • 109. una posibilidad es usando waypoints, pero esta estrategia trae muchos problemas Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 109/119
  • 110. la mejor solución es usando mallas de navegación, pero el problema es construir las mallas para cada mapa Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 110/119
  • 111. recast: genera automáticamente mallas de navegación detour: calcula caminos en función de las mallas de navegación http://www.mooncollider.com/recast-and-detour/ Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 111/119
  • 112. mi intento: En 2D y es un trabajo en progreso. . . Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 112/119
  • 113. calcular los contornos de las paredes y obstáculos (usando marching squares) Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 113/119
  • 114. marching squares: casos posibles Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 114/119
  • 115. marching squares: detalle de la imagen Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 115/119
  • 116. bien, pero: ¿cual es el problema con el “marching squares”? ver la imagen a detalle: Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 116/119
  • 117. para resolver el problema, se implementó el algoritmo de Douglas Peucker, que básicamente sirve para simplificar polígonos Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 117/119
  • 118. aún quedan algunos problemas que resolver pero la idea es, una vez que se resuelva el problema de los contornos, aplicar una Triangulación Delaunay y usar el resultado como malla de navegación to be continued. . . Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 118/119
  • 119. ¿Futuro? Continuar desarrollando la colección de estructuras de datos y algoritmos para transformarla en una biblioteca de estructuras de datos espaciales y algoritmos de geometría computacional Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 119/119