universidad politÉcnica de madrid - … · reconstrucción de un modelo tridimensional a partir de...

97
UNIVERSIDAD POLITÉCNICA DE MADRID FACULTAD DE INFÓRMATICA TRABAJO FIN DE CARRERA GRAFOS DE PROXIMIDAD. ESTRATEGIAS DE RUTEO Julio 2007 AUTOR : José María Gil Martín TUTOR : Gregorio Hernández Peñalver

Upload: dinhdiep

Post on 14-Oct-2018

218 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: UNIVERSIDAD POLITÉCNICA DE MADRID - … · Reconstrucción de un modelo tridimensional a partir de una nube de puntos 4 1.2.3. El problema generalizado de diseño de una red 5

UNIVERSIDAD POLITÉCNICA DE MADRID FACULTAD DE INFÓRMATICA

TRABAJO FIN DE CARRERA

GRAFOS DE PROXIMIDAD. ESTRATEGIAS DE RUTEO

Julio 2007

AUTOR : José María Gil Martín TUTOR : Gregorio Hernández Peñalver

Page 2: UNIVERSIDAD POLITÉCNICA DE MADRID - … · Reconstrucción de un modelo tridimensional a partir de una nube de puntos 4 1.2.3. El problema generalizado de diseño de una red 5
Page 3: UNIVERSIDAD POLITÉCNICA DE MADRID - … · Reconstrucción de un modelo tridimensional a partir de una nube de puntos 4 1.2.3. El problema generalizado de diseño de una red 5

i

ÍNDICE

1. Introducción y Objetivos 1 1.1. Definiciones 2 1.2. Motivación 3

1.2.1. Poligonizaciones 3 1.2.2. Reconstrucción de un modelo tridimensional a partir de

una nube de puntos 4 1.2.3. El problema generalizado de diseño de una red 5 1.2.4. Salida de un laberinto 6 1.2.5. Mallas propensas a fallos 7 1.2.6. Robots móviles cooperativos y redes inalámbricas 8

2. Grafos de Proximidad , Spanners y estrategias de Ruteo 10 2.1. Grafos de Proximidad y Spanners 10

2.1.1. t-Spanner 10 2.1.2. Dilación(Stretch factor o dilation) 10 2.1.3. t-Spanner débil ( Weak t-Spanner) 10 2.1.4. (t, δ)- power spanner. 10 2.1.5. t-Spanners , t-Spanners débiles y

(t, δ)-power spanners 11 2.2. Grafos de Proximidad 12 2.2.1. Grafo de vecindad dirigida (NPG) 12 2.2.2. Árbol Generador Mínimo (MST) 12 2.2.3. Grafo de Vecindad Relativa (RNG) 14 2.2.4. Grafo de Gabriel (GG) 15 2.2.5. Triangulación incremental (IT) 17

2.2.6. Diagrama de Voronoi (VG) 17 2.2.7. Triangulación de Delaunay (DT) 18 2.2.8. Grafo de disco unidad (UDG) 21 2.2.9. Grafo de Delaunay Restringido (RDG) 22 2.2.10. Triangulación Voraz (GT) 23 2.2.11. Grafo de Yao (YG) 23 2.2.12. Grafo θ (θG) 24 2.2.13. Grafo Half-Space proximal (HSPG) 25 2.2.14. Familia de grafos Gθλ (θλG) 26 2.2.15. Familia de Grafos β-Skeleton (βSG) 27 2.3. Estrategias de Ruteo 29 2.3.1. Clasificación de los algoritmos de ruteo 29 2.3.2. Ruteo Voraz ( Greedy Routing ) 30 2.3.3. Ruteo de Brújula (Compass Routing) 32 2.3.4. Ruteo de Brújula Aleatorizado (Random Compass) 33 2.3.5. Ruteo Voraz-Brújula ( Greedy-Compass Routing) 33

Page 4: UNIVERSIDAD POLITÉCNICA DE MADRID - … · Reconstrucción de un modelo tridimensional a partir de una nube de puntos 4 1.2.3. El problema generalizado de diseño de una red 5

ii

2.3.6. Ruteo de Voronoi ( Voronoi routing ) 35 2.3.7. Ruteo por Caras 1 ( Face-1 Routing ) 36 2.3.8. Ruteo por Caras 2 (Face-2 Routing) 36 2.3.9. Ruteo Voraz-Caras-Voraz (Greedy-Face-Greedy) 37 2.3.10. Ruteo local en la familia de Grafos Gθλ 38

3. Aspectos de Diseño e implementación 39 3.1. Requisitos mínimos del sistema 40 3.2. Integración de los algoritmos de grafos 40 3.2.1. Grafo de Vecindad Dirigida 40 3.2.2. Árbol Generador Mínimo. 40 3.2.3. Grafo de Vecindad Relativa 41 3.2.4. Grafo de Gabriel 42 3.2.5. Triangulación Incremental 42 3.2.6. Triangulación de Delaunay 44 3.2.7. Triangulación de Delaunay Restringida 45 3.2.8. Triangulación Voraz 45 3.2.9. Diagrama de Voronoi 46 3.2.10. Grafo de Yao 46 3.2.11. Grafo Theta 47 3.2.12. Grafo de Disco Unidad 47 3.2.13. Grafo Half-Space Proximal 47 3.2.14. Familia de Grafos Theta-Lambda 48 3.2.15. Familia de Grafos Beta-Skeleton 49 3.3. Integración de los algoritmos de Ruteo 49 3.3.1. Algoritmo de Ruteo Voraz 50 3.3.2. Algoritmo de Ruteo con Brújula 50 3.3.3. Algoritmo de Ruteo con Brújula Aleatorizado 51 3.3.4. Algoritmo de Ruteo Voraz-Brújula 51 3.3.5. Algoritmo de Ruteo de Voronoi 52 3.3.6. Algoritmo de Ruteo por Caras 1 52 3.3.7. Algoritmo de Ruteo por Caras 2 52 3.3.8. Algoritmo de Ruteo Voraz-Caras-Voraz 53 3.3.9. Algoritmo de Ruteo local en Grafos Theta-Lambda 53 3.4. Diagramas de Clase 53

4. Manual de usuario 68 4.1. Barra de menús 68 4.1.1. Menú File 69

4.1.2. Menú Edit 69 4.1.3. Menú Execution 70 4.1.4. Menú View 70 4.2. Barras de Herramientas de Grafos y manejo de ficheros 71 4.3. Barra de herramientas de ruteo y configuración 73 4.4. Superficie gráfica 74 4.5. Barra de estado 75 4.6. Ventana de configuración 75

5. Estudio comparativo 77

Page 5: UNIVERSIDAD POLITÉCNICA DE MADRID - … · Reconstrucción de un modelo tridimensional a partir de una nube de puntos 4 1.2.3. El problema generalizado de diseño de una red 5

iii

5.1. Prueba 1 78 5.1.1. Grafo de Vecindad Relativa 78 5.1.2. Grafo de Gabriel 79 5.1.3. Triangulación de Delaunay 79 5.1.4. Conclusiones sobre la prueba 1 80 5.2. Prueba 2 80 5.2.1. Grafo de Vecindad Relativa ∩ UDG 81 5.2.2. Grafo de Gabriel ∩ UDG 81 5.2.3. Grafo de Delaunay Restringido 82 5.2.4. Grafo de Yao ∩ UDG 82 5.2.5. Grafo Theta ∩ UDG 83 5.2.6. Grafo Theta-Lambda ∩ UDG 83 5.2.7. Conclusiones sobre la prueba 2 84 5.3. Prueba 3 84 6. Conclusiones 86

Page 6: UNIVERSIDAD POLITÉCNICA DE MADRID - … · Reconstrucción de un modelo tridimensional a partir de una nube de puntos 4 1.2.3. El problema generalizado de diseño de una red 5

iv

LISTADO DE ILUSTRACIONES Página

Figura 1. Poligonizaciones monótona y estrellada 4 Figura 2. Adquisición de nube de puntos a partir de un modelo real mediante scanner. 4 Figura 3. Reconstrucción del modelo mediante una triangulación de Delaunay. 5 Figura 4. Laberinto de paredes y pasillos. 6 Figura 5. Solución del laberinto siguiendo la regla de la mano derecha. 7 Figura 6.(a) Malla 10x10 sin fallos. (b) Malla 10x10 con fallos en vértices y aristas 8 Figura 7. Demostración de Teorema 2 sobre spanners. 11 Figura 8. Grafo de Vecindad dirigida. 12 Figura 9. Árbol generador mínimo 13 Figura 10. Demostración de la Propiedad 2. 14 Figura 11. Vecinos relativos y Grafo de Vecindad Relativa 14 Figura 12. Demostración de MST ⊆ RNG 15 Figura 13. Vecinos de Gabriel y Grafo de Gabriel. 15 Figura 14. Demostración de RNG ⊆ GG 16 Figura 15. Demostración de Propiedad 3 del Grafo de Gabriel 16 Figura 16. Triangulación incremental 17 Figura 17. Diagrama de Voronoi 18 Figura 18. Dos triangulaciones distintas y sus ángulos interiores. 18 Figura 19. Dualidad Diagrama de Voronoi-Triangulación de Delaunay 19 Figura 20. Triángulo perteneciente a DT y Triangulación de Delaunay 19 Figura 21. Arista de la DT que no pertenece a GG. 20 Figura 22. Demostración de planaridad de la Triangulación de Delaunay. 21 Figura 23. Arista del UDG y Grafo de Disco Unidad 21 Figura 24. Aristas del grafo de Yao, con k=6, y Grafo de Yao 23 Figura 25. Aristas del Grafo θ para k=6, y Grafo θ 24 Figura 26. Grafo Half-Space proximal 25 Figura 27. Demostración de cota inferior para la dilación de HSP. 26 Figura 28. Región de destrucción de r respecto a p. 26 Figura 29. Demostración de Propiedad 2. 27 Figura 30. Vecindario basado en lunas con β > 0 28 Figura 31. Grafos que derrotan al ruteo voraz 31 Figura 32. Demostración de la Propiedad 1 del ruteo voraz 31 Figura 33. Triangulación que derrota al Ruteo de Brújula 32 Figura 34. Visibilidad de triángulos en el Ruteo de Brújula 32 Figura 35. Demostración de la Propiedad 1 del ruteo voraz-brújula 34 Figura 36. Camino del Ruteo de Voronoi 35 Figura 37. El Ruteo de Voronoi no es competitivo para todas las triangulaciones 35 Figura 38. Ruteo por Caras 1 36 Figura 39. Ruteo por Caras 2 37 Figura 40. Un mal grafo de entrada para el algoritmo ruteo por caras 2 37 Figura 41. Ruteo Greedy-Face-Greedy ( Ruteo Voraz y Ruteo por Caras 2) 38 Figura 42. p3 es destructor de t 38 Figura 43. Se añade un nuevo punto t a la triangulación 43 Figura 44. Soportes inferior y superior 43 Figura 45. Triángulos que no cumplen la condición de Delaunay 44 Figura 46. Flip de aristas 44 Figura 47. Paso a paso del test HSPG para un punto 48 Figura 48. Ruteo Voraz 50 Figura 49. Ruteo con Brújula 50 Figura 50. Ruteo Voraz-Brújula 51 Figura 51. Clase Geocomp 54 Figura 52. Clase Canvas 55 Figura 53. Clase TDel. 56 Figura 54. Clase Punto 57 Figura 55. Clase Arista 58 Figura 56. Herencia de la clase Arista 58 Figura 57. clase Arista_Circulo 59 Figura 58. clase Circulo_Circulo 59

Page 7: UNIVERSIDAD POLITÉCNICA DE MADRID - … · Reconstrucción de un modelo tridimensional a partir de una nube de puntos 4 1.2.3. El problema generalizado de diseño de una red 5

v

Figura 59. clase Arista_Semiplano 59 Figura 60. clase Arista_Angulo 60 Figura 61. clase Arista_Trazos 60 Figura 62. clase Arista_Sectores 60 Figura 63. clase Arista_Flecha 61 Figura 64. clase Arco 61 Figura 65. clase Linea 61 Figura 66. clase StateBar 62 Figura 67. clase Lista_Animación 62 Figura 68. clase WEdge 62 Figura 69. clase WTrig 63 Figura 70. Clase Lista_Puntos 63 Figura 71. clase Lista_Rectas 63 Figura 72. clase Config 64 Figura 73. clase ColorDialog 65 Figura 74. clase ProRouting 65 Figura 75. Diagrama de clases. Relaciones de asociación y generalización 66 Figura 76. Relaciones de herencia entre las clases de la aplicación y Java 67 Figura 77. Aplicación ProRouting 68 Figura 78. Menú File 69 Figura 79. Menú Edit 69 Figura 80. Menú Execution 70 Figura 81. Menú View 71 Figura 82. Barra de herramientas de grafos y ficheros 71 Figura 83. Barra de herramientas de ruteo y configuración 73 Figura 84. Barra de estado 75 Figura 85. Ventana de configuración 76 Figura 86. Ratios para el Grafo de Vecindad Relativa 78 Figura 87. Ratios para el Grafo de Gabriel 79 Figura 88. Ratios para la Triangulación de Delaunay 79 Figura 89. Ratios para la triangulación de Delaunay (2) 80 Figura 90. Ratios para el Grafo de Vecindad Relativa 81 Figura 91.Ratios para el Grafo de Gabriel 81 Figura 92. Ratios para la Triangulación de Delaunay Restringida 82 Figura 93. Ratios para el Grafo de Yao 82 Figura 94. Ratios para el Grafo Theta 83 Figura 95. Ratios para el Grafo HSPG 83 Figura 96. Ratios del Grafo Theta –lambda de 20 vértices 84 Figura 97. Ratios del Grafo Theta-lambda de 40 vértices 85 Figura 98. Ratios del Grafo Theta-Lambda de 60 vértices 85

Page 8: UNIVERSIDAD POLITÉCNICA DE MADRID - … · Reconstrucción de un modelo tridimensional a partir de una nube de puntos 4 1.2.3. El problema generalizado de diseño de una red 5

vi

AGRADECIMIENTOS

Deseo dar las gracias: A Gregorio Hernández por la oportunidad de realizar este proyecto fin de carrera y su atención durante la tutela. A mi familia y amigos por su apoyo durante la realización del proyecto.

Page 9: UNIVERSIDAD POLITÉCNICA DE MADRID - … · Reconstrucción de un modelo tridimensional a partir de una nube de puntos 4 1.2.3. El problema generalizado de diseño de una red 5

- 1 -

Capítulo 1

INTRODUCCIÓN Y OBJETIVOS

El objetivo de este proyecto es la realización de una aplicación software con dos funciones principales; por una parte la construcción de grafos geométricos de proximidad, y por otra parte la capacidad de poder probar distintas estrategias de búsqueda de caminos (online routing ). Los grafos de proximidad se construyen a partir de la idea de "vecindad" entre dos puntos, una propiedad que se establece entre los vértices del grafo y permite decidir si una arista pertenece o no al grafo. A partir de distintos criterios de vecindad se construyen grafos bien conocidos (Grafo de Vecindad Relativa, Grafo de Gabriel, Triangulación de Delaunay,...), que tienen aplicación en campos tan diversos como la visión por computador, análisis espacial en geografía o clasificación de patrones entre otros. Las estrategias de ruteo "online" se caracterizan por el desconocimiento de gran parte de la geometría del grafo donde se van a utilizar, y típicamente se conoce sólo información sobre el nodo origen, nodo destino y el nodo actualmente visitado y sus adyacentes. Este tipo de estrategias se utilizan en redes de computadores, robótica, computación distribuida y en muchas otras disciplinas. Los algoritmos incluidos en la aplicación son: Ruteo Voraz, Ruteo con Brújula, Ruteo con Brújula Aleatorizado, Ruteo Voraz-Brújula, Ruteo de Voronoi, Ruteo por caras 1 y Ruteo por Caras 2) , Ruteo Voraz-Caras-Voraz y Estrategia de ruteo local en la familia de grafos Gθ

λ. La aplicación software ProRouting está basada en trabajos anteriores de los compañeros de facultad David Ramos, Ruben Naranjo y Damián Serrano. Con ProRouting (su nombre viene de Proximity Graphs & Online Routing) es posible la construcción de un gran número de grafos de proximidad (Grafo de vecindad dirigida, Arbol generador minimal, Grafo de Vecindad Relativa, Grafo de Gabriel, Triangulación incremental, Triangulación de Delaunay, Triangulación de Delaunay Restringida, Triangulación Voraz, Grafo de Voronoi, Grafo de Yao, Grafo Theta, Grafo de disco unidad, Grafo Half-Space proximal, familia de grafos Gθ

λ y familia de grafos ß-skeleton) así como la utilización de los algoritmos de ruteo anteriormente citados. Entre otras funciones también cabe destacar la posibilidad de añadir aristas "extra" a los grafos, dibujo "manual" de grafos, abrir y salvar grafos en fichero, configuración de parámetros de los grafos y algoritmos de ruteo, y establecer una imagen de fondo como referencia. Este documento está estructurado de la siguiente forma: en el presente capítulo 1 se hace una introducción a los grafos de proximidad y algoritmos de ruteo online. En el capítulo 2 se explican los conceptos teóricos utilizados en el proyecto. El capítulo 3 recoge los aspectos de implementación e integración en la aplicación. El capítulo 4 contiene un manual de usuario para la utilización de la aplicación. En el capítulo 5 se hace un estudio comparativo del rendimiento de los algoritmos de ruteo. Finalmente en el capítulo 6 se recogen las conclusiones.

Page 10: UNIVERSIDAD POLITÉCNICA DE MADRID - … · Reconstrucción de un modelo tridimensional a partir de una nube de puntos 4 1.2.3. El problema generalizado de diseño de una red 5

Capítulo 1 Introducción y objetivos

- 2 -

1.1 Definiciones DEF 1.1.1 Grafo geométrico. Un grafo geométrico es el par G= ( V, A ) donde V es una colección de puntos de R

n y A un conjunto de segmentos que unen estos puntos.

DEF 1.1.2 Grafo geométrico plano. Dado un grafo geométrico G=( V, A ) ,si los segmentos de A solo intersecan en extremos comunes, diremos que se trata de un grafo geométrico plano. DEF 1.1.3 Distancia. Dado un conjunto V y un par de elementos (p,q) ∈ VxV, la distancia entre p y q es cualquier función d(p,q) de VxV en R que cumple las siguientes propiedades :

.no negatividad: d(p, q) ≥ 0, ∀ p, q ∈ V

.simetría: d(p, q) = d(q, p) , ∀ p, q ∈ V

.desigualdad triangular: d(p, q) ≤ d(p, r) + d(r, q) , ∀ p, q, r ∈ V

. ∀ p ∈ V, d(p, p) = 0

.Si p, q ∈ V cumple d(p, q)=0 , entonces p=q DEF 1.1.4. Región de influencia. La región de influencia de dos puntos u, v de un Grafo de Proximidad, es una región del plano que describe un vecindario de u y v. Si la región de influencia no contiene otros puntos distintos de u y v, significa que u y v están lo suficientemente cerca como para estar conectados por una arista. DEF 1.1.5 Grafo de proximidad. Sea G=( V, A ) un grafo geométrico en Rn. Cada par de puntos (p,q) ∈ V x V está asociado a un vecindario U p, q c Rn. Sea P una propiedad definida sobre U. Un grafo de proximidad GU,P (V,A) definido por la propiedad P es un grafo en el que el par de vértices (p,q) ∈ A si y sólo si U p, q tiene la propiedad P. En algunos grafos de proximidad se asocia un vecindario a un sólo punto en lugar de a un par de puntos. DEF 1.1.6 Camino entre dos vértices. Dado un grafo G=( V, A ) , un camino entre dos vértices s, t ∈ V es una secuencia de vértices c =[s=v0, v1, ..., vn=t] tal que los pares (vi, vi+1) ∈ A, con i < n. DEF 1.1.7 Ruteo online (Online routing). Problema de búsqueda de caminos entre dos vértices de un grafo, en el que sólo se conoce información sobre el nodo origen (s), nodo destino (t) y el nodo actualmente visitado (v) y sus adyacentes N(v ). Alguna de estas estrategias de ruteo puede tener memoria y recordar además información sobre un cierto número de vértices visitados anteriormente, dependiendo del tamaño de la memoria. Todas las estrategias de ruteo de este trabajo son de este tipo.

Page 11: UNIVERSIDAD POLITÉCNICA DE MADRID - … · Reconstrucción de un modelo tridimensional a partir de una nube de puntos 4 1.2.3. El problema generalizado de diseño de una red 5

Capítulo 1 Introducción y objetivos

- 3 -

DEF 1.1.8 Un grafo derrota a un algoritmo de ruteo si existe un par de vértices s,t para los que el algoritmo no es capaz de encontrar un camino. 1.2 Motivación Existen multitud de disciplinas que aplican de forma práctica tanto los grafos de proximidad como las estrategias de ruteo. Como muestra de ello vamos a ver algunos ejemplos. Los dos primeros ejemplos son de grafos de proximidad. El tercero es de grafos de proximidad y esta relacionado también con los problemas de ruteo. Los tres últimos son ejemplos de ruteo online.

