Estructuras de Datos Espaciales (Topico Especial)

1,583 views

Published on

Esta fue la presentación final de mi tópico especial en estructuras de datos espaciales.

Antes de que alguién lo mencione: Si, el ejemplo del B+ Tree tienen un error.

El código está en:

https://bitbucket.org/demiangutierrez/space

Advertencia: No es una librería de estructuras de datos, no es estable, no tienen una buena API, tiene bugs, hay repetición, inconsistencias, etc. Es código que se escribió con fines académicos, no para producción. Algún día pretendo transformarlo en una librería (se acepta ayuda), pero es sucederá (si sucede) en un futuro muy lejano.

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,583
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
79
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Estructuras de Datos Espaciales (Topico Especial)

  1. 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. 2. introducción Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 2/119
  3. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 23. objetivos Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 23/119
  24. 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. 25. plan inicial de trabajo Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 25/119
  26. 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. 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. 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. 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. 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. 31. point quadtrees Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 31/119
  32. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 46. Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 46/119
  47. 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. 48. k-d-trees Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 48/119
  49. 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. 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. 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. 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. 53. Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 53/119
  54. 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. 55. point region quadtree Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 55/119
  56. 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. 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. 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. 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. 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. 61. esto puede traer algunos problemas ¿cómo se resuelven? Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 61/119
  62. 62. Plane-Sweep Methods and the Rectangle Intersection Problem Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 62/119
  63. 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. 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. 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. 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. 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. 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. 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. 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. 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. 72. Multiple Quadtree Block Representations Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 72/119
  73. 73. . . . dada una región bien definida, usualmente rectangular Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 73/119
  74. 74. . . . R1 Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 74/119
  75. 75. . . . R1 R2 Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 75/119
  76. 76. . . . R3 R1 R2 Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 76/119
  77. 77. . . . R3 R4 R1 R2 Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 77/119
  78. 78. . . . Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 78/119
  79. 79. R-Trees Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 79/119
  80. 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. 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. 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. 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. 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. 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. 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. 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. 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. 89. Octrees Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 89/119
  90. 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. 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. 92. Binary Space Partitioning BSP Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 92/119
  93. 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. 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. 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. 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. 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. 98. BSP 3D Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 98/119
  99. 99. Algunos “Extras" Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 99/119
  100. 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. 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. 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. 103. Dijkstra: 6.9 segundos Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 103/119
  104. 104. A*: 3.6 segundos Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 104/119
  105. 105. una posible solución. . . Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 105/119
  106. 106. A* jerárquico: 0.15 segundos Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 106/119
  107. 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. 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. 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. 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. 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. 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. 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. 114. marching squares: casos posibles Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 114/119
  115. 115. marching squares: detalle de la imagen Demián Gutierrez Universidad de Los Andes Estructuras de Datos Espaciales 115/119
  116. 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. 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. 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. 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

×