UNIVERSIDAD POLITÉCNICA DE MADRID FACULTAD DE INFÓRMATICA

Tamaño: px
Comenzar la demostración a partir de la página:

Download "UNIVERSIDAD POLITÉCNICA DE MADRID FACULTAD DE INFÓRMATICA"

Transcripción

1 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

2

3 ÍNDICE 1. Introducción y Objetivos Definiciones Motivación Poligonizaciones Reconstrucción de un modelo tridimensional a partir de una nube de puntos El problema generalizado de diseño de una red Salida de un laberinto Mallas propensas a fallos Robots móviles cooperativos y redes inalámbricas 8 2. Grafos de Proximidad, Spanners y estrategias de Ruteo Grafos de Proximidad y Spanners t-spanner Dilación(Stretch factor o dilation) t-spanner débil ( Weak t-spanner) (t, δ)- power spanner t-spanners, t-spanners débiles y (t, δ)-power spanners Grafos de Proximidad Grafo de vecindad dirigida (NPG) Árbol Generador Mínimo (MST) Grafo de Vecindad Relativa (RNG) Grafo de Gabriel (GG) Triangulación incremental (IT) Diagrama de Voronoi (VG) Triangulación de Delaunay (DT) Grafo de disco unidad (UDG) Grafo de Delaunay Restringido (RDG) Triangulación Voraz (GT) Grafo de Yao (YG) Grafo θ (θg) Grafo Half-Space proximal (HSPG) Familia de grafos Gθλ (θλg) Familia de Grafos β-skeleton (βsg) Estrategias de Ruteo Clasificación de los algoritmos de ruteo Ruteo Voraz ( Greedy Routing ) Ruteo de Brújula (Compass Routing) Ruteo de Brújula Aleatorizado (Random Compass) Ruteo Voraz-Brújula ( Greedy-Compass Routing) 33 i

4 Ruteo de Voronoi ( Voronoi routing ) Ruteo por Caras 1 ( Face-1 Routing ) Ruteo por Caras 2 (Face-2 Routing) Ruteo Voraz-Caras-Voraz (Greedy-Face-Greedy) Ruteo local en la familia de Grafos Gθλ Aspectos de Diseño e implementación Requisitos mínimos del sistema Integración de los algoritmos de grafos Grafo de Vecindad Dirigida Árbol Generador Mínimo Grafo de Vecindad Relativa Grafo de Gabriel Triangulación Incremental Triangulación de Delaunay Triangulación de Delaunay Restringida Triangulación Voraz Diagrama de Voronoi Grafo de Yao Grafo Theta Grafo de Disco Unidad Grafo Half-Space Proximal Familia de Grafos Theta-Lambda Familia de Grafos Beta-Skeleton Integración de los algoritmos de Ruteo 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 de Voronoi Algoritmo de Ruteo por Caras Algoritmo de Ruteo por Caras Algoritmo de Ruteo Voraz-Caras-Voraz Algoritmo de Ruteo local en Grafos Theta-Lambda Diagramas de Clase Manual de usuario Barra de menús Menú File Menú Edit Menú Execution Menú View Barras de Herramientas de Grafos y manejo de ficheros Barra de herramientas de ruteo y configuración Superficie gráfica Barra de estado Ventana de configuración Estudio comparativo 77 ii

5 5.1. Prueba Grafo de Vecindad Relativa Grafo de Gabriel Triangulación de Delaunay Conclusiones sobre la prueba Prueba Grafo de Vecindad Relativa UDG Grafo de Gabriel UDG Grafo de Delaunay Restringido Grafo de Yao UDG Grafo Theta UDG Grafo Theta-Lambda UDG Conclusiones sobre la prueba Prueba Conclusiones 86 iii

6 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 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 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 iv

7 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 v

8 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. vi

9 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

10 Capítulo 1 Introducción y objetivos 1.1 Definiciones DEF 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 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 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 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 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 G U,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 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=v 0, v 1,..., v n =t] tal que los pares (v i, v i+1 ) A, con i < n. DEF 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

11 Capítulo 1 Introducción y objetivos DEF 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 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

12 Capítulo 1 Introducción y objetivos Figura 1. Poligonizaciones monótona y estrellada 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 R 3 ) ; habitualmente se usan las triangulaciones, en especial la triangulación de Delaunay Restringida

13 Capítulo 1 Introducción y objetivos Figura 3. Reconstrucción del modelo mediante una triangulación de Delaunay 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 K n, pero tiene la desventaja de que el número de aristas es O (n 2 ). 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 - 5 -

14 Capítulo 1 Introducción y objetivos 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 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

15 Capítulo 1 Introducción y objetivos Figura 5. Solución del laberinto siguiendo la regla de la mano derecha 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 v 1 v 2 esta presente en A si y sólo si la distancia d(v 1, v 2 ) =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

16 Capítulo 1 Introducción y objetivos Figura 6.(a) Malla 10x10 sin fallos. (b) Malla 10x10 con fallos en vértices y aristas 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

17 Capítulo 1 Introducción y objetivos 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

18 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 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= v 0, v 1,..., v n =w ], p t d (u, w) 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 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) (t, δ)- power spanner. Un (t, δ)- power spanner es un grafo G=( V, A ) que cumple : u, w V p= [ u= v 0, v 1,..., v n =w ], con v i v i+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 δ

19 Capítulo 2 Grafos de proximidad, spanners y estrategias de ruteo 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 P opt = (v 1,.,v n ) el camino óptimo de energía. Para el coste de energía de P opt usaremos la notación n-1 Energía( P opt ) = d(v i,v i+1 ) δ, siendo d(x,y) la distancia Euclídea entre x,y. i=1 Figura 7. Demostración de Teorema 2. P opt no necesariamente contiene las aristas de G. Reemplazamos cada arista (v i, v i+1 ) de P opt por un camino P i contenido en G. Por la propiedad de spanner de G tenemos P i t d(v i, v i+1 ), y entonces Energía(P i ) ( t d (v i, v i+1 )) δ. El camino resultante P = (P 1,, P m ) tiene el siguiente coste de energía: n-1 n-1 n-1 Energía (P ) = Energía (P i ) (t d(v i, v i+1 )) δ i=1 i=1 i=1 = t δ d(v i, v i+1 ) δ

20 Capítulo 2 Grafos de proximidad, spanners y estrategias de ruteo 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 Grafos de proximidad Cada uno de los grafos de proximidad estudiados en este trabajo tiene como conjunto de vértices a puntos de R 2, 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 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 R 2 : 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 Á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

21 Capítulo 2 Grafos de proximidad, spanners y estrategias de ruteo 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 R 2 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 R 2 ) 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

22 Capítulo 2 Grafos de proximidad, spanners y estrategias de ruteo Figura 10. Demostración de la Propiedad 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 R 2 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 R 2 ) 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

23 Capítulo 2 Grafos de proximidad, spanners y estrategias de ruteo 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 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 R 2 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

24 Capítulo 2 Grafos de proximidad, spanners y estrategias de ruteo 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 y ser éste un subgrafo del GG, entonces el GG es también conexo. Propiedad 3. Dado un conjunto de puntos P R 2, y sea n el número de puntos de P, la dilación del Grafo de Gabriel puede ser mayor que n 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.17 d. 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

25 Capítulo 2 Grafos de proximidad, spanners y estrategias de ruteo 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 S x, y, siendo S x, 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 S x, 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 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 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

26 Capítulo 2 Grafos de proximidad, spanners y estrategias de ruteo 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 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

27 Capítulo 2 Grafos de proximidad, spanners y estrategias de ruteo 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

28 Capítulo 2 Grafos de proximidad, spanners y estrategias de ruteo 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 R 2 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

29 Capítulo 2 Grafos de proximidad, spanners y estrategias de ruteo 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 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

30 Capítulo 2 Grafos de proximidad, spanners y estrategias de ruteo 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 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