1.2.1. Poligonizaciones En diversos dominios, pero sobre todo en los Tratamiento de la Imagen y Reconocimiento de Formas se ha tratado el problema de establecer propiedades que definan conjuntos finitos de puntos para su clasificación o comprensión. Por ejemplo en el campo de la percepción computacional se pretende unir pares de puntos de forma que el grafo obtenido sea perceptualmente significativo. Para conseguir estos objetivos, se utilizan grafos geométricos que unan todos o algunos de los puntos, buscando una forma interna (esqueleto) o una forma externa (frontera o contorno). Una forma simple de asociar un contorno a un conjunto de puntos es conectar todos sus puntos formando un polígono simple. A esto se le llama poligonización del conjunto. Hay muchas formas de poligonizar una nube puntos. Normalmente se intenta dar forma a la nube de puntos de forma que sea adecuada a ciertas características dadas. Si el polígono que se emplea es simple, el grafo puede calcularse más rápidamente. Entre los grafos geométricos más utilizados para dar forma a las nubes de puntos podemos citar el Grafo del vecino más próximo, el Árbol generador mínimo, el Grafo de vecindad relativa, el Grafo de Gabriel o la Triangulación de Delaunay entre otros. Una poligonización además de ser un intento de capturar la forma de una nube de puntos, es también un preprocesamiento que permite acelerar el cálculo de diversas estructuras computacionales. Cuando se construye una poligonización normalmente se pretende que tenga ciertas propiedades dirigidas a capturar algún aspecto morfológico, o a obtener un buen comportamiento computacional frente a determinadas situaciones. Por ejemplo, pueden obtenerse poligonizaciones monótonas o estrelladas en tiempo óptimo O (n log n), que son muy empleadas para la localización de puntos.

Page 12: UNIVERSIDAD POLITÉCNICA DE MADRID - … · Reconstrucción de un modelo tridimensional a partir de una nube de puntos 4 1.2.3. El problema generalizado de diseño de una red 5

Capítulo 1 Introducción y objetivos

- 4 -

Figura 1. Poligonizaciones monótona y estrellada

1.2.2 Reconstrucción de un modelo tridimensional a partir de una nube de puntos. Relacionado con el ejemplo anterior de poligonización vamos a ver otro ejemplo en el campo de la Informática Gráfica. Cada día tienen más importancia las aplicaciones informáticas que hacen uso de representaciones tridimensionales de la realidad y en los más diversos ámbitos (ingeniería, arquitectura, medicina, ocio,...). El proceso de reconstrucción tiene como objetivo obtener un modelo tridimensional en un computador que conserve las dimensiones y volumen del objeto real que quiere representarse. A este modelo también se le pueden añadir otras propiedades como textura o color para dar mayor sensación de realidad a la representación. Una forma de realizar este proceso es la siguiente: En un primer paso se obtiene una nube de puntos representativa del objeto mediante alguno de los métodos habituales (scanner láser 3D, técnicas de visión artificial, sensores,...).Este primer paso puede complementarse con un refinamiento de la nube de puntos para eliminar puntos de ruido o no representativos.

Figura 2. Adquisición de nube de puntos a partir de un modelo real mediante scanner. Una vez obtenida la nube de puntos el objetivo es obtener elementos de superficie (triángulos, cuadrados,...) uniendo estos puntos. Una forma rápida y eficaz de realizar esto consiste en la construcción de un grafo de proximidad (en R3 ) ; habitualmente se usan las triangulaciones, en especial la triangulación de Delaunay Restringida.

Page 13: UNIVERSIDAD POLITÉCNICA DE MADRID - … · Reconstrucción de un modelo tridimensional a partir de una nube de puntos 4 1.2.3. El problema generalizado de diseño de una red 5

Capítulo 1 Introducción y objetivos

- 5 -

Figura 3. Reconstrucción del modelo mediante una triangulación de Delaunay. 1.2.3. El problema generalizado de diseño de una red. Dado un conjunto S de n puntos, queremos diseñar una buena red que conecte todos estos puntos. Una red que conecte estos puntos se representa mediante una grafo G= (V, A). Si las propiedades geométricas de la red tienen importancia entonces usaremos un grafo geométrico, en el que el peso de las aristas es la distancia Euclídea entre los vértices que unen. Evidentemente pueden construirse muchos tipos de grafos para diseñar la red, por ejemplo el grafo completo Kn , pero tiene la desventaja de que el número de aristas es O (n2 ). Asumimos entonces que queremos construir grafos con pocas aristas. El número mínimo de aristas que puede tener un grafo conexo es n -1, como queda demostrado en [7], y que además tiene estructura de árbol, es decir, es acíclico y conexo. A continuación vamos a ver algunos ejemplos que motivan esta necesidad de encontrar grafos con pocas aristas:

• Una red de carreteras que une n ciudades, donde cada carretera es una línea recta entre dos ciudades. Si queremos viajar de una ciudad p a otra ciudad q, debemos recorrer una distancia de al menos | pq |. Si existe una carretera directa entre p y q, entonces se recorre más o menos esa distancia exacta, pero si no existe entonces sería deseable encontrar una ruta cuya longitud (la suma de la longitud de las aristas) no sea demasiado grande comparada con | pq |.

• Consideremos una red de carreteras que conecta un conjunto de ciudades, en donde existe la necesidad de actualizar y mejorar las carreteras de la red de una forma efectiva en cuanto a costes. En lugar de gastar una gran cantidad de recursos mejorando todas las carreteras, sería deseable encontrar un subconjunto de las carreteras que asegure que se puede ir de una ciudad a otra utilizando sólo el subconjunto de carreteras mejoradas y con un incremento en la distancia que se corresponde con un factor constante respecto a la distancia del camino utilizado en la red completa. De esta forma la cantidad de recursos necesarios sería muy inferior ya que sólo se actualizarían un número pequeño de carreteras y de la menor longitud posible.

De estos ejemplos y otros similares se puede deducir la importancia de encontrar:

1. grafos y subgrafos con pocas aristas, conexos y que tengan asegurada una cota superior de la longitud del camino entre dos

Page 14: UNIVERSIDAD POLITÉCNICA DE MADRID - … · Reconstrucción de un modelo tridimensional a partir de una nube de puntos 4 1.2.3. El problema generalizado de diseño de una red 5

Capítulo 1 Introducción y objetivos

- 6 -

puntos cualesquiera. En el cápitulo 2 veremos cómo los llamados spanners son grafos con estas propiedades.

2. buenas estrategias de ruteo capaces de encontrar caminos cuya longitud no sobrepase esta cota superior. En el capítulo 3 veremos algunas estrategias de ruteo.

1.2.4. Salida de un laberinto Supongamos un robot móvil que debe atravesar un laberinto formado por paredes y pasillos, por ejemplo uno similar al de la figura 4. La estructura del laberinto es desconocida y el robot sólo conoce el punto donde se encuentra la salida, y debe decidir en cada intersección de pasillos el camino que debe seguir para encontrar la salida. Suponemos también que el robot dispone de algún sensor para medir, aunque sea de forma aproximada, la longitud de los pasillos entre los que debe elegir para avanzar.

Figura 4. Laberinto de paredes y pasillos.

Tal como está planteado el problema, el laberinto puede representarse mediante un grafo geométrico en el que los pasillos son las aristas y las intersecciones de pasillos son los vértices. En este tipo de laberintos el grafo resultante tendrá forma de árbol, pero en otros tipos de laberintos, por ejemplo los que además tienen habitaciones y puertas, tendrán formas más complicadas, con caras poligonales. El problema de encontrar la salida del laberinto puede asimilarse a un problema de ruteo online en el que se conoce el punto de partida, el punto de destino y en cada nodo se conocen las aristas adyacentes y sus longitudes. Ante el desconocimiento de la forma del laberinto, el robot debería utilizar un algoritmo de ruteo que garantice que va a encontrar el destino. En el laberinto de la figura en concreto, bastaría con utilizar la regla de la mano derecha (o izquierda) siguiendo las paredes del laberinto para encontrar la salida (figura 5), pero fallaría para laberintos más complicados. Una estrategia más acertada sería por ejemplo Face Routing o Greedy-Face-Greedy, que como veremos en el capítulo de estrategias de ruteo tienen asegurado el éxito siempre que el grafo sea plano y conexo.

Page 15: UNIVERSIDAD POLITÉCNICA DE MADRID - … · Reconstrucción de un modelo tridimensional a partir de una nube de puntos 4 1.2.3. El problema generalizado de diseño de una red 5

Capítulo 1 Introducción y objetivos

- 7 -

Figura 5. Solución del laberinto siguiendo la regla de la mano derecha.

1.2.5 Mallas propensas a fallos Una malla nxn M= (V,A) es un grafo geométrico en el cual el conjunto de vértices V es :

Una arista v1v2 esta presente en A si y sólo si la distancia d(v1,v2) =1 , donde d(x,y) es la distancia Euclídea entre x e y. Las mallas son una red de interconexión estudiada ampliamente en el campo de la computación paralela. El algoritmo popular de ruteo en mallas entre dos vértices mueve el paquete primero a la columna correcta (coordenada x) y después a la fila correcta (coordenada y). Este sencillo algoritmo funciona bien suponiendo que todos los elementos de proceso (vértices) y de comunicación (aristas) de la malla funcionan correctamente. Sin embargo, a veces estos elementos tienen fallos y este algoritmo de ruteo podría fallar. Es más, estos fallos son impredecibles y los vértices podrían no tener información acerca de qué vértices o aristas de la malla fallan. En este caso, el problema de ruteo entre dos vértices de M se convierte en un problema de ruteo online en un grafo geométrico plano.

Page 16: UNIVERSIDAD POLITÉCNICA DE MADRID - … · Reconstrucción de un modelo tridimensional a partir de una nube de puntos 4 1.2.3. El problema generalizado de diseño de una red 5

Capítulo 1 Introducción y objetivos

- 8 -

Figura 6.(a) Malla 10x10 sin fallos. (b) Malla 10x10 con fallos en vértices y aristas.

1.2.6. Robots móviles cooperativos y redes inalámbricas En los últimos años ha surgido un creciente interés por los equipos multi-robot y las comunicaciones inalámbricas. Varios robots pueden realizar un conjunto de tareas de forma más eficiente que uno sólo. Suele ser necesario que los robots compartan información, y un mecanismo idóneo para este fin es una red ad hoc inalámbrica. Existe un campo de investigación específico que se ocupa del encaminamiento en redes cuyos nodos conocen su posición geográfica relativa (encaminamiento geográfico). Las redes móviles ad hoc (también conocidas como MANETs, mobile ad hoc networks) son redes inalámbricas sin una infraestructura prefijada. Están formadas por nodos que pueden actuar como origen y destino de una comunicación, pero también como enrutadores para mensajes entre otros nodos de la red. Los nodos pueden ser móviles y entrar a formar parte de la red en cualquier momento, tan pronto como se encuentren dentro del radio de alcance de otro nodo. Del mismo modo, si se alejan demasiado pueden dejar de pertenecer a la red sin previo aviso, o bien pueden desconectarse temporalmente para ahorrar energía. La movilidad y disponibilidad de los nodos introduce variabilidad en las rutas dentro de la red, configuraciones cambiantes, topologías impredecibles, menor fiabilidad de los enlaces, mayor probabilidad de fallo de entrega de mensajes (algo inusual en redes cableadas) y otros problemas asociados. Existe un tipo específico de red ad hoc : aquella formada por equipos multi-robot móviles equipados con capacidad de comunicación. Dada la circunstancia de que usualmente los robots necesitan alguna forma de localización para realizar otras actividades (exploración, persecución, patrulla, recolección, SLAM), nos encontramos por tanto con un potencial campo de aplicación para las técnicas de encaminamiento geográfico. Los algoritmos clásicos de encaminamiento en redes cableadas hacen uso de asunciones que no se cumplen en las MANETs. Dos de las premisas más notorias que no se verifican son la inmovilidad de los nodos y la simetría del enlace. Esta vulneración de propiedades hace que los algoritmos tradicionales, que no fueron diseñados para tales circunstancias, no sirvan para redes ad hoc.

Page 17: UNIVERSIDAD POLITÉCNICA DE MADRID - … · Reconstrucción de un modelo tridimensional a partir de una nube de puntos 4 1.2.3. El problema generalizado de diseño de una red 5

Capítulo 1 Introducción y objetivos

- 9 -

Algunas características deseables para los algoritmos de encaminamiento en MANETs serían: simplicidad, ausencia de bucles, robustez, escalabilidad y entrega garantizada. En las redes de robots móviles suele ser necesaria una fase de actualización de posición, previa a la fase de encaminamiento en cada nodo de la red, necesaria para detectar los cambios que se producen en el grafo que representa la red. A continuación se procede al descubrimiento de la ruta y la transmisión de datos. Para encontrar el siguiente nodo al que transmitir la información con el objetivo de que ésta llegue a su destino final, se utilizan algoritmos de ruteo. Los algoritmos de ruteo orientados a este tipo de redes se suelen separar en dos grupos:

• Algoritmos voraces: en su variante más simple este algoritmo propone como siguiente nodo aquel que se acerca más al nodo destino. En caso de no existir ningún vecino apto, el encaminamiento falla y el paquete se pierde o se cambia de algoritmo. Por tanto este algoritmo no tiene garantía de entrega, por lo que suele usarse con modificaciones. La aplicación ProRouting implementa algunos de estos algoritmos: Ruteo Voraz, Ruteo con Brujula y Ruteo Voraz-Brújula entre otros.

• Algoritmos de Ruteo por Caras: como hemos visto los algoritmos

voraces tienen el defecto de quedarse parados en mínimos locales. Este defecto lo pueden sortear los algoritmos de ruteo por Caras. La idea se basa en que dado un grafo plano, consideramos que el grafo está compuesto por caras, cada una de ellas delimitada por las aristas del grafo. Si trazamos una recta desde el nodo origen al nodo destino, esta recta corta a algunas caras. Partiendo del nodo origen, se recorre la cara según la regla de la mano derecha hasta un nodo que también pertenece a otra cara más cercana al nodo destino, cambiando de cara en ese punto. Este nodo más cercano se determina de alguna forma teniendo en cuenta los puntos de corte con las caras. El proceso se repite hasta llegar al destino. En la herramienta ProRouting se han implementado dos algoritmos de estas características, Ruteo por Caras 1 y Ruteo por Caras 2. Sin embargo estos algoritmos son costosos en cuanto a la longitud de la ruta encontrada, pero tienen garantía de éxito. Existen Algoritmos híbridos que combinan el ruteo voraz y el ruteo por caras que intentan paliar los defectos de cada estrategia. La aplicación ProRouting también implementa un algoritmo de estas características, el Ruteo Voraz-Caras-Voraz.

Page 18: UNIVERSIDAD POLITÉCNICA DE MADRID - … · Reconstrucción de un modelo tridimensional a partir de una nube de puntos 4 1.2.3. El problema generalizado de diseño de una red 5

- 10 -

Capítulo 2

GRAFOS DE PROXIMIDAD, SPANNERS Y ESTRATEGIAS DE RUTEO

2.1. Grafos de Proximidad y Spanners

En el apartado de definiciones del capítulo anterior se daba una definición formal de grafo de proximidad. De una manera más informal podemos decir que un grafo de proximidad es un tipo de grafo geométrico en el que las aristas que unen puntos del grafo se han establecido conforme a algún criterio de distancia entre ellos y el resto de puntos, de tal forma que si dos puntos cumplen este criterio la arista que los une pertenece al grafo, o queda excluida en caso contrario. De entre todos los grafos de proximidad vamos a fijarnos en unos que poseen propiedades interesantes para su utilización en problemas de ruteo: los spanners. Los spanners aproximan el grafo Euclídeo completo de un conjunto de n vértices, pero sólo con un número reducido de aristas lineal sobre el número de vértices. Otras propiedades deseables de los spanners tambíen serían un grado de adyacencia bajo en sus nodos y planaridad.