31 Capítulo 2 Grafos de proximidad, spanners y estrategias de ruteo 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 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 Grafo de Yao (Yao Graph, YG ) El Grafo de Yao YG k (V), con k 4 entero, es el grafo que resulta de unir cada nodo v de la nube de puntos de R 2 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

32 Capítulo 2 Grafos de proximidad, spanners y estrategias de ruteo Propiedad 1. El Grafo de Yao de un conjunto de puntos V R 2 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 Grafo θ ( θ-graph, θg) El Grafo θg K (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 θ

33 Capítulo 2 Grafos de proximidad, spanners y estrategias de ruteo Grafo Half-Space proximal ( Half-Space Proximal Graph, HSPG) Dado un subconjunto de puntos del plano V R 2 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

34 Capítulo 2 Grafos de proximidad, spanners y estrategias de ruteo 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 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

35 Capítulo 2 Grafos de proximidad, spanners y estrategias de ruteo 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 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

36 Capítulo 2 Grafos de proximidad, spanners y estrategias de ruteo β (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 , 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 β > 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 / , tiene una dilación O(n c ), 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

37 Capítulo 2 Grafos de proximidad, spanners y estrategias de ruteo 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 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: δ: [ R 2, (R 2 )*, R 2 ] R 2 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: δ: [ R 2, (R 2 )*, R 2, {0,1} k ] R 2 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

38 Capítulo 2 Grafos de proximidad, spanners y estrategias de ruteo 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: δ: [ R 2, (R 2 )*, R 2, k ] R 2 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 R 2. Adicionalmente A define una función γ de la forma: γ : [ R 2, (R 2 )*, R 2, 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 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

39 Capítulo 2 Grafos de proximidad, spanners y estrategias de ruteo 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

40 Capítulo 2 Grafos de proximidad, spanners y estrategias de ruteo 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 t 1 y t 2 dos triángulos de T. Decimos que t 1 oscurece a t 2 si existe un rayo con origen en t que corta a t 1 primero y después a t 2. 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 (v i, v i+1 ), entonces w no puede estar en el cono definido por t, v i y v i+1, con altura en v i, ya que en otro caso no

41 Capítulo 2 Grafos de proximidad, spanners y estrategias de ruteo tendríamos que cmp (v i )= v i+1. Pero entonces el segmento de línea que une w y v i+1 oscurece v i y por tanto (v i, v i+1 ) oscurece (v i-1, v i ). 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 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 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

42 Capítulo 2 Grafos de proximidad, spanners y estrategias de ruteo 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= v 0,, v k-1 de T tal que el ruteo Voraz-Brújula se mueve de v i a v i+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 v i del interior de D tal que v i+1 está en la frontera de D (figura 35). Asumamos que v i+1 =ccw(v i ), entonces tiene que ocurrir que cw(v i ) no está en el interior de D, o en otro caso no nos habríamos movido a v i+1. Pero entonces la arista (cw(v i ),ccw(v i )) divide a D en dos regiones, R 1 que contiene a v i y R 2 que contiene a t. Como C pasa por R 1 y R 2 y esta contenido en D, tiene que ocurrir que C entre a la región R 1 por cw(v i ) y salga de R 1 por v i+1 =ccw(v i ). Sin embargo esto no sucede porque tanto cw(cw(v i )) como ccw(cw(v i )) están contenidos en el semiplano bordeado por la línea (cw(v i ), ccw(v i )) y que contiene a t, y por tanto no están contenidos en R 1. Figura 35. Demostración de la Propiedad

43 Capítulo 2 Grafos de proximidad, spanners y estrategias de ruteo 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 v j de C, cw(v j ) o ccw(v j ) está en el interior de D. Supongamos que es cw(v j ). Entonces tendríamos una contradicción, ya que el algoritmo Voraz-Brújula se habría movido a cw(v j ) en lugar de a v j 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, R 0,, R m-1, siendo R 0 la región de Voronoi asociada al vértice s, y R m-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 v 0,, v m-1 donde v i es cada vértice de V asociado a la región R i. y (v i,v i+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

44 Capítulo 2 Grafos de proximidad, spanners y estrategias de ruteo 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) 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=(v 0,,v k ) por completo. Si no encuentra el destino t en una cara, entonces cambia de cara en un cierto vértice v i tal que el punto de corte del segmento st y la arista v i,v i+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 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

45 Capítulo 2 Grafos de proximidad, spanners y estrategias de ruteo 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(n 2 ). Figura 40. Un mal grafo de entrada para el algoritmo Caras 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

46 Capítulo 2 Grafos de proximidad, spanners y estrategias de ruteo Figura 41. Ruteo Greedy-Face-Greedy ( Ruteo Voraz y Ruteo por Caras 2) 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 ), 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

47 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

48 Capítulo 3 Aspectos de diseño e implementación 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, ) 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 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(n 2 ). 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 Añadir la arista dirigida pp al grafo Á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

49 Capítulo 3 Aspectos de diseño e implementación 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(n 2 ). 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(n 2 ). La complejidad del algoritmo es el máximo de ambas operaciones, por lo que resulta O(n 2 ) 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 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 (p i,p j ) que forman una arista de la triangulación de Delaunay calcular d k = max {d(p k,p i ), d(p k,p j )} 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 d k que es menor que d(p i,p j ). Si no existe este valor entonces crear la arista (p i,p j ). 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(n 2 ), en lugar de ser O(n 3 ) si no calculásemos DT previamente

50 Capítulo 3 Aspectos de diseño e implementación 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 (p i,p j ) que forman una arista de la Triangulación de Delaunay calcular d k = d(p k,m) con k=1..n, siendo n el número de aristas de DT y m el punto medio del segmento p i p j. 3. Para cada par de puntos (p i, p j ) buscar el valor d k que es menor que d(p i,p j )/2. Si no existe este valor entonces crear la arista p i p j. 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(n 2 ). La complejidad de este algoritmo es O(n 2 ) 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) 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)

51 Capítulo 3 Aspectos de diseño e implementación 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 Añadir la arista tp desde t al último punto añadido p Partiendo de p recorremos el cierre convexo en sentido horario y vamos añadiendo aristas con origen en t, hasta encontrar el

52 Capítulo 3 Aspectos de diseño e implementación soporte inferior. Hacemos lo mismo recorriendo el cierre en sentido antihorario hasta encontrar el soporte superior 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(n 2 ). 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(n 2 ). Por tanto el tiempo total del algoritmo es O(n 2 ), el máximo de la ordenación y la construcción del grafo 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:

53 Capítulo 3 Aspectos de diseño e implementación 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(n 2 ). Existen otros algoritmos para calcular la triangulación de Delaunay en tiempo O(n log n) 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 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(n 2 ). Al añadir cada arista al grafo, se debe comprobar que no corta a las aristas ya añadidas. Esto se

54 Capítulo 3 Aspectos de diseño e implementación realiza en tiempo O(nlog n). Como el número de aristas es O(n 2 ), tenemos que la construcción del grafo es O(n 2 log n). Por tanto la complejidad es O(n 2 log n), el máximo de la ordenación de aristas, O(n 2 ), y de la construcción del grafo, O(n 2 log n). Existen algoritmos más elaborados que pueden calcularla en un tiempo O(n log n) 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 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(n 4 ), 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(n 2 ). La complejidad del algoritmo es por tanto O(n 4 ), 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) Grafo de Yao, YG k (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

55 Capítulo 3 Aspectos de diseño e implementación operación se debe repetir para todos los puntos, la complejidad de este algoritmo es O(n 2 ) 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(n 2 ), igual que para el grafo de Yao, ya que el procedimiento para calcularlo es muy parecido 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(n 2 ). 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 Grafo Half-Space Proximal En la implementación del algoritmo de este grafo se ha omitido el sentido de las aristas (como vimos en Half-space es un dígrafo). El algoritmo de construcción es el siguiente:

56 Capítulo 3 Aspectos de diseño e implementación Algoritmo: 1. Considerar V, L 1 y L 2 =, siendo V el conjunto de vértices, L 1 el conjunto de aristas del grafo de disco unidad, y L 2 la lista de aristas del grafo resultante. 2. Para cada punto u V repetir el siguiente proceso: 2.1. P(u) =, L 1 =A, siendo P una lista de puntos prohibidos y A el conjunto de aristas de A incidentes en u Repetir mientras L 1 : eliminar de L 1 la arista más corta uv, e insertar la arista dirigida uv en L 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 Eliminar de L 1 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(n 2 ) 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 , 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

57 Capítulo 3 Aspectos de diseño e implementación Algoritmo: 1. Considerar V, L 1 y L 2 =, siendo V el conjunto de vértices, L 1 el conjunto de aristas del grafo de disco unidad, y L 2 la lista de aristas del grafo resultante. 2. Para cada punto u V repetir el siguiente proceso: 2.1. P(u) =, L 1 =A, siendo P una lista de puntos prohibidos y A el conjunto de aristas de A incidentes en u Repetir mientras L eliminar de L 1 la arista más corta uv, e insertar la arista dirigida uv en L 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 Eliminar de L 1 las aristas cuyo extremo se encuentre en P(u). La complejidad de este algoritmo es O(n 2 ) sobre el número de vértices, igual que para el algoritmo Half-space, ya que su funcionamiento es muy parecido 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(n 3 ), 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 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)

58 Capítulo 3 Aspectos de diseño e implementación 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 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. Algoritmo: Figura 49. Ruteo con Brújula 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

59 Capítulo 3 Aspectos de diseño e implementación 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 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. Algoritmo: Figura 50. Ruteo Voraz-Brújula 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

60 Capítulo 3 Aspectos de diseño e implementación 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 [c 0,c 1,, c k ] 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 c i. 5. Añadir la arista de Delaunay vw al camino. Asignar v=w, i=i Si v = t, terminar. El algoritmo ha tenido éxito. 7. Si v t.ir al paso 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 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

61 Capítulo 3 Aspectos de diseño e implementación 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 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 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 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 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 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:

62 Capítulo 3 Aspectos de diseño e implementación 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

63 Capítulo 3 Aspectos de diseño e implementación 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

64 Capítulo 3 Aspectos de diseño e implementación 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

65 Capítulo 3 Aspectos de diseño e implementación 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

66 Capítulo 3 Aspectos de diseño e implementación 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

67 Capítulo 3 Aspectos de diseño e implementación 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

68 Capítulo 3 Aspectos de diseño e implementación 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

69 Capítulo 3 Aspectos de diseño e implementación 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

70 Capítulo 3 Aspectos de diseño e implementación 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

71 Capítulo 3 Aspectos de diseño e implementación 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

72 Capítulo 3 Aspectos de diseño e implementación Clase Config: implementa una ventana de configuración para cambiar algunos parámetros de los grafos y algoritmos de ruteo. Figura 72. clase Config

73 Capítulo 3 Aspectos de diseño e implementación 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 :

74 Capítulo 3 Aspectos de diseño e implementación Figura 75. Diagrama de clases. Relaciones de asociación y generalización

75 Capítulo 3 Aspectos de diseño e implementación Figura 76. Relaciones de herencia entre las clases de la aplicación y Java

76 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 Barra de menús La barra de menús consta de cinco menús desplegables: File, Edit, Execution, View y Help

77 Capítulo 4 Manual de usuario Menú File El menú File contiene los comandos de manejo de ficheros: New Open Save Exit 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. Salir de la aplicación. Figura 78. Menú File Menú Edit El menú Edit contiene comandos para inserción de vértices. Insert Draw nodes Insert Automatic Select Remove Inserción manual de puntos Inserción aleatoria de puntos Selección de puntos Eliminación de vértices Figura 79. Menú Edit

78 Capítulo 4 Manual de usuario Menú Execution El menú Execution establece el modo de ejecución dinámico (por defecto) o el modo ejecución paso a paso. Dinamic Step Start Step Stop Modo de ejecución dinámico. Modo de ejecución paso a paso, de la construcción de un grafo, o de la ejecución de un algoritmo de ruteo. Detiene la ejecución paso a paso y vuelve al modo de ejecución dinámico. Figura 80. Menú Execution 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

79 Capítulo 4 Manual de usuario 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

80 Capítulo 4 Manual de usuario 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

81 Capítulo 4 Manual de usuario 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 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

82 Capítulo 4 Manual de usuario 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 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

83 Capítulo 4 Manual de usuario 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 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 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

84 Capítulo 4 Manual de usuario Figura 85. Ventana de configuración

ProRouting: una herramienta para la visualización de grafos de proximidad y estrategias de ruteo

ProRouting: una herramienta para la visualización de grafos de proximidad y estrategias de ruteo ProRouting: una herramienta para la visualización de grafos de proximidad y estrategias de ruteo J. M. Gil 1 y G. Hernández 1 Facultad de Informática, Universidad Politénica de Madrid josmargil@gmail.com,gregorio@fi.upm.es

Más detalles

Introducción Aplicaciones Primer Algoritmo Segundo Algoritmo - Algoritmo de Fortune. Diagrama de Voronoi. Jose Luis Bravo Trinidad 1 / 29

Introducción Aplicaciones Primer Algoritmo Segundo Algoritmo - Algoritmo de Fortune. Diagrama de Voronoi. Jose Luis Bravo Trinidad 1 / 29 1 / 29 Definición Propiedades geométricas Índice 1 Introducción Definición Propiedades geométricas 2 Análisis de recursos Triangulaciones Robótica Diseño 3 Implementación 4 Segundo - de Fortune 2 / 29

Más detalles

Escuela Técnica Superior. de Ingeniería Informática. Curso 2015/2016. Boletín de Problemas. Geometría Computacional. Dpto. de Matemática Aplicada I

Escuela Técnica Superior. de Ingeniería Informática. Curso 2015/2016. Boletín de Problemas. Geometría Computacional. Dpto. de Matemática Aplicada I Escuela Técnica Superior de Ingeniería Informática Curso 2015/2016 Boletín de Problemas de Geometría Computacional Dpto. de Matemática Aplicada I 1) Sean u(u 1,u 2 ) y v (v 1,v 2 ) dos vectores del plano.

Más detalles

Tema 5. Triangulaciones. Fundamentos de Geometría Computacional I.T.I. Gestión

Tema 5. Triangulaciones. Fundamentos de Geometría Computacional I.T.I. Gestión Índice 1. (modelado de terrenos) 2. (problema de la galería de arte) Modelado de terrenos Modelado de terrenos Modelado de terrenos QUÉ ES UN S.I.G.? (Sistema de Información Geográfica) DATOS Recolección

Más detalles

El ejercicio de la demostración en matemáticas

El ejercicio de la demostración en matemáticas El ejercicio de la demostración en matemáticas Demostración directa En el tipo de demostración conocido como demostración directa (hacia adelante) se trata de demostrar que A B partiendo de A y deduciendo

Más detalles

Triangulaciones de Delaunay

Triangulaciones de Delaunay Triangulaciones de Delaunay Dr. Eduardo A. RODRÍGUEZ TELLO CINVESTAV-Tamaulipas 22 de marzo del 2013 Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Triangulaciones de Delaunay 22 de marzo del 2013 1 / 80 1 Triangulaciones

Más detalles

Análisis y Diseño de Algoritmos Árboles de Mínima Expansión (Minimum Spanning Trees) DR. JESÚS A. GONZÁLEZ BERNAL CIENCIAS COMPUTACIONALES INAOE

Análisis y Diseño de Algoritmos Árboles de Mínima Expansión (Minimum Spanning Trees) DR. JESÚS A. GONZÁLEZ BERNAL CIENCIAS COMPUTACIONALES INAOE Análisis y Diseño de Algoritmos Árboles de Mínima Expansión (Minimum Spanning Trees) DR. JESÚS A. GONZÁLEZ BERNAL CIENCIAS COMPUTACIONALES INAOE Problema de Cableado de Circuitos Electrónicos 2 Diseño