2.1.1. t-Spanner. Dado un grafo geométrico G=( V, A) . Un t-spanner de G es un subgrafo G’=( V, A' ) tal que para cada par de puntos u, w ∈ V existe un camino p de u a w de longitud máxima t veces la distancia d(u, w): ∀ u, w ∈ V ∃ p= [ u= v0, v1, ..., vn=w ] , | p | ≤ t ⋅ d (u, w) 2.1.2. Dilación (Stretch Factor or Dilation) Sea G= (V, A) un grafo geométrico, diremos que la dilación de G es el número real t más pequeño para el que G’ = (V, A’) es un t-spanner de G. 2.1.3. t-Spanner débil (weak t-Spanner). G es un t-spanner débil si para todo u,w ∈ V, existe un camino p de u a w dentro de un círculo de centro u y radio t ⋅ d (u, w). 2.1.4. (t, δδδδ)- power spanner. Un (t, δ)- power spanner es un grafo G=( V, A ) que cumple : ∀ u, w ∈ V ∃ p= [ u= v0, v1, ..., vn=w ] , con vivi+1 ∈ A, ∃ δ ∈ R , | p | δ ≤ t ⋅ d (u, w) δ es decir, la energía consumida en el camino de u a w tiene un coste máximo t ⋅ d (u, w) δ, suponiendo que el coste de energía del camino de u a w es la suma de las longitudes de la aristas elevada a un cierto número δ: |p| δ .

Page 19: UNIVERSIDAD POLITÉCNICA DE MADRID - … · Reconstrucción de un modelo tridimensional a partir de una nube de puntos 4 1.2.3. El problema generalizado de diseño de una red 5

Capítulo 2 Grafos de proximidad, spanners y estrategias de ruteo

- 11 -

2.1.5. t-Spanners , t-Spanners débiles y (t, δδδδ)-power spanners Teorema 1 Todo t-spanner es un también un t-spanner débil. Demostración: Viene directamente de las definiciones. En un t-spanner la longitud de un camino p que conecta un par de nodos u,w cualesquiera está limitada por t⋅ d(u, w). Este camino nunca puede salirse por tanto de un círculo de radio t⋅ d(u, w) con centro en u. La propiedad inversa no se cumple, es decir , no todo t-spanner débil es un t-spanner. Terorema 2

Todo t-spanner es también un (t’, δ)- power spanner para todo δ ≥ 1 y un cierto t’. Demostración: Sea G un t-spanner , y Popt = (v1,….,vn) el camino óptimo de energía. Para el coste de energía de Popt usaremos la notación n-1 Energía( Popt) = ∑ d(vi,vi+1)

δ, siendo d(x,y) la distancia Euclídea entre x,y. i=1

Figura 7. Demostración de Teorema 2.

Popt no necesariamente contiene las aristas de G. Reemplazamos cada arista (vi, vi+1) de Popt por un camino Pi contenido en G. Por la propiedad de spanner de G tenemos | Pi | ≤ t ⋅ d(vi, vi+1) , y entonces Energía(Pi) ≤ ( t ⋅ d (vi, vi+1))

δ. El camino resultante P’ = (P1,…, Pm) tiene el siguiente coste de energía: n-1 n-1 n-1

Energía (P’) = ∑ Energía (Pi) ≤ ∑ (t ⋅ d(vi, vi+1))δ = tδ ∑ d(vi, vi+1)

δ i=1 i=1 i=1

Page 20: UNIVERSIDAD POLITÉCNICA DE MADRID - … · Reconstrucción de un modelo tridimensional a partir de una nube de puntos 4 1.2.3. El problema generalizado de diseño de una red 5

Capítulo 2 Grafos de proximidad, spanners y estrategias de ruteo

- 12 -

Por tanto G es un (tδ, δ)-power spanner.

Al igual que para los t-spanner débiles, tampoco se cumple la inversa, existen (tδ, δ)- power spanners que no son t-spanners. 2.2. Grafos de proximidad Cada uno de los grafos de proximidad estudiados en este trabajo tiene como conjunto de vértices a puntos de R2, pero sus propiedades y algoritmos de construcción en general pueden extenderse a otras dimensiones. A continuación vamos a ver la definición y algunas propiedades de los grafos de proximidad que se han incluido en el proyecto. 2.2.1. Grafo de vecindad dirigida (Nearest point graph, NPG) Cada punto del grafo se une con el más cercano a él, tomando como distancia la habitual euclídea en R2: _________________ d (p, q) = √ (p x - q x)

2 + (p y - q y)2 con p, q ∈ R2 y p=(p x, p y) , q= (q x, q y)

Figura 8. Grafo de Vecindad dirigida.

Se trata de un grafo dirigido, como se puede ver en el dibujo no siempre es conexo. 2.2.2. Árbol Generador Mínimo ( Minimum Spanning Tree, MST) Dado un grafo G(V, A) conexo, no dirigido y con un peso asignado a cada arista (en nuestro caso la distancia euclídea , EMST), un árbol generador mínimo de G es un subgrafo conexo, que es árbol (no contiene ciclos) y la suma de sus aristas es la mínima posible. Un grafo puede tener varios MST, pero en ese caso todos tienen el mismo coste mínimo.

Page 21: UNIVERSIDAD POLITÉCNICA DE MADRID - … · Reconstrucción de un modelo tridimensional a partir de una nube de puntos 4 1.2.3. El problema generalizado de diseño de una red 5

Capítulo 2 Grafos de proximidad, spanners y estrategias de ruteo

- 13 -

Figura 9. Árbol generador mínimo

Propiedad 1. Un Árbol Generador Mínimo de un conjunto de puntos S es la red más corta que conecta todos los puntos de S (es un grafo conexo). Esta propiedad es evidente a partir de la definición de Árbol Generador Mínimo. De esta forma, un MST es bueno en el sentido de que tanto el número de aristas como su peso son los mínimos. Propiedad 2. El Árbol Generador Mínimo de un conjunto de puntos de R2 es un subgrafo de la Triangulación de Delaunay (2.2.7) . Demostración: Sea T el MST de un conjunto de puntos P, w(T) la suma de los pesos de todas sus aristas (la distancia Euclídea entre los vértices para P ⊂ R2) y a, b dos vértices de P tales que ab es una arista de T. Supongamos que ab no es una arista de la Triangulación de Delaunay. Esto implica que no existe ningún círculo que pase por a y b, y en particular el círculo cuyo diámetro es el segmento ab, que no contenga un tercer punto c ∈ P (ver 2.2.7). Si eliminamos la arista ab del MST, el árbol se divide en dos subárboles. Asumamos que c queda en el mismo subárbol que a. Eliminamos ahora la arista ab del MST y añadimos la arista bc en su lugar. El árbol resultante será un árbol generador de peso: w(T') = w(T) + |bc| - |ab| > w(T ) La desigualdad viene a raiz de que ab es el diámetro del círculo, lo que implica que | bc | < | ab | . Esto contradice la hipótesis de que T es el MST, por lo que se confirma que ab es una arista de la Triangulación de Delaunay y se completa la demostración.

Page 22: UNIVERSIDAD POLITÉCNICA DE MADRID - … · Reconstrucción de un modelo tridimensional a partir de una nube de puntos 4 1.2.3. El problema generalizado de diseño de una red 5

Capítulo 2 Grafos de proximidad, spanners y estrategias de ruteo

- 14 -

Figura 10. Demostración de la Propiedad 2.

2.2.3. Grafo de Vecindad Relativa ( Relative Neighborhood Graph, RNG) El grafo de vecindad relativa es un subgrafo del grafo de Gabriel. Una arista pertenece al grafo RNG si los puntos de sus extremos son vecinos relativos, es decir, al interseccionar dos circunferencias de centro los extremos de la arista y radio la distancia entre ellos , la figura geométrica que se forma en la intersección ( tiene forma de luna, por lo que también se conoce este grafo como grafo de luna) no contiene en su interior ningún otro punto.

Figura 11. Vecinos relativos y Grafo de Vecindad Relativa

Propiedad 1. El Árbol Generador Mínimo de un conjunto de puntos de R2 es un subgrafo del Grafo de Vecindad Relativa . Demostración: Sea T el MST de un conjunto de puntos P, w(T) la suma de los pesos de todas sus aristas (la distancia Euclídea entre los vértices para P ⊂ R2) y a, b dos vértices de P tales que ab es una arista de T. Asumamos que ab no pertenece al RNG. Esto quiere decir que existe un punto w dentro de la luna formada por las circunferencias de centro a y b y radio |ab|. Se cumple por tanto que | ab | > | ac | , | ab | > | bc | . Si eliminamos la arista ab de T, el MST queda dividido en dos subárboles. Digamos que c se encuentra en el mismo subárbol que a, entonces podemos reemplazar la arista ab por la arista bc, obteniendo así un árbol de menor peso, lo cual está en contradicción con la hipótesis de que T es el MST. Por tanto podemos afirmar que ab pertenece al RNG.

Page 23: UNIVERSIDAD POLITÉCNICA DE MADRID - … · Reconstrucción de un modelo tridimensional a partir de una nube de puntos 4 1.2.3. El problema generalizado de diseño de una red 5

Capítulo 2 Grafos de proximidad, spanners y estrategias de ruteo

- 15 -

Figura 12. Demostración de MST ⊆ RNG

Propiedad 2. El Grafo de Vecindad Relativa es un grafo conexo. Dado que el MST es conexo y es un subgrafo del RNG (con todos los vértices), el RNG es también conexo. 2.2.4. Grafo de Gabriel (Gabriel Graph, GG) El grafo de Gabriel es un subgrafo de la triangulación de Delaunay. La condición de proximidad de dos vértices del grafo se basa en que no debe quedar ningún otro punto dentro de la circunferencia que queda definida por el diámetro que forman los dos puntos. Si se cumple esta condición entonces la arista pertenece al grafo.

Figura 13. Vecinos de Gabriel y Grafo de Gabriel.

Propiedad 1. El Grafo de Vecindad Relativa de un conjunto de puntos P ⊂ R2 es un subgrafo del Grafo de Gabriel de P. Demostración: Si uv es una arista del RNG entonces la luna formada por los círculos de centros u y v, y radio | uv | es vacía (no contiene otros puntos de P). Si esta luna es vacía entonces también lo será el círculo cuyo diámetro es uv, por lo tanto uv ∈ GG.

Page 24: UNIVERSIDAD POLITÉCNICA DE MADRID - … · Reconstrucción de un modelo tridimensional a partir de una nube de puntos 4 1.2.3. El problema generalizado de diseño de una red 5

Capítulo 2 Grafos de proximidad, spanners y estrategias de ruteo

- 16 -

Figura 14. Demostración de RNG ⊆ GG

Propiedad 2. El Grafo de Gabriel es un grafo conexo. Al ser el RNG conexo como demostramos en 2.1.4. y ser éste un subgrafo del GG , entonces el GG es también conexo. Propiedad 3. Dado un conjunto de puntos P ⊂ R2 , y sea n el número de puntos de P, la dilación del Grafo de Gabriel puede ser mayor que n0.11. Demostración: Consideremos la estructura de la figura 15. Como se puede deducir de la figura, la dilación de este Grafo de Gabriel es:

si ε es lo suficientemente pequeño.

Figura 15. Demostración de Propiedad 3.

Reemplazando recursivamente cada arista por una estructura como la de la figura en d niveles, la dilación tiene un valor de al menos 1.17d. Supongamos que tenemos n nodos, con n múltiplo de 4, entonces se puede construir una estructura con d= log 4 n niveles. Esto da lugar a una dilación de :

Propiedad 4. Para todo δ ≥ 2, el Grafo de Gabriel es un ( t,δ )- power spanner óptimo.

Page 25: UNIVERSIDAD POLITÉCNICA DE MADRID - … · Reconstrucción de un modelo tridimensional a partir de una nube de puntos 4 1.2.3. El problema generalizado de diseño de una red 5

Capítulo 2 Grafos de proximidad, spanners y estrategias de ruteo

- 17 -

Demostración: Sea V un conjunto de puntos del plano, u, w ∈ V un par de puntos cualesquiera y p su camino de energía óptima. Consideremos una arista xy arbitraria de p. Supongamos que existe un nodo v ∈ Sx, y , siendo Sx, y la esfera abierta de diámetro | xy | a través de x e y. Por el Teorema de Thales se cumple que:

| xv |δ + | vy |δ < | xy |δ para todo δ ≥ 2

Si reemplazamos la arista xy por las aristas xv y vy , reduciríamos su energía , lo cual contradice la hipótesis de que p sea un camino de energía óptima. Por lo tanto no puede haber un nodo en Sx, y , y por tanto xy debe ser una arista del Grafo de Gabriel. De esta forma p debe ser un camino del Grafo de Gabriel, lo que prueba la propiedad. A pesar de ser un power spanner óptimo, el Grafo de Gabriel tiene el problema de que el grado de adyacencia de los nodos puede se alto.

2.2.5. Triangulación incremental (Incremental triangulation, IT ) Los algoritmos de triangulación incremental construyen el grafo tomando los puntos uno a uno de la nube de puntos y los va integrando en el grafo, añadiendo aristas de tal forma que cada vez que se añade un punto al grafo, el grafo resultante es una triangulación, y los puntos que se van añadiendo al grafo no modifican las aristas ya existentes. Las triangulaciones incrementales no tienen buenas propiedades geométricas desde el punto de vista de los grafos de proximidad, ya que suele haber triángulos con ángulos pequeños y aristas largas que unen puntos lejanos entre si; sin embargo tienen la ventaja de ser una forma rápida de construir triangulaciones.

Figura 16. Triangulación incremental

2.2.6. Diagrama de Voronoi (Voronoi Graph, VG ) El Diagrama de Voronoi de un conjunto de puntos del plano es una división del plano en regiones convexas (tantas como puntos). Cada punto se encuentra dentro de una región cuyos puntos están más cerca de ese punto que de cualquier otro de la nube de puntos. Las regiones quedan delimitadas por segmentos de línea que equidistan de los dos puntos asociados a las dos regiones vecinas.

Page 26: UNIVERSIDAD POLITÉCNICA DE MADRID - … · Reconstrucción de un modelo tridimensional a partir de una nube de puntos 4 1.2.3. El problema generalizado de diseño de una red 5

Capítulo 2 Grafos de proximidad, spanners y estrategias de ruteo

- 18 -

Figura 17. Diagrama de Voronoi

Entre las propiedades del Diagrama de Voronoi podemos destacar: • Cada vértice es centro de una circunferencia que pasa por al menos tres

vértices del diagrama. • Pueden trazarse circunferencias con centro en los puntos pertenecientes

al segmento que divide dos regiones adyacentes, que pasen por los dos vértices asociados a cada región y que no contengan ningún otro vértice en su interior.

2.2.7. Triangulación de Delaunay (Delaunay triangulation, DT) La triangulación de Delaunay es ampliamente utilizada en disciplinas tan diversas como la Informática Gráfica, Reconocimiento de Formas, Estadística, Geografía y Biología entre otras, debido a sus propiedades geométricas. Los triángulos formados minimizan el tamaño de las aristas y maximizan los ángulos. Otra ventaja de utilizar esta triangulación es la rapidez en su tiempo de cómputo; su complejidad es de O(n log n). La Triangulación de Delaunay podemos definirla de varias maneras:

1. Dado un conjunto de puntos P del plano, una triangulación T de P, y sea A(T) = ( α1, α2 , α3, … , αm ) el vector de ángulos de la triangulación , podemos definir la triangulación de Delaunay como la triangulación con el vector de ángulos mayor de entre todos los posibles si se ordenan lexicográficamente.

Figura 18. Dos triangulaciones distintas y sus ángulos interiores.

2. La Triangulación de Delaunay es el grafo dual del Diagrama de Voronoi. El Diagrama de Voronoi y la triangulación de Delaunay tienen la propiedad de ser duales: la triangulación de Delaunay puede obtenerse

Page 27: UNIVERSIDAD POLITÉCNICA DE MADRID - … · Reconstrucción de un modelo tridimensional a partir de una nube de puntos 4 1.2.3. El problema generalizado de diseño de una red 5

Capítulo 2 Grafos de proximidad, spanners y estrategias de ruteo

- 19 -

a partir del Diagrama de Voronoi con tan sólo unir con aristas los puntos de la nube de puntos cuyas regiones sean adyacentes. De modo similar puede trazarse el Diagrama de Voronoi a partir de la Triangulación de Delaunay; cada segmento del diagrama es un segmento de la mediatriz de cada arista de la triangulación.

Figura 19. Dualidad Diagrama de Voronoi-Triangulación de Delaunay

3. La triangulación de Delaunay tiene las siguientes características derivadas del Diagrama de Voronoi y que la diferencian de otras triangulaciones:

• Los vértices de los triángulos de la DT tienen la propiedad de determinar una circunferencia que no contiene en su interior ningún otro vértice distinto de los del triángulo.

• Dos vértices determinan una arista de la DT si y sólo si es posible encontrar una circunferencia que pase por los dos vértices y no contenga en su interior ningún otro vértice.

• De las dos propiedades anteriores se deduce otra propiedad que nos permite definir una triangulación de Delaunay: Una triangulación es de Delaunay si y sólo si la circunferencia circunscrita (de centro el punto de corte de las mediatrices) en cada uno de sus triángulos no contiene ningún otro vértice en su interior.

Figura 20. Triángulo perteneciente a DT y Triangulación de Delaunay

Page 28: UNIVERSIDAD POLITÉCNICA DE MADRID - … · Reconstrucción de un modelo tridimensional a partir de una nube de puntos 4 1.2.3. El problema generalizado de diseño de una red 5

Capítulo 2 Grafos de proximidad, spanners y estrategias de ruteo

- 20 -

Propiedad 1. La Triangulación de Delaunay es un supergrafo del Grafo de Gabriel. Demostración: por definición del Grafo de Gabriel, si una arista uv es del GG entonces la circunferencia de diámetro uv y que pasa por u y v, y no contiene ningún punto en su interior. De la propiedad de que dos vértices determinan una arista de la DT si y sólo si es posible encontrar una circunferencia que pase por los dos vértices y no contenga en su interior ningún otro vértice, podemos afirmar que la arista uv pertenece a la triangulación de Delaunay, ya que esta circunferencia es la diámetro uv y que pasa por u y por v. El centro de esta circunferencia es el punto medio del segmento uv y forma parte del segmento que divide las dos regiones del Diagrama de Voronoi correspondiente.

Figura 21. Arista de la DT que no pertenece a GG.

Propiedad 2. La Triangulación de Delaunay de un conjunto P ⊆ R2 es un supergrafo del Grafo de Gabriel, del Grafo de Vecindad Relativa y del Árbol Generador Mínimo , y además están relacionados de la siguiente manera :

MST ⊆ RNG ⊆ GG ⊆ DT Demostración: en los apartados anteriores quedaron demostradas las siguientes inclusiones:

MST ⊆ RNG (2.2.3, propiedad 1) RNG ⊆ GG (2.2.4, propiedad 1) GG ⊆ DT (este mismo apartado, propiedad 1)

De estas 3 relaciones se puede inferir la relación MST ⊆ RNG ⊆ GG ⊆ DT.

Propiedad 3. La Triangulación de Delaunay es un grafo plano, al igual que el Grafo de Gabriel, el Grafo de Vecindad Relativa y el Árbol Generador Minimal. Demostración: Sea uv una arista de DT , y sea x un punto del segmento que divide las dos regiones de Voronoi adyacentes a u y v. No existe por tanto ningún otro vértice dentro de la circunferencia de centro x que pasa por u y v.También se cumple que el segmento xu está dentro de la región del Diagrama de Voronoi asociada

Page 29: UNIVERSIDAD POLITÉCNICA DE MADRID - … · Reconstrucción de un modelo tridimensional a partir de una nube de puntos 4 1.2.3. El problema generalizado de diseño de una red 5

Capítulo 2 Grafos de proximidad, spanners y estrategias de ruteo

- 21 -

a u, y el segmento xv dentro de la región de v. De forma similar, se puede afirmar lo mismo para otra arista cualquiera pq. Supongamos que las aristas uv y pq se cortan, entonces pq se cortaría con xu o xv. Por la misma razón la arista uv se cortaría con yp o yq. Esto significaría que xv e yp se cortan, lo cual no es posible ya que estan en distintas regiones del Diagrama de Voronoi, por lo que no es posible que uv y pq se corten y por tanto la triangulación de Delaunay es un grafo plano.

Figura 22. Demostración de planaridad de la Triangulación de Delaunay.

El MST, RNG y GG también son planos al ser subgrafos de éste. Propiedad 4. La Triangulación de Delaunay de un conjunto de puntos V del plano es un t-spanner del Grafo Completo K(V), y tiene una dilación no superior a t= ( 4π√ 3 ) / 9 ≈ 2,42 . En [14] ,Keil y Gutwin establecen una cota superior para la dilación de la Triangulación de Delaunay t= ( 4π√ 3 ) / 9 ≈ 2,42 , aunque se conjetura que esta cota puede ser 2 o menor. 2.2.8. Grafo de disco unidad (Unit Disk Graph, UDG) El Grafo de Disco Unidad esta formado por aristas cuyos extremos son vértices separados como máximo una cierta distancia que se toma como unidad. En general no es un grafo plano.

Figura 23. Arista del UDG y Grafo de Disco Unidad

Page 30: UNIVERSIDAD POLITÉCNICA DE MADRID - … · Reconstrucción de un modelo tridimensional a partir de una nube de puntos 4 1.2.3. El problema generalizado de diseño de una red 5

Capítulo 2 Grafos de proximidad, spanners y estrategias de ruteo

- 22 -

Este tipo de grafo es muy utilizado para modelizar redes inalámbricas en las que dos nodos sólo pueden comunicarse si la distancia que los separa es como máximo la unidad, entendiendo por unidad el radio de alcance de cada nodo. Suele utilizarse en intersección con otros grafos planos para obtener planaridad. 2.2.9. Grafo de Delaunay Restringido (Restricted Delaunay Graph, RDG ) Este grafo es el resultado de la intersección de la triangulación de Delaunay y el Grafo de Disco Unidad: DT ∩ UDG, lo que quiere decir que el grafo resultante es igual que la Triangulación de Delaunay pero conservando sólo las aristas de tamaño menor o igual que la unidad. Al ser subgrafo de DT es un grafo plano. Suele utilizarse en tareas de triangulación de superficies, métodos de elementos finitos, modelado de terrenos y reconstrucción de objetos entre otras. Propiedad 1. El Grafo de Delaunay Restringido es un grafo plano., y conexo si el Grafo de Disco Unidad es conexo. Al ser un subgrafo del Grafo de Delaunay, que es plano, del Grafo de Delaunay Restringido también es plano. Propiedad 2. Si el grafo de Disco Unidad es conexo, entonces el Grafo de Delaunay Restringido también lo será. Demostración: Asumimos que UDG es conexo, pero RDG no lo es y esta dividido en dos partes. De entre todas las aristas del UDG que conectan las dos partes, sea uv la más corta, que por pertenecer al UDG cumple que | uv | ≤ 1. Por tanto u y v son los nodos más cercanos a un cierto punto x (no es un nodo) punto medio de la arista uv , porque si existiese un nodo w más cercano a x se cumpliría:

| uv | < | ux | + | xw | < | ux | + | xv | = | uv | contradiciendo la definición de la arista uv. Todo esto significa que la arista uv pertenece al Grafo de Delaunay, por lo que uv pertenece al RDG y por tanto se contradice la suposición de que las dos partes están desconectadas. Propiedad 3. RDG es un t-spanner Euclídeo de la Triangulación de Delaunay, y tiene una dilación t= (1+ √ 5 / 2 )⋅ π ≈ 5,08 . Demostración: Es suficiente con probar que dado RDG= (V,A) y un par de puntos u, v ∈ V, si su distancia Euclídea es d ≤ 1, entonces existe un camino en RDG que conecta ambos puntos y cuya longitud total es c⋅d. Podemos usar la siguiente propiedad de la triangulaciones de Delaunay regulares demostrada por Dobkin et al. en [7]: para todo par de nodos u, v existe un camino en la Triangulación

Page 31: UNIVERSIDAD POLITÉCNICA DE MADRID - … · Reconstrucción de un modelo tridimensional a partir de una nube de puntos 4 1.2.3. El problema generalizado de diseño de una red 5

Capítulo 2 Grafos de proximidad, spanners y estrategias de ruteo

- 23 -

de Delaunay que cae enteramente dentro del círculo de diámetro uv y cuya longitud no es mayor que (1+ √ 5 / 2 )π⋅ d . Para todo par de puntos dentro del círculo de diámetro uv su distancia es como máximo d ≤ 1, por lo tanto, todas las aristas del camino son aristas de la Triangulación de Delaunay y que también están en RDG. Propiedad 4. RDG es un t-spanner Euclídeo del Grafo de Disco Unidad. J.Gao et al. demuestran en [10] , utilizando un ejemplo de clustering de nodos, que el RDG es un t-spanner tanto topológico como Euclideo del Grafo de Disco Unidad. 2.2.10. Triangulación Voraz (Greedy Triangulation, GT ) El nombre de Voraz que recibe esta triangulación se debe a su método de construcción; las aristas se van añadiendo al grafo una a una en orden creciente de tamaño, con la salvedad de que una arista no puede cortar a otra más corta (ya añadida al grafo). Una de las utilizaciones de la Triangulación Voraz es como aproximación a la Triangulación de Peso Mínimo (triangulación que minimiza la suma total de las longitudes de las aristas), para la que no existen algoritmos eficientes en su construcción.

2.2.11. Grafo de Yao (Yao Graph, YG ) El Grafo de Yao YGk(V) , con k ≥4 entero, es el grafo que resulta de unir cada nodo v de la nube de puntos de R2 con el nodo más cercano de cada uno de los k-sectores en que queda dividido el plano al trazar k semirrectas con origen el punto v y equi-espaciadas angularmente con un ángulo de 2⋅π / k .

Figura 24. Aristas del grafo de Yao, con k=6, y Grafo de Yao

Page 32: UNIVERSIDAD POLITÉCNICA DE MADRID - … · Reconstrucción de un modelo tridimensional a partir de una nube de puntos 4 1.2.3. El problema generalizado de diseño de una red 5

Capítulo 2 Grafos de proximidad, spanners y estrategias de ruteo

- 24 -

Propiedad 1. El Grafo de Yao de un conjunto de puntos V ⊂ R2 es un supergrafo del Arbol Generador Mínimo de V. Demostración: Sea E el conjunto de aristas del YGθ(V) ,y T ⊆ E el conjunto de aristas que forman el MST, vamos a demostrar que para cualquier arista vw que está en T pero no en E podemos reemplazar vw por otra arista de E y seguir teniendo un MST. Esto probaría la propiedad ya que podemos realizar esta operación repetidas veces sobre T hasta que todas las aristas de T sean de E también. Sea vw una arista de T – E. Supongamos que w se encuentra en el sector k centrado en v, entonces N k(v)≠∅, siendo N k(v) el conjunto de puntos de V que están dentro del sector k centrado en el punto v, y existe un vecino u más cercano a v en la región k tal que vu ∈ E. Claramente u ≠ v y d(v, u) ≤ d(v, w). Eliminemos vw de T. Entonces T queda separado en dos subárboles disjuntos con v y w en distinto subárbol. Ahora u y w deben estar en el mismo subárbol. Si no fuese así , uw sería una arista más corta que vw conectando los dos subárboles contradiciendo el hecho de que T es un MST. Por tanto u y w están en el mismo subárbol, y añadiendo la arista vu a T – { vw }, resulta un árbol generador con peso total no mayor que el de T. Propiedad 2. Si θ = 2π / k con k > 6, entonces el Grafo de Yao es un t-spanner con una dilación máxima de 1 / ( 1 – 2⋅sen (θ / 2)) . En [23] Scheideler da una demostración detallada de esta propiedad de spanner del Grafo de Yao. 2.2.12. Grafo θθθθ ( θθθθ-Graph, θθθθG) El Grafo θGK (V) es una variación del Grafo de Yao; su definición es exactamente igual con el único cambio de que cada vértice v no se une con el más cercano de cada sector, sino con el vértice cuya proyección ortogonal sobre el semieje que separa cada región (se puede elegir el semieje que queda a la izquierda o derecha de los puntos, pero siempre utilizando el mismo criterio en todo el grafo) tiene la distancia menor a v.

Figura 25. Aristas del Grafo θ para k=6, y Grafo θ

Page 33: UNIVERSIDAD POLITÉCNICA DE MADRID - … · Reconstrucción de un modelo tridimensional a partir de una nube de puntos 4 1.2.3. El problema generalizado de diseño de una red 5

Capítulo 2 Grafos de proximidad, spanners y estrategias de ruteo

- 25 -

2.2.13. Grafo Half-Space proximal ( Half-Space Proximal Graph, HSPG) Dado un subconjunto de puntos del plano V ⊂ R2 y dos puntos cualesquiera p,q ∈ V, la arista dirigida pq pertece al Grafo Half Space Proximal si no existe un punto r ∈ V que cumpla estas condiciones:

1. | pr | < | pq | 2. existe una arista de p a r 3. q está más cerca de r que de p

Figura 26. Grafo Half-Space proximal

Se trata de un grafo dirigido, aunque puede hacerse no dirigido si se omite el sentido de las aristas. Suele construirse en intersección con un Grafo de Disco Unidad. Si el UDG es conexo entonces el HSPG también lo será.

Propiedad 1. Si G es un Grafo de Disco Unidad conexo entonces un Árbol Generador Mínimo de G es un subgrafo de HSP(G). Demostración : Sea G un UDG y T el MST(G) que contiene el número máximo de aristas de HSP(G). Asumamos que existe una arista uv ∈ T que no está en HSP(G). Como la arista uv no está en HSP(G) entonces existe una arista uw y que tanto uw como wv son más cortas que uv o d(u, v) = d( u, w) y vw es más corta que uv. Claramente para u ó v existe un camino p a w en T que no contiene la arista uv. Si el camino existe desde v entonces eliminando uv de T y añadiendo uw obtenemos un arbol generador del mismo o menor coste que contiene una arista más de HSP(G), lo cual es una contradicción. Si el camino p existe desde u entonces eliminando uv de T y añadiendo wv obteniendo un árbol generador de menor coste, también una contradicción.

Propiedad 2. El grafo HSP tiene una dilación de al menos 3 - ε . En [4] Chávez et al. definen el grafo HSP como un t-spanner con una dilación acotada tanto inferior como superiormente. Sin embargo Bose et al. en [2] encuentran algunas inconsistencias en las demostraciones y establecen una cota inferior para la dilación de 3 - ε : Demostración: Consideremos el conjunto de 6 puntos de la figura 27, para δ= ε / 3. La longitud del camino entre p y q pasando por a y b es igual a la longitud del camino entre

Page 34: UNIVERSIDAD POLITÉCNICA DE MADRID - … · Reconstrucción de un modelo tridimensional a partir de una nube de puntos 4 1.2.3. El problema generalizado de diseño de una red 5

Capítulo 2 Grafos de proximidad, spanners y estrategias de ruteo

- 26 -

p y q pasando por c y d. La longitud de ambos caminos es 3(1 - δ). Ya que el camino más corto entre p y q en el grafo HSP es uno de estos caminos, la dilación es 3(1-δ) / |pq| = 3(1-δ) = 3 - ε .

Figura 27. Demostración de cota inferior para la dilación de HSP. 2.2.14. Familia de grafos Gθθθθ

λλλλ (Gθθθθ

λλλλ Family Graph, θθθθλλλλG) Basándose en el Grafo Half-Space proximal, Bose et al. introducen en [2] la familia de Grafos Gθ

λ . Se trata de un grafo dirigido que depende de los parámetros θ y λ. El grafo dirigido G

θλ es el grafo que tiene a P como conjunto

de vértices y en el que cada arista pq pertenece a Gθλ(P) si y sólo si no existe

un punto r ∈ P, tal que | pr | ≤ | pq | , siendo pr una arista de Gθλ(P) y q ∈

K(p,r). Al punto r se le llama destructor de la arista pq.

Figura 28. Región de destrucción de r respecto a p.

θ está acotado por 0 ≤ θ < π/2, y determina un θ-cono de ángulo 2θ con centro en p y que tiene la línea pr de bisector. λ debe valer 0 < λ < 1, y determina un λ-semi-plano(p,r) a una distancia |pr| / 2λ de p y cuya línea que divide los dos semiplanos es perpendicular a pr. La región de destrucción K(p, r) de r respecto de p, es la intersección del θ-cono y el λ-semiplano.

Page 35: UNIVERSIDAD POLITÉCNICA DE MADRID - … · Reconstrucción de un modelo tridimensional a partir de una nube de puntos 4 1.2.3. El problema generalizado de diseño de una red 5

Capítulo 2 Grafos de proximidad, spanners y estrategias de ruteo

- 27 -

Propiedad 1. Dados θ, λ tales que 0 ≤ θ < π / 2, 0 < λ < 1, el grafo Gθλ es un

t-spanner fuerte , con t= 1 / (1- λ )cosθ. En [2] se da una demostración detallada, por inducción sobre la distancia entre dos puntos del grafo. Propiedad 2. El grado de salida de un nodo del grafo Gθ

λ es como mucho 2π / min(θ, arccos λ). Demostración: Sean pq y pr dos aristas del grafo Gθ

λ.. Sin pérdida de generalidad, |pq| ≤ |pr|. Sea l la línea perpendicular a pq que pasa por p + λ(q - p), entonces o ∠qpr > θ ó r está en el mismo lado que p respecto a l . En el último caso, el ángulo ∠qpr es al menos arccos λ (ver figura 29). El ángulo ∠qpr por tanto vale al menos min(θ, arccos λ), lo cual significa que p tiene como mucho 2π / min(θ, arccos λ) aristas de salida.

Figura 29. Demostración de Propiedad 2.

2.2.15. Familia de Grafos ββββ-Skeleton (ββββ-Skeleton Graphs, ββββSG ) Los β-Skeleton son una familia continua de grafos de proximidad. Estos grafos están definidos por un parámetro β real positivo. Dado un conjunto de puntos S, dos puntos x , y son β-vecinos en S si el vecindario N(x,y,β) no contiene ningún otro punto en su interior distinto de x,y. Hay varias definiciones de vecindario, una de ellas es la basada en lunas. Dependiendo del valor de β tenemos dos definiciones distintas para el vecindario: β ≥ 1 Definimos N(x, y,β) como la intersección de dos círculos de radio βd(x,y) / 2 centrado en los puntos (1 - β/2)x + (β/2)y y (β/2)x + (1 - β/2)y . Cuando β=1 , el vecindario se corresponde con el vecindario de Gabriel. Para β=2 el vecindario relativo del RNG. A medida que β se aproxima al infinito el vecindario de x, y se aproxima a la banda infinita que se forma al trasladar el segmento normal xy sobre si mismo.

Page 36: UNIVERSIDAD POLITÉCNICA DE MADRID - … · Reconstrucción de un modelo tridimensional a partir de una nube de puntos 4 1.2.3. El problema generalizado de diseño de una red 5

Capítulo 2 Grafos de proximidad, spanners y estrategias de ruteo

- 28 -

β∈(0,1] Definimos N(x,y,β) como la intersección de dos círculos de radio d(x,y)/ (2β) que pasan por x e y. Mientras β se aproxima a 0, N(x,y,β) se aproxima a la línea de segmento que une x e y.

Figura 30. Vecindario basado en lunas con β > 0

Propiedad 1. El grafo β-Skeleton es un subgrafo de la triangulación de peso mínimo para β > 1/sen k ≈ 1.17682 , siendo k= tan -1( 3 / √ ( 2√ 3)) ≈ π / 3.1 En [5] Cheng y Xu dan una extensa demostración de cómo para valores de β > 1.17682 el β-skeleton correspondiente es subgrafo de la MWT.

Propiedad 2. Todo β-skeleton definido sobre un conjunto V de n vértices y con 0 < β < √3 / 2 ≈ 0.866025 , tiene una dilación O(nc), siendo c < 1 una constante que depende de β y cuyo límite tiende a 0 cuando β tiende a 0. Ver [9] para una demostración detallada de la propiedad.

Page 37: UNIVERSIDAD POLITÉCNICA DE MADRID - … · Reconstrucción de un modelo tridimensional a partir de una nube de puntos 4 1.2.3. El problema generalizado de diseño de una red 5

Capítulo 2 Grafos de proximidad, spanners y estrategias de ruteo

- 29 -

2.3. Estrategias de ruteo En este apartado vamos a hacer una pequeña clasificación de los algoritmos de ruteo y una descripción de los algoritmos que han sido objeto de estudio. En general, los algoritmos se utilizan sobre grafos planos, ya que para muchos de ellos sólo se tiene garantía de éxito si el grafo es plano. 2.3.1. Clasificación de los algoritmos de ruteo. Podemos clasificar los algoritmos de ruteo en base a su uso de aleatoriedad y/o memoria.

a) Algoritmos deterministas sin memoria Decimos que un algoritmo de ruteo online A es determinista y sin memoria si el siguiente nodo visitado desde un vértice v depende sólo de v y sus adyacentes N(v). Podemos definir A mediante una función de transición δ de la forma:

δ: [ R2, (R2)*, R2 ] → R2 El primer argumento de δ corresponde al vértice v actualmente visitado, el segundo corresponde a N(v), el tercero corresponde al destino t, y la salida es un punto de N(v) que será el próximo en ser visitado. Si definimos δi como:

El algoritmo A tiene éxito en encontrar un camino de s a t si y sólo si existe un i ≥ 0 tal que δi (s, t) = t . La característica que distingue los algoritmos sin memoria es que si visitan el mismo vértice dos veces significa que han fallado, ya que se encuentran en un bucle.

b) Algoritmos k-bit aleatorizados sin memoria