Más detalles

Geometría Computacional. Dr. Antonio Marín Hernández

Geometría Computacional. Dr. Antonio Marín Hernández Geometría Computacional Dr. Antonio Marín Hernández Centro de Investigación en Inteligencia Artificial Universidad Veracruzana anmarin@uv.mx www.uv.mx/anmarin Contenido Introducción Intersección de segmentos

Más detalles

ÁRBOLES CRISTIAN ALFREDO MUÑOZ ÁLVAREZ JUAN DAVID LONDOÑO CASTRO JUAN PABLO CHACÓN PEÑA EDUARDO GONZALES

ÁRBOLES CRISTIAN ALFREDO MUÑOZ ÁLVAREZ JUAN DAVID LONDOÑO CASTRO JUAN PABLO CHACÓN PEÑA EDUARDO GONZALES ÁRBOLES CRISTIAN ALFREDO MUÑOZ ÁLVAREZ JUAN DAVID LONDOÑO CASTRO JUAN PABLO CHACÓN PEÑA EDUARDO GONZALES ÁRBOL Un árbol es un grafo no dirigido, conexo, sin ciclos (acíclico), y que no contiene aristas

Más detalles

Unidad didáctica 2. Trazados básicos

Unidad didáctica 2. Trazados básicos Unidad didáctica 2. Trazados básicos 2.1 Paralelas, perpendiculares y ángulos 2.1.1 Trazado de paralelas 1. Se coloca la hipotenusa de la escuadra sobre la línea a la que se quieren trazar paralelas. 2.

Más detalles

Análisis de algoritmos

Análisis de algoritmos Tema 10: Algoritmos ávidos M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com edfrancom@ipn.mx @edfrancom edgardoadrianfrancom 1 Contenido Introducción Algoritmos ávidos Forma general de un

Más detalles

b) Halle el punto de corte del plano π con la recta que pasa por P y P.

b) Halle el punto de corte del plano π con la recta que pasa por P y P. GEOMETRÍA 1- Considere los puntos A(1,2,3) y O(0,0,0). a) Dé la ecuación de un plano π 1 que pase por A y O, y sea perpendicular a π 2 : 3x-5y+2z=11. b) Encuentre la distancia del punto medio de A y O

Más detalles

TEMA 1. TRAZADOS GEOMÉTRICOS ELEMENTALES

TEMA 1. TRAZADOS GEOMÉTRICOS ELEMENTALES TEMA 1. TRAZADOS GEOMÉTRICOS ELEMENTALES GEOMETRÍA: Rama de las matemáticas que se ocupa del estudio de las figuras geométricas, incluyendo puntos, rectas, planos Proviene del Griego GEO (tierra) METRÍA

Más detalles

Unidad Didáctica 8. Dibujo Geométrico

Unidad Didáctica 8. Dibujo Geométrico Unidad Didáctica 8 Dibujo Geométrico 1.- Tazados Geométricos Básicos Trazados Rectas Paralelas Rectas paralelas. Las que no llegan nunca a cortarse, o se cortan en el infinito. Con Escuadra y Cartabón:

Más detalles

3.0.-ARBOLES ABARCADORES Y COMPONENTES CONEXOS CONCEPTO DE ARBOL ABARCADOR Y SU RELACION CON LOS RECORRIDOS.

3.0.-ARBOLES ABARCADORES Y COMPONENTES CONEXOS CONCEPTO DE ARBOL ABARCADOR Y SU RELACION CON LOS RECORRIDOS. 3.0.-ARBOLES ABARCADORES Y COMPONENTES CONEXOS 3.1.- CONCEPTO DE ARBOL ABARCADOR Y SU RELACION CON LOS RECORRIDOS. 3.2.- BOSQUES Y COMPONENTES CONEXOS. NEXON LENIN CEFERINO POMPOSO Los árboles son particularmente

Más detalles

POLÍGONOS REGULARES. Ejemplo: Hexágono 360º / 6 = 60º. TRIÁNGULO 3 120º 60º 180º (3-2)= 180º CUADRADO 4 90º 90º 180º (4-2)= 360º

POLÍGONOS REGULARES. Ejemplo: Hexágono 360º / 6 = 60º. TRIÁNGULO 3 120º 60º 180º (3-2)= 180º CUADRADO 4 90º 90º 180º (4-2)= 360º A B G C F LADO D E A B G C F D E APOTEMA DIAGONALES RADIO 360º / n (180º- ) ELEMENTOS Y PROPIEDADES DE LOS POLÍGONOS REGULARES. (Ilustración nº 1). Diagonal: Es el segmento que une dos vértices no consecutivos.

Más detalles

1.3.-Trazados geométricos básicos.

1.3.-Trazados geométricos básicos. 1.3.-Trazados geométricos básicos. 1.3.1.-Notaciones Los elementos básicos del dibujo técnico son el punto, la recta y el plano. El punto no tiene dimensión, podemos considerarlo como una posición del

Más detalles

Grafos. AMD Grado en Ingeniería Informática. AMD Grado en Ingeniería Informática (UM) Grafos 1 / 30

Grafos. AMD Grado en Ingeniería Informática. AMD Grado en Ingeniería Informática (UM) Grafos 1 / 30 Grafos AMD Grado en Ingeniería Informática AMD Grado en Ingeniería Informática (UM) Grafos / 0 Objetivos Al finalizar este tema tendréis que: Conocer la terminología básica de la teoría de grafos. Pasar

Más detalles

1. GRAFOS : CONCEPTOS BASICOS

1. GRAFOS : CONCEPTOS BASICOS 1. GRAFOS : CONCEPTOS BASICOS Sea V un conjunto finito no vacio y sea E V x V. El par (V, E) es un grafo no dirigido, donde V es un conjunto de vértices o nodos y E es un conjunto de aristas. Denotaremos

Más detalles

Diagrama de Voronoi. Ejemplo de problemas geométricos:

Diagrama de Voronoi. Ejemplo de problemas geométricos: Diagrama de Voronoi Definición: Sea P={p1,p2,..,pn} un conjunto de puntos en el plano. Estos puntos son llamados sitios. Asignar a cada punto del plano el sitio más cercano. Todos los puntos asignados

Más detalles

Introducción a la Geometría Computacional. Análisis de Algoritmos

Introducción a la Geometría Computacional. Análisis de Algoritmos Introducción a la Geometría Computacional Análisis de Algoritmos Geometría Computacional La Geometría Computacional surgió a finales de los 70s del área de diseño y análisis de algoritmos. Estudio sistemático

Más detalles

Fútbol, geometría y otros problemas.

Fútbol, geometría y otros problemas. Fútbol, geometría y otros problemas. Leandro Tortosa. Universidad de Alicante, Alicante (España). Departamento de Ciencia de la Computación e Inteligencia Artificial. Ap. Correos 99, E-03080. Alicante,

Más detalles

Un sistema experimental para generar mallas no-estructuradas en. irregulares.

Un sistema experimental para generar mallas no-estructuradas en. irregulares. Un sistema experimental para generar mallas no-estructuradas en regiones planas irregulares. Facultad de Ciencias, UNAM 23-Abr-09 Planteamiento del Problema Preliminares Motivación Mallas no estructuradas

Más detalles

Departamento de Educación Plástica y Visual. Unidad 3: Polígonos. 3º ESO EDUCACIÓN PLÁSTICA Y VISUAL UNIDAD 3: POLÍGONOS.

Departamento de Educación Plástica y Visual. Unidad 3: Polígonos. 3º ESO EDUCACIÓN PLÁSTICA Y VISUAL UNIDAD 3: POLÍGONOS. EDUCACIÓN PLÁSTICA Y VISUAL UNIDAD 3: POLÍGONOS Página 1 de 15 1. POLÍGONOS 1.1. Conocimiento de los polígonos regulares Polígono: Proviene de la palabra compuesta de Poli (muchos) Gonos (ángulos). Se