Un algoritmo de ruteo A es k-bit aleatorizado sin memoria si el siguiente vértice visitado desde un vértice v es sólo función de v, N(v) y k bits aleatorios r. La función de transición es de la forma:

δ: [ R2, (R2)*, R2 , {0,1}k ] → R2 Los tres primeros argumentos y la salida son iguales que en el caso a), el cuarto representa una cadena aleatoria de k bits. Decimos que un algoritmo aleatorizado sin memoria falla cuando la probabilidad de que alcance el destino t cuando comienza desde s es 0. Podemos definirlo más formalmente:

El algoritmo a falla encontrar un camino de s a t, si y sólo si

δi (s, t, R) ≠ t , para todo i, R.

Page 38: UNIVERSIDAD POLITÉCNICA DE MADRID - … · Reconstrucción de un modelo tridimensional a partir de una nube de puntos 4 1.2.3. El problema generalizado de diseño de una red 5

Capítulo 2 Grafos de proximidad, spanners y estrategias de ruteo

- 30 -

c) Algoritmos con memoria k

Un algoritmo A es un algoritmo con memoria k si el siguiente vértice visitado después del vértice v, es función sólo de v, t, N(v), y M, donde M es una memoria de tamaño k que contiene información acerca de vértices visitados previamente. La función de transición de A es de la forma:

δ: [ R2, (R2)*, R2 , ∑k ] → R2 Los tres primeros argumentos y la salida son los mismos que para los algoritmos a) y b). El cuarto argumento representa la memoria usada por el algoritmo. El conjunto ∑ es el alfabeto de elementos representables por una unidad de memoria. Para nuestros propósitos, ∑ es el conjunto de puntos de R2. Adicionalmente A define una función γ de la forma:

γ : [ R2, (R2)*, R2 , ∑k ] → ∑k que define cómo A usa la memoria. Podemos definir :

, donde λ es la cadena vacía, y

Al igual que en los algoritmos sin memoria , A tiene éxito en encontrar un camino de s a t si y sólo si existe un i ≥ 0 tal que δi (s, t) = t .

2.3.2. Ruteo Voraz ( Greedy Routing ) El algoritmo de ruteo voraz siempre se mueve del vértice actualmente visitado v, al vértice vecino u que minimiza la distancia al vértice destino t. En caso de que existan varios vértices que cumplan la condición, se resuelve cual va a ser el siguiente nodo a visitar de forma arbitraria. Formalmente el Ruteo Voraz se define por la función de transición:

gdy(v, N(v), t) = u ∈ N(v) : dist (u, t) ≤ dist (w, t) para todo w ∈ N(v)

El algoritmo voraz puede ser derrotado por un grafo de varias formas: • En una triangulación, el algoritmo se queda atrapado moviéndose atrás y

adelante en una arista (Fig. 31 a). • En una triangulación, se queda atrapado en un ciclo de tres o más

vértices (Fig. 31 b). • Llega a un vértice desde el que no puede ir a ningún otro que este más

cerca de t que él.

Page 39: UNIVERSIDAD POLITÉCNICA DE MADRID - … · Reconstrucción de un modelo tridimensional a partir de una nube de puntos 4 1.2.3. El problema generalizado de diseño de una red 5

Capítulo 2 Grafos de proximidad, spanners y estrategias de ruteo

- 31 -

Figura 31. Grafos que derrotan al ruteo voraz.

Este algoritmo se suele utilizar en triangulaciones, aunque como hemos visto en los casos a y b, hay algunas que consiguen derrotarlo. Propiedad 1 El algoritmo de Ruteo Voraz es un algoritmo sin memoria que no es derrotado por ninguna Triangulación de Delaunay. El algoritmo de Ruteo Voraz cumple la definición de algoritmo sin memoria. Sea T=(V, A) una Triangulación de Delaunay. Vamos a demostrar que cada vértice v de T tiene un vecino que está estrictamente más cerca de t que v. De esta forma en cada paso nos acercamos más a t, y al cabo de n pasos llegamos a t (ver figura 32). Sea VD(V) el Diagrama de Voronoi de V y sea e la primera arista de VD(V) intersecada por el segmento vt. La arista e debe existir, porque v y t están en distintas regiones de Voronoi. Es más, e está en el borde de dos regiones de Voronoi, una de v y otra de algún otro vértice u, y la linea en que está e divide el plano en dos semiplanos hv = { p: dist(p,v) < dist(p,u) } y hu= { p: dist(p, u) < dist(p,v)}. Como el diagrama de Voronoi es el grafo dual de la Triangulación de Delaunay, la arista (u,v) ∈ T.

Figura 32. Demostración de la Propiedad 1

Page 40: UNIVERSIDAD POLITÉCNICA DE MADRID - … · Reconstrucción de un modelo tridimensional a partir de una nube de puntos 4 1.2.3. El problema generalizado de diseño de una red 5

Capítulo 2 Grafos de proximidad, spanners y estrategias de ruteo

- 32 -

2.3.3. Ruteo de Brújula (Compass Routing) El algoritmo de Ruteo de Brújula siempre se mueve de un vértice v a un vecino u de v que minimiza el ángulo ∠ u, v, t. En el caso de que varios vecinos cumplan la condición (2 como mucho), se elije uno de los vértices mediante alguna regla determinista arbitraria. Formalmente el algoritmo se define por la función de transición:

cmp (v, N(v), t) = u ∈ N(v) : ∠ u, v, t ≤ ∠ w, v, t para todo w ∈ N(v) Propiedad 1 El algoritmo de Brújula es un algoritmo sin memoria que no es derrotado por ninguna triangulación regular. Aunque pueda parecer que el algoritmo de la brújula siempre podrá encontrar el camino entre dos vértices en una triangulación, hay triangulaciones como la de la figura 33, que lo derrotan: el algoritmo se queda atrapado en un ciclo.

Figura 33. Triangulación que derrota al Ruteo de Brújula

Este ciclo C lo llamaremos un ciclo trampa en T para t. Los ciclos trampa se pueden caracterizar en términos de la propiedad de visibilidad en las triangulaciones: sean t1 y t2 dos triángulos de T. Decimos que t1 oscurece a t2 si existe un “rayo” con origen en t que corta a t1 primero y después a t2. Sean u, v dos vértices cualquiera de T tal que cmp(u, N(u), t) = v . Definimos ∆(u, v) el triángulo de T que está contenido en el semiplano cerrado rodeado por la línea que pasa por uv y contiene a t.

Figura 34. Visibilidad de triángulos en el Ruteo de Brújula

Si w es el tercer vértice del triángulo ∆(vi, vi+1) , entonces w no puede estar en el cono definido por t, vi y vi+1, con altura en vi, ya que en otro caso no

Page 41: UNIVERSIDAD POLITÉCNICA DE MADRID - … · Reconstrucción de un modelo tridimensional a partir de una nube de puntos 4 1.2.3. El problema generalizado de diseño de una red 5

Capítulo 2 Grafos de proximidad, spanners y estrategias de ruteo

- 33 -

tendríamos que cmp (vi )= vi+1. Pero entonces el segmento de línea que une w y vi+1 oscurece vi y por tanto ∆(vi, vi+1) oscurece ∆(vi-1, vi). En [8] Edelsbrunner demuestra que si T es una triangulación regular, entonces T no tiene ningún conjunto de triángulos que se oscurezcan el uno al otro cíclicamente. 2.3.4. Ruteo de Brújula Aleatorizado (Random Compass Routing) Si introducimos aleatoriedad en el ruteo de brújula, vamos a ver cómo se solucionan los problemas al tratar de encontrar una ruta entre dos vértices. Consideraremos un algoritmo sin memoria aleatorizado 1 bit. El algoritmo de Brújula aleatorizado se mueve de un vértice v a otro { cw(v), ccw(v) } con igual probabilidad . Los vértices cw(v) y ccw(v) son los dos vértices que minimizan el ángulo con el destino t en sentido horario y antihorario, ∠ t,v,cw(v) y ∠ t,v,ccw(v) . Formalmente se define por la función de transición:

Propiedad 1 El Algoritmo de Brújula Aleatorizado es un algoritmo sin memoria aleatorizado 1-bit que no es derrotado por ninguna subdivisión convexa. Demostración: El algoritmo es sin memoria según la definición, y es aleatorizado porque en cada paso se elije entre dos opciones. Supongamos que existe una subdivisión G con dos vértices s, t tales que la probabilidad de alcanzar t desde s utilizando el Ruteo de Brújula Aleatorizado es 0. Entonces existe un subgrafo H de G que contiene a s pero no contiene a t, tal que para todos los vértices v ∈ H, cw(v) ∈ H y ccw(v) ∈ H . El vértice t está contenido en alguna cara f de H. Esta cara debe ser convexa, pero supongamos que no lo es. Entonces existe un vértice “reflejo” de v en el borde de f tal que el segmento de línea tv no interseca ninguna arista de H. Sin embargo esto no puede suceder, ya que ccw(v) y cw(v) están en H y por tanto v no tendría “reflejo”. Como G es conexo, debe cumplirse que para algún vértice u en el borde de f, cw(u) o ccw(u) está contenido en el interior de f. Pero este vértice en el interior de f está también en el interior de H, contradiciendo el hecho de que f es una cara convexa de H. Por tanto concluimos que no hay ninguna subdivisión convexa que derrote al Ruteo de Brujula Aleatorizado. 2.3.5. Ruteo Voraz-Brújula ( Greedy-Compass Routing) En los apartados anteriores hemos visto el Algoritmo Voraz y el Algoritmo de Brújula, basados en la distancia y en la dirección referente al vértice destino respectivamente. Ambos algoritmos son derrotados por algunas triangulaciones pero de distinto modo. Con el algoritmo híbrido Voraz-Brújula obtenemos un algoritmo que no es derrotado por ninguna triangulación.

Page 42: UNIVERSIDAD POLITÉCNICA DE MADRID - … · Reconstrucción de un modelo tridimensional a partir de una nube de puntos 4 1.2.3. El problema generalizado de diseño de una red 5

Capítulo 2 Grafos de proximidad, spanners y estrategias de ruteo

- 34 -

Sea cw(v) el vértice u ∈ N(v) que minimiza el ángulo en sentido horario ∠ t,v,u , y sea ccw(v) el vértice u ∈ N(v) que minimiza el ángulo en sentido antihorario ∠ t,v,u. A cw(v) y ccw(v) los llamaremos vecinos de brújula de v (CN viene del ingles compass neighbours): CN(v) = {cw(v),ccw(v)}. El Ruteo Voraz-Brújula se mueve de un vértice v a otro u CN(v) tal que la distancia d(u, t) se minimiza. Si varios vértices cumplen la condición se deshace el empate de forma arbitraria. Formalmente al algoritmo Voraz-Brújula se define por la función de transición:

gc (v,N(v),t) = u ∈ NC(v) : d(u, t) ≤ d(w, t) para todo w ∈ CN(v)

Propiedad 1 El algoritmo Voraz-Brújula es un algoritmo sin memoria que no es derrotado por ninguna triangulación. Demostración Supongamos que en una triangulación T hay un par de vértices s,t para los que el algoritmo Voraz-Brújula no encuentra un camino. Entonces debe existir un ciclo de vértices C= v0,…, vk-1 de T tal que el ruteo Voraz-Brújula se mueve de vi a vi+1 para todo 0 ≤ i ≤ k. Como se vio en el ruteo de Brújula, t está en el interior de C. Todos los nodos de C están en la frontera de un disco D centrado en t . Para probar esta última afirmación, supongamos por contradicción, que no existe tal disco D. Sea D el disco centrado en t y tiene el vértice más lejano a t de C en su frontera. Consideremos un vértice vi del interior de D tal que vi+1 está en la frontera de D (figura 35). Asumamos que vi+1=ccw(vi), entonces tiene que ocurrir que cw(vi) no está en el interior de D, o en otro caso no nos habríamos movido a vi+1. Pero entonces la arista (cw(vi),ccw(vi)) divide a D en dos regiones , R1 que contiene a vi y R2 que contiene a t. Como C pasa por R1 y R2 y esta contenido en D, tiene que ocurrir que C entre a la región R1 por cw(vi ) y salga de R1 por vi+1=ccw(vi). Sin embargo esto no sucede porque tanto cw(cw(vi)) como ccw(cw(vi)) están contenidos en el semiplano bordeado por la línea (cw(vi ), ccw(vi)) y que contiene a t, y por tanto no están contenidos en R1.

Figura 35. Demostración de la Propiedad 1.

Page 43: UNIVERSIDAD POLITÉCNICA DE MADRID - … · Reconstrucción de un modelo tridimensional a partir de una nube de puntos 4 1.2.3. El problema generalizado de diseño de una red 5

Capítulo 2 Grafos de proximidad, spanners y estrategias de ruteo

- 35 -

De esta forma establecemos que todos los vértices de C están en la frontera de D. Sin embargo, como C contiene a t en su interior y la triangulación T es conexa, debe suceder que para algún vértice vj de C, cw(vj) o ccw(vj) está en el interior de D. Supongamos que es cw(vj). Entonces tendríamos una contradicción, ya que el algoritmo Voraz-Brújula se habría movido a cw(vj) en lugar de a vj+1. 2.3.6. Ruteo de Voronoi ( Voronoi routing ) Consideremos la Triangulación de Delaunay y el diagrama de Voronoi asociado a ella, de un conjunto de vértices V, y un par de vértices s,t ∈ V. El segmento st corta las regiones del Diagrama de Voronoi en un determinado orden, R0,…, Rm-1, siendo R0 la región de Voronoi asociada al vértice s, y Rm-1 la región de Voronoi de t. El algoritmo de Voronoi se mueve de s a t a través del camino de vértices v0,…, vm-1 donde vi es cada vértice de V asociado a la región Ri. y (vi,vi+1) son aristas de la Triangulación de Delaunay de V.

Figura 36. Camino del Ruteo de Voronoi.

Este algoritmo se basa en la demostración de Dobkin et al.[7] , en la que se demuestra que la Triangulación de Delaunay aproxima el grafo Completo Euclídeo en un factor constante en términos de longitud del camino más corto entre vértices. El Ruteo de Voronoi no es competitivo (aunque permite construir otros algoritmos basados en él que si lo son), ya que existen Triangulaciones de Delaunay como la de la Figura 37. para las que el camino que se obtiene es exageradamente largo.

Figura 37. El Ruteo de Voronoi no es competitivo para todas las triangulaciones.

Page 44: UNIVERSIDAD POLITÉCNICA DE MADRID - … · Reconstrucción de un modelo tridimensional a partir de una nube de puntos 4 1.2.3. El problema generalizado de diseño de una red 5

Capítulo 2 Grafos de proximidad, spanners y estrategias de ruteo

- 36 -

Como la Región de Voronoi de un vértice puede calcularse conociendo únicamente sus vecinos en la triangulación de Delaunay, tenemos que el Ruteo de Voronoi es un algoritmo de ruteo con memoria O(1). 2.3.7. Ruteo por Caras 1 ( Face-1 Routing ) Un grafo conexo y plano G particiona el espacio en caras que están limitadas por polígonos hechos de aristas de G. Dado un vértice v de una cara f, la frontera de f puede ser recorrida en sentido antihorario (u horario si la cara f es exterior) utilizando la conocida regla de la mano derecha, que como vimos en el capítulo de introducción, permite visitar todas las paredes de un laberinto si se mantiene la mano derecha pegada al muro mientras se avanza. Para ir de un vértice s a otro t, el algoritmo parte de s y recorre cada cara f=(v0,…,vk) por completo. Si no encuentra el destino t en una cara, entonces cambia de cara en un cierto vértice vi tal que el punto de corte del segmento st y la arista vi,vi+1 es el más cercano de todos los puntos en que el segmento st corta a la cara f.

Figura 38. Ruteo por Caras 1

Propiedad 1 El algoritmo de Ruteo por Caras 1 alcanza el destino t después de cómo mucho 4 |A| pasos, donde |A| es el número de aristas del grafo. En [16] Kranakis et al. dan una demostración detallada de esta propiedad. Hay que resaltar que en este algoritmo se recorre una cara f por completo para determinar el punto de corte de st y f más cercano a t, y después volver a ese punto. La cota 4|A| puede ser reducida a 3|A| si como camino de vuelta al punto de corte (de los dos caminos posibles alrededor de f) se emplea el más corto. 2.3.8. Ruteo por Caras 2 (Face-2 Routing) Esta versión del algoritmo de Ruteo por Caras mejora la primera versión en el sentido de que no recorre toda una cara antes de cambiar de cara. El algoritmo comienza en el vértice s y asigna como primer punto de corte c=s. Cuando al recorrer una cara f encuentra un punto de corte c’ del segmento ct con f, asigna a c el valor del nuevo punto de corte c’ y cambia de cara. El proceso se repite hasta encontrar el destino t.

Page 45: UNIVERSIDAD POLITÉCNICA DE MADRID - … · Reconstrucción de un modelo tridimensional a partir de una nube de puntos 4 1.2.3. El problema generalizado de diseño de una red 5

Capítulo 2 Grafos de proximidad, spanners y estrategias de ruteo

- 37 -

Figura 39. Ruteo por Caras 2

Propiedad 1 El algoritmo de Ruteo por Caras 2 alcanza el destino t en un número finito de pasos. Claramente se ve que el algoritmo llega a t en un número finito de pasos ya que la distancia a t disminuye en cada vuelta del algoritmo, aunque existen casos patológicos como el de la figura 40, en el que el número de aristas visitadas antes de llegar al destino puede ser del orden de O(n2).

Figura 40. Un mal grafo de entrada para el algoritmo Caras 2

2.3.9. Ruteo Voraz-Caras-Voraz ( Greedy-Face-Greedy Routing, GFG ) Es una estrategia híbrida que combina las Estrategias de Ruteo Voraz y Ruteo por Caras (tanto versión 1 como 2) y se aplica, al igual que las dos estrategias anteriores, sobre grafos planos y conexos. El algoritmo comienza en el vértice origen s con la estrategia de Ruteo Voraz hasta que llega al destino t o llega a un vértice desde el que no puede continuar hasta un vértice más cercano a t que el actualmente visitado. En este momento se deja la estrategia Voraz y se pasa a utilizar la estrategia de Ruteo por Caras, recorriendo la cara o caras necesarias hasta encontrar el destino o llegar a un nodo más cercano al destino t que el nodo desde el que se cambio a estrategia por Caras, momento en el cual se vuelve a aplicar la estrategia Voraz. Estos cambios de estrategia se aplican de forma reiterada hasta alcanzar el destino. Este tipo de Ruteo combina las dos estrategias, aprovecha la ventaja del Ruteo Voraz de avanzar rápidamente hacia el destino, con la seguridad del Ruteo por Caras con el que sabemos que se va a alcanzar el destino y soluciona los vértices en los que el Ruteo Voraz no puede continuar. En el ejemplo de la figura 41, el ruteo comienza en s y avanza por ruteo Voraz hasta p1, a partir de ahí no puede continuar y cambia a modo Ruteo por Caras hasta p2; desde p2 avanza hasta p3 en modo Voraz. En p3 cambia a modo Ruteo por Caras y avanza hasta p4. En p4 cambia a modo Voraz pero no puede avanzar, por lo que vuelve a modo Caras y avanza hasta p5, desde donde llega al destino t en modo Voraz.

Page 46: UNIVERSIDAD POLITÉCNICA DE MADRID - … · Reconstrucción de un modelo tridimensional a partir de una nube de puntos 4 1.2.3. El problema generalizado de diseño de una red 5

Capítulo 2 Grafos de proximidad, spanners y estrategias de ruteo

- 38 -

Figura 41. Ruteo Greedy-Face-Greedy ( Ruteo Voraz y Ruteo por Caras 2) 2.3.10 Ruteo local en la familia de Grafos Gθθθθ

λλλλ En el apartado de grafos de proximidad de este mismo capítulo vimos la familia de Grafos Gθ

λ (ver 2.2.14 ) , introducida por Bose et al. en [2]. Esta familia de grafos admite una estrategia de ruteo local con la que han obtenido buenos resultados para el spanning ratio del grafo, es decir la razón entre la longitud del camino encontrado entre dos puntos s, t por el algoritmo de ruteo local y la distancia euclídea d(s,t). El algoritmo de Ruteo local consiste en moverse en cada paso al nodo vecino que es destructor del destino t. En el ejemplo de la figura 42, se parte del nodo s y se avanza hacia los nodos p1 y p2 siguiendo el algoritmo. En el nodo p2 se avanza hacia p3 porque es destructor de t, es decir, t cae dentro de la zona de destrucción (en gris claro) al crear la arista (p2,p3) y por tanto evita que exista la arista (p2, t).

Figura 42. p3 es destructor de t

Entre las desventajas de esta estrategia de ruteo podemos destacar que es local y por tanto sólo puede utilizarse en este tipo de grafos, que por otra parte no son planos en general y por tanto habría que planarizar el grafo si se quiere utilizar una estrategia de ruteo más general.

Page 47: UNIVERSIDAD POLITÉCNICA DE MADRID - … · Reconstrucción de un modelo tridimensional a partir de una nube de puntos 4 1.2.3. El problema generalizado de diseño de una red 5

- 39 -

Capítulo 3

ASPECTOS DE DISEÑO E IMPLEMENTACIÓN

En este capítulo veremos detalles de diseño e implementación de la aplicación ProRouting. En primer lugar vamos a ver los requisitos hardware y software. A continuación estudiaremos la integración en la aplicación de los algoritmos de grafos y ruteo que vimos en el capítulo 2. Por último veremos diagramas de las clases utilizadas en ProRouting. La aplicación se ha implementado utilizando el lenguaje de programación Java, debido a varias razones:

• El código Java generado es ejecutable en cualquier sistema que cuente con Máquina Virtual Java. Esta característica hace posible que la aplicación puede ejecutarse en una gran variedad de máquinas independientemente de la arquitectura hardware y sistema operativo que posean.

• Java cuenta con librerías gráficas con las que es posible generar una interfaz gráfica para la aplicación fácilmente y con los elementos más habituales (ventanas, botones, combos, menús,…).

• La aplicación puede ejecutarse desde un navegador de Internet que soporte applets de Java. Esto facilita enormemente la distribución y ejecución, ya que la aplicación puede alojarse en un servidor de Internet y para utilizarla tan solo es necesario usar un navegador y ejecutar el applet, que será descargada de forma transparente por el navegador, sin ser por tanto necesario ninguna instalación.

• Java es un lenguaje orientado a objetos, por lo tanto facilita la claridad a la hora de diseñar e implementar. También facilita el mantenimiento de la aplicación y posibles futuras ampliaciones.

Sin embargo la utilización de Java tiene algunos inconvenientes, pero no son lo suficientemente importantes y se compensan con las ventajas citadas anteriormente. Entre las desventajas podemos citar:

• Las clases y métodos disponibles en Java dependen de la versión del API utilizada, aunque en principio se asegura la compatibilidad de los programas realizados para versiones anteriores con las nuevas versiones de JVM.

• El aspecto final de la aplicación depende también del navegador utilizado y de su configuración, pero esto no supone un grave problema ya que en general el aspecto resultante será satisfactorio en la mayoría de los casos.

Page 48: UNIVERSIDAD POLITÉCNICA DE MADRID - … · Reconstrucción de un modelo tridimensional a partir de una nube de puntos 4 1.2.3. El problema generalizado de diseño de una red 5

Capítulo 3 Aspectos de diseño e implementación

- 40 -

3.1. Requisitos mínimos del sistema Para que ProRouting pueda ejecutarse correctamente y con fluidez, el sistema debe cumplir unos requisitos mínimos de hardware y software. Estos requisitos vienen determinados en gran parte por la capacidad para ejecutar la Máquina Virtual de Java (JVM). Para un sistema PC compatible los requisitos son: Requisitos hardware:

• Procesador a 700 Mhz. • 128 Mb de memoria RAM. • Tarjeta gráfica de 32 bits de color y resolución de al menos 800x600.

Requisitos software:

• Sistema Operativo con interfaz gráfico (Windows, Linux,…) • JVM 1.4 o superior. • Navegador con soporte para JVM (Internet Explorer, Netscape,

Firefox,…). 3.2. Integración de los algoritmos de grafos En este apartado vamos a ver cómo se han implementado los distintos algoritmos de construcción de grafos. En todos los algoritmos se parte de una nube de puntos V del plano. 3.2.1. Grafo de Vecindad Dirigida ( Grafo del Vecino Más Cercano) El grafo de Vecindad Dirigida une con una arista cada punto con el más cercano a él. Este grafo es dirigido, y las aristas tienen como origen un punto y como destino su punto más cercano. El cálculo de este grafo es muy sencillo, simplemente calculamos la distancia de un punto al resto de puntos, y lo unimos con una arista al más cercano. Esto se puede hacer con dos bucles anidados, por lo que la complejidad del algoritmo es O(n2). Algoritmo:

1. Para cada punto p de V: 1.1. Calcular la distancia euclidea de p al resto de puntos de V, y

quedarse con el punto p’ que minimice la distancia. 1.2. Añadir la arista dirigida pp’ al grafo. 3.2.2. Árbol Generador Mínimo. Este algoritmo tiene como entrada un grafo G=(V,A), y se pretende encontrar el grafo conexo con estructura de árbol de menor coste, entendiendo por coste la suma total de las longitudes de sus aristas. Para calcular el árbol Generador

Page 49: UNIVERSIDAD POLITÉCNICA DE MADRID - … · Reconstrucción de un modelo tridimensional a partir de una nube de puntos 4 1.2.3. El problema generalizado de diseño de una red 5

Capítulo 3 Aspectos de diseño e implementación

- 41 -

Mínimo se ha optado por utilizar el algoritmo de Prim, que consta de los siguientes pasos: Algoritmo:

1. Ordenar las aristas del grafo de menor a mayor longitud.. 2. Se elige un vértice u del grafo y se considera el árbol S(u). 3. Añadir a S la arista de menor longitud que une un vértice de S y un

vértice que no pertenece a S y no se haya añadido anteriormente. 4. Si el número de aristas de S es n -1 el algoritmo termina. En caso

contrario ir a 3. La ordenación de las aristas se hace en tiempo O(n2). Para cada arista que se añade al grafo, se debe comprobar que una un punto que pertenece al árbol en construcción y otro que aún no se ha añadido. Esta operación se hace en tiempo O(n), por lo que la construcción del árbol se hace en tiempo O(n2). La complejidad del algoritmo es el máximo de ambas operaciones, por lo que resulta O(n2). 3.2.3 Grafo de Vecindad Relativa El cálculo del grafo de Vecindad Relativa se hace realizando el test de Luna sobre todas las aristas de la Triangulación de Delaunay, aprovechando la propiedad de ser subgrafo de éste (ver 2.2.7. propiedad 2). El algoritmo utilizado para calcular el RNG es el siguiente: Algoritmo:

1. Calcular la triangulación de Delaunay del conjunto de puntos V. 2. Para cada par de puntos (pi,pj) que forman una arista de la

triangulación de Delaunay calcular dk = max {d(pk,pi), d(pk,pj)} con k=1..n, k ≠ i, k ≠ j, siendo n el número de aristas de DT.

3. para cada par de puntos (pi,pj) buscar el valor dk que es menor que d(pi,pj). Si no existe este valor entonces crear la arista (pi,pj). Si quedan aristas de DT por evaluar volver a 2.Terminar en caso contrario.

La triangulación de Delaunay se calcula en tiempo O(nlog n), pero no lo tendremos en cuenta para la complejidad, suponemos que ya está calculada previamente. Al tener calculada previamente la Triangulación de Delaunay, la complejidad es menor que si hubiera que examinar todas las aristas del grafo completo. El test de luna se hace en tiempo O(n) para cada arista por lo que la complejidad de este algoritmo es O(n2), en lugar de ser O(n3) si no calculásemos DT previamente.

Page 50: UNIVERSIDAD POLITÉCNICA DE MADRID - … · Reconstrucción de un modelo tridimensional a partir de una nube de puntos 4 1.2.3. El problema generalizado de diseño de una red 5

Capítulo 3 Aspectos de diseño e implementación

- 42 -

3.2.4. Grafo de Gabriel El grafo de Gabriel se calcula también apoyándose en la Triangulación de Delaunay ya calculada previamente. Sobre cada arista de la triangulación se realiza el test de Gabriel. El algoritmo utilizado es: Algoritmo:

1. Calcular la triangulación de Delaunay del conjunto de puntos V. 2. Para cada par de puntos (pi,pj) que forman una arista de la

Triangulación de Delaunay calcular dk = d(pk,m) con k=1..n, siendo n el número de aristas de DT y m el punto medio del segmento pipj.

3. Para cada par de puntos (pi, pj) buscar el valor dk que es menor que d(pi,pj)/2. Si no existe este valor entonces crear la arista pipj. Si quedan aristas de DT por evaluar volver a 2. Terminar en caso contrario.

Al igual que en el algoritmo anterior, suponemos que la triangulación de Delaunay está ya calculada. El test para comprobar si una arista pertenece al grafo se calcula en O(n), por lo que la complejidad total es O(n2). La complejidad de este algoritmo es O(n2) tal como está planteado, pero podría reducirse a O(n) si además de calcular la triangulación de Delaunay tenemos calculado también el diagrama de Voronoi. En ese caso las aristas de GG serían las aristas de Delaunay que intersecan a su arista de Voronoi, y la complejidad sería O(n). 3.2.5. Triangulación Incremental Se ha utilizado el algoritmo de Triangulación Incremental con preordenación. Comienza con la ordenación de los puntos en orden creciente de su coordenada x (abscisas). Esta preordenación permite asegurar durante la construcción de la triangulación, que cada vértice que se añade crea una nueva triangulación (el vértice no se encuentra dentro de otro triángulo ya añadido), y aunque añade un coste de cálculo, evita tener que hacer comprobaciones y rectificaciones. Una vez preordenados los puntos, se van añadiendo los puntos en orden así como aristas a la triangulación. Debe evitarse que se crucen las nuevas aristas con las ya existentes. La forma de evitarlo es la siguiente:

• Al añadir un nuevo punto t a la triangulación, trazar una arista que lo una con el último punto añadido p. Esta arista no corta a ninguna de las ya existentes y forma parte de la triangulación (ver figura 43).

Page 51: UNIVERSIDAD POLITÉCNICA DE MADRID - … · Reconstrucción de un modelo tridimensional a partir de una nube de puntos 4 1.2.3. El problema generalizado de diseño de una red 5

Capítulo 3 Aspectos de diseño e implementación

- 43 -

Figura 43. Se añade un nuevo punto t a la triangulación.

• Partiendo del punto p se puede recorrer el cierre convexo de la

triangulación que teníamos antes de añadir la arista pt en cualquiera de los dos sentidos. Si recorremos en orden el cierre en un sentido, podemos ir añadiendo aristas desde t hasta cada punto del cierre hasta que lleguemos a un punto del cierre i en el que el resto de puntos del cierre queden a la derecha de la arista ti. El punto i lo llamaremos soporte inferior. Del mismo modo se puede recorrer el cierre convexo partiendo desde p en sentido contrario, añadiendo aristas desde t hasta cada punto del cierre, hasta llegar a un punto s en el que el resto de puntos del cierre queda a la izquierda de la arista ts. Este punto s lo llamaremos soporte superior. Al encontrar los soportes superior e inferior la triangulación está completa y se pueden añadir nuevos puntos.

Figura 44. Soportes inferior y superior.

El algoritmo de construcción del grafo podría describirse de la forma siguiente: Algoritmo:

1. Ordenar todos los puntos según su coordenada x de menor a mayor. En caso de igualdad ordenar según su coordenada y.

2. Formar un triángulo con los tres primeros puntos. Esta será la primera triangulación y también el primer cierre convexo.

3. Mientras queden puntos por triangular, tomar el primero de ellos, t. 3.1. Añadir la arista tp desde t al último punto añadido p. 3.2. Partiendo de p recorremos el cierre convexo en sentido horario y

vamos añadiendo aristas con origen en t, hasta encontrar el

Page 52: UNIVERSIDAD POLITÉCNICA DE MADRID - … · Reconstrucción de un modelo tridimensional a partir de una nube de puntos 4 1.2.3. El problema generalizado de diseño de una red 5

Capítulo 3 Aspectos de diseño e implementación

- 44 -

soporte inferior. Hacemos lo mismo recorriendo el cierre en sentido antihorario hasta encontrar el soporte superior.

3.3. Una vez terminada la triangulación, calcular su cierre convexo y volver a 3.

El cierre convexo se calcula de forma dinámica en cada paso. Las dos aristas de t a los soportes se deben añadir al cierre ya que siempre serán exteriores, y en cambio otras aristas que eran exteriores ahora serán interiores y se eliminan del cierre. El cierre convexo se calcula de esta forma ya que si se recalculara por completo en cada paso del algoritmo sería demasiado costoso. La ordenación de los puntos se calcula en tiempo O(n2). Cada vez que se añade un punto a la triangulación se debe recorrer el cierre convexo y volver a calcularlo. Como se ha visto antes ambas operaciones se realizan a la vez, por lo que el tiempo para construir el grafo es O(n2). Por tanto el tiempo total del algoritmo es O(n2), el máximo de la ordenación y la construcción del grafo. 3.2.6. Triangulación de Delaunay El algoritmo de construcción utilizado para la Triangulación de Delaunay, se basa en la inversión o flipping de aristas de la Triangulación Incremental. La inversión de aristas está relacionada con la característica de la Triangulación de Delaunay de maximizar los ángulos interiores de los triángulos. Si consideramos los dos triángulos de la Figura 45. que tienen la arista común BD, la suma de los ángulos α y γ determinan si se cumple la condición de Delaunay ; si esta suma es menor o igual que 180 entonces estos triángulos cumplen la condición de Delaunay.

Figura 45. Triángulos que no cumplen la condición de Delaunay.

Para conseguir que se cumpla la condición de Delaunay basta con hacer un flip de la arista BD, es decir sustituirla por una nueva arista AC.

Figura 46. Flip de aristas

El algoritmo de construcción de la triangulación será entonces el siguiente:

Page 53: UNIVERSIDAD POLITÉCNICA DE MADRID - … · Reconstrucción de un modelo tridimensional a partir de una nube de puntos 4 1.2.3. El problema generalizado de diseño de una red 5

Capítulo 3 Aspectos de diseño e implementación

- 45 -

Algoritmo:

1. Calcular la Triangulación Incremental del conjunto de puntos. 2. Tomar una a una las aristas de la triangulación incremental y

comprobar si los triángulos que tiene la arista en común cumplen la propiedad de Delaunay. Si no la cumplen hacer flip de la arista.

3. Si en el paso 2 se hizo flip de alguna arista volver a 2. En caso contrario terminar.