Más detalles

5.6 Árbol generador de un grafo

5.6 Árbol generador de un grafo 88 5.6 Árbol generador de un grafo Definición 5.59. Sea G un grafo simple. Un árbol generador de G es un subgrafo de G que es un árbol y contiene todos los vértices de G. Ejemplo 5.60. Un grafo y algunos

Más detalles

1. ELEMENTOS FUNDAMENTALES

1. ELEMENTOS FUNDAMENTALES 1. ELEMENTOS FUNDAMENTALES 1.1. El Punto Es el elemento geométrico más simple y queda definido en la intersección de dos rectas coplanarias. Se designa normalmente con algunas de las primeras letras mayúsculas

Más detalles

Grafos Eulerianos y Hamiltonianos. Algoritmos y Estructuras de Datos III

Grafos Eulerianos y Hamiltonianos. Algoritmos y Estructuras de Datos III Grafos Eulerianos y Hamiltonianos Algoritmos y Estructuras de Datos III Grafos eulerianos Definiciones: Un circuito C en un grafo (o multigrafo) G es un circuito euleriano si C pasa por todos las aristas

Más detalles

Tema 6 Tangencias y polaridad

Tema 6 Tangencias y polaridad Tema 6 Tangencias y polaridad Tema 6 Tangencias y polaridad...1 Tangencias... 2 Propiedades... 2 Enlaces... 3 Definición... 3 Construcción de enlaces... 3 Enlace de dos rectas oblicuas mediante dos arcos

Más detalles

En la fig. 1 se representa el grafo, G=(V,A) donde: V = {1, 2, 3, 4, 5, 6} A = { {1,2}, {1,3}, {1,5}, {3}, {3,4}, {4,5}, {5,6} }

En la fig. 1 se representa el grafo, G=(V,A) donde: V = {1, 2, 3, 4, 5, 6} A = { {1,2}, {1,3}, {1,5}, {3}, {3,4}, {4,5}, {5,6} } Unidad 1 Parte 1 - Teoría de Grafos Introducción En este capítulo veremos la noción matemática de grafo y propiedades de los mismos. En capítulos subsiguientes veremos las estructuras de datos utilizadas

Más detalles

MÓDULO Nº 3. Nivelación. Matemática Módulo Nº3. Contenidos. Polígonos Circunferencia y Círculo Volúmenes

MÓDULO Nº 3. Nivelación. Matemática Módulo Nº3. Contenidos. Polígonos Circunferencia y Círculo Volúmenes MÓDULO Nº 3 Nivelación Matemática 2005 Módulo Nº3 Contenidos Polígonos Circunferencia y Círculo Volúmenes Nivelación Polígonos Polígono Regular: Son aquellos polígonos que tienen todos sus lados y ángulos

Más detalles

Relaciones geométricas IES BELLAVISTA

Relaciones geométricas IES BELLAVISTA Relaciones geométricas IES BELLAVISTA Igualdad y semejanza Dos figuras son iguales cuando sus lados y sus ángulos son iguales y están igualmente dispuestos. Dos figuras son semejantes cuando sus ángulos

Más detalles

Computación Geométrica Tema 1: Introducción a la GC. Índice. Introducción a la Geometría Computacional. Definición. Intro Geometría Computacional

Computación Geométrica Tema 1: Introducción a la GC. Índice. Introducción a la Geometría Computacional. Definición. Intro Geometría Computacional Computación Geométrica Tema 1: Introducción a la GC Introducción a la Geometría Índice! Definición y problemáticas de la Geometría! Ejemplos de algoritmos geométricos Sentido de giro de un triángulo Punto

Más detalles

TEMA 4. Geometría. Teoría. Matemáticas

TEMA 4. Geometría. Teoría. Matemáticas 1 1.- Rectas y ángulos La geometría se basa en tres conceptos fundamentales que forman parte del espacio geométrico, es decir, el conjunto formado por todos los puntos: El punto La recta El plano Partiendo

Más detalles

Ampliación de Robótica PLANIFICACIÓN, 1 4 ROBOTS MÓVILES

Ampliación de Robótica PLANIFICACIÓN, 1 4 ROBOTS MÓVILES Ampliación de Robótica PLANIFICACIÓN, 1 4 ROBOTS MÓVILES TEMA IV: ROBOTS MÓVILES 4.1 Introducción: Preliminares y Conceptos. 4.2 Características de los Robots Móviles. 4.3 Algoritmos de Planificación.

Más detalles

Las variedades lineales en un K-espacio vectorial V pueden definirse como sigue a partir de los subespacios de V.

Las variedades lineales en un K-espacio vectorial V pueden definirse como sigue a partir de los subespacios de V. Capítulo 9 Variedades lineales Al considerar los subespacios de R 2, vimos que éstos son el conjunto {(0, 0)}, el espacio R 2 y las rectas que pasan por el origen. Ahora, en algunos contextos, por ejemplo

Más detalles

Soluciones Nota nº 1

Soluciones Nota nº 1 Soluciones Nota nº 1 Problemas Propuestos 1- En el paralelogramo ABCD el ángulo en el vértice A es 30º Cuánto miden los ángulos en los vértices restantes? Solución: En un paralelogramo, los ángulos contiguos

Más detalles

ACTIVIDADES DE GEOMETRÍA PARA 4º ESO DE EPV Nombre y apellidos:

ACTIVIDADES DE GEOMETRÍA PARA 4º ESO DE EPV Nombre y apellidos: ACTIVIDADES DE GEOMETRÍA PARA 4º ESO DE EPV Nombre y apellidos: Curso: TEMA 1: TRAZADOS BÁSICOS. 1. RECTAS PARALELAS Las rectas paralelas son aquellas que por mucho que las prolongues nunca se van a cortar.

Más detalles

Curso de Posgrado: Tópicos avanzados en teoría de grafos

Curso de Posgrado: Tópicos avanzados en teoría de grafos Curso de Posgrado: Tópicos avanzados en teoría de grafos 1. Grafos planares 1.1. Preliminares Recordemos algunos conceptos: Una curva es la imagen de una función contínua f : [0, 1] R 2. Una curva poligonal

Más detalles

= λ + 1 y el punto A(0, 7, 5)

= λ + 1 y el punto A(0, 7, 5) 94 GEOMETRÍA ANALÍTICA DEL ESPACIO en las PAU de Asturias Dados los puntos A(1, 0, 1), B(l, 1, 1) y C(l, 6, a), se pide: a) hallar para qué valores del parámetro a están alineados b) hallar si existen

Más detalles

El punto de unión de cada par de segmentos se denomina ángulo. El numero de lados, ( y por tanto de ángulos) ha de ser mayor o igual a tres.

El punto de unión de cada par de segmentos se denomina ángulo. El numero de lados, ( y por tanto de ángulos) ha de ser mayor o igual a tres. POLÍGONOS: POLÍGONOS REGULARES y POLÍGONOS REGULARES ESTRELLADOS. Polígono es la superficie plana encerrada dentro de un contorno formado por segmentos rectos unidos en sus extremos. Cada uno de los segmentos

Más detalles

Matemáticas UNIDAD 7 CONSIDERACIONES METODOLÓGICAS. Material de apoyo para el docente. Preparado por: Héctor Muñoz

Matemáticas UNIDAD 7 CONSIDERACIONES METODOLÓGICAS. Material de apoyo para el docente. Preparado por: Héctor Muñoz CONSIDERACIONES METODOLÓGICAS Material de apoyo para el docente UNIDAD 7 Preparado por: Héctor Muñoz Diseño Gráfico por: www.genesisgrafica.cl TEOREMAS RELATIVOS A ÁNGULOS UNIDAD 6 TEOREMAS RELATIVOS A

Más detalles

1 NOCIONES BÁSICAS SOBRE CONJUNTOS. SÍMBOLOS.