El cálculo de la triangulación incremental no se tiene en cuenta para la complejidad del algoritmo y se supone calculado previamente. Cada arista puede tener como mucho un flip, y para cada arista se debe recorrer el conjunto de aristas para determinar los triángulos de los que forma parte, por lo que en el peor caso si hay que cambiar todas las aristas la complejidad del algoritmo es O(n2). Existen otros algoritmos para calcular la triangulación de Delaunay en tiempo O(n log n). 3.2.7. Triangulación de Delaunay Restringida Como vimos en el capítulo 2, la Triangulación de Delaunay Restringida se obtiene con la intersección del grafo de Disco Unidad y la Triangulación de Delaunay. El algoritmo implementado parte de la triangulación de Delaunay ya calculada y se queda sólo con las aristas de longitud menor o igual que la unidad. La complejidad de este algoritmo es por tanto O(n) sobre el número de aristas, esa será la complejidad del algoritmo si no tenemos en cuenta el coste de calcular la triangulación de Delaunay previamente. Algoritmo:

1. Calcular la Triangulación de Delaunay. 2. Examinar todas las aristas de la Triangulación de Delaunay y eliminar

aquellas de longitud mayor que la unidad. 3.2.8. Triangulación Voraz El algoritmo de triangulación Voraz está implementado partiendo del grafo completo y ordenando todas sus aristas de menor a mayor longitud. Las aristas se van añadiendo al grafo en ese orden y teniendo en cuenta que no corten a aristas más cortas (añadidas anteriormente). Algoritmo:

1. Ordenar las aristas del grafo completo de menor a mayor longitud. 2. Añadir las aristas en orden una a una al grafo si no cortan a alguna

de las aristas ya añadidas. La ordenación de aristas se realiza en tiempo O(n2). Al añadir cada arista al grafo, se debe comprobar que no corta a las aristas ya añadidas. Esto se

Page 54: UNIVERSIDAD POLITÉCNICA DE MADRID - … · Reconstrucción de un modelo tridimensional a partir de una nube de puntos 4 1.2.3. El problema generalizado de diseño de una red 5

Capítulo 3 Aspectos de diseño e implementación

- 46 -

realiza en tiempo O(nlog n). Como el número de aristas es O(n2), tenemos que la construcción del grafo es O(n2log n). Por tanto la complejidad es O(n2log n), el máximo de la ordenación de aristas, O(n2), y de la construcción del grafo, O(n2log n). Existen algoritmos más elaborados que pueden calcularla en un tiempo O(n log n). 3.2.9. Diagrama de Voronoi El algoritmo utilizado para su construcción se deriva de la propiedad de que no existe ningún otro punto dentro de la circunferencia circunscrita a tres puntos que pertenecen a la triangulación de Delaunay. Algoritmo:

1. Repetir para cada trío de puntos i,j,k de la nube de puntos V: 1.1. comprobar si existe algún otro punto m de V que quede en el interior de la circunferencia C que pasa por i,j,k. 1.2. Si no existe tal punto m, entonces añadir el centro de la circunferencia C al conjunto de vértices del diagrama de Voronoi, y añadir las mediatrices de los segmentos ij, ik, jk a las aristas del Diagrama de Voronoi.

2. Calcular las regiones formadas por la intersección de las aristas y los vértices de Voronoi.

La complejidad del punto 1 de este algoritmo es O(n4), ya que se deben formar trios de puntos y comprobar si queda algún punto en su interior. La complejidad del punto 2 es O(n2). La complejidad del algoritmo es por tanto O(n4), bastante elevada, debido a la simplicidad de este algoritmo. Existen algoritmos más elaborados como el de Fortune que calcula el diagrama de Voronoi en tiempo O(nlog n). 3.2.10. Grafo de Yao, YGk(V) En la construcción del grafo de Yao se examinan todos los vértices uno a uno y se unen mediante una arista con el vértice más cercano de cada sector en que dividimos el espacio. El algoritmo utilizado en la implementación es el siguiente: Algoritmo:

1. Asignar S=V, siendo V el conjunto de vértices. 2. Tomar un punto p de S. Hacer S= S – {p}. 3. Dividir el espacio en k sectores angulares con origen en p. 4. Trazar una arista de p al punto de V más cercano de cada sector, en

caso de existir. 5. Mientras S no sea vacío volver a 2.

Para cada vértice se debe examinar cual es el vértice de la nube de puntos que queda más cercano en cada sector, esto se realiza en tiempo O(n). Como la

Page 55: UNIVERSIDAD POLITÉCNICA DE MADRID - … · Reconstrucción de un modelo tridimensional a partir de una nube de puntos 4 1.2.3. El problema generalizado de diseño de una red 5

Capítulo 3 Aspectos de diseño e implementación

- 47 -

operación se debe repetir para todos los puntos, la complejidad de este algoritmo es O(n2). 3.2.11. Grafo Theta En el capítulo 2 vimos que este grafo es muy parecido en su construcción al Grafo de Yao, con la diferencia de que cada punto no se une con el más cercano de su sector, sino con el que tenga la proyección sobre el eje de su sector más cercana. Algoritmo:

1. Asignar S=V, siendo V el conjunto de vértices. 2. Tomar un punto p de S. Hacer S= S – {p}. 3. Dividir el espacio en k sectores angulares con origen en p. 4. Proyectar cada punto de V - {p} sobre el semieje de su

correspondiente sector k (el de menor ángulo de los dos posibles, es decir, hacia la derecha). A la proyección que sea más cercana a p del sector k la llamamos p’k.

5. Trazar una arista desde p hasta cada p’k , en caso de existir. 6. Mientras S no sea vacío volver a 2.

La complejidad de este algoritmo es O(n2), igual que para el grafo de Yao, ya que el procedimiento para calcularlo es muy parecido. 3.2.12. Grafo de Disco Unidad El algoritmo de construcción del Grafo de Disco Unidad es muy sencillo, simplemente calcula el Grafo Completo y se queda con las aristas de longitud menor o igual que la unidad. Como se debe recorrer el conjunto de vértices dos veces para comprobar la longitud de las aristas, la complejidad es O(n2).

Algoritmo:

1. Para todo par de puntos p,q de la nube de puntos, hacer: 1.1. Si la arista pq tiene longitud menor o igual que la unidad,

añadirla al grafo.

3.2.13. Grafo Half-Space Proximal En la implementación del algoritmo de este grafo se ha omitido el sentido de las aristas (como vimos en 2.2.13 Half-space es un dígrafo). El algoritmo de construcción es el siguiente:

Page 56: UNIVERSIDAD POLITÉCNICA DE MADRID - … · Reconstrucción de un modelo tridimensional a partir de una nube de puntos 4 1.2.3. El problema generalizado de diseño de una red 5

Capítulo 3 Aspectos de diseño e implementación

- 48 -

Algoritmo:

1. Considerar V, L1 y L2 = ∅, siendo V el conjunto de vértices, L1 el conjunto de aristas del grafo de disco unidad , y L2 la lista de aristas del grafo resultante.

2. Para cada punto u ∈ V repetir el siguiente proceso: 2.1. P(u) = ∅ , L1=A’ , siendo P una lista de puntos prohibidos y A’ el

conjunto de aristas de A incidentes en u. 2.2. Repetir mientras L1 ≠ ∅ :

2.2.1. eliminar de L1 la arista más corta uv , e insertar la arista dirigida uv en L2 . 2.2.2. Añadir a P(u) los puntos de V que quedan en el semiplano determinado por la línea perpendicular a la arista uv y en el que se encuentra v. 2.2.3. Eliminar de L1 las aristas cuyo extremo se encuentre en P(u).

Figura 47. Paso a paso del test HSPG para un punto

El bucle 2.2 se ejecuta en tiempo O(n), ya que se repite un cierto número de veces que podemos considerar una constante, y en su interior se recorre dos veces el vector de aristas, una para determinar la arista más corta, y otra para determinar los puntos que quedan en zona prohibida. Como el proceso se repite para todos los puntos, la complejidad de este algoritmo es O(n2) . 3.2.14. Familia de Grafos Theta-Lambda Esta familia de Grafos está basada en el grafo de Half-space Proximal, por lo que el algoritmo de construcción es muy parecido. Como vimos en 2.2.14. , la diferencia es que cada vez que se encuentra el punto más cercano r a uno dado p, no se toma como región de destrucción el semiplano en el que se encuentra q y cuya frontera es la mediatriz del segmento pr, sino que se toma como zona de destrucción la intersección del cono con origen en p , ángulo 2θ y bisectriz pr, y el semiplano cuya frontera es perpendicular a pr y está a distancia |pr| / 2λ de p.

Page 57: UNIVERSIDAD POLITÉCNICA DE MADRID - … · Reconstrucción de un modelo tridimensional a partir de una nube de puntos 4 1.2.3. El problema generalizado de diseño de una red 5

Capítulo 3 Aspectos de diseño e implementación

- 49 -

Algoritmo:

1. Considerar V, L1 y L2 = ∅, siendo V el conjunto de vértices, L1 el conjunto de aristas del grafo de disco unidad , y L2 la lista de aristas del grafo resultante. 2. Para cada punto u ∈ V repetir el siguiente proceso:

2.1. P(u) = ∅ , L1=A’ , siendo P una lista de puntos prohibidos y A’ el conjunto de aristas de A incidentes en u. 2.2. Repetir mientras L1 ≠ ∅

2.2.1. eliminar de L1 la arista más corta uv , e insertar la arista dirigida uv en L2 . 2.2.2. Añadir a P(u) los puntos de V que quedan en la

intersección del cono con origen en u , ángulo 2θ y bisectriz uv, y el semiplano cuya frontera es perpendicular a uv y está a distancia |uv| / 2λ de u. Dentro de esta región se encuentra v.

2.2.3. Eliminar de L1 las aristas cuyo extremo se encuentre en P(u).

La complejidad de este algoritmo es O(n2) sobre el número de vértices, igual que para el algoritmo Half-space, ya que su funcionamiento es muy parecido. 3.2.15. Familia de Grafos Beta-Skeleton En este algoritmo, en cada vértice se debe comprobar si cumple la condición de vecindad con el resto de vértices. La condición de vecindad depende del valor de β. Algoritmo:

1. Asignar S=V, siendo V el conjunto de vértices. 2. Elegir un punto p de S. Hacer S=S - {p}. 3. Comprobar si p cumple el test de Luna con los puntos de V – {p}.

Añadir una arista desde p hacia cada punto que cumpla el test. 4. Mientras S no sea vacío volver a 2. En caso contrario terminar.

La complejidad del algoritmo es O(n3), ya que para cada punto de V hay que recorrer otras dos veces el conjunto de vértices, una para establecer la arista, y otra para comprobar la condición de vecindad. 3.3. Integración de los algoritmos de Ruteo En todos los algoritmos de ruteo siguientes se parte desde un vértice origen s, y se pretende llegar a un vértice destino t. Desde cada vértice v , nos moveremos hacia algún otro de entre el conjunto de vértices adyacentes N(v).

Page 58: UNIVERSIDAD POLITÉCNICA DE MADRID - … · Reconstrucción de un modelo tridimensional a partir de una nube de puntos 4 1.2.3. El problema generalizado de diseño de una red 5

Capítulo 3 Aspectos de diseño e implementación

- 50 -

3.3.1. Algoritmo de Ruteo Voraz El algoritmo de ruteo Voraz es muy sencillo, la idea se basa en moverse en cada paso al vértice adyacente que esté más cerca del destino.

Figura 48. Ruteo Voraz.

Algoritmo:

1. tomar como vértice actual el origen s, v = s 2. Determinar el conjunto de vértices adyacentes a v, N(v) 3. Calcular el vértice w de N(v) cuya distancia Euclídea a t es la menor de

todo el conjunto N(v), y estrictamente menor que la distancia d(v,t). 4. Si no existe w, terminar. El algoritmo a fallado. 5. Si existe w y w = t , terminar. El algoritmo ha tenido éxito. 6. Si existe w y w ≠ t , añadir la arista vw al camino y hacer v = w. Ir al

paso 2. 3.3.2. Algoritmo de Ruteo con Brújula En el Ruteo con Brújula , en cada paso del algoritmo nos movemos del vértice v actualmente visitado a el vértice adyacente w que minimiza el ángulo ∠ t,v,w, siendo t el vértice destino.

Figura 49. Ruteo con Brújula

Algoritmo:

1. tomar como vértice actual el origen s, v = s 2. Determinar el conjunto de vértices adyacentes a v, N(v) 3. Calcular el vértice w de N(v) tal que el ángulo ∠ t,v,w es el menor

posible de todo el conjunto N(v). 4. Si w = t , terminar. El algoritmo ha tenido éxito. 5. Si w ≠ t , añadir la arista vw al camino y hacer v = w. Ir al paso 2.

Page 59: UNIVERSIDAD POLITÉCNICA DE MADRID - … · Reconstrucción de un modelo tridimensional a partir de una nube de puntos 4 1.2.3. El problema generalizado de diseño de una red 5

Capítulo 3 Aspectos de diseño e implementación

- 51 -

3.3.3. Algoritmo de Ruteo con Brújula Aleatorizado El Ruteo de Brújula Aleatorizado es parecido al anterior algoritmo que hemos visto, pero en este caso se elige aleatoriamente como siguiente nodo entre los dos vértices adyacentes al vértice actual v que minimizan el ángulo en sentido horario y antihorario con respecto al destino t. Estos dos vértices los denominamos cw(v) y ccw(w) (clock wise y counter clock wise). Algoritmo:

1. tomar como vértice actual el origen s, v = s 2. Determinar el conjunto de vértices adyacentes a v, N(v) 3. Calcular los vértices cw(v) y ccw(v) de N(v), tal que los ángulos ∠

t,v,cw(v) y ∠ t,v,ccw(v) son los menores posibles en sentido horario y antihorario respectivamente.

4. elegir aleatoriamente un vértice w del conjunto { cw(v),ccw(v) }. Añadir la arista vw al camino. Asignar a v=w.

5. Si v = t , terminar. El algoritmo ha tenido éxito. 6. Si v ≠ t .Ir al paso 2.

3.3.4. Algoritmo de Ruteo Voraz-Brújula Al igual que en el Algoritmo con Brújula Aleatorizado, el siguiente vértice a visitar se debe elegir entre los vértices {cw(v), ccw(v)}, pero en este algoritmo el siguiente vértice no se elige de forma aleatoria, sino que se elige el vértice cuya distancia Euclídea al destino es la menor de las dos, de forma similar a como funciona el algoritmo de Ruteo Voraz.

Figura 50. Ruteo Voraz-Brújula

Algoritmo:

1. tomar como vértice actual el origen s, v = s 2. Determinar el conjunto de vértices adyacentes a v, N(v) 3. Calcular los vértices cw(v) y ccw(v) de N(v), tal que los ángulos ∠

t,v,cw(v) y ∠ t,v,ccw(v) son los menores posibles en sentido horario y antihorario respectivamente.

4. Determinar el vértice w del conjunto { cw(v),ccw(v) } que minimiza la distancia al destino t. Añadir la arista vw al camino y asignar v=w.

5. Si v = t , terminar. El algoritmo ha tenido éxito. 6. Si v ≠ t .Ir al paso 2.

Page 60: UNIVERSIDAD POLITÉCNICA DE MADRID - … · Reconstrucción de un modelo tridimensional a partir de una nube de puntos 4 1.2.3. El problema generalizado de diseño de una red 5

Capítulo 3 Aspectos de diseño e implementación

- 52 -

3.3.5. Algoritmo de Ruteo de Voronoi Como vimos en el capítulo 2, este algoritmo se mueve a través de las aristas de la Triangulación de Delaunay. El próximo vértice a visitar viene determinado por los puntos de corte del segmento st con los segmentos del Diagrama de Voronoi. Algoritmo:

1. Calcular la triangulación de Delaunay y el diagrama de Voronoi. 2. Calcular la secuencia de puntos de corte [c0,c1,…, ck] del segmento st

con los segmentos que determinan las Regiones de Voronoi. 3. Tomar como vértice actual el origen s, v = s. Asignar i=0 4. Determinar el vértice w cuya Región de Voronoi R(w) es adyacente a

R(v) y corta a st en ci. 5. Añadir la arista de Delaunay vw al camino. Asignar v=w, i=i+1. 6. Si v = t , terminar. El algoritmo ha tenido éxito. 7. Si v ≠ t .Ir al paso 4.

3.3.6. Algoritmo de Ruteo por Caras 1 El algoritmo de Ruteo por Caras 1 debe recorrer la cara en la que se encuentra el vértice actual v hasta encontrar el destino o llegar de nuevo a v. Durante el recorrido de la cara se ha determinado la arista uw cuyo punto de corte con st es el más cercano al destino t. Debe recorrerse de nuevo la cara desde v hasta u y repetir estos pasos pero cambiando a la cara que queda a la derecha de la arista uw. Algoritmo:

1. Asignar como vértice inicial el origen s, p = s 2. Sea f la cara del grafo que tiene a p en su frontera e interseca el

segmento pt. 3. Para cada arista uv de f:

3.1. Si uv interseca a pt en un punto p’ y d(p’,t) < d(p,t) entonces asignar p = p’ . 4. Recorrer la cara f hasta alcanzar la arista uv que contiene a p. 5. Si p ≠ t ir a 2.

3.3.7. Algoritmo de Ruteo por Caras 2 El Ruteo por Caras 2 es parecido al Ruteo por Caras 1. La diferencia reside en que no hay que recorrer toda la cara en que se encuentra el vértice actual v, se cambia de cara al encontrar la primera arista uw que corta al segmento st. Algoritmo:

1. Asignar como vértice inicial el origen s, p = s 2. Sea f la cara del grafo que tiene a p en su frontera e interseca el

segmento pt.

Page 61: UNIVERSIDAD POLITÉCNICA DE MADRID - … · Reconstrucción de un modelo tridimensional a partir de una nube de puntos 4 1.2.3. El problema generalizado de diseño de una red 5

Capítulo 3 Aspectos de diseño e implementación

- 53 -

3. Recorrer f hasta alcanzar una arista uv que corta al segmento pt en un punto p’ ≠ p.

4. Asignar p = p’. 5. Si p ≠ t ir a 2.

3.3.8. Algoritmo de Ruteo Voraz-Caras-Voraz Este algoritmo es un híbrido del Ruteo Voraz y el Ruteo por Caras 2. Avanza en modo Voraz hasta llegar a un punto p en que no puede seguir más, en ese momento comienza el Ruteo por Caras 2. Se recorre la cara hasta llegar a un punto p’ que cumple que d(p’,t) < d(p,t).En ese punto se vuelve al Ruteo Voraz. Algoritmo:

1. tomar como vértice actual el origen s, v = s 2. Determinar el conjunto de vértices adyacentes a v, N(v) 3. Calcular el vértice w de N(v) cuya distancia Euclídea a t es la menor de

todo el conjunto N(v), y estrictamente menor que la distancia d(v,t). 4. Si no existe w ir a paso 7 (modo ruteo por caras 2). 5. Si existe w y w = t , terminar. El algoritmo ha tenido éxito. 6. Si existe w y w ≠ t , añadir la arista vw al camino y hacer v = w. Ir al

paso 2. 7. Asignar p = v, g = v 8. Sea f la cara del grafo que tiene a v en su frontera e interseca el

segmento pt. 9. Determinar el siguiente punto w de la cara si se recorre según la regla

de la mano derecha. 10. Si w = t, asignar v=w, añadir la aristawt al camino y terminar. El

algoritmo ha tenido éxito. 11. Si w ≠ t, y d(w,t) < d (g,t) , añadir la arista vw al camino. Asignar v = w. Ir

a 2 (volver a modo voraz). 12. Si w ≠ t , d(w,t) ≥ d(g,t) y la arista vw no corta al segmento pt, añadir la

arista vw al camino. Asignar v=w . ir a 9. 13. Si w ≠ t , d(w,t) ≥ d(g,t) y la arista vw corta al segmento pt en un punto

p’ ≠ p, asignar p= p’. Ir a 8. 3.3.9. Algoritmo de Ruteo local en la Familia de Grafos Theta-Lambda Este algoritmo de ruteo local avanza desde el vértice actual v hasta el destructor de la arista vt. Algoritmo:

1. Tomar como vértice actual el origen s, v=s. 2. Determinar los vértices adyacentes a v, N(v). 3. Determinar el vértice w ∈ N(v) tal que w es un destructor del destino t. 4. Añadir la arista vw al camino. Asignar v= w. 5. Si v = t terminar, el algoritmo ha tenido éxito. 6. Si v ≠ t ir a 2.

3.4. Diagramas de Clase Las clases de la aplicación se han agrupado en el paquete grafos. A continuación vamos a describir las clases y su función dentro de la aplicación:

Page 62: UNIVERSIDAD POLITÉCNICA DE MADRID - … · Reconstrucción de un modelo tridimensional a partir de una nube de puntos 4 1.2.3. El problema generalizado de diseño de una red 5

Capítulo 3 Aspectos de diseño e implementación

- 54 -

Clase Geocomp: contiene la estructura de ventanas la aplicación (barra de menús, dos barras de herramientas, una superficie gráfica, una barra de estado y todos los botones que componen las barras de herramientas).

Figura 51. Clase Geocomp.

Page 63: UNIVERSIDAD POLITÉCNICA DE MADRID - … · Reconstrucción de un modelo tridimensional a partir de una nube de puntos 4 1.2.3. El problema generalizado de diseño de una red 5

Capítulo 3 Aspectos de diseño e implementación

- 55 -

Clase Canvas: contiene la superficie gráfica o lienzo donde se realizan las operaciones gráficas. Implementa métodos para el dibujo de grafos y algoritmos de ruteo en el modo dinámico, así como estructuras de datos y métodos para el dibujo paso a paso de los algoritmos.

Figura 52. Clase Canvas.

Page 64: UNIVERSIDAD POLITÉCNICA DE MADRID - … · Reconstrucción de un modelo tridimensional a partir de una nube de puntos 4 1.2.3. El problema generalizado de diseño de una red 5

Capítulo 3 Aspectos de diseño e implementación

- 56 -

Clase TDel: contiene la estructura de datos basada en un DCEL. Se implementan estructuras de datos que guardan los vértices, así como las aristas pertenecientes a cada grafo y a cada camino calculado por los algoritmos de ruteo. Las aristas de los grafos y de los caminos se almacenan en estructuras ArrayList por su versatilidad y facilidad de uso. De esta forma se puede acceder fácilmente a las aristas de un camino o grafo y por tanto a los puntos que las forman.

Figura 53. Clase TDel.

Page 65: UNIVERSIDAD POLITÉCNICA DE MADRID - … · Reconstrucción de un modelo tridimensional a partir de una nube de puntos 4 1.2.3. El problema generalizado de diseño de una red 5

Capítulo 3 Aspectos de diseño e implementación

- 57 -

Clase Punto: representa un punto del plano con coordenadas x e y. Cada punto almacena también localmente los puntos adyacentes a él y para cada grafo. De esta forma, dado un punto se puede saber en todo momento qué vértices son adyacentes a él para cada tipo de grafo. Esta clase contiene métodos para calcular el siguiente vértice a visitar desde ese punto para los distintos algoritmos de ruteo.

Figura 54. Clase Punto.

Page 66: UNIVERSIDAD POLITÉCNICA DE MADRID - … · Reconstrucción de un modelo tridimensional a partir de una nube de puntos 4 1.2.3. El problema generalizado de diseño de una red 5

Capítulo 3 Aspectos de diseño e implementación

- 58 -

Clase Arista: representa aristas , formadas en general por dos puntos, aunque existen clases derivadas de ésta que pueden variar este número. Dispone de métodos para calcular su longitud, primer punto, segundo punto, mediatriz,… También contiene los métodos para dibujar aristas de grafos y caminos.

Figura 55. Clase Arista.

De la clase Arista derivan varias clases de aristas especializadas, como se puede ver en la figura 57.

Figura 56. Herencia de la clase Arista.

Page 67: UNIVERSIDAD POLITÉCNICA DE MADRID - … · Reconstrucción de un modelo tridimensional a partir de una nube de puntos 4 1.2.3. El problema generalizado de diseño de una red 5

Capítulo 3 Aspectos de diseño e implementación

- 59 -

Clase Arista_Circulo: contiene métodos para dibujar puntos en la superficie gráfica.

Figura 57. clase Arista_Circulo.

Clase Circulo_Circulo: contiene métodos para dibujar circunferencias de un determinado grosor alrededor de algunos puntos para resaltarlos, como por ejemplo en los puntos de origen y destino en ruteo.

Figura 58. clase Circulo_Circulo

Clase Arista_Semiplano: representa rectas que dividen el plano en dos partes. Se utiliza para animaciones paso a paso de algunos grafos.

Figura 59. clase Arista_Semiplano.

Page 68: UNIVERSIDAD POLITÉCNICA DE MADRID - … · Reconstrucción de un modelo tridimensional a partir de una nube de puntos 4 1.2.3. El problema generalizado de diseño de una red 5

Capítulo 3 Aspectos de diseño e implementación

- 60 -

Clase Arista_Ángulo: representa ángulos, y se utiliza para dibujar ángulos en las animaciones paso a paso.

Figura 60. clase Arista_Angulo.

Clase Arista_Trazos: representa un segmento entre dos puntos que se dibuja con trazos discontinuos.

Figura 61. clase Arista_Trazos.

Clase Arista_Sectores: representa una división del plano en varios sectores equiespaciados un cierto ángulo, y centrados en un punto. Se utiliza en la animación paso a paso de los grafos de Yao y Theta.

Figura 62. clase Arista_Sectores.

Page 69: UNIVERSIDAD POLITÉCNICA DE MADRID - … · Reconstrucción de un modelo tridimensional a partir de una nube de puntos 4 1.2.3. El problema generalizado de diseño de una red 5

Capítulo 3 Aspectos de diseño e implementación

- 61 -

Clase Arista_Flecha: representa una arista con una flecha adosada que indica el sentido y el lado en que se recorre la arista. Se utiliza en la animación paso a paso de los algoritmos de ruteo que utilizan ruteo por Caras.

Figura 63. clase Arista_Flecha.

Clase Arco: representa ángulos medidos en grados. Se utiliza para medir ángulos cuando es necesario en algunos algoritmos de routing.

Figura 64. clase Arco.

Clase Línea: implementa una representación de recta. La utilizan los algoritmos de ruteo para verificar el corte entre aristas o segmentos.

Figura 65. clase Linea

Page 70: UNIVERSIDAD POLITÉCNICA DE MADRID - … · Reconstrucción de un modelo tridimensional a partir de una nube de puntos 4 1.2.3. El problema generalizado de diseño de una red 5

Capítulo 3 Aspectos de diseño e implementación

- 62 -

Clase StateBar: implementa una barra de estado que visualiza las coordenadas del ratón e información de las operaciones en curso.

Figura 66. clase StateBar.

Clase Lista_Animación: contiene las estructuras de datos y métodos necesarios para guardar información acerca de la ejecución paso a paso de los algoritmos.

Figura 67. clase Lista_Animación.

Clase WEdge: representa unas aristas especiales necesarias para el cálculo del Diagrama de Voronoi.

Figura 68. clase WEdge.

Page 71: UNIVERSIDAD POLITÉCNICA DE MADRID - … · Reconstrucción de un modelo tridimensional a partir de una nube de puntos 4 1.2.3. El problema generalizado de diseño de una red 5

Capítulo 3 Aspectos de diseño e implementación

- 63 -

Clase WTrig: contiene una representación de triángulos utilizada para el cálculo del diagrama de Voronoi.

Figura 69. clase WTrig.

Clase Lista_Puntos: implementa una lista de puntos. Se utiliza para agrupar puntos que se han dibujar en un solo paso durante una animación paso a paso.

Figura 70. Clase Lista_Puntos.

Clase Lista_Rectas: implementa una lista de rectas. Se utiliza para agrupar rectas que se han dibujar en un solo paso durante una animación paso a paso.

Figura 71. clase Lista_Rectas.

Page 72: UNIVERSIDAD POLITÉCNICA DE MADRID - … · Reconstrucción de un modelo tridimensional a partir de una nube de puntos 4 1.2.3. El problema generalizado de diseño de una red 5

Capítulo 3 Aspectos de diseño e implementación

- 64 -

Clase Config: implementa una ventana de configuración para cambiar algunos parámetros de los grafos y algoritmos de ruteo.

Figura 72. clase Config.

Page 73: UNIVERSIDAD POLITÉCNICA DE MADRID - … · Reconstrucción de un modelo tridimensional a partir de una nube de puntos 4 1.2.3. El problema generalizado de diseño de una red 5

Capítulo 3 Aspectos de diseño e implementación

- 65 -

Clase Color_Dialog: contiene la implementación de una ventana de diálogo utilizada para configurar el color de grafos y algoritmos de ruteo.

Figura 73. clase ColorDialog.

Clase ProRouting: es la clase inicial de la aplicación. Está basada en un applet , y es la encargada de arrancar el componente principal Geocomp.

Figura 74. clase ProRouting.

Una vez vistas las clases que componen el paquete grafos, vamos a ver algunos diagramas (Fig. 75 y 76) que muestra las distintas relaciones estáticas de asociación y generalización que ocurren entre las clases :

Page 74: UNIVERSIDAD POLITÉCNICA DE MADRID - … · Reconstrucción de un modelo tridimensional a partir de una nube de puntos 4 1.2.3. El problema generalizado de diseño de una red 5

Capítulo 3 Aspectos de diseño e implementación

- 66 -

Figura 75. Diagrama de clases. Relaciones de asociación y generalización.

Page 75: UNIVERSIDAD POLITÉCNICA DE MADRID - … · Reconstrucción de un modelo tridimensional a partir de una nube de puntos 4 1.2.3. El problema generalizado de diseño de una red 5

Capítulo 3 Aspectos de diseño e implementación

- 67 -

Figura 76. Relaciones de herencia entre las clases de la aplicación y Java.

Page 76: UNIVERSIDAD POLITÉCNICA DE MADRID - … · Reconstrucción de un modelo tridimensional a partir de una nube de puntos 4 1.2.3. El problema generalizado de diseño de una red 5

- 68 -

Capítulo 4

MANUAL DE USUARIO

ProRouting es una aplicación que permite el dibujo de Grafos de Proximidad y la utilización sobre ellos de algunos algoritmos de ruteo online. Está implementada con el lenguaje de programación Java, y puede utilizarse en cualquier sistema que tenga instalada la Máquina Virtual de Java ( JVM ). ProRouting esta basada en trabajos anteriores realizados por los compañeros de facultad David Ramos, Rubén Naranjo y Damián Serrano. La aplicación consta de los siguientes elementos:

• Una barra de menús. • Dos barras de herramientas horizontales, una para dibujo de grafos y

manejo de ficheros, y la otra contiene utilidades de ruteo y configuración. • Una zona de dibujo (superficie gráfica o lienzo). • Una barra de estado.

Figura 77. Aplicación ProRouting A continuación vamos a describir los distintos elementos que componen la herramienta. 4.1. Barra de menús La barra de menús consta de cinco menús desplegables: File, Edit, Execution, View y Help.

Page 77: UNIVERSIDAD POLITÉCNICA DE MADRID - … · Reconstrucción de un modelo tridimensional a partir de una nube de puntos 4 1.2.3. El problema generalizado de diseño de una red 5

Capítulo 4 Manual de usuario

- 69 -

4.1.1. Menú File El menú File contiene los comandos de manejo de ficheros:

New … Crea un nuevo espacio de trabajo y elimina el anterior.

Open… Abre un archivo de grafo, con extensión .grp.

Save… Guarda en fichero los vértices del grafo que esta en pantalla, así como las aristas del grafo manual.

Exit … Salir de la aplicación.

Figura 78. Menú File

4.1.2. Menú Edit El menú Edit contiene comandos para inserción de vértices.

Insert → Draw nodes… Inserción manual de puntos

Insert → Automatic… Inserción aleatoria de puntos Select… Selección de puntos

Remove… Eliminación de vértices

Figura 79. Menú Edit

Page 78: UNIVERSIDAD POLITÉCNICA DE MADRID - … · Reconstrucción de un modelo tridimensional a partir de una nube de puntos 4 1.2.3. El problema generalizado de diseño de una red 5

Capítulo 4 Manual de usuario

- 70 -

4.1.3. Menú Execution El menú Execution establece el modo de ejecución dinámico (por defecto) o el modo ejecución paso a paso. Dinamic… Modo de ejecución dinámico. Step → Start… Modo de ejecución paso a paso, de la construcción de un grafo, o de la ejecución de un algoritmo de ruteo. Step → Stop Detiene la ejecución paso a paso y vuelve al modo de ejecución dinámico.

Figura 80. Menú Execution.

4.1.4. Menú View El menú View establece que grafos se dibujan en pantalla. También cuenta con el comando Open Reference System, que carga una imagen de extensión .jpg, .gif o .png de fondo como referencia para la introducción manual de puntos y dibujo de aristas.

Page 79: UNIVERSIDAD POLITÉCNICA DE MADRID - … · Reconstrucción de un modelo tridimensional a partir de una nube de puntos 4 1.2.3. El problema generalizado de diseño de una red 5

Capítulo 4 Manual de usuario

- 71 -

Figura 81. Menú View

4.2. Barras de Herramientas de Grafos y manejo de ficheros Esta barra agrupa los botones que dibujan / ocultan los grafos de proximidad construidos a partir de los puntos que están actualmente en pantalla. También contiene botones para manejo de ficheros, control de animaciones y dibujo manual de grafos.

Figura 82. Barra de herramientas de grafos y ficheros

Crea un nuevo espacio de trabajo y elimina el anterior.

Abre un archivo de grafo, con extensión .grp.

Guarda en fichero los vértices del grafo que esta en pantalla, así como las aristas del grafo manual.

Establece el modo de inserción manual de puntos.

Page 80: UNIVERSIDAD POLITÉCNICA DE MADRID - … · Reconstrucción de un modelo tridimensional a partir de una nube de puntos 4 1.2.3. El problema generalizado de diseño de una red 5

Capítulo 4 Manual de usuario

- 72 -

Establece el modo de inserción manual de aristas. Sólo pueden introducirse aristas manualmente si hay un único grafo visible en pantalla. La arista introducida se añade a este grafo.

Abre una ventana de diálogo para introducir un número n entero positivo. Al pulsar el botón OK se dibujan en el grafo n puntos de coordenadas aleatorias.

Elimina el punto seleccionado y las aristas adyacentes.

Avanza un paso de la animación cuando está seleccionado del modo de ejecución paso a paso.

Detiene la animación actual y restaura el modo de ejecución dinámico.

Dibuja / Oculta el grafo manual, que sólo consta de los vértices aristas dibujadas manualmente.

Dibuja / Oculta el Grafo del Vecino Más Próximo.

Dibuja / Oculta el Árbol Generador Mínimo.

Dibuja / Oculta el Grafo de Vecindad Relativa.

Dibuja / Oculta el Grafo de Gabriel.

Dibuja / Oculta la Triangulación Incremental.

Dibuja / Oculta la Triangulación de Delaunay.

Dibuja / Oculta la Triangulación de Delaunay Restringida.

Dibuja / Oculta la Triangulación Voraz.

Dibuja / Oculta el Diagrama de Voronoi.

Dibuja / Oculta el Grafo de Yao.

Dibuja / Oculta el Grafo Theta.

Dibuja / Oculta el Grafo de Disco Unidad.

Page 81: UNIVERSIDAD POLITÉCNICA DE MADRID - … · Reconstrucción de un modelo tridimensional a partir de una nube de puntos 4 1.2.3. El problema generalizado de diseño de una red 5

Capítulo 4 Manual de usuario

- 73 -

Dibuja / Oculta el Grafo Half-Space Proximal.

Dibuja / Oculta la familia de grafos Theta-Lambda

Dibuja / Oculta la familia de Grafos Beta-Skeleton.

Dibuja / Oculta el par de puntos más próximo.

Dibuja / Oculta el cierre convexo.

Dibuja / Oculta los vecinos de Delaunay de un punto. 4.3. Barra de herramientas de ruteo y configuración.

Figura 83. Barra de herramientas de ruteo y configuración.

Dibuja / Oculta el camino correspondiente a Ruteo Voraz.

Dibuja / Oculta el camino correspondiente a Ruteo con Brújula.

Dibuja / Oculta el camino correspondiente a Ruteo con Brújula aleatorizado.

Dibuja / Oculta el camino correspondiente al Ruteo Voraz-Brújula.

Dibuja / Oculta el camino correspondiente al Ruteo de Voronoi. Sólo se encuentra seleccionable el botón si está visible la triangulación de

Delaunay.

Dibuja / Oculta el camino correspondiente al Ruteo por Caras 1.

Dibuja / Oculta el camino correspondiente al Ruteo por Caras 2.

Dibuja / Oculta el camino correspondiente al Ruteo Voraz-Caras-Voraz.

Page 82: UNIVERSIDAD POLITÉCNICA DE MADRID - … · Reconstrucción de un modelo tridimensional a partir de una nube de puntos 4 1.2.3. El problema generalizado de diseño de una red 5

Capítulo 4 Manual de usuario

- 74 -

Dibuja / Oculta el camino correspondiente al Ruteo local en el grafo Theta-Lambda. Este botón sólo es seleccionable si está visible el grafo Theta-Lambda.

Establece el modo selección de nodo origen de ruteo.

Establece el modo selección de nodo destino de ruteo.

Carga una imagen de extensión .jpg, .gif o .png de fondo como sistema de referencia para la introducción manual de puntos y dibujo de aristas.

Dibuja / Oculta el sistema de referencia.

Abre la ventana de configuración de los distintos grafos y algoritmos de ruteo.

Distance : distancia Euclídea entre el nodo origen y el nodo destino. Alg. Distance : longitud del camino encontrado por el algoritmo en uso. Coefficient : razón entre Alg.Distance y distance. 4.4. Superficie gráfica La superficie gráfica tiene como funciones principales la introducción de puntos y aristas por parte del usuario, y el dibujo de los grafos y caminos encontrados por los algoritmos de ruteo con las opciones actualmente seleccionadas. Los puntos se representan de color rojo, y las aristas del color que este configurado el grafo en cuestión. El camino encontrado por cada algoritmo de ruteo se dibuja del color que esté configurado y de un grosor superior al de las aristas. La mecánica de introducción de datos es la siguiente:

• Inserción de puntos: haciendo click con el botón izquierdo del ratón, sobre el icono de la barra de herramientas de grafos para insertar puntos, se selecciona el modo de inserción de puntos. El cursor adopta forma de cruz sobre la superficie gráfica, y sus coordenadas se muestran en la barra de estado. Haciendo click con el botón derecho o izquierdo sobre la superficie se inserta un punto sobre las coordenadas actuales.

• Selección de puntos: estando el botón de inserción de puntos no

seleccionado y haciendo click con el botón derecho o izquierdo del ratón sobre algún punto insertado anteriormente, podemos seleccionar el punto, que aparecerá con un borde azul.

Page 83: UNIVERSIDAD POLITÉCNICA DE MADRID - … · Reconstrucción de un modelo tridimensional a partir de una nube de puntos 4 1.2.3. El problema generalizado de diseño de una red 5

Capítulo 4 Manual de usuario

- 75 -

• Inserción de aristas: para insertar aristas de forma manual debe estar

visible sólo un grafo, y se añadirán en el las nuevas aristas. También debe estar seleccionado el modo de inserción de aristas, haciendo click

con el botón izquierdo del ratón sobre el icono . Para introducir una arista es necesario seleccionar los dos puntos que va a unir la arista.

• Borrado de puntos: Para eliminar un punto es necesario seleccionarlo

y después pulsar la tecla Supr o hacer click con el ratón sobre el icono

. Se eliminarán de forma automática las aristas incidentes sobre ese punto.

• Desplazamiento de puntos: es necesario seleccionar un punto y

arrastrarlo sin soltar el botón del ratón hasta que no se llegue al lugar deseado.

4.5. Barra de estado La parte derecha de la barra de estado muestra las coordenadas actuales del ratón sobre la superficie gráfica. La parte izquierda muestra información sobre las operaciones que se están realizando en cada momento, tipo de grafo construido, si el algoritmo de ruteo ha tenido éxito o no, solicita selección de puntos para crear una arista, información sobre el paso que se está realizando en el modo de ejecución paso a paso, etc.

Figura 84. Barra de estado.

4.6. Ventana de configuración

Se accede haciendo click con el ratón sobre el icono de la barra de herramientas de ruteo y configuración. La ventana de configuración contiene dos pestañas seleccionables. La primera permite configurar los grafos de proximidad , y la segunda los algoritmos de ruteo. Cada pestaña contiene un combo que permite seleccionar cada uno de los grafos (o de los algoritmos de ruteo) y acceder a los parámetros configurables. En el caso de los grafos podemos cambiar el color de las aristas, si se intersecciona con el grafo de Disco Unidad, y otros parámetros particulares de cada grafo. En el caso de los algoritmos de ruteo sólo es configurable el color de las aristas del camino.

Page 84: UNIVERSIDAD POLITÉCNICA DE MADRID - … · Reconstrucción de un modelo tridimensional a partir de una nube de puntos 4 1.2.3. El problema generalizado de diseño de una red 5

Capítulo 4 Manual de usuario

- 76 -

Figura 85. Ventana de configuración.

Page 85: UNIVERSIDAD POLITÉCNICA DE MADRID - … · Reconstrucción de un modelo tridimensional a partir de una nube de puntos 4 1.2.3. El problema generalizado de diseño de una red 5

- 77 -

Capítulo 5

ESTUDIO COMPARATIVO

En este capítulo realizaremos un estudio comparativo del rendimiento de las distintas estrategias de ruteo sobre algunos de los grafos de proximidad que se han implementado en la herramienta ProRouting. En cuanto al rendimiento del algoritmo de ruteo tendremos sólo en cuenta la longitud del camino encontrado y no nos fijaremos en otros aspectos como el tiempo empleado en calcularlo. La prueba de los algoritmos de ruteo la dividiremos en varias partes:

1. la primera parte prueba los algoritmos sobre grafos que sabemos de

antemano que son planos y conexos, ya que para los algoritmos de ruteo es necesaria esta condición (aunque no suficiente). Usaremos los siguientes grafos:

• Grafo de Vecindad Relativa • Grafo de Gabriel • Triangulación de Delaunay

Los algoritmos de ruteo para esta prueba son: Algoritmo de Ruteo Voraz, Algoritmo de Ruteo con Brújula, Algoritmo de Ruteo con Brújula aleatorizado, Algoritmo de Ruteo Voraz-Brújula, Algoritmo de Ruteo por Caras 1, Algoritmo de Ruteo por Caras 2, Algoritmo de Ruteo Voraz-Caras-Voraz.

2. la segunda parte prueba los algoritmos sobre una mayor cantidad de

grafos, pero interseccionándolos previamente con un grafo de disco unidad conexo y asegurándonos de obtener un grafo plano y conexo como resultado. Usaremos los siguientes grafos:

• Grafo de Vecindad Relativa • Grafo de Gabriel • Triangulación de Delaunay Restringida • Grafo de Yao • Grafo Theta • Grafo Half-Space Proximal

En esta prueba sólo utilizaremos los algoritmos de ruteo que tienen asegurado el éxito en la búsqueda del camino en grafos planos y conexos: Ruteo por Caras 1, Ruteo por Caras 2, y Ruteo Voraz-Caras-Voraz.

3. la tercera parte prueba el algoritmo de Ruteo local en la familia de Grafos Theta-Lambda. Usaremos varios valores de Theta y Lambda.

Los datos que se recogerán en las pruebas serán los siguientes: • Distancia (D): es la distancia Euclidea entre los dos vértices s, t entre