1 NOCIONES BÁSICAS SOBRE CONJUNTOS. SÍMBOLOS. UNIDAD 1.- CONCEPTOS REQUERIDOS CONJUNTOS. AXIOMAS DE PERTENENCIA, PARALELISMO, ORDEN Y PARTICIÓN. 1 NOCIONES BÁSICAS SOBRE CONJUNTOS. SÍMBOLOS. 1.1 Determinaciones de un conjunto. Un conjunto queda determinado

Más detalles

El ejercicio de la demostración en matemáticas

El ejercicio de la demostración en matemáticas El ejercicio de la demostración en matemáticas Demostración directa En el tipo de demostración conocido como demostración directa(hacia adelante) se trata de demostrar que A B partiendo de A y deduciendo

Más detalles

INSTITUCIÓN EDUCATIVA ESCUELA NORMAL SUPERIOR DEL BAJO CAUCA

INSTITUCIÓN EDUCATIVA ESCUELA NORMAL SUPERIOR DEL BAJO CAUCA Las matemáticas, históricamente, comenzaron con la geometría. La geometría es la ciencia que estudia la forma y posición de la figuras y nos enseña a medir su extensión. Geometría (del griego geo, tierra,

Más detalles

LAS CIENCIAS DE LA PLANIFICACIÓN

LAS CIENCIAS DE LA PLANIFICACIÓN LAS CIENCIAS DE LA PLANIFICACIÓN 5. EL PROBLEMA DEL VIAJANTE (PV) (The Traveling Salesman Problem TSP) Un problema como el de las vacaciones, pero vital para las empresas, es el problema del viajante (PV):

Más detalles

GEOMETRÍA TANGENCIAS - 1

GEOMETRÍA TANGENCIAS - 1 GEOMETRÍA TANGENCIAS - 1 TANGENCIAS BÁSICAS Recordemos que dos líneas se dice que son tangentes cuando tienen un solo punto común sin cortarse. Para resolver cualquier problema de tangencias de rectas

Más detalles

TEMA 6: GEOMETRÍA EN EL PLANO

TEMA 6: GEOMETRÍA EN EL PLANO TEMA 6: GEOMETRÍA EN EL PLANO Definiciones/Clasificaciones Fórmulas y teoremas Dem. Def. y Clasificación de polígonos: Regular o irregular Cóncavo o convexo Por número de lados: o Triángulos: clasificación

Más detalles

Estructura de Datos Espaciales. por José Antonio Navarrete Pacheco INTRODUCCIÓN

Estructura de Datos Espaciales. por José Antonio Navarrete Pacheco INTRODUCCIÓN Estructura de Datos Espaciales por José Antonio Navarrete Pacheco INTRODUCCIÓN 1 FENÓMENOS GEOGRÁFICOS Definición: Es algo de interés que: Puede ser medido o descrito Puede ser georreferido o georreferenciado,

Más detalles

1. Inducción Inducción básica. Universidad de la República Cálculo 1 Facultad de Ingeniería - IMERL Primer semestre 2017

1. Inducción Inducción básica. Universidad de la República Cálculo 1 Facultad de Ingeniería - IMERL Primer semestre 2017 Universidad de la República Cálculo 1 Facultad de Ingeniería - IMERL Primer semestre 017 Práctico 1 - Inducción y Número Real 1. Inducción 1.1. Inducción básica 1. Demostrar las siguientes afirmaciones

Más detalles

Grafos. Suponiendo que e = [u, v]. Entonces los nodos u y v se llaman extremos de e y u y v se dice que son nodos adyacentes o vecinos.

Grafos. Suponiendo que e = [u, v]. Entonces los nodos u y v se llaman extremos de e y u y v se dice que son nodos adyacentes o vecinos. Grafos Los grafos son estructuras que constan de vértices o nodos y de aristas o arcos que conectan los vértices entre sí. Un grafo G consiste en dos cosas: 1. Un conjunto V de elementos llamados nodos

Más detalles

Concepto de función compleja y conjuntos especiales en C

Concepto de función compleja y conjuntos especiales en C Concepto de función compleja y conjuntos especiales en C Genaro Luna Carreto * 1. Distancia compleja y ejemplos Los números complejos estan formados por la triada (R 2, +, ), donde las operaciones tienen

Más detalles

UNIVERSIDAD POLITÉCNICA DE MADRID

UNIVERSIDAD POLITÉCNICA DE MADRID FACULTAD DE INFORMÁTICA UNIVERSIDAD POLITÉCNICA DE MADRID UNIVERSIDAD POLITÉCNICA DE MADRID FACULTAD DE INFORMÁTICA TRABAJO FIN DE CARRERA TRIANGULACIÓN DE PESO MÍNIMO Y PROGRAMACIÓN DINÁMICA AUTOR: Caio

Más detalles

12. Espacios afines euclídeos

12. Espacios afines euclídeos 12. Espacios afines euclídeos Distancia y sistema de referencia métrico Ejercicio 12.1. Teorema de Sylvester-Gallai. Sean P 1,...,P n,n 3 puntos del espacio euclídeo afín A 2 (R) que no están sobre una

Más detalles

GEOMETRÍA PLANA 3º E.S.O. Un polígono es una figura geométrica plana y cerrada limitada por tres o más segmentos llamados lados.

GEOMETRÍA PLANA 3º E.S.O. Un polígono es una figura geométrica plana y cerrada limitada por tres o más segmentos llamados lados. GEOMETRÍA PLANA 3º E.S.O. POLÍGONO.- Un polígono es una figura geométrica plana y cerrada limitada por tres o más segmentos llamados lados. El triángulo (tres lados), el cuadrilátero (cuatro lados), el

Más detalles

Los elementos básicos de la Geometría Plana son el punto, la línea, y el plano.

Los elementos básicos de la Geometría Plana son el punto, la línea, y el plano. GEOMETRÍA PLANA Dibujo Geométrico La geometría es la parte de las matemáticas que estudia las propiedades y las medidas de las figuras planas y tridimensionales en el espacio. La palabra procede de dos

Más detalles

POLÍGONOS POLÍGONOS. APM Página 1

POLÍGONOS POLÍGONOS. APM Página 1 POLÍGONOS 1. Polígonos. 1.1. Elementos de un polígono. 1.2. Suma de los ángulos interiores de un polígono. 1.3. Diagonales de un polígono. 1.4. Clasificación de los polígonos. 2. Polígonos regulares. Elementos.

Más detalles

LA PARADOJA DE BERTRAND: Un problema y varias soluciones.

LA PARADOJA DE BERTRAND: Un problema y varias soluciones. LA PARADOJA DE BERTRAND: Un problema y varias soluciones. Juan Manuel Valderas Jaramillo {valderas@us.es} Elena Olmedo Fernández {olmedo@us.es} Luis Franco Martín {lfranco@us.es} Departamento de Economía

Más detalles

Descomposiciones de Heegaard

Descomposiciones de Heegaard Descomposiciones de Heegaard Un cubo con asas es una variedad con frontera que es homeomorfa a la union de bolas pegadas por discos ajenos: Una variedad M es un cubo con asas si es posible cortar a M con

Más detalles

Matemáticas Discretas

Matemáticas Discretas Coordinación de Ciencias Computacionales - INAOE Matemáticas Discretas Cursos Propedéuticos 2011 Ciencias Computacionales INAOE Dr. Enrique Muñoz de Cote jemc@inaoep.mx http://ccc.inaoep.mx/~jemc Oficina

Más detalles

Sesión 1: Introducción a la Geometría Computacional

Sesión 1: Introducción a la Geometría Computacional Razonamiento Geométrico Tema 1: Introducción a la GC Sesión 1: Introducción a la Geometría Computacional Introducción a la Geometría Computacional Copyright 2002-2003 Universidad de Alicante 1 Índice Sesión

Más detalles

Tema 2: Figuras geométricas

Tema 2: Figuras geométricas Tema 2: Figuras geométricas En este tema empezaremos a estudiar: 1. la circunferencia. 2. los triángulos. 3. los cuadriláteros. 4. los poĺıgonos. 1 2 La circunferencia (p. 31) El cerebro humano es muy

Más detalles

Producto Escalar. AMD Grado en Ingeniería Informática. AMD Grado en Ingeniería Informática (UM) Producto Escalar 1 / 31

Producto Escalar. AMD Grado en Ingeniería Informática. AMD Grado en Ingeniería Informática (UM) Producto Escalar 1 / 31 Producto Escalar AMD Grado en Ingeniería Informática AMD Grado en Ingeniería Informática (UM) Producto Escalar 1 / 31 Objetivos Al finalizar este tema tendrás que: Saber usar el producto escalar. Calcular

Más detalles

Vectores equipolentes. Dos vectores son equipolentes cuando tienen igual módulo, dirección y sentido.

Vectores equipolentes. Dos vectores son equipolentes cuando tienen igual módulo, dirección y sentido. TEMA 9: GEOMETRIA ANALÍTICA VECTORES EN EL PLANO Un vector fijo AB es un segmento orientado que va del punto A (origen) al punto B (extremo). Si las coordenadas de A son (x1, y1) y las de B, (X, y), las

Más detalles

TEMA IV TEORÍA DE GRAFOS

TEMA IV TEORÍA DE GRAFOS TEMA IV TEORÍA DE GRAFOS Poli Abascal Fuentes TEMA IV Teoría de grafos p. 1/? TEMA IV 4. TEORÍA DE GRAFOS 4.1 GRAFOS 4.1.1 Introducción 4.1.2 Definiciones básicas 4.1.3 Caminos y recorridos 4.1.4 Subgrafos,

Más detalles

MYP (MIDDLE YEARS PROGRAMME)

MYP (MIDDLE YEARS PROGRAMME) MYP (MIDDLE YEARS PROGRAMME) 2014-2015 Fecha 19/05/2015 APUNTES DE GEOMETRÍA 2º ESO 1. EL TEOREMA DE PITÁGORAS El teorema de Pitágoras establece que en todo triángulo rectángulo, el cuadrado de la hipotenusa

Más detalles

EDUCACIÓN PLÁSTICA Y VISUAL BLOQUE: GEOMETRÍA CUADERNO ADAPTADO 1º E.S.O. Alumno/a: Curso escolar: Grupo: 1º

EDUCACIÓN PLÁSTICA Y VISUAL BLOQUE: GEOMETRÍA CUADERNO ADAPTADO 1º E.S.O. Alumno/a: Curso escolar: Grupo: 1º EDUCACIÓN PLÁSTICA Y VISUAL BLOQUE: GEOMETRÍA CUADERNO ADAPTADO 1º E.S.O. Alumno/a: Curso escolar: Grupo: 1º TEMA 1. TRAZADOS GEOMÉTRICOS (tema 7 del libro) INTRODUCCIÓN: LOS MATERIALES DE DIBUJO Vamos

Más detalles

Conexión Motivación. Lección 10

Conexión Motivación. Lección 10 Lección 10 Conexión Estudiamos la propiedad topológica que nos va a permitir obtener una versión general para espacios métricos del teorema del valor intermedio que conocemos para funciones reales de variable

Más detalles

Centro Asociado Palma de Mallorca. Tutor: Antonio Rivero Cuesta

Centro Asociado Palma de Mallorca. Tutor: Antonio Rivero Cuesta Centro Asociado Palma de Mallorca Lógica y Estructuras Discretas Tutor: Antonio Rivero Cuesta Tema 5 Teoría de Grafos Conceptos Básicos Un grafo consta de: Grafo Un conjunto de nodos, Un conjunto de aristas

Más detalles

Trazado de rectas paralelas y perpendiculares

Trazado de rectas paralelas y perpendiculares Trazado de rectas paralelas y perpendiculares Recuerda Dos rectas paralelas son aquellas que no llegan nunca a cortarse, y son perpendiculares cuando se cortan formando ángulos rectos. Dibuja una recta

Más detalles

Facultad de Ingeniería Facultad de Tecnología Informática. Matemática Números reales Elementos de geometría analítica. Profesora: Silvia Mamone

Facultad de Ingeniería Facultad de Tecnología Informática. Matemática Números reales Elementos de geometría analítica. Profesora: Silvia Mamone Facultad de Ingeniería Facultad de Tecnología Informática Matemática Números reales Elementos de geometría analítica 0 03936 Profesora: Silvia Mamone UB Facultad de Ingeniería Facultad de Tecnología Informática

Más detalles

Matemáticas II. d) Perpendicular al plano π: 2x y + 3z 1 = 0, paralelo a la recta r : x 1 2 = y 3 = z 8

Matemáticas II. d) Perpendicular al plano π: 2x y + 3z 1 = 0, paralelo a la recta r : x 1 2 = y 3 = z 8 I.E.S. Juan Carlos I Ciempozuelos (Madrid) Matemáticas II * Geometría analítica en R 3 * 1. Determina cuáles de las siguientes ternas de puntos son puntos alineados. Encuentra la ecuación de la recta que

Más detalles

DIBUJO GEOMÉTRICO. - Segmento: es una parte limitada de la recta comprendida entre dos puntos que por lo tanto se nombraran con mayúscula.

DIBUJO GEOMÉTRICO. - Segmento: es una parte limitada de la recta comprendida entre dos puntos que por lo tanto se nombraran con mayúscula. DIBUJO GEOMÉTRICO 1. SIGNOS Y LÍNEAS. A. El punto: es la intersección de dos rectas. Se designa mediante una letra mayúscula y se puede representar también con un círculo pequeño o un punto. A B C D X

Más detalles

ÁLGEBRA LINEAL II Práctica

ÁLGEBRA LINEAL II Práctica ÁLGEBRA LINEAL II Práctica 3.1-3.2 Geometría afín. (Curso 2015 2016) 1. En el espacio afín IR 3 se considera la referencia canónica R y la referencia R = (1, 0, 1); (1, 1, 0), (1, 1, 1), (1, 0, 0)}. Denotamos

Más detalles

ACTIVIDADES PROPUESTAS

ACTIVIDADES PROPUESTAS GEOMETRÍA DINÁMICA ACTIVIDADES PROPUESTAS 1. Dibujar un pentágono y trazar sus diagonales. 2. A partir de una circunferencia c y de un punto exterior A, trazar la circunferencia que tiene centro en el

Más detalles

12Direcciones de internet

12Direcciones de internet 12Direcciones de internet En la dirección http://www.nucleogestion.8m.com/hall.htm se puede pasear libremente por el museo virtual de Escher. Se puede entrar en la sala que se desee haciendo clic sobre

Más detalles

INSTITUTO DE FORMACIÓN DOCENTE DE CANELONES - MATEMÁTICA I - AÑO 2012 TRIÁNGULOS

INSTITUTO DE FORMACIÓN DOCENTE DE CANELONES - MATEMÁTICA I - AÑO 2012 TRIÁNGULOS TRIÁNGULOS Definición: Dados tres puntos no alineados, A, B y C, se llama triángulo a la intersección de los semiplanos que tienen como borde la recta determinada por dos de estos puntos y contiene al

Más detalles

2.-GEOMETRÍA PLANA O EUCLIDIANA

2.-GEOMETRÍA PLANA O EUCLIDIANA 2.-GEOMETRÍA PLANA O EUCLIDIANA 2.1.-Triángulos. Definición, clasificación y notación. Puntos notables, ortocentro, circuncentro, baricentro e incentro. Propiedades de las medianas. Los Triángulos son

Más detalles

Tema 1. Números Complejos

Tema 1. Números Complejos Tema 1. Números Complejos Prof. William La Cruz Bastidas 27 de septiembre de 2002 Capítulo 1 Números Complejos Definición 1.1 Un número complejo, z, es un número que se expresa como z = x + iy o, de manera

Más detalles

Polígono regular de 3 lados: Triángulo equilátero