los que se pretende encontrar un camino. La distancia Euclídea entre dos puntos la podemos definir como:

Page 86: UNIVERSIDAD POLITÉCNICA DE MADRID - … · Reconstrucción de un modelo tridimensional a partir de una nube de puntos 4 1.2.3. El problema generalizado de diseño de una red 5

Capítulo 5 Estudio comparativo

- 78 -

______________________

d(s,t)=√ (tx -sx)2 + (ty - sy)

2

• Distancia del Algoritmo (DA): es la longitud del camino encontrado por el algoritmo, y se obtiene sumando las longitudes de todas las aristas del camino.

• Ratio(R) : es el cociente siguiente, que expresa cuantas veces es mayor la longitud del camino encontrado entre s y t por el algoritmo, que la distancia Euclídea entre s y t :

DA R = D

Para probar los algoritmos sobre estos grafos generamos un número de vértices que irá variando de forma incremental. En total generaremos 6 grafos, de 20,40,60,80,100 y 120 vértices. Estos vértices se generan de forma aleatoria. Si un algoritmo de ruteo no encuentra el camino, el valor del Ratio se pone con valor 0. Los datos generados por la herramienta ProRouting son pasados a una hoja de cálculo, mediante la cual se pueden calcular valores estadísticos y gráficas. 5.1. Prueba 1 La primera prueba utiliza grafos que sabemos de antemano que son planos y conexos, ya que para los algoritmos de ruteo es necesaria esta condición, aunque a veces no suficiente. En esta prueba usaremos todos los algoritmos de ruteo disponibles (a excepción del Ruteo de Voronoi y del Ruteo Local Theta Lambda) 5.1.1. Grafo de Vecindad Relativa

Grafo de Vecindad Relativa

0123456789

20 40 60 80 100 120

Nº Vértices

Rat

io

Voraz

Brujula

Brujula Aleat.

Voraz-Brujula

Caras 1

Caras 2

Voraz-Caras-Voraz

Figura 86. Ratios para el Grafo de Vecindad Relativa

Page 87: UNIVERSIDAD POLITÉCNICA DE MADRID - … · Reconstrucción de un modelo tridimensional a partir de una nube de puntos 4 1.2.3. El problema generalizado de diseño de una red 5

Capítulo 5 Estudio comparativo

- 79 -

La figura 86 muestra el resultado de aplicar los algoritmos de ruteo a 6 Grafos de Vecindad Relativa con número incremental de vértices. Como se ve en el gráfico, los mejores resultados se obtienen con los algoritmos de Ruteo Voraz, Brújula, Voraz-Brújula y Voraz-Caras-Voraz, y los peores con Brújula Aleatorizada, Caras 1 y Caras 2. De entre los algoritmos que obtienen un buen resultado destacamos el Ruteo Voraz-Caras-Voraz, ya que el resto no asegura el éxito en encontrar el destino, como se puede apreciar en la gráfica. 5.1.2. Grafo de Gabriel

Grafo de Gabriel

0

24

6

8

1012

14

16

20 40 60 80 100 120

Nº Vértices

Rat

io

Voraz

Brujula

Brujula Aleat.

Voraz-Brujula

Caras 1

Caras 2

Voraz-Caras-Voraz

Figura 87. Ratios para el Grafo de Gabriel

En el Grafo de Gabriel se obtienen en general mejores resultados que en el grafo anterior, de Vecindad Relativa, aunque también es cierto que el número de aristas aumenta. El único algoritmo en el que no se obtienen unos resultados aceptables es para el Ruteo por Caras 1. Para el resto de algoritmos se obtiene en general un buen Ratio, aunque sólo Ruteo por Caras 2 y Voraz-Caras-Voraz aseguran el éxito.

5.1.3. Triangulación de Delaunay

Grafo de Delaunay

0

2

4

6

8

10

12

20 40 60 80 100 120

Nº Vértices

Rat

io

Voraz

Brujula

Brujula Aleat.

Voraz-Brujula

Caras 1

Caras 2

Voraz-Caras-Voraz

Figura 88. Ratios para la Triangulación de Delaunay

Page 88: UNIVERSIDAD POLITÉCNICA DE MADRID - … · Reconstrucción de un modelo tridimensional a partir de una nube de puntos 4 1.2.3. El problema generalizado de diseño de una red 5

Capítulo 5 Estudio comparativo

- 80 -

Para la Triangulación de Delaunay se obtienen buenos resultados para todos los algoritmos a excepción del Ruteo por Caras 1, debido a que tiene que dar siempre la vuelta a los triángulos que atraviesa. Para el resto de algoritmos se obtiene un buen Ratio, en torno a 1.5, y además los algoritmos siempre encuentran el destino en esta triangulación. Si nos olvidamos del Ruteo por Caras 1 y observamos el resto de algoritmos en más detalle (Figura 89), vemos que a excepción del Ruteo con Brújula Aleatorizado, el resto tienen un ratio inferior a 1.2 y de media en torno a 1.1, lo cual es un excelente resultado. Como desventaja podemos decir que el número de aristas de este grafo es elevado, ya que se trata de una triangulación.

Grafo de Delaunay

0

0,2

0,4

0,6

0,8

1

1,2

1,4

1,6

1,8

20 40 60 80 100 120

Nº Vértices

Rat

io

Voraz

Brujula

Brujula Aleat.

Voraz-Brujula

Caras 2

Voraz-Caras-Voraz

Figura 89. Ratios para la triangulación de Delaunay (2)

5.1.4. Conclusiones sobre la prueba 1 Los mejores resultados para estos grafos los alcanzan los algoritmos de Ruteo Voraz, Brújula,Voraz-Brújula y Voraz-Caras-Voraz, con unos ratios ligeramente superiores a 1. Los peores resultados se obtienen con Brújula Aleatorizado, Caras 1 y Caras 2. Sin embargo estos resultados sólo pueden generalizarse en el caso de la Triangulación de Delaunay, ya que como sabemos, es el único de estos tres grafos en el que se garantiza que todos los algoritmos utilizados van a alcanzar el destino.

5.2. Prueba 2 En esta prueba se utiliza un mayor número de grafos, pero interseccionándolos previamente con un grafo de disco unidad conexo y asegurándonos de obtener un grafo plano y conexo en el resultado. El objetivo de esta prueba es comprobar el rendimiento de los algoritmos de ruteo en grafos de proximidad con buenas propiedades de cara al ruteo, pero tratando de reducir el número de aristas. Utilizamos para esta prueba solamente los algoritmos de ruteo que

Page 89: UNIVERSIDAD POLITÉCNICA DE MADRID - … · Reconstrucción de un modelo tridimensional a partir de una nube de puntos 4 1.2.3. El problema generalizado de diseño de una red 5

Capítulo 5 Estudio comparativo

- 81 -

tienen asegurado encontrar el destino en un grafo plano y conexo: Ruteo por Caras 1, Ruteo por Caras 2 y Ruteo Voraz-Caras-Voraz. 5.2.1. Grafo de Vecindad Relativa ∩ Grafo de Disco Unidad

RNG ∩ UDG

0123456789

20 40 60 80 100 120

Nº Vértices

Rat

io

Caras 1

Caras 2

Voraz-Caras-Voraz

Figura 90. Ratios para el Grafo de Vecindad Relativa

En la figura 89. se muestra la gráfica de Ratios para este grafo. Como se puede ver el mejor resultado lo obtiene. El algoritmo Voraz-Caras-Voraz es el que obtiene mejores resultados. El Ruteo por Caras 2 obtiene unos resultados medios que mejoran al incrementar el número de vértices del grafo. 5.2.2. Grafo de Gabriel ∩ Grafo de Disco Unidad

GG ∩ ∩ ∩ ∩ UDG

0

2

4

6

8

10

20 40 60 80 100 120

N' Vertices

Rat

io

Caras 1

Caras 2

Voraz-Caras-Voraz

Figura 91. Ratios para el Grafo de Gabriel

Para el Grafo de Gabriel se obtienen unos resultados muy parecidos a los del Grafo de Vecindad Relativa. Al igual que pasaba en este grafo, el algoritmo Voraz-Caras-Voraz es el que obtiene mejores resultados. El Ruteo por Caras 2

Page 90: UNIVERSIDAD POLITÉCNICA DE MADRID - … · Reconstrucción de un modelo tridimensional a partir de una nube de puntos 4 1.2.3. El problema generalizado de diseño de una red 5

Capítulo 5 Estudio comparativo

- 82 -

obtiene unos resultados medios que mejoran al incrementar el número de vértices del grafo.El Ruteo por Caras 1 es el que obtiene peores resultados.

5.2.3. Grafo de Delaunay Restringido (DT ∩ UDG)

RDG

0

2

4

6

8

10

12

14

20 40 60 80 100 120

N' Vertices

Rat

io

Caras 1

Caras 2

Voraz-Caras-Voraz

Figura 92. Ratios para la Triangulación de Delaunay Restringida

En este grafo los algoritmos Voraz-Caras-Voraz son los que obtienen mejores resultados, y mejoran ligeramente los obtenidos para los dos grafos anteriores en esta prueba. Sin embargo para el Ruteo por Caras 1 los resultados empeoran aún más, debido al aumento de aristas y por tanto de caras que debe rodear obligatoriamente. 5.2.4. Grafo de Yao ∩ Grafo de Disco Unidad

YG ∩ ∩ ∩ ∩ UDG

0

2

4

6

8

10

20 40 60 80 100 120

N' Vertices

Rat

io

Caras 1

Caras 2

Voraz-Caras-Voraz

Figura 93. Ratios para el Grafo de Yao

Page 91: UNIVERSIDAD POLITÉCNICA DE MADRID - … · Reconstrucción de un modelo tridimensional a partir de una nube de puntos 4 1.2.3. El problema generalizado de diseño de una red 5

Capítulo 5 Estudio comparativo

- 83 -

En la figura 92 se muestran los Ratios para el grafo de Yao. No distan mucho de lo obtenido para grafos anteriores. 5.2.5. Grafo Theta ∩ Grafo de Disco Unidad

Theta Graph ∩ ∩ ∩ ∩ Unit Disc Graph

02468

1012141618

20 40 60 80 100 120

N' Vertices

Rat

io

Caras 1

Caras 2

Voraz-Caras-Voraz

Figura 94. Ratios para el Grafo Theta

Para este grafo los resultados que se obtienen para el Ratio son en general algo más elevado que en los grafos anteriores. El mejor resultado lo sigue obteniendo el algoritmo Voraz-Caras-Voraz, seguido del ruteo Por Caras 2. El peor resultado sigue siendo para el ruteo por Caras 1, que lógicamente tiene peor Ratio a medida que aumenta el número de vértices. 5.2.6. Grafo Half-Space Proximal ∩ Grafo de Disco Unidad

HSPG ∩ ∩ ∩ ∩ UDG

0

2

4

6

8

10

20 40 60 80 100 120

N' Vertices

Rat

io

Caras 1

Caras 2

Voraz-Caras-Voraz

Figura 95. Ratios para el Grafo HSPG

Page 92: UNIVERSIDAD POLITÉCNICA DE MADRID - … · Reconstrucción de un modelo tridimensional a partir de una nube de puntos 4 1.2.3. El problema generalizado de diseño de una red 5

Capítulo 5 Estudio comparativo

- 84 -

La figura 94 muestra los Ratios encontrados para el Grafo Half-Space Proximal. En esta ocasión los ratios obtenidos para Voraz-Caras-Voraz y ruteo por Caras 2 son muy parecidos y con tendencia a permanecer así conforme aumenta el número de vértices. De nuevo el Ruteo por Caras 1 obtiene el peor resultado. 5.2.7. Conclusiones sobre la prueba 2 Los mejores Ratios que se obtienen para todos los grafos son siempre para el algoritmo de Ruteo Voraz-Caras-Voraz, y suelen estar en torno a un valor R ≈ 1.5 cuando el número de vértices es relativamente alto. Este resultado es lógico ya que utiliza una técnica que combina la estrategia voraz, que como vimos en la prueba 1 es la que se acerca más rápidamente al destino, y la estrategia de Ruteo por Caras 2, que asegura el éxito para encontrar el camino y mantiene unos valores de Ratio aceptables. La estrategia de Ruteo por Caras 1 , aunque asegura que se va a alcanzar el destino, tiene unos valores de Ratio demasiado elevados debido a que debe rodear cada cara que atraviesa una vez completa más una fracción (excepto en el caso trivial de que el destino esté en la cara inicial) .

5.3. Prueba 3 En esta prueba se usa el algoritmo de Ruteo local en la familia de Grafos Theta-Lambda. Para ello utilizaremos varios valores de Theta y Lambda.

20 40 60 80.5

.90

0,2

0,4

0,6

0,8

1

1,2

1,4

Ratio

Theta

Lambda

Grafo Theta-Lambda con 20 vértices

1,2-1,4

1-1,2

0,8-1

0,6-0,8

0,4-0,6

0,2-0,4

0-0,2

Figura 96. Ratios del Grafo Theta –lambda de 20 vértices

Page 93: UNIVERSIDAD POLITÉCNICA DE MADRID - … · Reconstrucción de un modelo tridimensional a partir de una nube de puntos 4 1.2.3. El problema generalizado de diseño de una red 5

Capítulo 5 Estudio comparativo

- 85 -

20 40 60 80.5

.90

0,5

1

1,5

Ratio

Theta

Lambda

Grafo Theta-Lambda de 40 vértices

1-1,5

0,5-1

0-0,5

Figura 97. Ratios del Grafo Theta-lambda de 40 vértices

20 40 60 80.5

.91

1,05

1,1

1,15

1,2

Ratio

Theta

Lambda

Grafo Theta-Lambda de 60 vértices

1,15-1,2

1,1-1,15

1,05-1,1

1-1,05

Figura 98. Ratios del Grafo Theta-Lambda de 60 vértices

Como se aprecia en las figuras, el Ratio es muy homogéneo y con valores bajos, inferiores a 1.5 . El valor de Theta influye en gran manera en el Ratio: a mayor ángulo el Ratio también aumenta, debido a que el número de aristas del grafo disminuye. La gran desventaja de este algoritmo de Ruteo es que sólo puede aplicarse a este grafo, ya que se trata de una estrategia local.

Page 94: UNIVERSIDAD POLITÉCNICA DE MADRID - … · Reconstrucción de un modelo tridimensional a partir de una nube de puntos 4 1.2.3. El problema generalizado de diseño de una red 5

- 86 -

Capítulo 6

CONCLUSIONES

En el presente proyecto se ha tratado de mostrar la relación que subyace entre los grafos de proximidad y los algoritmos de ruteo online: es necesario encontrar grafos de proximidad que tengan buenas propiedades geométricas que aseguren la existencia de caminos de longitud máxima acotada, entre dos nodos cualesquiera del grafo. Esta longitud máxima suele expresarse como un factor t entre la longitud de una ruta que se encuentra y la distancia euclídea entre los nodos origen y destino. De aquí nace el concepto de t-spanner. De la misma forma, deben encontrarse también algoritmos de ruteo online que sean capaces de aprovechar al máximo estas propiedades de los grafos y encontrar caminos lo más cortos posibles, y que además garanticen el éxito en encontrar el nodo destino. La herramienta ProRouting pretende ser un apoyo en la simulación de algoritmos de ruteo sobre grafos de proximidad. Posee un número considerable de grafos de proximidad y algoritmos de ruteo, y resulta relativamente fácil añadir nuevos grafos y algoritmos mediante el lenguaje de programación Java.

Page 95: UNIVERSIDAD POLITÉCNICA DE MADRID - … · Reconstrucción de un modelo tridimensional a partir de una nube de puntos 4 1.2.3. El problema generalizado de diseño de una red 5

- 87 -

BIBLIOGRAFIA Y ENLACES

[1] C. Avin, Fast and Efficient Restricted Delaunay Triangulation in Ramdom

Geometric Graphs. In Workshop on Combinatorial and Algorithmic Aspects

of Networking, 2005. CAAN-05.

[2] P. Bose, P. Carmi, M. Couture, M. Smid, D. Xu, On a family of strong

geometric spanners that admit local routing strategies. To appear on10th

Workshop on Algorithms and Data Structures.2007.WADS 2007.

[3] P. Bose, P. Morin, I. Stojmenovic, J. Urrutia, Routing with Guaranteed

Delivery in ad hoc Wireless Networks. Wireless Networking, 7(6) pp:609–616,

2001.

[4] E. Chávez, S. Dobrev, E. Kranakis, J. Opatrny, L. Stacho, H. Tejeda, J.

Urrutia, Half-Space proximal, A New Local Test for Extracting a Bounded

Dilation Spanner of a Unit Disk Graph. In OPIDIS, 9th International

Conference on Principles of Distributed Systems, Pisa, Italy, December 2005

[5] S-W. Cheng, Y-F. Xu, On β-Skeleton as a Subgraph of the Minimum Weight

Triangulation. Theoretical Computer Science, v.262 n.1-2, p.459-471, July

2001

[6] M. De Berg, M. van Kreveld, M. Overmars, O Schwarzkopf,

Computational Geometry, Algorithms and Applications. Ed. Springer, 1997.

[7] D.P.Dobkin, S.J. Friedman, K.J. Supowit, Delaunay Graphs are almost as

good as complete graphs. Discrete Comput. Geom., 5 , pp. 399–407. 1990

[8] H.Edelsbrunner, An aciclity theorem for cell complexes in d dimension.

Combinatorica,10, pp. 251–260. 1998.

[9] D.Eppstein, Beta-Skeletons have unbounded dilation. Tech. Rep. 96-15,

Dept. Inf. & Comp. Sci., UC Irvine, 1996.

[10] J. Gao, L.J. Guibas, J. Hershberger, L. Zhang, A. Zhu, Geometric

Spanners for Routing in Mobile Networks.IEEE Journal on selected areas in

communications, Vol. 23, No. 1, January 2005.

[11] F. Hurtado, Poligonizaciones simples. Actas del III Encuentro de Geometría

Computacional, pp. 67-76, Zaragoza, 1992.

[12] F. Hurtado, G. Liotta, H. Meijer, Optimal and Suboptimal Robust

Algorithms for Proximity Graphs. Comput. Geom. 25(1-2):35-49 (2003) Departament de M atem_atica Aplic ada II_ U ni versitat Polit_ec nica de Catal unya_ Barc elona_ Sp

Page 96: UNIVERSIDAD POLITÉCNICA DE MADRID - … · Reconstrucción de un modelo tridimensional a partir de una nube de puntos 4 1.2.3. El problema generalizado de diseño de una red 5

- 88 -

[13] J.W. Jaromczyk, G.T. Toussaint, Relative Neighborhood Graphs and Their

Relatives. Proceedings of the IEEE,80:1502–1517, 1992.

.

[14] J.M.Keil, C.A. Gutwin, The Delaunay triangulation closely approximates the

Complete Euclidean Graph. Proc. 1st Worksh. Algorithms and Data

Structures. Springer LNCS 382, pp. 47–56, 1989.

[15] Y.J. Kim, R. Govindan, B. Karp, S. Shenker, On the Pitfalls of Geographic

Face Routing. The third International workshop on foundations of mobile

computing (DIAL-M-POMC'05), 2005.

[16] E. Kranakis, H. Singh, J. Urrutia, Compass Routing on Geometric

Networks. in Proc. 11th Canadian Conference on Computational Geometry,

1999.

[17] Xiang-Yang Li, Yu Wang, Wireless Sensor Networks and Computational

Geometry. Book Chapter of "Handbook of Sensor Networks", edited by

Mohammad Ilyas et al. CRC Press. 2003.

[18] A.R. Mosteo, J.L. Villaroel, Redes inalámbricas y robótica móvil:

técnicas geométricas. I3A Instituto de Investigación en Ingeniería de Aragón,

2005.

[19] Patrick R. Morin, Online Routing in Geometric Graphs .

Ph.D. thesis, Carleton University School of Computer Science, 2001.

[20] R.Naranjo, D. Serrano, Triangulación de Delaunay y subgrafos Notables.

Geometría computacional. Facultad de Informática. UPM.. 2003.

[21] G. Narasimham, M. Smid, Geometric Spanner Networks.

Cambridge University Press.2007.

[22] D. Ramos, Ruteo en Grafos Geométricos.

Proyecto Fin de Carrera. Facultad de Informática.UPM.2004

[23] C. Scheideler, Overlay Networks for Wireless Systems,

In Proc. of the IMA Workshop on Wireless Communication, 2005.

[24] J. Urrutia, Routing with guaranteed delivery in geometric and wireless

networks. In I. Stojmenovic, editor, Handbook of Wireless Networks and

Mobile Computing, chapter 18, pages 393{406. John Wiley & Sons, 2002

[25] A.C.Yao, On constructing minimum spanning trees in k-dimensional spaces

and related problems. SIAM J. Comput., 11, pp. 721–736. 1982.

Page 97: UNIVERSIDAD POLITÉCNICA DE MADRID - … · Reconstrucción de un modelo tridimensional a partir de una nube de puntos 4 1.2.3. El problema generalizado de diseño de una red 5

- 89 -

Enlaces de Internet: http://www.cs.umd.edu/class/fall2001/cmsc420/tg.ps.gz Documento Postcript sobre triangulaciones.

http://wwwcs.unipaderborn.de/cs/agmadh/WWW/Teaching/2005WS/AlgRa

dio/Exercises/solutions2.pdf Demostraciones sobre spanners.

http://www.dcg.ethz.ch/publications/ewsn06.pdf Tutorial sobre redes inalámbricas de R.Wattenhofer.

http://cgm.cs.mcgill.ca/~godfried/student_projects/zxm_b_skeleton Información y applet sobre Beta-Skeletons

http://www.dirdim.com/lm_modelexamples.htm Modelos de ejemplo de nubes de puntos 3D obtenidos mediante scanner.

http://www.fpsols.com/point_cloud.html Software de demostración para reconstrucción de nubes de puntos mediante

triangulaciones.