Polígono regular de 3 lados: Triángulo equilátero Se pueden construir todos los polígonos regulares con regla y compás siguiendo las reglas que hemos establecido para estas construcciones? Vamos a ver la construcción de los mismos partiendo de unos ejes

Más detalles

Introducción a la Geometría Computacional

Introducción a la Geometría Computacional Tema 1 Introducción a la Geometría Computacional Ubicación: http://wwwdi.ujaen.es/asignatuas/gc/tema1.odp Curso: 1º de Ingeniería Informática, Plan 2004 Profesor: Lidia Ortega Alvarado Departamento: Informática

Más detalles

GEOMETRÍA. Instrumentos geométricos básicos: Reglas: regla graduada y la regla T Escuadra y cartabón transportador Compás

GEOMETRÍA. Instrumentos geométricos básicos: Reglas: regla graduada y la regla T Escuadra y cartabón transportador Compás GEOMETRÍA La geometría como palabra tiene dos raíces griegas: GEO = tierra y METRÓN = medida; es decir, significa: medida de la tierra. Es la rama de las matemáticas que estudia las propiedades de las

Más detalles

Diagramas de Voronoi. comp-420

Diagramas de Voronoi. comp-420 Diagramas de Voronoi comp-420 http://www.ifweassume.com/2012/10/the-united-states-of-starbucks.html furthest point from a company-owned Starbucks (~140 miles). http://www.ifweassume.com/2012/10/the-united-states-of-starbucks.html

Más detalles

2. Distancia entre dos puntos. Punto medio de un segmento

2. Distancia entre dos puntos. Punto medio de un segmento Geometría 1 Geometría anaĺıtica Una ecuación de primer grado con dos incógnitas x e y tiene infinitas soluciones Por ejemplo x + y = 3 tiene como soluciones (0, 3), (1, ), ( 1, 4), etc Hasta ahora se han

Más detalles

8. UNIDAD DIDACTICA 8: TANGENCIAS Y ENLACES

8. UNIDAD DIDACTICA 8: TANGENCIAS Y ENLACES 8. UNIDAD DIDACTICA 8: TANGENCIAS Y ENLACES 8.1. TANGENCIAS Se dice que dos figuras planas son tangentes cuando tienen un solo punto en común, al que se conoce como punto de tangencia. Las tangencias pueden

Más detalles

Politopos y cubiertas convexas en 3 o más dimensiones

Politopos y cubiertas convexas en 3 o más dimensiones y cubiertas convexas en 3 o más dimensiones Dr. Eduardo A. RODRÍGUEZ TELLO CINVESTAV-Tamaulipas 1 de febrero del 2013 Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) y cubiertas convexas 1 de febrero del 2013 1 /

Más detalles

Tema: Recorrido de Grafos. Ruta más corta

Tema: Recorrido de Grafos. Ruta más corta PED104. Guía N 12 Página 1 Facultad: Ingeniería Escuela: Computación Asignatura: Programación con Estructuras de Datos Tema: Recorrido de Grafos. Ruta más corta Competencia Desarrolla sistemas de información

Más detalles

A mi muy querida profesora que con ansias debe estar esperando mi trabajo. I. Introducción pag. 4

A mi muy querida profesora que con ansias debe estar esperando mi trabajo. I. Introducción pag. 4 MONOGRAFÍA NOMBRE : COLEGIO : GRADO : IVº B TEMA : Geometría del Espacio PROFESORA : FECHA : 30 de Noviembre DEDICATORIA A mi muy querida profesora que con ansias debe estar esperando mi trabajo índice

Más detalles

Algoritmos voraces (greedy)

Algoritmos voraces (greedy) Dr. Eduardo A. RODRÍGUEZ TELLO CINVESTAV-Tamaulipas 21 de marzo de 2018 Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Algoritmos voraces 21 de marzo de 2018 1 / 45 1 Algoritmos voraces (greedy) Aplicaciones de

Más detalles

LA GEOMETRÍA PLANA. Llanos: Si su medida es de 180º. Agudos: Si su medida esta comprendida entre 0 y 90. Rectos: si su medida es 90

LA GEOMETRÍA PLANA. Llanos: Si su medida es de 180º. Agudos: Si su medida esta comprendida entre 0 y 90. Rectos: si su medida es 90 LA GEOMETRÍA PLANA La geometría plana trata de aquellos elementos que solo tienen dos dimensiones y, que por lo tanto, se encuentran y operan en un plano. Los elementos básicos con los que se suele trabajar

Más detalles

Tema 6. Tema 6. Tema 6. Modelado 3D 6.1 Introducción 6.2 Modelado plano de superficies 6.3 modelado de sólidos. 6.1 Introducción

Tema 6. Tema 6. Tema 6. Modelado 3D 6.1 Introducción 6.2 Modelado plano de superficies 6.3 modelado de sólidos. 6.1 Introducción Tema 6 Tema 6 Tema 6. Modelado 3D 6.1 Introducción 6.3 modelado de sólidos Gràfics per Computador 2004/2005 Tema 6. Modelado 3D 1 6.1 Introducción Una escena puede contener distintos tipos de objetos (nubes,

Más detalles

Resumen: Geometría Básica

Resumen: Geometría Básica Resumen: Geometría Básica Postulados de Euclides Los postulados se basan en elementos primitivos que en esencia son elementos que no podemos definir, sino que los asumimos de forma intuitiva, en el caso

Más detalles

Puntos y Vectores. 16 de Marzo de 2012

Puntos y Vectores. 16 de Marzo de 2012 Geometría en Puntos y Vectores Universidad Autónoma Metropolitana Unidad Iztapalapa 16 de Marzo de 2012 Introducción En Geometría analítica plana las relaciones y las propiedades geométricas se expresan

Más detalles

AnAnálisis de redes de transporte Tr. Muchas veces se utiliza en aplicaciones que nada tienen que ver con el transporte

AnAnálisis de redes de transporte Tr. Muchas veces se utiliza en aplicaciones que nada tienen que ver con el transporte AnAnálisis de redes de transporte Tr Muchas veces se utiliza en aplicaciones que nada tienen que ver con el transporte Resumen Antecedentes y definiciones El camino más corto Árbol de expansión mínima

Más detalles

Tema 6 Tangencias, Enlaces y Polaridad

Tema 6 Tangencias, Enlaces y Polaridad Tema 6 Tangencias, Enlaces y Polaridad En este tema revisaremos la unión de curvas y líneas mediante tangencias, además de introducir el concepto de polaridad. Las tangencias es un campo extensísimo, del

Más detalles

Polígonos IES BELLAVISTA

Polígonos IES BELLAVISTA Polígonos IES BELLAVISTA Polígonos: definiciones Un polígono es la porción de plano limitada por rectas que se cortan. Polígono regular: el que tiene todos los lados y ángulos iguales. Polígono irregular:

Más detalles

Ruta más Corta con una sóla Fuente de Inicio (Single-Source Shortest Paths) DR. JESÚS A. GONZÁLEZ BERNAL CIENCIAS COMPUTACIONALES INAOE

Ruta más Corta con una sóla Fuente de Inicio (Single-Source Shortest Paths) DR. JESÚS A. GONZÁLEZ BERNAL CIENCIAS COMPUTACIONALES INAOE Ruta más Corta con una sóla Fuente de Inicio (Single-Source Shortest Paths) 1 DR. JESÚS A. GONZÁLEZ BERNAL CIENCIAS COMPUTACIONALES INAOE Problema de Encontrar la Ruta más Corta 2 Se requiere llegar de

Más detalles

Un punto divide a una recta en dos semirrectas. Ese punto es el origen de ambas semirrectas.

Un punto divide a una recta en dos semirrectas. Ese punto es el origen de ambas semirrectas. Una línea recta es una línea que no tiene principio ni fin. Una semirrecta es una línea que tiene principio pero no tiene final. o Un punto divide a una recta en dos semirrectas. Ese punto es el origen

Más detalles