Anda di halaman 1dari 97

UNIVERSIDAD POLITCNICA DE MADRID

FACULTAD DE INFRMATICA

TRABAJO FIN DE CARRERA


GRAFOS DE PROXIMIDAD. ESTRATEGIAS DE RUTEO

Julio 2007

AUTOR : Jos Mara Gil Martn


TUTOR : Gregorio Hernndez Pealver

NDICE
1. Introduccin y Objetivos

1.1.
Definiciones
2
1.2.
Motivacin
3
1.2.1.
Poligonizaciones
3
1.2.2.
Reconstruccin de un modelo tridimensional a partir de
una nube de puntos
4
1.2.3.
El problema generalizado de diseo de una red
5
1.2.4.
Salida de un laberinto
6
1.2.5.
Mallas propensas a fallos
7
1.2.6.
Robots mviles cooperativos y redes inalmbricas
8

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


2.1.
Grafos de Proximidad y Spanners
2.1.1.
t-Spanner
2.1.2.
Dilacin(Stretch factor o dilation)
2.1.3.
t-Spanner dbil ( Weak t-Spanner)
2.1.4.
(t, )- power spanner.
2.1.5.
t-Spanners , t-Spanners dbiles y
(t, )-power spanners
2.2. Grafos de Proximidad
2.2.1.
Grafo de vecindad dirigida (NPG)
2.2.2.
rbol Generador Mnimo (MST)
2.2.3.
Grafo de Vecindad Relativa (RNG)
2.2.4.
Grafo de Gabriel (GG)
2.2.5.
Triangulacin incremental (IT)
2.2.6.
Diagrama de Voronoi (VG)
2.2.7.
Triangulacin de Delaunay (DT)
2.2.8.
Grafo de disco unidad (UDG)
2.2.9.
Grafo de Delaunay Restringido (RDG)
2.2.10.
Triangulacin Voraz (GT)
2.2.11.
Grafo de Yao (YG)
2.2.12.
Grafo (G)
2.2.13.
Grafo Half-Space proximal (HSPG)
2.2.14.
Familia de grafos G (G)
2.2.15.
Familia de Grafos -Skeleton (SG)
2.3. Estrategias de Ruteo
2.3.1.
Clasificacin de los algoritmos de ruteo
2.3.2.
Ruteo Voraz ( Greedy Routing )
2.3.3.
Ruteo de Brjula (Compass Routing)
2.3.4.
Ruteo de Brjula Aleatorizado (Random Compass)
2.3.5.
Ruteo Voraz-Brjula ( Greedy-Compass Routing)

10
10
10
10
10
11
12
12
12
14
15
17
17
18
21
22
23
23
24
25
26
27
29
29
30
32
33
33

2.3.6.
2.3.7.
2.3.8.
2.3.9.
2.3.10.

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

3. Aspectos de Diseo e implementacin


3.1.
3.2.

Requisitos mnimos del sistema


Integracin de los algoritmos de grafos
3.2.1.
Grafo de Vecindad Dirigida
3.2.2.
rbol Generador Mnimo.
3.2.3.
Grafo de Vecindad Relativa
3.2.4.
Grafo de Gabriel
3.2.5.
Triangulacin Incremental
3.2.6.
Triangulacin de Delaunay
3.2.7.
Triangulacin de Delaunay Restringida
3.2.8.
Triangulacin Voraz
3.2.9.
Diagrama de Voronoi
3.2.10.
Grafo de Yao
3.2.11.
Grafo Theta
3.2.12.
Grafo de Disco Unidad
3.2.13.
Grafo Half-Space Proximal
3.2.14.
Familia de Grafos Theta-Lambda
3.2.15.
Familia de Grafos Beta-Skeleton
3.3. Integracin de los algoritmos de Ruteo
3.3.1.
Algoritmo de Ruteo Voraz
3.3.2.
Algoritmo de Ruteo con Brjula
3.3.3.
Algoritmo de Ruteo con Brjula Aleatorizado
3.3.4.
Algoritmo de Ruteo Voraz-Brjula
3.3.5.
Algoritmo de Ruteo de Voronoi
3.3.6.
Algoritmo de Ruteo por Caras 1
3.3.7.
Algoritmo de Ruteo por Caras 2
3.3.8.
Algoritmo de Ruteo Voraz-Caras-Voraz
3.3.9.
Algoritmo de Ruteo local en Grafos Theta-Lambda
3.4. Diagramas de Clase

4. Manual de usuario

35
36
36
37
38

39
40
40
40
40
41
42
42
44
45
45
46
46
47
47
47
48
49
49
50
50
51
51
52
52
52
53
53
53

68

4.1.

Barra de mens
4.1.1.
Men File
4.1.2.
Men Edit
4.1.3.
Men Execution
4.1.4.
Men View
4.2. Barras de Herramientas de Grafos y manejo de ficheros
4.3. Barra de herramientas de ruteo y configuracin
4.4. Superficie grfica
4.5. Barra de estado
4.6. Ventana de configuracin

5. Estudio comparativo

68
69
69
70
70
71
73
74
75
75

77
ii

5.1. Prueba 1
5.1.1.
Grafo de Vecindad Relativa
5.1.2.
Grafo de Gabriel
5.1.3.
Triangulacin de Delaunay
5.1.4.
Conclusiones sobre la prueba 1
5.2. Prueba 2
5.2.1.
Grafo de Vecindad Relativa UDG
5.2.2.
Grafo de Gabriel UDG
5.2.3.
Grafo de Delaunay Restringido
5.2.4.
Grafo de Yao UDG
5.2.5.
Grafo Theta UDG
5.2.6.
Grafo Theta-Lambda UDG
5.2.7.
Conclusiones sobre la prueba 2
5.3. Prueba 3

6. Conclusiones

78
78
79
79
80
80
81
81
82
82
83
83
84
84

86

iii

LISTADO DE ILUSTRACIONES
Pgina

Figura 1. Poligonizaciones montona y estrellada


Figura 2. Adquisicin de nube de puntos a partir de un modelo real mediante scanner.
Figura 3. Reconstruccin del modelo mediante una triangulacin de Delaunay.
Figura 4. Laberinto de paredes y pasillos.
Figura 5. Solucin del laberinto siguiendo la regla de la mano derecha.
Figura 6.(a) Malla 10x10 sin fallos. (b) Malla 10x10 con fallos en vrtices y aristas
Figura 7. Demostracin de Teorema 2 sobre spanners.
Figura 8. Grafo de Vecindad dirigida.
Figura 9. rbol generador mnimo
Figura 10. Demostracin de la Propiedad 2.
Figura 11. Vecinos relativos y Grafo de Vecindad Relativa
Figura 12. Demostracin de MST RNG
Figura 13. Vecinos de Gabriel y Grafo de Gabriel.
Figura 14. Demostracin de RNG GG
Figura 15. Demostracin de Propiedad 3 del Grafo de Gabriel
Figura 16. Triangulacin incremental
Figura 17. Diagrama de Voronoi
Figura 18. Dos triangulaciones distintas y sus ngulos interiores.
Figura 19. Dualidad Diagrama de Voronoi-Triangulacin de Delaunay
Figura 20. Tringulo perteneciente a DT y Triangulacin de Delaunay
Figura 21. Arista de la DT que no pertenece a GG.
Figura 22. Demostracin de planaridad de la Triangulacin de Delaunay.
Figura 23. Arista del UDG y Grafo de Disco Unidad
Figura 24. Aristas del grafo de Yao, con k=6, y Grafo de Yao
Figura 25. Aristas del Grafo para k=6, y Grafo
Figura 26. Grafo Half-Space proximal
Figura 27. Demostracin de cota inferior para la dilacin de HSP.
Figura 28. Regin de destruccin de r respecto a p.
Figura 29. Demostracin de Propiedad 2.
Figura 30. Vecindario basado en lunas con > 0
Figura 31. Grafos que derrotan al ruteo voraz
Figura 32. Demostracin de la Propiedad 1 del ruteo voraz
Figura 33. Triangulacin que derrota al Ruteo de Brjula
Figura 34. Visibilidad de tringulos en el Ruteo de Brjula
Figura 35. Demostracin de la Propiedad 1 del ruteo voraz-brjula
Figura 36. Camino del Ruteo de Voronoi
Figura 37. El Ruteo de Voronoi no es competitivo para todas las triangulaciones
Figura 38. Ruteo por Caras 1
Figura 39. Ruteo por Caras 2
Figura 40. Un mal grafo de entrada para el algoritmo ruteo por caras 2
Figura 41. Ruteo Greedy-Face-Greedy ( Ruteo Voraz y Ruteo por Caras 2)
Figura 42. p3 es destructor de t
Figura 43. Se aade un nuevo punto t a la triangulacin
Figura 44. Soportes inferior y superior
Figura 45. Tringulos que no cumplen la condicin de Delaunay
Figura 46. Flip de aristas
Figura 47. Paso a paso del test HSPG para un punto
Figura 48. Ruteo Voraz
Figura 49. Ruteo con Brjula
Figura 50. Ruteo Voraz-Brjula
Figura 51. Clase Geocomp
Figura 52. Clase Canvas
Figura 53. Clase TDel.
Figura 54. Clase Punto
Figura 55. Clase Arista
Figura 56. Herencia de la clase Arista
Figura 57. clase Arista_Circulo
Figura 58. clase Circulo_Circulo

iv

4
4
5
6
7
8
11
12
13
14
14
15
15
16
16
17
18
18
19
19
20
21
21
23
24
25
26
26
27
28
31
31
32
32
34
35
35
36
37
37
38
38
43
43
44
44
48
50
50
51
54
55
56
57
58
58
59
59

Figura 59. clase Arista_Semiplano


Figura 60. clase Arista_Angulo
Figura 61. clase Arista_Trazos
Figura 62. clase Arista_Sectores
Figura 63. clase Arista_Flecha
Figura 64. clase Arco
Figura 65. clase Linea
Figura 66. clase StateBar
Figura 67. clase Lista_Animacin
Figura 68. clase WEdge
Figura 69. clase WTrig
Figura 70. Clase Lista_Puntos
Figura 71. clase Lista_Rectas
Figura 72. clase Config
Figura 73. clase ColorDialog
Figura 74. clase ProRouting
Figura 75. Diagrama de clases. Relaciones de asociacin y generalizacin
Figura 76. Relaciones de herencia entre las clases de la aplicacin y Java
Figura 77. Aplicacin ProRouting
Figura 78. Men File
Figura 79. Men Edit
Figura 80. Men Execution
Figura 81. Men View
Figura 82. Barra de herramientas de grafos y ficheros
Figura 83. Barra de herramientas de ruteo y configuracin
Figura 84. Barra de estado
Figura 85. Ventana de configuracin
Figura 86. Ratios para el Grafo de Vecindad Relativa
Figura 87. Ratios para el Grafo de Gabriel
Figura 88. Ratios para la Triangulacin de Delaunay
Figura 89. Ratios para la triangulacin de Delaunay (2)
Figura 90. Ratios para el Grafo de Vecindad Relativa
Figura 91.Ratios para el Grafo de Gabriel
Figura 92. Ratios para la Triangulacin de Delaunay Restringida
Figura 93. Ratios para el Grafo de Yao
Figura 94. Ratios para el Grafo Theta
Figura 95. Ratios para el Grafo HSPG
Figura 96. Ratios del Grafo Theta lambda de 20 vrtices
Figura 97. Ratios del Grafo Theta-lambda de 40 vrtices
Figura 98. Ratios del Grafo Theta-Lambda de 60 vrtices

59
60
60
60
61
61
61
62
62
62
63
63
63
64
65
65
66
67
68
69
69
70
71
71
73
75
76
78
79
79
80
81
81
82
82
83
83
84
85
85

AGRADECIMIENTOS

Deseo dar las gracias:


A Gregorio Hernndez por la oportunidad de realizar este proyecto fin de
carrera y su atencin durante la tutela.
A mi familia y amigos por su apoyo durante la realizacin del proyecto.

vi

Captulo 1
INTRODUCCIN Y OBJETIVOS
El objetivo de este proyecto es la realizacin de una aplicacin software con
dos funciones principales; por una parte la construccin de grafos geomtricos
de proximidad, y por otra parte la capacidad de poder probar distintas
estrategias de bsqueda 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 vrtices 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, Triangulacin de Delaunay,...), que tienen aplicacin
en campos tan diversos como la visin por computador, anlisis espacial en
geografa o clasificacin de patrones entre otros.
Las estrategias de ruteo "online" se caracterizan por el desconocimiento de
gran parte de la geometra del grafo donde se van a utilizar, y tpicamente se
conoce slo informacin sobre el nodo origen, nodo destino y el nodo
actualmente visitado y sus adyacentes.
Este tipo de estrategias se utilizan en redes de computadores, robtica,
computacin distribuida y en muchas otras disciplinas.
Los algoritmos incluidos en la aplicacin son: Ruteo Voraz, Ruteo con Brjula,
Ruteo con Brjula Aleatorizado, Ruteo Voraz-Brjula, 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 aplicacin software ProRouting est basada en trabajos anteriores de los
compaeros de facultad David Ramos, Ruben Naranjo y Damin Serrano. Con
ProRouting (su nombre viene de Proximity Graphs & Online Routing) es posible
la construccin de un gran nmero de grafos de proximidad (Grafo de vecindad
dirigida, Arbol generador minimal, Grafo de Vecindad Relativa, Grafo de
Gabriel, Triangulacin incremental, Triangulacin de Delaunay, Triangulacin
de Delaunay Restringida, Triangulacin 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 utilizacin de los
algoritmos de ruteo anteriormente citados. Entre otras funciones tambin cabe
destacar la posibilidad de aadir aristas "extra" a los grafos, dibujo "manual" de
grafos, abrir y salvar grafos en fichero, configuracin de parmetros 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
captulo 1 se hace una introduccin a los grafos de proximidad y algoritmos de
ruteo online. En el captulo 2 se explican los conceptos tericos utilizados en el
proyecto. El captulo 3 recoge los aspectos de implementacin e integracin en
la aplicacin. El captulo 4 contiene un manual de usuario para la utilizacin de
la aplicacin. En el captulo 5 se hace un estudio comparativo del rendimiento
de los algoritmos de ruteo. Finalmente en el captulo 6 se recogen las
conclusiones.

-1-

Captulo 1

Introduccin y objetivos

1.1 Definiciones
DEF 1.1.1 Grafo geomtrico.
Un grafo geomtrico es el par G= ( V, A ) donde V es una coleccin de puntos
n
de R y A un conjunto de segmentos que unen estos puntos.
DEF 1.1.2 Grafo geomtrico plano.
Dado un grafo geomtrico G=( V, A ) ,si los segmentos de A solo intersecan en
extremos comunes, diremos que se trata de un grafo geomtrico plano.
DEF 1.1.3 Distancia.
Dado un conjunto V y un par de elementos (p,q) VxV, la distancia entre p y q
es cualquier funcin d(p,q) de VxV en R que cumple las siguientes propiedades
:
.no negatividad: d(p, q) 0, p, q V
.simetra: d(p, q) = d(q, p) , p, q V
.desigualdad triangular: d(p, q) d(p, r) + d(r, q) , p, q, r V
. p V, d(p, p) = 0
.Si p, q V cumple d(p, q)=0 , entonces p=q
DEF 1.1.4. Regin de influencia.
La regin de influencia de dos puntos u, v de un Grafo de Proximidad, es una
regin del plano que describe un vecindario de u y v. Si la regin de influencia
no contiene otros puntos distintos de u y v, significa que u y v estn lo
suficientemente cerca como para estar conectados por una arista.
DEF 1.1.5 Grafo de proximidad.
Sea G=( V, A ) un grafo geomtrico en Rn. Cada par de puntos (p,q) V x V
est asociado a un vecindario U p, q c Rn. Sea P una propiedad definida sobre
U. Un grafo de proximidad GU,P (V,A) definido por la propiedad P es un grafo en
el que el par de vrtices (p,q) A si y slo si U p, q tiene la propiedad P.
En algunos grafos de proximidad se asocia un vecindario a un slo punto en
lugar de a un par de puntos.
DEF 1.1.6 Camino entre dos vrtices.
Dado un grafo G=( V, A ) , un camino entre dos vrtices s, t V es una
secuencia de vrtices c =[s=v0, v1, ..., vn=t] tal que los pares (vi, vi+1) A, con i
< n.
DEF 1.1.7 Ruteo online (Online routing).
Problema de bsqueda de caminos entre dos vrtices de un grafo, en el que
slo se conoce informacin 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 adems informacin sobre un cierto
nmero de vrtices visitados anteriormente, dependiendo del tamao de la
memoria. Todas las estrategias de ruteo de este trabajo son de este tipo.

-2-

Captulo 1

Introduccin y objetivos

DEF 1.1.8 Un grafo derrota a un algoritmo de ruteo si existe un par de


vrtices s,t para los que el algoritmo no es capaz de encontrar un camino.

1.2 Motivacin
Existen multitud de disciplinas que aplican de forma prctica 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 tambin con los
problemas de ruteo. Los tres ltimos son ejemplos de ruteo online.

1.2.1. Poligonizaciones
En diversos dominios, pero sobre todo en los Tratamiento de la Imagen y
Reconocimiento de Formas se ha tratado el problema de establecer
propiedades que definan conjuntos finitos de puntos para su clasificacin o
comprensin. Por ejemplo en el campo de la percepcin computacional se
pretende unir pares de puntos de forma que el grafo obtenido sea
perceptualmente significativo.
Para conseguir estos objetivos, se utilizan grafos geomtricos 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 polgono simple. A esto se le llama
poligonizacin 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 caractersticas dadas. Si el polgono que se emplea es
simple, el grafo puede calcularse ms rpidamente. Entre los grafos
geomtricos ms utilizados para dar forma a las nubes de puntos podemos
citar el Grafo del vecino ms prximo, el rbol generador mnimo, el Grafo de
vecindad relativa, el Grafo de Gabriel o la Triangulacin de Delaunay entre
otros.
Una poligonizacin adems de ser un intento de capturar la forma de una nube
de puntos, es tambin un preprocesamiento que permite acelerar el clculo de
diversas estructuras computacionales. Cuando se construye una poligonizacin
normalmente se pretende que tenga ciertas propiedades dirigidas a capturar
algn aspecto morfolgico, o a obtener un buen comportamiento computacional
frente a determinadas situaciones. Por ejemplo, pueden obtenerse
poligonizaciones montonas o estrelladas en tiempo ptimo O (n log n), que
son muy empleadas para la localizacin de puntos.

-3-

Captulo 1

Introduccin y objetivos

Figura 1. Poligonizaciones montona y estrellada

1.2.2 Reconstruccin de un modelo tridimensional a partir de una nube de


puntos.
Relacionado con el ejemplo anterior de poligonizacin vamos a ver otro
ejemplo en el campo de la Informtica Grfica.
Cada da tienen ms importancia las aplicaciones informticas que hacen uso
de representaciones tridimensionales de la realidad y en los ms diversos
mbitos (ingeniera, arquitectura, medicina, ocio,...). El proceso de
reconstruccin 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 tambin se le pueden aadir otras propiedades
como textura o color para dar mayor sensacin de realidad a la representacin.
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 mtodos habituales (scanner lser 3D, tcnicas de
visin 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. Adquisicin 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 (tringulos, cuadrados,...) uniendo estos puntos. Una forma rpida y
eficaz de realizar esto consiste en la construccin de un grafo de proximidad
(en R3 ) ; habitualmente se usan las triangulaciones, en especial la
triangulacin de Delaunay Restringida.

-4-

Captulo 1

Introduccin y objetivos

Figura 3. Reconstruccin del modelo mediante una triangulacin de Delaunay.

1.2.3. El problema generalizado de diseo de una red.


Dado un conjunto S de n puntos, queremos disear 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 geomtricas de la red tienen
importancia entonces usaremos un grafo geomtrico, en el que el peso de las
aristas es la distancia Eucldea entre los vrtices que unen. Evidentemente
pueden construirse muchos tipos de grafos para disear la red, por ejemplo el
grafo completo Kn , pero tiene la desventaja de que el nmero de aristas es O
(n2 ). Asumimos entonces que queremos construir grafos con pocas aristas. El
nmero mnimo de aristas que puede tener un grafo conexo es n -1, como
queda demostrado en [7], y que adems tiene estructura de rbol, es decir, es
acclico y conexo.
A continuacin 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 lnea 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 ms o
menos esa distancia exacta, pero si no existe entonces sera 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, sera deseable encontrar un subconjunto de las carreteras
que asegure que se puede ir de una ciudad a otra utilizando slo 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 sera muy inferior ya que slo se
actualizaran un nmero pequeo 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-

Captulo 1

Introduccin y objetivos

puntos cualesquiera. En el cpitulo 2 veremos cmo 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 captulo 3
veremos algunas estrategias de ruteo.
1.2.4. Salida de un laberinto
Supongamos un robot mvil 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 slo conoce el punto donde se encuentra
la salida, y debe decidir en cada interseccin de pasillos el camino que debe
seguir para encontrar la salida. Suponemos tambin que el robot dispone de
algn 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 geomtrico en el que los pasillos son las aristas y las
intersecciones de pasillos son los vrtices. En este tipo de laberintos el grafo
resultante tendr forma de rbol, pero en otros tipos de laberintos, por ejemplo
los que adems tienen habitaciones y puertas, tendrn formas ms
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 debera utilizar un
algoritmo de ruteo que garantice que va a encontrar el destino. En el laberinto
de la figura en concreto, bastara con utilizar la regla de la mano derecha (o
izquierda) siguiendo las paredes del laberinto para encontrar la salida (figura
5), pero fallara para laberintos ms complicados. Una estrategia ms
acertada sera por ejemplo Face Routing o Greedy-Face-Greedy, que como
veremos en el captulo de estrategias de ruteo tienen asegurado el xito
siempre que el grafo sea plano y conexo.

-6-

Captulo 1

Introduccin y objetivos

Figura 5. Solucin del laberinto siguiendo la regla de la mano derecha.

1.2.5 Mallas propensas a fallos


Una malla nxn M= (V,A) es un grafo geomtrico en el cual el conjunto de
vrtices V es :

Una arista v1v2 esta presente en A si y slo si la distancia d(v1,v2) =1 , donde


d(x,y) es la distancia Eucldea entre x e y. Las mallas son una red de
interconexin estudiada ampliamente en el campo de la computacin paralela.
El algoritmo popular de ruteo en mallas entre dos vrtices mueve el paquete
primero a la columna correcta (coordenada x) y despus a la fila correcta
(coordenada y).
Este sencillo algoritmo funciona bien suponiendo que todos los elementos de
proceso (vrtices) y de comunicacin (aristas) de la malla funcionan
correctamente. Sin embargo, a veces estos elementos tienen fallos y este
algoritmo de ruteo podra fallar. Es ms, estos fallos son impredecibles y los
vrtices podran no tener informacin acerca de qu vrtices o aristas de la
malla fallan. En este caso, el problema de ruteo entre dos vrtices de M se
convierte en un problema de ruteo online en un grafo geomtrico plano.

-7-

Captulo 1

Introduccin y objetivos

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

1.2.6. Robots mviles cooperativos y redes inalmbricas


En los ltimos aos ha surgido un creciente inters por los equipos multi-robot
y las comunicaciones inalmbricas. Varios robots pueden realizar un conjunto
de tareas de forma ms eficiente que uno slo. Suele ser necesario que los
robots compartan informacin, y un mecanismo idneo para este fin es una
red ad hoc inalmbrica. Existe un campo de investigacin especfico que se
ocupa del encaminamiento en redes cuyos nodos conocen su posicin
geogrfica relativa (encaminamiento geogrfico). Las redes mviles ad hoc
(tambin conocidas como MANETs, mobile ad hoc networks) son redes
inalmbricas sin una infraestructura prefijada. Estn formadas por nodos que
pueden actuar como origen y destino de una comunicacin, pero tambin
como enrutadores para mensajes entre otros nodos de la red. Los nodos
pueden ser mviles 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
energa. La movilidad y disponibilidad de los nodos introduce variabilidad en
las rutas dentro de la red, configuraciones cambiantes, topologas
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 especfico de red ad hoc : aquella formada por
equipos multi-robot mviles equipados con capacidad de comunicacin. Dada
la circunstancia de que usualmente los robots necesitan alguna forma de
localizacin para realizar otras actividades (exploracin, persecucin, patrulla,
recoleccin, SLAM), nos encontramos por tanto con un potencial campo de
aplicacin para las tcnicas de encaminamiento geogrfico.
Los algoritmos clsicos de encaminamiento en redes cableadas hacen uso de
asunciones que no se cumplen en las MANETs. Dos de las premisas ms
notorias que no se verifican son la inmovilidad de los nodos y la simetra del
enlace. Esta vulneracin de propiedades hace que los algoritmos
tradicionales, que no fueron diseados para tales circunstancias, no sirvan
para redes ad hoc.

-8-

Captulo 1

Introduccin y objetivos

Algunas caractersticas deseables para los algoritmos de encaminamiento en


MANETs seran: simplicidad, ausencia de bucles, robustez, escalabilidad y
entrega garantizada.
En las redes de robots mviles suele ser necesaria una fase de actualizacin
de posicin, 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 continuacin se procede al descubrimiento de la ruta y la transmisin de
datos.
Para encontrar el siguiente nodo al que transmitir la informacin 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 ms simple este algoritmo
propone como siguiente nodo aquel que se acerca ms al nodo
destino. En caso de no existir ningn vecino apto, el
encaminamiento falla y el paquete se pierde o se cambia de
algoritmo. Por tanto este algoritmo no tiene garanta de entrega, por
lo que suele usarse con modificaciones. La aplicacin ProRouting
implementa algunos de estos algoritmos: Ruteo Voraz, Ruteo con
Brujula y Ruteo Voraz-Brjula entre otros.

Algoritmos de Ruteo por Caras: como hemos visto los algoritmos


voraces tienen el defecto de quedarse parados en mnimos 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 segn la regla de la mano derecha hasta
un nodo que tambin pertenece a otra cara ms cercana al nodo
destino, cambiando de cara en ese punto. Este nodo ms 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 caractersticas, 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 garanta de xito. Existen Algoritmos
hbridos que combinan el ruteo voraz y el ruteo por caras que
intentan paliar los defectos de cada estrategia. La aplicacin
ProRouting tambin implementa un algoritmo de estas
caractersticas, el Ruteo Voraz-Caras-Voraz.

-9-

Captulo 2
GRAFOS DE PROXIMIDAD, SPANNERS Y ESTRATEGIAS DE RUTEO
2.1. Grafos de Proximidad y Spanners
En el apartado de definiciones del captulo anterior se daba una definicin
formal de grafo de proximidad. De una manera ms informal podemos decir
que un grafo de proximidad es un tipo de grafo geomtrico en el que las aristas
que unen puntos del grafo se han establecido conforme a algn 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 utilizacin en problemas de ruteo: los
spanners. Los spanners aproximan el grafo Eucldeo completo de un conjunto
de n vrtices, pero slo con un nmero reducido de aristas lineal sobre el
nmero de vrtices. Otras propiedades deseables de los spanners tamben
seran un grado de adyacencia bajo en sus nodos y planaridad.
2.1.1. t-Spanner.
Dado un grafo geomtrico 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 mxima t veces la distancia d(u, w):
u, w V p= [ u= v0, v1, ..., vn=w ] ,

| p | t d (u, w)

2.1.2. Dilacin (Stretch Factor or Dilation)


Sea G= (V, A) un grafo geomtrico, diremos que la dilacin de G es el nmero
real t ms pequeo para el que G = (V, A) es un t-spanner de G.
2.1.3. t-Spanner dbil (weak t-Spanner).
G es un t-spanner dbil si para todo u,w V, existe un camino p de u a w
dentro de un crculo de centro u y radio t d (u, w).
2.1.4. (t, )- power spanner.
Un (t, )- power spanner es un grafo G=( V, A ) que cumple :
u, w V p= [ u= v0, v1, ..., vn=w ] , con vivi+1 A, R ,
d (u, w)

|p| t

es decir, la energa consumida en el camino de u a w tiene un coste mximo


t d (u, w) , suponiendo que el coste de energa del camino de u a w es la
suma de las longitudes de la aristas elevada a un cierto nmero : |p| .

- 10 -

Captulo 2

Grafos de proximidad, spanners y estrategias de ruteo

2.1.5. t-Spanners , t-Spanners dbiles y (t, )-power spanners


Teorema 1
Todo t-spanner es un tambin un t-spanner dbil.
Demostracin:
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 crculo de radio t d(u,
w) con centro en u.
La propiedad inversa no se cumple, es decir , no todo t-spanner dbil es un tspanner.
Terorema 2
Todo t-spanner es tambin un (t, )- power spanner para todo 1 y un cierto
t.
Demostracin:
Sea G un t-spanner , y Popt = (v1,.,vn) el camino ptimo de energa. Para el
coste de energa de Popt usaremos la notacin
n-1

Energa( Popt) = d(vi,vi+1) , siendo d(x,y) la distancia Eucldea entre x,y.


i=1

Figura 7. Demostracin de Teorema 2.

Popt no necesariamente contiene las aristas de G. Reemplazamos cada arista


(vi, vi+1) de Popt por un camino Pi contenido en G. Por la propiedad de spanner
de G tenemos | Pi | t d(vi, vi+1) , y entonces Energa(Pi) ( t d (vi, vi+1)).
El camino resultante P = (P1,, Pm) tiene el siguiente coste de energa:
n-1

n-1

n-1

i=1

i=1

i=1

Energa (P) = Energa (Pi) (t d(vi, vi+1)) = t d(vi, vi+1)

- 11 -

Captulo 2

Grafos de proximidad, spanners y estrategias de ruteo

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


Al igual que para los t-spanner dbiles, tampoco se cumple la inversa, existen
(t, )- power spanners que no son t-spanners.

2.2. Grafos de proximidad


Cada uno de los grafos de proximidad estudiados en este trabajo tiene como
conjunto de vrtices a puntos de R2, pero sus propiedades y algoritmos de
construccin en general pueden extenderse a otras dimensiones.
A continuacin vamos a ver la definicin y algunas propiedades de los grafos
de proximidad que se han incluido en el proyecto.
2.2.1. Grafo de vecindad dirigida (Nearest point graph, NPG)
Cada punto del grafo se une con el ms cercano a l, tomando como distancia
la habitual eucldea en R2:
_________________
d (p, q) = (p x - q x)2 + (p y - q y)2 con p, q R2 y p=(p x, p y) , q= (q x, q y)

Figura 8. Grafo de Vecindad dirigida.

Se trata de un grafo dirigido, como se puede ver en el dibujo no siempre es


conexo.
2.2.2. rbol Generador Mnimo ( 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 eucldea , EMST), un rbol generador
mnimo de G es un subgrafo conexo, que es rbol (no contiene ciclos) y la
suma de sus aristas es la mnima posible. Un grafo puede tener varios MST,
pero en ese caso todos tienen el mismo coste mnimo.

- 12 -

Captulo 2

Grafos de proximidad, spanners y estrategias de ruteo

Figura 9. rbol generador mnimo

Propiedad 1. Un rbol Generador Mnimo de un conjunto de puntos S es la red


ms corta que conecta todos los puntos de S (es un grafo conexo).
Esta propiedad es evidente a partir de la definicin de rbol Generador Mnimo.
De esta forma, un MST es bueno en el sentido de que tanto el nmero de
aristas como su peso son los mnimos.
Propiedad 2. El rbol Generador Mnimo de un conjunto de puntos de R2 es un
subgrafo de la Triangulacin de Delaunay (2.2.7) .
Demostracin:
Sea T el MST de un conjunto de puntos P, w(T) la suma de los pesos de todas
sus aristas (la distancia Eucldea entre los vrtices para P R2) y a, b dos
vrtices de P tales que ab es una arista de T.
Supongamos que ab no es una arista de la Triangulacin de Delaunay. Esto
implica que no existe ningn crculo que pase por a y b, y en particular el
crculo cuyo dimetro 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 subrboles.
Asumamos que c queda en el mismo subrbol que a. Eliminamos ahora la
arista ab del MST y aadimos 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 dimetro del crculo, lo que implica
que | bc | < | ab | . Esto contradice la hiptesis de que T es el MST, por lo que
se confirma que ab es una arista de la Triangulacin de Delaunay y se
completa la demostracin.

- 13 -

Captulo 2

Grafos de proximidad, spanners y estrategias de ruteo

Figura 10. Demostracin de la Propiedad 2.

2.2.3. Grafo de Vecindad Relativa ( Relative Neighborhood Graph, RNG)


El grafo de vecindad relativa es un subgrafo del grafo de Gabriel. Una arista
pertenece al grafo RNG si los puntos de sus extremos son vecinos relativos, es
decir, al interseccionar dos circunferencias de centro los extremos de la arista
y radio la distancia entre ellos , la figura geomtrica que se forma en la
interseccin ( tiene forma de luna, por lo que tambin se conoce este grafo
como grafo de luna) no contiene en su interior ningn otro punto.

Figura 11. Vecinos relativos y Grafo de Vecindad Relativa

Propiedad 1. El rbol Generador Mnimo de un conjunto de puntos de R2 es un


subgrafo del Grafo de Vecindad Relativa .
Demostracin:
Sea T el MST de un conjunto de puntos P, w(T) la suma de los pesos de todas
sus aristas (la distancia Eucldea entre los vrtices para P R2) y a, b dos
vrtices 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 subrboles. Digamos que c se
encuentra en el mismo subrbol que a, entonces podemos reemplazar la arista
ab por la arista bc, obteniendo as un rbol de menor peso, lo cual est en
contradiccin con la hiptesis de que T es el MST. Por tanto podemos afirmar
que ab pertenece al RNG.

- 14 -

Captulo 2

Grafos de proximidad, spanners y estrategias de ruteo

Figura 12. Demostracin 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 vrtices),
el RNG es tambin conexo.

2.2.4. Grafo de Gabriel (Gabriel Graph, GG)


El grafo de Gabriel es un subgrafo de la triangulacin de Delaunay. La
condicin de proximidad de dos vrtices del grafo se basa en que no debe
quedar ningn otro punto dentro de la circunferencia que queda definida por el
dimetro que forman los dos puntos. Si se cumple esta condicin entonces la
arista pertenece al grafo.

Figura 13. Vecinos de Gabriel y Grafo de Gabriel.

Propiedad 1. El Grafo de Vecindad Relativa de un conjunto de puntos P R2


es un subgrafo del Grafo de Gabriel de P.
Demostracin:
Si uv es una arista del RNG entonces la luna formada por los crculos de
centros u y v, y radio | uv | es vaca (no contiene otros puntos de P). Si esta
luna es vaca entonces tambin lo ser el crculo cuyo dimetro es uv, por lo
tanto uv GG.

- 15 -

Captulo 2

Grafos de proximidad, spanners y estrategias de ruteo

Figura 14. Demostracin de RNG GG

Propiedad 2. El Grafo de Gabriel es un grafo conexo.


Al ser el RNG conexo como demostramos en 2.1.4. y ser ste un subgrafo del
GG , entonces el GG es tambin conexo.
Propiedad 3. Dado un conjunto de puntos P R2 , y sea n el nmero de
puntos de P, la dilacin del Grafo de Gabriel puede ser mayor que n0.11.
Demostracin:
Consideremos la estructura de la figura 15. Como se puede deducir de la
figura, la dilacin de este Grafo de Gabriel es:

si es lo suficientemente pequeo.

Figura 15. Demostracin de Propiedad 3.

Reemplazando recursivamente cada arista por una estructura como la de la


figura en d niveles, la dilacin tiene un valor de al menos 1.17d. Supongamos
que tenemos n nodos, con n mltiplo de 4, entonces se puede construir una
estructura con d= log 4 n niveles. Esto da lugar a una dilacin de :

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


ptimo.
- 16 -

Captulo 2

Grafos de proximidad, spanners y estrategias de ruteo

Demostracin:
Sea V un conjunto de puntos del plano, u, w V un par de puntos
cualesquiera y p su camino de energa ptima. Consideremos una arista xy
arbitraria de p. Supongamos que existe un nodo v Sx, y , siendo Sx, y la esfera
abierta de dimetro | xy | a travs 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 , reduciramos su energa ,


lo cual contradice la hiptesis de que p sea un camino de energa ptima. Por
lo tanto no puede haber un nodo en Sx, y , y por tanto xy debe ser una arista del
Grafo de Gabriel. De esta forma p debe ser un camino del Grafo de Gabriel, lo
que prueba la propiedad.
A pesar de ser un power spanner ptimo, el Grafo de Gabriel tiene el problema
de que el grado de adyacencia de los nodos puede se alto.
2.2.5. Triangulacin incremental (Incremental triangulation, IT )
Los algoritmos de triangulacin incremental construyen el grafo tomando los
puntos uno a uno de la nube de puntos y los va integrando en el grafo,
aadiendo aristas de tal forma que cada vez que se aade un punto al grafo, el
grafo resultante es una triangulacin, y los puntos que se van aadiendo al
grafo no modifican las aristas ya existentes. Las triangulaciones incrementales
no tienen buenas propiedades geomtricas desde el punto de vista de los
grafos de proximidad, ya que suele haber tringulos con ngulos pequeos y
aristas largas que unen puntos lejanos entre si; sin embargo tienen la ventaja
de ser una forma rpida de construir triangulaciones.

Figura 16. Triangulacin incremental

2.2.6. Diagrama de Voronoi (Voronoi Graph, VG )


El Diagrama de Voronoi de un conjunto de puntos del plano es una divisin del
plano en regiones convexas (tantas como puntos). Cada punto se encuentra
dentro de una regin cuyos puntos estn ms cerca de ese punto que de
cualquier otro de la nube de puntos. Las regiones quedan delimitadas por
segmentos de lnea que equidistan de los dos puntos asociados a las dos
regiones vecinas.

- 17 -

Captulo 2

Grafos de proximidad, spanners y estrategias de ruteo

Figura 17. Diagrama de Voronoi

Entre las propiedades del Diagrama de Voronoi podemos destacar:


Cada vrtice es centro de una circunferencia que pasa por al menos tres
vrtices del diagrama.
Pueden trazarse circunferencias con centro en los puntos pertenecientes
al segmento que divide dos regiones adyacentes, que pasen por los dos
vrtices asociados a cada regin y que no contengan ningn otro vrtice
en su interior.
2.2.7. Triangulacin de Delaunay (Delaunay triangulation, DT)
La triangulacin de Delaunay es ampliamente utilizada en disciplinas tan
diversas como la Informtica Grfica, Reconocimiento de Formas, Estadstica,
Geografa y Biologa entre otras, debido a sus propiedades geomtricas.
Los tringulos formados minimizan el tamao de las aristas y maximizan los
ngulos. Otra ventaja de utilizar esta triangulacin es la rapidez en su tiempo
de cmputo; su complejidad es de O(n log n).
La Triangulacin de Delaunay podemos definirla de varias maneras:
1. Dado un conjunto de puntos P del plano, una triangulacin T de P, y sea
A(T) = ( 1, 2 , 3, , m ) el vector de ngulos de la triangulacin ,
podemos definir la triangulacin de Delaunay como la triangulacin con
el vector de ngulos mayor de entre todos los posibles si se ordenan
lexicogrficamente.

Figura 18. Dos triangulaciones distintas y sus ngulos interiores.

2. La Triangulacin de Delaunay es el grafo dual del Diagrama de Voronoi.


El Diagrama de Voronoi y la triangulacin de Delaunay tienen la
propiedad de ser duales: la triangulacin de Delaunay puede obtenerse

- 18 -

Captulo 2

Grafos de proximidad, spanners y estrategias de ruteo

a partir del Diagrama de Voronoi con tan slo 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 Triangulacin de
Delaunay; cada segmento del diagrama es un segmento de la mediatriz
de cada arista de la triangulacin.

Figura 19. Dualidad Diagrama de Voronoi-Triangulacin de Delaunay

3. La triangulacin de Delaunay tiene las siguientes caractersticas


derivadas del Diagrama de Voronoi y que la diferencian de otras
triangulaciones:
Los vrtices de los tringulos de la DT tienen la propiedad de
determinar una circunferencia que no contiene en su interior
ningn otro vrtice distinto de los del tringulo.
Dos vrtices determinan una arista de la DT si y slo si es posible
encontrar una circunferencia que pase por los dos vrtices y no
contenga en su interior ningn otro vrtice.
De las dos propiedades anteriores se deduce otra propiedad que
nos permite definir una triangulacin de Delaunay:
Una triangulacin es de Delaunay si y slo si la circunferencia
circunscrita (de centro el punto de corte de las mediatrices) en
cada uno de sus tringulos no contiene ningn otro vrtice en su
interior.

Figura 20. Tringulo perteneciente a DT y Triangulacin de Delaunay

- 19 -

Captulo 2

Grafos de proximidad, spanners y estrategias de ruteo

Propiedad 1. La Triangulacin de Delaunay es un supergrafo del Grafo de


Gabriel.
Demostracin: por definicin del Grafo de Gabriel, si una arista uv es del GG
entonces la circunferencia de dimetro uv y que pasa por u y v, y no contiene
ningn punto en su interior. De la propiedad de que dos vrtices determinan
una arista de la DT si y slo si es posible encontrar una circunferencia que
pase por los dos vrtices y no contenga en su interior ningn otro vrtice,
podemos afirmar que la arista uv pertenece a la triangulacin de Delaunay, ya
que esta circunferencia es la dimetro 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 Triangulacin de Delaunay de un conjunto P R2 es un


supergrafo del Grafo de Gabriel, del Grafo de Vecindad Relativa y del rbol
Generador Mnimo , y adems estn relacionados de la siguiente manera :
MST RNG GG DT
Demostracin: 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 relacin MST RNG GG DT.
Propiedad 3. La Triangulacin de Delaunay es un grafo plano, al igual que el
Grafo de Gabriel, el Grafo de Vecindad Relativa y el rbol Generador Minimal.
Demostracin:
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 ningn otro vrtice
dentro de la circunferencia de centro x que pasa por u y v.Tambin se cumple
que el segmento xu est dentro de la regin del Diagrama de Voronoi asociada

- 20 -

Captulo 2

Grafos de proximidad, spanners y estrategias de ruteo

a u, y el segmento xv dentro de la regin 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 cortara con xu
o xv. Por la misma razn la arista uv se cortara con yp o yq. Esto significara
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 triangulacin de Delaunay es un grafo plano.

Figura 22. Demostracin de planaridad de la Triangulacin de Delaunay.

El MST, RNG y GG tambin son planos al ser subgrafos de ste.


Propiedad 4. La Triangulacin de Delaunay de un conjunto de puntos V del
plano es un t-spanner del Grafo Completo K(V), y tiene una dilacin no superior
a t= ( 4 3 ) / 9 2,42 .
En [14] ,Keil y Gutwin establecen una cota superior para la dilacin de la
Triangulacin de Delaunay t= ( 4 3 ) / 9 2,42 , aunque se conjetura que
esta cota puede ser 2 o menor.
2.2.8. Grafo de disco unidad (Unit Disk Graph, UDG)
El Grafo de Disco Unidad esta formado por aristas cuyos extremos son vrtices
separados como mximo 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

- 21 -

Captulo 2

Grafos de proximidad, spanners y estrategias de ruteo

Este tipo de grafo es muy utilizado para modelizar redes inalmbricas en las
que dos nodos slo pueden comunicarse si la distancia que los separa es como
mximo la unidad, entendiendo por unidad el radio de alcance de cada nodo.
Suele utilizarse en interseccin con otros grafos planos para obtener
planaridad.

2.2.9. Grafo de Delaunay Restringido (Restricted Delaunay


Graph, RDG )
Este grafo es el resultado de la interseccin de la triangulacin de Delaunay y
el Grafo de Disco Unidad: DT UDG, lo que quiere decir que el grafo
resultante es igual que la Triangulacin de Delaunay pero conservando slo las
aristas de tamao menor o igual que la unidad. Al ser subgrafo de DT es un
grafo plano.
Suele utilizarse en tareas de triangulacin de superficies, mtodos de
elementos finitos, modelado de terrenos y reconstruccin 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 tambin es plano.
Propiedad 2. Si el grafo de Disco Unidad es conexo, entonces el Grafo de
Delaunay Restringido tambin lo ser.
Demostracin:
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 ms corta, que por pertenecer al UDG cumple que | uv | 1. Por tanto u y v
son los nodos ms cercanos a un cierto punto x (no es un nodo) punto medio
de la arista uv , porque si existiese un nodo w ms cercano a x se cumplira:
| uv | < | ux | + | xw | < | ux | + | xv | = | uv |
contradiciendo la definicin 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 suposicin de que las dos partes estn desconectadas.
Propiedad 3. RDG es un t-spanner Eucldeo de la Triangulacin de Delaunay,
y tiene una dilacin
t= (1+ 5 / 2 ) 5,08 .
Demostracin:
Es suficiente con probar que dado RDG= (V,A) y un par de puntos u, v V, si
su distancia Eucldea es d 1, entonces existe un camino en RDG que conecta
ambos puntos y cuya longitud total es cd. 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 Triangulacin

- 22 -

Captulo 2

Grafos de proximidad, spanners y estrategias de ruteo

de Delaunay que cae enteramente dentro del crculo de dimetro uv y cuya


longitud no es mayor que
(1+ 5 / 2 ) d . Para todo par de puntos dentro del crculo de dimetro uv su
distancia es como mximo d 1, por lo tanto, todas las aristas del camino son
aristas de la Triangulacin de Delaunay y que tambin estn en RDG.
Propiedad 4. RDG es un t-spanner Eucldeo 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 topolgico como Euclideo del Grafo de Disco
Unidad.

2.2.10. Triangulacin Voraz (Greedy Triangulation, GT )


El nombre de Voraz que recibe esta triangulacin se debe a su mtodo de
construccin; las aristas se van aadiendo al grafo una a una en orden
creciente de tamao, con la salvedad de que una arista no puede cortar a otra
ms corta (ya aadida al grafo).
Una de las utilizaciones de la Triangulacin Voraz es como aproximacin a la
Triangulacin de Peso Mnimo (triangulacin que minimiza la suma total de las
longitudes de las aristas), para la que no existen algoritmos eficientes en su
construccin.

2.2.11. Grafo de Yao (Yao Graph, YG )


El Grafo de Yao YGk(V) , con k 4 entero, es el grafo que resulta de unir cada
nodo v de la nube de puntos de R2 con el nodo ms 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

- 23 -

Captulo 2

Grafos de proximidad, spanners y estrategias de ruteo

Propiedad 1. El Grafo de Yao de un conjunto de puntos V R2 es un


supergrafo del Arbol Generador Mnimo de V.
Demostracin:
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 probara la propiedad ya que podemos realizar esta operacin
repetidas veces sobre T hasta que todas las aristas de T sean de E tambin.
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
estn dentro del sector k centrado en el punto v, y existe un vecino u ms
cercano a v en la regin 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 subrboles disjuntos
con v y w en distinto subrbol. Ahora u y w deben estar en el mismo subrbol.
Si no fuese as , uw sera una arista ms corta que vw conectando los dos
subrboles contradiciendo el hecho de que T es un MST. Por tanto u y w estn
en el mismo subrbol, y aadiendo 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 dilacin mxima de 1 / ( 1 2sen ( / 2)) .
En [23] Scheideler da una demostracin detallada de esta propiedad de
spanner del Grafo de Yao.
2.2.12. Grafo ( -Graph, G)
El Grafo GK (V) es una variacin del Grafo de Yao; su definicin es
exactamente igual con el nico cambio de que cada vrtice v no se une con el
ms cercano de cada sector, sino con el vrtice cuya proyeccin ortogonal
sobre el semieje que separa cada regin (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

- 24 -

Captulo 2

Grafos de proximidad, spanners y estrategias de ruteo

2.2.13. Grafo Half-Space proximal ( Half-Space Proximal Graph, HSPG)


Dado un subconjunto de puntos del plano V R2 y dos puntos cualesquiera p,q
V, la arista dirigida pq pertece al Grafo Half Space Proximal si no existe un
punto r V que cumpla estas condiciones:
1. | pr | < | pq |
2. existe una arista de p a r
3. q est ms 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 interseccin con un Grafo de Disco
Unidad. Si el UDG es conexo entonces el HSPG tambin lo ser.
Propiedad 1. Si G es un Grafo de Disco Unidad conexo entonces un rbol
Generador Mnimo de G es un subgrafo de HSP(G).
Demostracin :
Sea G un UDG y T el MST(G) que contiene el nmero mximo 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 ms cortas que uv o d(u, v) = d( u, w) y vw es ms 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 aadiendo uw
obtenemos un arbol generador del mismo o menor coste que contiene una
arista ms de HSP(G), lo cual es una contradiccin. Si el camino p existe desde
u entonces eliminando uv de T y aadiendo wv obteniendo un rbol generador
de menor coste, tambin una contradiccin.
Propiedad 2. El grafo HSP tiene una dilacin de al menos 3 - .
En [4] Chvez et al. definen el grafo HSP como un t-spanner con una dilacin
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 dilacin de 3 - :
Demostracin:
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

- 25 -

Captulo 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 ms corto entre p y q en el grafo HSP es uno de estos caminos, la
dilacin es 3(1-) / |pq| = 3(1-) = 3 - .

Figura 27. Demostracin de cota inferior para la dilacin de HSP.

2.2.14. Familia de grafos G (G Family Graph, G)


Basndose 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
parmetros y . El grafo dirigido G es el grafo que tiene a P como conjunto
de vrtices y en el que cada arista pq pertenece a G(P) si y slo 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. Regin de destruccin 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 lnea pr de bisector. debe valer
0 < < 1, y determina un -semi-plano(p,r) a una distancia |pr| / 2 de p y cuya
lnea que divide los dos semiplanos es perpendicular a pr.
La regin de destruccin K(p, r) de r respecto de p, es la interseccin del
-cono y el -semiplano.

- 26 -

Captulo 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 demostracin detallada, por induccin 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 ).
Demostracin:
Sean pq y pr dos aristas del grafo G.. Sin prdida de generalidad, |pq| |pr|.
Sea l la lnea 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. Demostracin de Propiedad 2.

2.2.15. Familia de Grafos -Skeleton (


-Skeleton Graphs, SG )
Los -Skeleton son una familia continua de grafos de proximidad. Estos grafos
estn definidos por un parmetro real positivo. Dado un conjunto de puntos S,
dos puntos x , y son -vecinos en S si el vecindario N(x,y,) no contiene
ningn 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 interseccin de dos crculos 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.
- 27 -

Captulo 2

Grafos de proximidad, spanners y estrategias de ruteo

(0,1]
Definimos N(x,y,) como la interseccin de dos crculos de radio d(x,y)/ (2)
que pasan por x e y. Mientras se aproxima a 0, N(x,y,) se aproxima a la
lnea 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 triangulacin de peso


mnimo para > 1/sen k 1.17682 , siendo k= tan -1( 3 / ( 2 3)) / 3.1
En [5] Cheng y Xu dan una extensa demostracin de cmo para valores de
> 1.17682 el -skeleton correspondiente es subgrafo de la MWT.
Propiedad 2. Todo -skeleton definido sobre un conjunto V de n vrtices y con
0 < < 3 / 2 0.866025 , tiene una dilacin O(nc), siendo c < 1 una constante
que depende de y cuyo lmite tiende a 0 cuando tiende a 0.
Ver [9] para una demostracin detallada de la propiedad.

- 28 -

Captulo 2

Grafos de proximidad, spanners y estrategias de ruteo

2.3. Estrategias de ruteo


En este apartado vamos a hacer una pequea clasificacin de los algoritmos
de ruteo y una descripcin de los algoritmos que han sido objeto de estudio.
En general, los algoritmos se utilizan sobre grafos planos, ya que para muchos
de ellos slo se tiene garanta de xito si el grafo es plano.
2.3.1. Clasificacin 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 vrtice v depende slo de
v y sus adyacentes N(v). Podemos definir A mediante una funcin de
transicin de la forma:
: [ R2, (R2)*, R2 ] R2
El primer argumento de corresponde al vrtice 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 prximo en ser visitado.
Si definimos i como:

El algoritmo A tiene xito en encontrar un camino de s a t si y slo si


existe un i 0 tal que i (s, t) = t .
La caracterstica que distingue los algoritmos sin memoria es que si
visitan el mismo vrtice 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
vrtice visitado desde un vrtice v es slo funcin de v, N(v) y k bits
aleatorios r. La funcin de transicin es de la forma:
: [ R2, (R2)*, R2 , {0,1}k ] R2
Los tres primeros argumentos y la salida son iguales que en el caso a),
el cuarto representa una cadena aleatoria de k bits.
Decimos que un algoritmo aleatorizado sin memoria falla cuando la
probabilidad de que alcance el destino t cuando comienza desde s es 0.
Podemos definirlo ms formalmente:

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


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

- 29 -

Captulo 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 vrtice
visitado despus del vrtice v, es funcin slo de v, t, N(v), y M, donde M
es una memoria de tamao k que contiene informacin acerca de
vrtices visitados previamente. La funcin de transicin de A es de la
forma:
: [ R2, (R2)*, R2 , k ] R2
Los tres primeros argumentos y la salida son los mismos que para los
algoritmos a) y b). El cuarto argumento representa la memoria usada por
el algoritmo. El conjunto es el alfabeto de elementos representables
por una unidad de memoria. Para nuestros propsitos, es el conjunto
de puntos de R2. Adicionalmente A define una funcin de la forma:
: [ R2, (R2)*, R2 , k ] k
que define cmo A usa la memoria. Podemos definir :

, donde es la cadena vaca, y

Al igual que en los algoritmos sin memoria , A tiene xito en encontrar un


camino de s a t si y slo si existe un i 0 tal que i (s, t) = t .

2.3.2. Ruteo Voraz ( Greedy Routing )


El algoritmo de ruteo voraz siempre se mueve del vrtice actualmente visitado
v, al vrtice vecino u que minimiza la distancia al vrtice destino t. En caso de
que existan varios vrtices que cumplan la condicin, se resuelve cual va a ser
el siguiente nodo a visitar de forma arbitraria. Formalmente el Ruteo Voraz se
define por la funcin de transicin:
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 triangulacin, el algoritmo se queda atrapado movindose atrs y
adelante en una arista (Fig. 31 a).
En una triangulacin, se queda atrapado en un ciclo de tres o ms
vrtices (Fig. 31 b).
Llega a un vrtice desde el que no puede ir a ningn otro que este ms
cerca de t que l.

- 30 -

Captulo 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 Triangulacin de Delaunay.
El algoritmo de Ruteo Voraz cumple la definicin de algoritmo sin memoria.
Sea T=(V, A) una Triangulacin de Delaunay. Vamos a demostrar que cada
vrtice v de T tiene un vecino que est estrictamente ms cerca de t que v.
De esta forma en cada paso nos acercamos ms 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 estn
en distintas regiones de Voronoi. Es ms, e est en el borde de dos
regiones de Voronoi, una de v y otra de algn otro vrtice 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 Triangulacin de Delaunay, la arista (u,v) T.

Figura 32. Demostracin de la Propiedad 1

- 31 -

Captulo 2

Grafos de proximidad, spanners y estrategias de ruteo

2.3.3. Ruteo de Brjula (Compass Routing)


El algoritmo de Ruteo de Brjula siempre se mueve de un vrtice v a un vecino
u de v que minimiza el ngulo u, v, t. En el caso de que varios vecinos
cumplan la condicin (2 como mucho), se elije uno de los vrtices mediante
alguna regla determinista arbitraria. Formalmente el algoritmo se define por la
funcin de transicin:
cmp (v, N(v), t) = u N(v) : u, v, t w, v, t para todo w N(v)
Propiedad 1
El algoritmo de Brjula es un algoritmo sin memoria que no es derrotado por
ninguna triangulacin regular.
Aunque pueda parecer que el algoritmo de la brjula siempre podr encontrar
el camino entre dos vrtices en una triangulacin, hay triangulaciones como la
de la figura 33, que lo derrotan: el algoritmo se queda atrapado en un ciclo.

Figura 33. Triangulacin que derrota al Ruteo de Brjula

Este ciclo C lo llamaremos un ciclo trampa en T para t. Los ciclos trampa se


pueden caracterizar en trminos de la propiedad de visibilidad en las
triangulaciones: sean t1 y t2 dos tringulos de T. Decimos que t1 oscurece a t2
si existe un rayo con origen en t que corta a t1 primero y despus a t2. Sean
u, v dos vrtices cualquiera de T tal que cmp(u, N(u), t) = v . Definimos (u, v)
el tringulo de T que est contenido en el semiplano cerrado rodeado por la
lnea que pasa por uv y contiene a t.

Figura 34. Visibilidad de tringulos en el Ruteo de Brjula

Si w es el tercer vrtice del tringulo (vi, vi+1) , entonces w no puede estar en


el cono definido por t, vi y vi+1, con altura en vi, ya que en otro caso no

- 32 -

Captulo 2

Grafos de proximidad, spanners y estrategias de ruteo

tendramos que cmp (vi )= vi+1. Pero entonces el segmento de lnea que une w
y vi+1 oscurece vi y por tanto (vi, vi+1) oscurece (vi-1, vi).
En [8] Edelsbrunner demuestra que si T es una triangulacin regular, entonces
T no tiene ningn conjunto de tringulos que se oscurezcan el uno al otro
cclicamente.

2.3.4. Ruteo de Brjula Aleatorizado (Random Compass Routing)


Si introducimos aleatoriedad en el ruteo de brjula, vamos a ver cmo se
solucionan los problemas al tratar de encontrar una ruta entre dos vrtices.
Consideraremos un algoritmo sin memoria aleatorizado 1 bit.
El algoritmo de Brjula aleatorizado se mueve de un vrtice v a otro
{ cw(v), ccw(v) } con igual probabilidad . Los vrtices cw(v) y ccw(v) son los dos
vrtices 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 funcin de
transicin:

Propiedad 1
El Algoritmo de Brjula Aleatorizado es un algoritmo sin memoria aleatorizado
1-bit que no es derrotado por ninguna subdivisin convexa.
Demostracin:
El algoritmo es sin memoria segn la definicin, y es aleatorizado porque en
cada paso se elije entre dos opciones.
Supongamos que existe una subdivisin G con dos vrtices s, t tales que la
probabilidad de alcanzar t desde s utilizando el Ruteo de Brjula Aleatorizado
es 0. Entonces existe un subgrafo H de G que contiene a s pero no contiene a
t, tal que para todos los vrtices v H, cw(v) H y ccw(v) H .
El vrtice t est contenido en alguna cara f de H. Esta cara debe ser convexa,
pero supongamos que no lo es. Entonces existe un vrtice reflejo de v en el
borde de f tal que el segmento de lnea tv no interseca ninguna arista de H. Sin
embargo esto no puede suceder, ya que ccw(v) y cw(v) estn en H y por tanto
v no tendra reflejo.
Como G es conexo, debe cumplirse que para algn vrtice u en el borde de f,
cw(u) o ccw(u) est contenido en el interior de f. Pero este vrtice en el interior
de f est tambin en el interior de H, contradiciendo el hecho de que f es una
cara convexa de H. Por tanto concluimos que no hay ninguna subdivisin
convexa que derrote al Ruteo de Brujula Aleatorizado.
2.3.5. Ruteo Voraz-Brjula ( Greedy-Compass Routing)
En los apartados anteriores hemos visto el Algoritmo Voraz y el Algoritmo de
Brjula, basados en la distancia y en la direccin referente al vrtice destino
respectivamente. Ambos algoritmos son derrotados por algunas triangulaciones
pero de distinto modo. Con el algoritmo hbrido Voraz-Brjula obtenemos un
algoritmo que no es derrotado por ninguna triangulacin.
- 33 -

Captulo 2

Grafos de proximidad, spanners y estrategias de ruteo

Sea cw(v) el vrtice u N(v) que minimiza el ngulo en sentido horario t,v,u
, y sea ccw(v) el vrtice u N(v) que minimiza el ngulo en sentido antihorario
t,v,u. A cw(v) y ccw(v) los llamaremos vecinos de brjula de v (CN viene del
ingles compass neighbours): CN(v) = {cw(v),ccw(v)}.
El Ruteo Voraz-Brjula se mueve de un vrtice v a otro u CN(v) tal que la
distancia d(u, t) se minimiza. Si varios vrtices cumplen la condicin se
deshace el empate de forma arbitraria. Formalmente al algoritmo Voraz-Brjula
se define por la funcin de transicin:
gc (v,N(v),t) = u NC(v) : d(u, t) d(w, t) para todo w CN(v)
Propiedad 1
El algoritmo Voraz-Brjula es un algoritmo sin memoria que no es derrotado por
ninguna triangulacin.
Demostracin
Supongamos que en una triangulacin T hay un par de vrtices s,t para los
que el algoritmo Voraz-Brjula no encuentra un camino. Entonces debe existir
un ciclo de vrtices C= v0,, vk-1 de T tal que el ruteo Voraz-Brjula se mueve
de vi a vi+1 para todo 0 i k. Como se vio en el ruteo de Brjula, t est en el
interior de C. Todos los nodos de C estn en la frontera de un disco D centrado
en t .
Para probar esta ltima afirmacin, supongamos por contradiccin, que no
existe tal disco D. Sea D el disco centrado en t y tiene el vrtice ms lejano a t
de C en su frontera. Consideremos un vrtice vi del interior de D tal que vi+1
est en la frontera de D (figura 35). Asumamos que vi+1=ccw(vi), entonces tiene
que ocurrir que cw(vi) no est en el interior de D, o en otro caso no nos
habramos movido a vi+1. Pero entonces la arista (cw(vi),ccw(vi)) divide a D en
dos regiones , R1 que contiene a vi y R2 que contiene a t. Como C pasa por R1
y R2 y esta contenido en D, tiene que ocurrir que C entre a la regin R1 por
cw(vi ) y salga de R1 por vi+1=ccw(vi). Sin embargo esto no sucede porque tanto
cw(cw(vi)) como ccw(cw(vi)) estn contenidos en el semiplano bordeado por la
lnea (cw(vi ), ccw(vi)) y que contiene a t, y por tanto no estn contenidos en R1.

Figura 35. Demostracin de la Propiedad 1.

- 34 -

Captulo 2

Grafos de proximidad, spanners y estrategias de ruteo

De esta forma establecemos que todos los vrtices de C estn en la frontera de


D. Sin embargo, como C contiene a t en su interior y la triangulacin T es
conexa, debe suceder que para algn vrtice vj de C, cw(vj) o ccw(vj) est en el
interior de D. Supongamos que es cw(vj). Entonces tendramos una
contradiccin, ya que el algoritmo Voraz-Brjula se habra movido a cw(vj) en
lugar de a vj+1.
2.3.6. Ruteo de Voronoi ( Voronoi routing )
Consideremos la Triangulacin de Delaunay y el diagrama de Voronoi asociado
a ella, de un conjunto de vrtices V, y un par de vrtices s,t V. El segmento st
corta las regiones del Diagrama de Voronoi en un determinado orden, R0,,
Rm-1, siendo R0 la regin de Voronoi asociada al vrtice s, y Rm-1 la regin de
Voronoi de t. El algoritmo de Voronoi se mueve de s a t a travs del camino de
vrtices v0,, vm-1 donde vi es cada vrtice de V asociado a la regin Ri. y
(vi,vi+1) son aristas de la Triangulacin de Delaunay de V.

Figura 36. Camino del Ruteo de Voronoi.

Este algoritmo se basa en la demostracin de Dobkin et al.[7] , en la que se


demuestra que la Triangulacin de Delaunay aproxima el grafo Completo
Eucldeo en un factor constante en trminos de longitud del camino ms corto
entre vrtices. 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.

- 35 -

Captulo 2

Grafos de proximidad, spanners y estrategias de ruteo

Como la Regin de Voronoi de un vrtice puede calcularse conociendo


nicamente sus vecinos en la triangulacin de Delaunay, tenemos que el Ruteo
de Voronoi es un algoritmo de ruteo con memoria O(1).
2.3.7. Ruteo por Caras 1 ( Face-1 Routing )
Un grafo conexo y plano G particiona el espacio en caras que estn limitadas
por polgonos hechos de aristas de G. Dado un vrtice 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 captulo de introduccin, permite visitar todas las paredes de un laberinto si
se mantiene la mano derecha pegada al muro mientras se avanza. Para ir de
un vrtice s a otro t, el algoritmo parte de s y recorre cada cara f=(v0,,vk) por
completo. Si no encuentra el destino t en una cara, entonces cambia de cara en
un cierto vrtice vi tal que el punto de corte del segmento st y la arista vi,vi+1 es
el ms 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 despus de cmo mucho
4 |A| pasos, donde |A| es el nmero de aristas del grafo.
En [16] Kranakis et al. dan una demostracin 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 ms cercano a t, y despus 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 ms
corto.
2.3.8. Ruteo por Caras 2 (Face-2 Routing)
Esta versin del algoritmo de Ruteo por Caras mejora la primera versin en el
sentido de que no recorre toda una cara antes de cambiar de cara.
El algoritmo comienza en el vrtice 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.

- 36 -

Captulo 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 nmero finito de
pasos.
Claramente se ve que el algoritmo llega a t en un nmero finito de pasos ya
que la distancia a t disminuye en cada vuelta del algoritmo, aunque existen
casos patolgicos como el de la figura 40, en el que el nmero de aristas
visitadas antes de llegar al destino puede ser del orden de O(n2).

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

2.3.9. Ruteo Voraz-Caras-Voraz ( Greedy-Face-Greedy Routing, GFG )


Es una estrategia hbrida que combina las Estrategias de Ruteo Voraz y Ruteo
por Caras (tanto versin 1 como 2) y se aplica, al igual que las dos estrategias
anteriores, sobre grafos planos y conexos. El algoritmo comienza en el vrtice
origen s con la estrategia de Ruteo Voraz hasta que llega al destino t o llega a
un vrtice desde el que no puede continuar hasta un vrtice ms 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 ms 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 rpidamente hacia el destino, con la seguridad del Ruteo por
Caras con el que sabemos que se va a alcanzar el destino y soluciona los
vrtices 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.

- 37 -

Captulo 2

Grafos de proximidad, spanners y estrategias de ruteo

Figura 41. Ruteo Greedy-Face-Greedy ( Ruteo Voraz y Ruteo por Caras 2)

2.3.10 Ruteo local en la familia de Grafos G


En el apartado de grafos de proximidad de este mismo captulo vimos la familia
de Grafos G (ver 2.2.14 ) , introducida por Bose et al. en [2]. Esta familia de
grafos admite una estrategia de ruteo local con la que han obtenido buenos
resultados para el spanning ratio del grafo, es decir la razn entre la longitud
del camino encontrado entre dos puntos s, t por el algoritmo de ruteo local y la
distancia eucldea 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 destruccin (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 slo puede utilizarse en este tipo de grafos, que por otra parte
no son planos en general y por tanto habra que planarizar el grafo si se quiere
utilizar una estrategia de ruteo ms general.

- 38 -

Captulo 3
ASPECTOS DE DISEO E IMPLEMENTACIN
En este captulo veremos detalles de diseo e implementacin de la aplicacin
ProRouting. En primer lugar vamos a ver los requisitos hardware y software. A
continuacin estudiaremos la integracin en la aplicacin de los algoritmos de
grafos y ruteo que vimos en el captulo 2. Por ltimo veremos diagramas de las
clases utilizadas en ProRouting.
La aplicacin se ha implementado utilizando el lenguaje de programacin Java,
debido a varias razones:
El cdigo Java generado es ejecutable en cualquier sistema que cuente
con Mquina Virtual Java. Esta caracterstica hace posible que la
aplicacin puede ejecutarse en una gran variedad de mquinas
independientemente de la arquitectura hardware y sistema operativo que
posean.
Java cuenta con libreras grficas con las que es posible generar una
interfaz grfica para la aplicacin fcilmente y con los elementos ms
habituales (ventanas, botones, combos, mens,).
La aplicacin puede ejecutarse desde un navegador de Internet que
soporte applets de Java. Esto facilita enormemente la distribucin y
ejecucin, ya que la aplicacin 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 instalacin.
Java es un lenguaje orientado a objetos, por lo tanto facilita la claridad a
la hora de disear e implementar. Tambin facilita el mantenimiento de
la aplicacin y posibles futuras ampliaciones.
Sin embargo la utilizacin 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 mtodos disponibles en Java dependen de la versin 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 aplicacin depende tambin del navegador
utilizado y de su configuracin, pero esto no supone un grave
problema ya que en general el aspecto resultante ser satisfactorio en
la mayora de los casos.

- 39 -

Captulo 3

3.1.

Aspectos de diseo e implementacin

Requisitos mnimos del sistema

Para que ProRouting pueda ejecutarse correctamente y con fluidez, el sistema


debe cumplir unos requisitos mnimos de hardware y software. Estos requisitos
vienen determinados en gran parte por la capacidad para ejecutar la Mquina
Virtual de Java (JVM). Para un sistema PC compatible los requisitos son:
Requisitos hardware:
Procesador a 700 Mhz.
128 Mb de memoria RAM.
Tarjeta grfica de 32 bits de color y resolucin de al menos 800x600.
Requisitos software:
Sistema Operativo con interfaz grfico (Windows, Linux,)
JVM 1.4 o superior.
Navegador con soporte para JVM (Internet Explorer, Netscape,
Firefox,).

3.2.

Integracin de los algoritmos de grafos

En este apartado vamos a ver cmo se han implementado los distintos


algoritmos de construccin de grafos. En todos los algoritmos se parte de una
nube de puntos V del plano.
3.2.1. Grafo de Vecindad Dirigida ( Grafo del Vecino Ms Cercano)
El grafo de Vecindad Dirigida une con una arista cada punto con el ms
cercano a l. Este grafo es dirigido, y las aristas tienen como origen un punto y
como destino su punto ms cercano.
El clculo de este grafo es muy sencillo, simplemente calculamos la distancia
de un punto al resto de puntos, y lo unimos con una arista al ms cercano. Esto
se puede hacer con dos bucles anidados, por lo que la complejidad del
algoritmo es O(n2).
Algoritmo:
1. Para cada punto p de V:
1.1. Calcular la distancia euclidea de p al resto de puntos de V, y
quedarse con el punto p que minimice la distancia.
1.2. Aadir la arista dirigida pp al grafo.
3.2.2. rbol Generador Mnimo.
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
- 40 -

Captulo 3

Aspectos de diseo e implementacin

Mnimo 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 vrtice u del grafo y se considera el rbol S(u).
3. Aadir a S la arista de menor longitud que une un vrtice de S y un
vrtice que no pertenece a S y no se haya aadido anteriormente.
4. Si el nmero de aristas de S es n -1 el algoritmo termina. En caso
contrario ir a 3.
La ordenacin de las aristas se hace en tiempo O(n2). Para cada arista que se
aade al grafo, se debe comprobar que una un punto que pertenece al rbol en
construccin y otro que an no se ha aadido. Esta operacin se hace en
tiempo O(n), por lo que la construccin del rbol se hace en tiempo O(n2).
La complejidad del algoritmo es el mximo de ambas operaciones, por lo que
resulta O(n2).
3.2.3 Grafo de Vecindad Relativa
El clculo del grafo de Vecindad Relativa se hace realizando el test de Luna
sobre todas las aristas de la Triangulacin de Delaunay, aprovechando la
propiedad de ser subgrafo de ste (ver 2.2.7. propiedad 2).
El algoritmo utilizado para calcular el RNG es el siguiente:
Algoritmo:
1. Calcular la triangulacin de Delaunay del conjunto de puntos V.
2. Para cada par de puntos (pi,pj) que forman una arista de la
triangulacin de Delaunay calcular dk = max {d(pk,pi), d(pk,pj)} con
k=1..n, k i, k j, siendo n el nmero de aristas de DT.
3. para cada par de puntos (pi,pj) buscar el valor dk que es menor que
d(pi,pj). Si no existe este valor entonces crear la arista (pi,pj).
Si quedan aristas de DT por evaluar volver a 2.Terminar en caso
contrario.
La triangulacin 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 Triangulacin de Delaunay, la
complejidad es menor que si hubiera que examinar todas las aristas del grafo
completo. El test de luna se hace en tiempo O(n) para cada arista por lo que la
complejidad de este algoritmo es O(n2), en lugar de ser O(n3) si no
calculsemos DT previamente.

- 41 -

Captulo 3

Aspectos de diseo e implementacin

3.2.4. Grafo de Gabriel


El grafo de Gabriel se calcula tambin apoyndose en la Triangulacin de
Delaunay ya calculada previamente. Sobre cada arista de la triangulacin se
realiza el test de Gabriel. El algoritmo utilizado es:
Algoritmo:
1. Calcular la triangulacin de Delaunay del conjunto de puntos V.
2. Para cada par de puntos (pi,pj) que forman una arista de la
Triangulacin de Delaunay calcular dk = d(pk,m) con
k=1..n, siendo n el nmero de aristas de DT y m el punto medio del
segmento pipj.
3. Para cada par de puntos (pi, pj) buscar el valor dk que es menor que
d(pi,pj)/2. Si no existe este valor entonces crear la arista pipj.
Si quedan aristas de DT por evaluar volver a 2. Terminar en caso
contrario.
Al igual que en el algoritmo anterior, suponemos que la triangulacin de
Delaunay est ya calculada. El test para comprobar si una arista pertenece al
grafo se calcula en O(n), por lo que la complejidad total es O(n2).
La complejidad de este algoritmo es O(n2) tal como est planteado, pero podra
reducirse a O(n) si adems de calcular la triangulacin de Delaunay tenemos
calculado tambin el diagrama de Voronoi. En ese caso las aristas de GG
seran las aristas de Delaunay que intersecan a su arista de Voronoi, y la
complejidad sera O(n).

3.2.5. Triangulacin Incremental


Se ha utilizado el algoritmo de Triangulacin Incremental con preordenacin.
Comienza con la ordenacin de los puntos en orden creciente de su
coordenada x (abscisas). Esta preordenacin permite asegurar durante la
construccin de la triangulacin, que cada vrtice que se aade crea una nueva
triangulacin (el vrtice no se encuentra dentro de otro tringulo ya aadido), y
aunque aade un coste de clculo, evita tener que hacer comprobaciones y
rectificaciones.
Una vez preordenados los puntos, se van aadiendo los puntos en orden as
como aristas a la triangulacin. Debe evitarse que se crucen las nuevas aristas
con las ya existentes. La forma de evitarlo es la siguiente:

Al aadir un nuevo punto t a la triangulacin, trazar una arista que lo una


con el ltimo punto aadido p. Esta arista no corta a ninguna de las ya
existentes y forma parte de la triangulacin (ver figura 43).

- 42 -

Captulo 3

Aspectos de diseo e implementacin

Figura 43. Se aade un nuevo punto t a la triangulacin.

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


triangulacin que tenamos antes de aadir la arista pt en cualquiera de
los dos sentidos. Si recorremos en orden el cierre en un sentido,
podemos ir aadiendo 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, aadiendo 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 triangulacin est completa y se pueden aadir nuevos puntos.

Figura 44. Soportes inferior y superior.

El algoritmo de construccin del grafo podra describirse de la forma siguiente:


Algoritmo:
1. Ordenar todos los puntos segn su coordenada x de menor a mayor. En
caso de igualdad ordenar segn su coordenada y.
2. Formar un tringulo con los tres primeros puntos. Esta ser la primera
triangulacin y tambin el primer cierre convexo.
3. Mientras queden puntos por triangular, tomar el primero de ellos, t.
3.1. Aadir la arista tp desde t al ltimo punto aadido p.
3.2. Partiendo de p recorremos el cierre convexo en sentido horario y
vamos aadiendo aristas con origen en t, hasta encontrar el

- 43 -

Captulo 3

Aspectos de diseo e implementacin

soporte inferior. Hacemos lo mismo recorriendo el cierre en


sentido antihorario hasta encontrar el soporte superior.
3.3. Una vez terminada la triangulacin, calcular su cierre convexo y
volver a 3.
El cierre convexo se calcula de forma dinmica en cada paso. Las dos aristas
de t a los soportes se deben aadir al cierre ya que siempre sern exteriores, y
en cambio otras aristas que eran exteriores ahora sern 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 sera demasiado costoso.
La ordenacin de los puntos se calcula en tiempo O(n2). Cada vez que se
aade un punto a la triangulacin se debe recorrer el cierre convexo y volver a
calcularlo. Como se ha visto antes ambas operaciones se realizan a la vez, por
lo que el tiempo para construir el grafo es O(n2). Por tanto el tiempo total del
algoritmo es O(n2), el mximo de la ordenacin y la construccin del grafo.
3.2.6. Triangulacin de Delaunay
El algoritmo de construccin utilizado para la Triangulacin de Delaunay, se
basa en la inversin o flipping de aristas de la Triangulacin Incremental. La
inversin de aristas est relacionada con la caracterstica de la Triangulacin
de Delaunay de maximizar los ngulos interiores de los tringulos. Si
consideramos los dos tringulos de la Figura 45. que tienen la arista comn
BD, la suma de los ngulos y determinan si se cumple la condicin de
Delaunay ; si esta suma es menor o igual que 180 entonces estos tringulos
cumplen la condicin de Delaunay.

Figura 45. Tringulos que no cumplen la condicin de Delaunay.

Para conseguir que se cumpla la condicin 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 construccin de la triangulacin ser entonces el siguiente:

- 44 -

Captulo 3

Aspectos de diseo e implementacin

Algoritmo:
1. Calcular la Triangulacin Incremental del conjunto de puntos.
2. Tomar una a una las aristas de la triangulacin incremental y
comprobar si los tringulos que tiene la arista en comn 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 clculo de la triangulacin 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 tringulos de los que forma parte, por lo
que en el peor caso si hay que cambiar todas las aristas la complejidad del
algoritmo es O(n2). Existen otros algoritmos para calcular la triangulacin de
Delaunay en tiempo O(n log n).
3.2.7. Triangulacin de Delaunay Restringida
Como vimos en el captulo 2, la Triangulacin de Delaunay Restringida se
obtiene con la interseccin del grafo de Disco Unidad y la Triangulacin de
Delaunay. El algoritmo implementado parte de la triangulacin de Delaunay ya
calculada y se queda slo con las aristas de longitud menor o igual que la
unidad. La complejidad de este algoritmo es por tanto O(n) sobre el nmero de
aristas, esa ser la complejidad del algoritmo si no tenemos en cuenta el coste
de calcular la triangulacin de Delaunay previamente.
Algoritmo:
1. Calcular la Triangulacin de Delaunay.
2. Examinar todas las aristas de la Triangulacin de Delaunay y eliminar
aquellas de longitud mayor que la unidad.
3.2.8. Triangulacin Voraz
El algoritmo de triangulacin Voraz est implementado partiendo del grafo
completo y ordenando todas sus aristas de menor a mayor longitud. Las aristas
se van aadiendo al grafo en ese orden y teniendo en cuenta que no corten a
aristas ms cortas (aadidas anteriormente).
Algoritmo:
1. Ordenar las aristas del grafo completo de menor a mayor longitud.
2. Aadir las aristas en orden una a una al grafo si no cortan a alguna
de las aristas ya aadidas.
La ordenacin de aristas se realiza en tiempo O(n2). Al aadir cada arista al
grafo, se debe comprobar que no corta a las aristas ya aadidas. Esto se

- 45 -

Captulo 3

Aspectos de diseo e implementacin

realiza en tiempo O(nlog n). Como el nmero de aristas es O(n2), tenemos que
la construccin del grafo es O(n2log n). Por tanto la complejidad es O(n2log n),
el mximo de la ordenacin de aristas, O(n2), y de la construccin del grafo,
O(n2log n). Existen algoritmos ms elaborados que pueden calcularla en un
tiempo O(n log n).
3.2.9. Diagrama de Voronoi
El algoritmo utilizado para su construccin se deriva de la propiedad de que no
existe ningn otro punto dentro de la circunferencia circunscrita a tres puntos
que pertenecen a la triangulacin de Delaunay.
Algoritmo:
1. Repetir para cada tro de puntos i,j,k de la nube de puntos V:
1.1. comprobar si existe algn otro punto m de V que quede
en el interior de la circunferencia C que pasa por i,j,k.
1.2. Si no existe tal punto m, entonces aadir el centro de la
circunferencia C al conjunto de vrtices del diagrama de
Voronoi, y aadir las mediatrices de los segmentos ij, ik, jk
a las aristas del Diagrama de Voronoi.
2. Calcular las regiones formadas por la interseccin de las aristas y los
vrtices de Voronoi.
La complejidad del punto 1 de este algoritmo es O(n4), ya que se deben formar
trios de puntos y comprobar si queda algn punto en su interior. La complejidad
del punto 2 es O(n2). La complejidad del algoritmo es por tanto O(n4), bastante
elevada, debido a la simplicidad de este algoritmo. Existen algoritmos ms
elaborados como el de Fortune que calcula el diagrama de Voronoi en tiempo
O(nlog n).
3.2.10. Grafo de Yao, YGk(V)
En la construccin del grafo de Yao se examinan todos los vrtices uno a uno y
se unen mediante una arista con el vrtice ms cercano de cada sector en que
dividimos el espacio.
El algoritmo utilizado en la implementacin es el siguiente:
Algoritmo:
1.
2.
3.
4.

Asignar S=V, siendo V el conjunto de vrtices.


Tomar un punto p de S. Hacer S= S {p}.
Dividir el espacio en k sectores angulares con origen en p.
Trazar una arista de p al punto de V ms cercano de cada sector, en
caso de existir.
5. Mientras S no sea vaco volver a 2.

Para cada vrtice se debe examinar cual es el vrtice de la nube de puntos que
queda ms cercano en cada sector, esto se realiza en tiempo O(n). Como la

- 46 -

Captulo 3

Aspectos de diseo e implementacin

operacin se debe repetir para todos los puntos, la complejidad de este


algoritmo es O(n2).
3.2.11. Grafo Theta
En el captulo 2 vimos que este grafo es muy parecido en su construccin al
Grafo de Yao, con la diferencia de que cada punto no se une con el ms
cercano de su sector, sino con el que tenga la proyeccin sobre el eje de su
sector ms cercana.
Algoritmo:
1.
2.
3.
4.

Asignar S=V, siendo V el conjunto de vrtices.


Tomar un punto p de S. Hacer S= S {p}.
Dividir el espacio en k sectores angulares con origen en p.
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 proyeccin que sea ms cercana a p
del sector k la llamamos pk.
5. Trazar una arista desde p hasta cada pk , en caso de existir.
6. Mientras S no sea vaco volver a 2.
La complejidad de este algoritmo es O(n2), igual que para el grafo de Yao, ya
que el procedimiento para calcularlo es muy parecido.
3.2.12. Grafo de Disco Unidad
El algoritmo de construccin 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 vrtices dos
veces para comprobar la longitud de las aristas, la complejidad es O(n2).
Algoritmo:
1. Para todo par de puntos p,q de la nube de puntos, hacer:
1.1. Si la arista pq tiene longitud menor o igual que la unidad,
aadirla al grafo.

3.2.13. Grafo Half-Space Proximal


En la implementacin del algoritmo de este grafo se ha omitido el sentido de las
aristas (como vimos en 2.2.13 Half-space es un dgrafo). El algoritmo de
construccin es el siguiente:

- 47 -

Captulo 3

Aspectos de diseo e implementacin

Algoritmo:
1. Considerar V, L1 y L2 = , siendo V el conjunto de vrtices, L1 el
conjunto de aristas del grafo de disco unidad , y L2 la lista de aristas del
grafo resultante.
2. Para cada punto u V repetir el siguiente proceso:
2.1. P(u) = , L1=A , siendo P una lista de puntos prohibidos y A el
conjunto de aristas de A incidentes en u.
2.2. Repetir mientras L1 :
2.2.1. eliminar de L1 la arista ms corta uv , e insertar la arista
dirigida uv en L2 .
2.2.2. Aadir a P(u) los puntos de V que quedan en el semiplano
determinado por la lnea perpendicular a la arista uv y en el que
se encuentra v.
2.2.3. Eliminar de L1 las aristas cuyo extremo se encuentre en
P(u).

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

El bucle 2.2 se ejecuta en tiempo O(n), ya que se repite un cierto nmero de


veces que podemos considerar una constante, y en su interior se recorre dos
veces el vector de aristas, una para determinar la arista ms corta, y otra para
determinar los puntos que quedan en zona prohibida. Como el proceso se
repite para todos los puntos, la complejidad de este algoritmo es O(n2) .

3.2.14. Familia de Grafos Theta-Lambda


Esta familia de Grafos est basada en el grafo de Half-space Proximal, por lo
que el algoritmo de construccin es muy parecido. Como vimos en 2.2.14. , la
diferencia es que cada vez que se encuentra el punto ms cercano r a uno
dado p, no se toma como regin de destruccin el semiplano en el que se
encuentra q y cuya frontera es la mediatriz del segmento pr, sino que se toma
como zona de destruccin la interseccin 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.

- 48 -

Captulo 3

Aspectos de diseo e implementacin

Algoritmo:
1. Considerar V, L1 y L2 = , siendo V el conjunto de vrtices, L1 el
conjunto de aristas del grafo de disco unidad , y L2 la lista de aristas
del grafo resultante.
2. Para cada punto u V repetir el siguiente proceso:
2.1. P(u) = , L1=A , siendo P una lista de puntos
prohibidos y A el conjunto de aristas de A incidentes en u.
2.2. Repetir mientras L1
2.2.1. eliminar de L1 la arista ms corta uv , e insertar la
arista dirigida uv en L2 .
2.2.2. Aadir a P(u) los puntos de V que quedan en la
interseccin 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 regin se encuentra v.
2.2.3. Eliminar de L1 las aristas cuyo extremo se encuentre
en P(u).
La complejidad de este algoritmo es O(n2) sobre el nmero de vrtices, igual
que para el algoritmo Half-space, ya que su funcionamiento es muy parecido.
3.2.15. Familia de Grafos Beta-Skeleton
En este algoritmo, en cada vrtice se debe comprobar si cumple la condicin
de vecindad con el resto de vrtices. La condicin de vecindad depende del
valor de .
Algoritmo:
1. Asignar S=V, siendo V el conjunto de vrtices.
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}.
Aadir una arista desde p hacia cada punto que cumpla el test.
4. Mientras S no sea vaco volver a 2. En caso contrario terminar.
La complejidad del algoritmo es O(n3), ya que para cada punto de V hay que
recorrer otras dos veces el conjunto de vrtices, una para establecer la arista, y
otra para comprobar la condicin de vecindad.
3.3. Integracin de los algoritmos de Ruteo
En todos los algoritmos de ruteo siguientes se parte desde un vrtice origen s,
y se pretende llegar a un vrtice destino t. Desde cada vrtice v , nos
moveremos hacia algn otro de entre el conjunto de vrtices adyacentes N(v).

- 49 -

Captulo 3

Aspectos de diseo e implementacin

3.3.1. Algoritmo de Ruteo Voraz


El algoritmo de ruteo Voraz es muy sencillo, la idea se basa en moverse en
cada paso al vrtice adyacente que est ms cerca del destino.

Figura 48. Ruteo Voraz.

Algoritmo:
1. tomar como vrtice actual el origen s, v = s
2. Determinar el conjunto de vrtices adyacentes a v, N(v)
3. Calcular el vrtice w de N(v) cuya distancia Eucldea 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 , aadir la arista vw al camino y hacer v = w. Ir al
paso 2.
3.3.2. Algoritmo de Ruteo con Brjula
En el Ruteo con Brjula , en cada paso del algoritmo nos movemos del vrtice
v actualmente visitado a el vrtice adyacente w que minimiza el ngulo t,v,w,
siendo t el vrtice destino.

Algoritmo:

Figura 49. Ruteo con Brjula

1. tomar como vrtice actual el origen s, v = s


2. Determinar el conjunto de vrtices adyacentes a v, N(v)
3. Calcular el vrtice 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 , aadir la arista vw al camino y hacer v = w. Ir al paso 2.

- 50 -

Captulo 3

Aspectos de diseo e implementacin

3.3.3. Algoritmo de Ruteo con Brjula Aleatorizado


El Ruteo de Brjula Aleatorizado es parecido al anterior algoritmo que hemos
visto, pero en este caso se elige aleatoriamente como siguiente nodo entre los
dos vrtices adyacentes al vrtice actual v que minimizan el ngulo en sentido
horario y antihorario con respecto al destino t. Estos dos vrtices los
denominamos cw(v) y ccw(w) (clock wise y counter clock wise).
Algoritmo:
1. tomar como vrtice actual el origen s, v = s
2. Determinar el conjunto de vrtices adyacentes a v, N(v)
3. Calcular los vrtices 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 vrtice w del conjunto { cw(v),ccw(v) }. Aadir
la arista vw al camino. Asignar a v=w.
5. Si v = t , terminar. El algoritmo ha tenido xito.
6. Si v t .Ir al paso 2.
3.3.4. Algoritmo de Ruteo Voraz-Brjula
Al igual que en el Algoritmo con Brjula Aleatorizado, el siguiente vrtice a
visitar se debe elegir entre los vrtices {cw(v), ccw(v)}, pero en este algoritmo el
siguiente vrtice no se elige de forma aleatoria, sino que se elige el vrtice cuya
distancia Eucldea al destino es la menor de las dos, de forma similar a como
funciona el algoritmo de Ruteo Voraz.

Figura 50. Ruteo Voraz-Brjula

Algoritmo:
1. tomar como vrtice actual el origen s, v = s
2. Determinar el conjunto de vrtices adyacentes a v, N(v)
3. Calcular los vrtices 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 vrtice w del conjunto { cw(v),ccw(v) } que minimiza la
distancia al destino t. Aadir la arista vw al camino y asignar v=w.
5. Si v = t , terminar. El algoritmo ha tenido xito.
6. Si v t .Ir al paso 2.

- 51 -

Captulo 3

Aspectos de diseo e implementacin

3.3.5. Algoritmo de Ruteo de Voronoi


Como vimos en el captulo 2, este algoritmo se mueve a travs de las aristas
de la Triangulacin de Delaunay. El prximo vrtice a visitar viene determinado
por los puntos de corte del segmento st con los segmentos del Diagrama de
Voronoi.
Algoritmo:
1. Calcular la triangulacin de Delaunay y el diagrama de Voronoi.
2. Calcular la secuencia de puntos de corte [c0,c1,, ck] del segmento st
con los segmentos que determinan las Regiones de Voronoi.
3. Tomar como vrtice actual el origen s, v = s. Asignar i=0
4. Determinar el vrtice w cuya Regin de Voronoi R(w) es adyacente a
R(v) y corta a st en ci.
5. Aadir la arista de Delaunay vw al camino. Asignar v=w, i=i+1.
6. Si v = t , terminar. El algoritmo ha tenido xito.
7. Si v t .Ir al paso 4.
3.3.6. Algoritmo de Ruteo por Caras 1
El algoritmo de Ruteo por Caras 1 debe recorrer la cara en la que se encuentra
el vrtice 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 ms 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 vrtice inicial el origen s, p = s
2. Sea f la cara del grafo que tiene a p en su frontera e interseca el
segmento pt.
3. Para cada arista uv de f:
3.1. Si uv interseca a pt en un punto p y d(p,t) < d(p,t) entonces asignar
p = p .
4. Recorrer la cara f hasta alcanzar la arista uv que contiene a p.
5. Si p t ir a 2.
3.3.7. Algoritmo de Ruteo por Caras 2
El Ruteo por Caras 2 es parecido al Ruteo por Caras 1. La diferencia reside en
que no hay que recorrer toda la cara en que se encuentra el vrtice actual v, se
cambia de cara al encontrar la primera arista uw que corta al segmento st.
Algoritmo:
1. Asignar como vrtice 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.

- 52 -

Captulo 3

Aspectos de diseo e implementacin

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


punto p p.
4. Asignar p = p.
5. Si p t ir a 2.
3.3.8. Algoritmo de Ruteo Voraz-Caras-Voraz
Este algoritmo es un hbrido del Ruteo Voraz y el Ruteo por Caras 2. Avanza
en modo Voraz hasta llegar a un punto p en que no puede seguir ms, 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 vrtice actual el origen s, v = s
2. Determinar el conjunto de vrtices adyacentes a v, N(v)
3. Calcular el vrtice w de N(v) cuya distancia Eucldea 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 , aadir la arista vw al camino y hacer v = w. Ir al
paso 2.
7. Asignar p = v, g = v
8. Sea f la cara del grafo que tiene a v en su frontera e interseca el
segmento pt.
9. Determinar el siguiente punto w de la cara si se recorre segn la regla
de la mano derecha.
10. Si w = t, asignar v=w, aadir la aristawt al camino y terminar. El
algoritmo ha tenido xito.
11. Si w t, y d(w,t) < d (g,t) , aadir 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, aadir la
arista vw al camino. Asignar v=w . ir a 9.
13. Si w t , d(w,t) d(g,t) y la arista vw corta al segmento pt en un punto
p p, asignar p= p. Ir a 8.
3.3.9. Algoritmo de Ruteo local en la Familia de Grafos Theta-Lambda
Este algoritmo de ruteo local avanza desde el vrtice actual v hasta el
destructor de la arista vt.
Algoritmo:
1. Tomar como vrtice actual el origen s, v=s.
2. Determinar los vrtices adyacentes a v, N(v).
3. Determinar el vrtice w N(v) tal que w es un destructor del destino t.
4. Aadir la arista vw al camino. Asignar v= w.
5. Si v = t terminar, el algoritmo ha tenido xito.
6. Si v t ir a 2.
3.4. Diagramas de Clase
Las clases de la aplicacin se han agrupado en el paquete grafos. A
continuacin vamos a describir las clases y su funcin dentro de la aplicacin:

- 53 -

Captulo 3

Aspectos de diseo e implementacin

Clase Geocomp: contiene la estructura de ventanas la aplicacin (barra de


mens, dos barras de herramientas, una superficie grfica, una barra de estado
y todos los botones que componen las barras de herramientas).

Figura 51. Clase Geocomp.

- 54 -

Captulo 3

Aspectos de diseo e implementacin

Clase Canvas: contiene la superficie grfica o lienzo donde se realizan las


operaciones grficas. Implementa mtodos para el dibujo de grafos y
algoritmos de ruteo en el modo dinmico, as como estructuras de datos y
mtodos para el dibujo paso a paso de los algoritmos.

Figura 52. Clase Canvas.

- 55 -

Captulo 3

Aspectos de diseo e implementacin

Clase TDel: contiene la estructura de datos basada en un DCEL. Se


implementan estructuras de datos que guardan los vrtices, 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 fcilmente a las aristas de un camino o grafo y por tanto a los
puntos que las forman.

Figura 53. Clase TDel.

- 56 -

Captulo 3

Aspectos de diseo e implementacin

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

Figura 54. Clase Punto.

- 57 -

Captulo 3

Aspectos de diseo e implementacin

Clase Arista: representa aristas , formadas en general por dos puntos, aunque
existen clases derivadas de sta que pueden variar este nmero. Dispone de
mtodos para calcular su longitud, primer punto, segundo punto, mediatriz,
Tambin contiene los mtodos 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.

- 58 -

Captulo 3

Aspectos de diseo e implementacin

Clase Arista_Circulo: contiene mtodos para dibujar puntos en la superficie


grfica.

Figura 57. clase Arista_Circulo.

Clase Circulo_Circulo: contiene mtodos 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.

- 59 -

Captulo 3

Aspectos de diseo e implementacin

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 divisin del plano en varios sectores


equiespaciados un cierto ngulo, y centrados en un punto. Se utiliza en la
animacin paso a paso de los grafos de Yao y Theta.

Figura 62. clase Arista_Sectores.

- 60 -

Captulo 3

Aspectos de diseo e implementacin

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 animacin 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 Lnea: implementa una representacin de recta. La utilizan los algoritmos


de ruteo para verificar el corte entre aristas o segmentos.

Figura 65. clase Linea

- 61 -

Captulo 3

Aspectos de diseo e implementacin

Clase StateBar: implementa una barra de estado que visualiza las coordenadas
del ratn e informacin de las operaciones en curso.

Figura 66. clase StateBar.

Clase Lista_Animacin: contiene las estructuras de datos y mtodos necesarios


para guardar informacin acerca de la ejecucin paso a paso de los algoritmos.

Figura 67. clase Lista_Animacin.

Clase WEdge: representa unas aristas especiales necesarias para el clculo


del Diagrama de Voronoi.

Figura 68. clase WEdge.

- 62 -

Captulo 3

Aspectos de diseo e implementacin

Clase WTrig: contiene una representacin de tringulos utilizada para el clculo


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 animacin 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 animacin paso a paso.

Figura 71. clase Lista_Rectas.

- 63 -

Captulo 3

Aspectos de diseo e implementacin

Clase Config: implementa una ventana de configuracin para cambiar algunos


parmetros de los grafos y algoritmos de ruteo.

Figura 72. clase Config.

- 64 -

Captulo 3

Aspectos de diseo e implementacin

Clase Color_Dialog: contiene la implementacin de una ventana de dilogo


utilizada para configurar el color de grafos y algoritmos de ruteo.

Figura 73. clase ColorDialog.

Clase ProRouting: es la clase inicial de la aplicacin. 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 estticas
de asociacin y generalizacin que ocurren entre las clases :

- 65 -

Captulo 3

Aspectos de diseo e implementacin

Figura 75. Diagrama de clases. Relaciones de asociacin y generalizacin.

- 66 -

Captulo 3

Aspectos de diseo e implementacin

Figura 76. Relaciones de herencia entre las clases de la aplicacin y Java.

- 67 -

Captulo 4
MANUAL DE USUARIO
ProRouting es una aplicacin que permite el dibujo de Grafos de Proximidad y
la utilizacin sobre ellos de algunos algoritmos de ruteo online. Est
implementada con el lenguaje de programacin Java, y puede utilizarse en
cualquier sistema que tenga instalada la Mquina Virtual de Java ( JVM ).
ProRouting esta basada en trabajos anteriores realizados por los compaeros
de facultad David Ramos, Rubn Naranjo y Damin Serrano.
La aplicacin consta de los siguientes elementos:
Una barra de mens.
Dos barras de herramientas horizontales, una para dibujo de grafos y
manejo de ficheros, y la otra contiene utilidades de ruteo y configuracin.
Una zona de dibujo (superficie grfica o lienzo).
Una barra de estado.

Figura 77. Aplicacin ProRouting

A continuacin vamos a describir los distintos elementos que componen la


herramienta.
4.1. Barra de mens
La barra de mens consta de cinco mens desplegables: File, Edit, Execution,
View y Help.

- 68 -

Captulo 4

Manual de usuario

4.1.1. Men File


El men File contiene los comandos de manejo de ficheros:
New

Crea un nuevo espacio de trabajo y elimina el anterior.

Open

Abre un archivo de grafo, con extensin .grp.

Save

Guarda en fichero los vrtices del grafo que esta en


pantalla, as como las aristas del grafo manual.

Exit

Salir de la aplicacin.

Figura 78. Men File

4.1.2. Men Edit


El men Edit contiene comandos para insercin de vrtices.
Insert Draw nodes

Insercin manual de puntos

Insert Automatic
Select

Insercin aleatoria de puntos


Seleccin de puntos

Remove

Eliminacin de vrtices

Figura 79. Men Edit

- 69 -

Captulo 4

Manual de usuario

4.1.3. Men Execution


El men Execution establece el modo de ejecucin dinmico (por defecto) o el
modo ejecucin paso a paso.
Dinamic

Modo de ejecucin dinmico.

Step Start

Modo de ejecucin paso a paso, de la construccin de un


grafo, o de la ejecucin de un algoritmo de ruteo.

Step Stop

Detiene la ejecucin paso a paso y vuelve al modo de


ejecucin dinmico.

Figura 80. Men Execution.

4.1.4. Men View


El men View establece que grafos se dibujan en pantalla. Tambin cuenta con
el comando Open Reference System, que carga una imagen de extensin .jpg,
.gif o .png de fondo como referencia para la introduccin manual de puntos y
dibujo de aristas.

- 70 -

Captulo 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 estn actualmente en pantalla. Tambin
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 extensin .grp.
Guarda en fichero los vrtices del grafo que esta en pantalla, as como
las aristas del grafo manual.
Establece el modo de insercin manual de puntos.

- 71 -

Captulo 4

Manual de usuario

Establece el modo de insercin manual de aristas. Slo pueden


introducirse aristas manualmente si hay un nico grafo visible en
pantalla. La arista introducida se aade a este grafo.
Abre una ventana de dilogo para introducir un nmero n entero
positivo. Al pulsar el botn OK se dibujan en el grafo n puntos de
coordenadas aleatorias.
Elimina el punto seleccionado y las aristas adyacentes.
Avanza un paso de la animacin cuando est seleccionado del modo de
ejecucin paso a paso.
Detiene la animacin actual y restaura el modo de ejecucin dinmico.
Dibuja / Oculta el grafo manual, que slo consta de los vrtices aristas
dibujadas manualmente.
Dibuja / Oculta el Grafo del Vecino Ms Prximo.
Dibuja / Oculta el rbol Generador Mnimo.
Dibuja / Oculta el Grafo de Vecindad Relativa.
Dibuja / Oculta el Grafo de Gabriel.
Dibuja / Oculta la Triangulacin Incremental.
Dibuja / Oculta la Triangulacin de Delaunay.
Dibuja / Oculta la Triangulacin de Delaunay Restringida.
Dibuja / Oculta la Triangulacin 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.

- 72 -

Captulo 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 ms prximo.
Dibuja / Oculta el cierre convexo.
Dibuja / Oculta los vecinos de Delaunay de un punto.

4.3.

Barra de herramientas de ruteo y configuracin.

Figura 83. Barra de herramientas de ruteo y configuracin.

Dibuja / Oculta el camino correspondiente a Ruteo Voraz.


Dibuja / Oculta el camino correspondiente a Ruteo con Brjula.
Dibuja / Oculta el camino correspondiente a Ruteo con Brjula
aleatorizado.
Dibuja / Oculta el camino correspondiente al Ruteo Voraz-Brjula.
Dibuja / Oculta el camino correspondiente al Ruteo de Voronoi. Slo se
encuentra seleccionable el botn si est visible la triangulacin 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.

- 73 -

Captulo 4

Manual de usuario

Dibuja / Oculta el camino correspondiente al Ruteo local en el grafo


Theta-Lambda. Este botn slo es seleccionable si est visible el grafo
Theta-Lambda.
Establece el modo seleccin de nodo origen de ruteo.
Establece el modo seleccin de nodo destino de ruteo.
Carga una imagen de extensin .jpg, .gif o .png de fondo como sistema
de referencia para la introduccin manual de puntos y dibujo de aristas.
Dibuja / Oculta el sistema de referencia.
Abre la ventana de configuracin de los distintos grafos y algoritmos de
ruteo.
Distance : distancia Eucldea entre el nodo origen y el nodo destino.
Alg. Distance : longitud del camino encontrado por el algoritmo en uso.
Coefficient : razn entre Alg.Distance y distance.

4.4.

Superficie grfica

La superficie grfica tiene como funciones principales la introduccin 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 cuestin. 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 mecnica de introduccin de datos es la siguiente:

Insercin de puntos: haciendo click con el botn izquierdo del ratn,


de la barra de herramientas de grafos para insertar
sobre el icono
puntos, se selecciona el modo de insercin de puntos. El cursor adopta
forma de cruz sobre la superficie grfica, y sus coordenadas se
muestran en la barra de estado. Haciendo click con el botn derecho o
izquierdo sobre la superficie se inserta un punto sobre las coordenadas
actuales.

Seleccin de puntos: estando el botn de insercin de puntos no


seleccionado y haciendo click con el botn derecho o izquierdo del ratn
sobre algn punto insertado anteriormente, podemos seleccionar el
punto, que aparecer con un borde azul.

- 74 -

Captulo 4

Manual de usuario

Insercin de aristas: para insertar aristas de forma manual debe estar


visible slo un grafo, y se aadirn en el las nuevas aristas. Tambin
debe estar seleccionado el modo de insercin de aristas, haciendo click
con el botn izquierdo del ratn 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 despus pulsar la tecla Supr o hacer click con el ratn sobre el icono
. Se eliminarn de forma automtica las aristas incidentes sobre ese
punto.

Desplazamiento de puntos: es necesario seleccionar un punto y


arrastrarlo sin soltar el botn del ratn hasta que no se llegue al lugar
deseado.

4.5. Barra de estado


La parte derecha de la barra de estado muestra las coordenadas actuales del
ratn sobre la superficie grfica. La parte izquierda muestra informacin sobre
las operaciones que se estn realizando en cada momento, tipo de grafo
construido, si el algoritmo de ruteo ha tenido xito o no, solicita seleccin de
puntos para crear una arista, informacin sobre el paso que se est realizando
en el modo de ejecucin paso a paso, etc.

Figura 84. Barra de estado.

4.6.

Ventana de configuracin

Se accede haciendo click con el ratn sobre el icono


de la barra de
herramientas de ruteo y configuracin. La ventana de configuracin contiene
dos pestaas seleccionables. La primera permite configurar los grafos de
proximidad , y la segunda los algoritmos de ruteo.
Cada pestaa contiene un combo que permite seleccionar cada uno de los
grafos (o de los algoritmos de ruteo) y acceder a los parmetros 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 parmetros particulares de
cada grafo. En el caso de los algoritmos de ruteo slo es configurable el color
de las aristas del camino.

- 75 -

Captulo 4

Manual de usuario

Figura 85. Ventana de configuracin.

- 76 -

Captulo 5
ESTUDIO COMPARATIVO

En este captulo realizaremos un estudio comparativo del rendimiento de las


distintas estrategias de ruteo sobre algunos de los grafos de proximidad que se
han implementado en la herramienta ProRouting. En cuanto al rendimiento del
algoritmo de ruteo tendremos slo en cuenta la longitud del camino encontrado
y no nos fijaremos en otros aspectos como el tiempo empleado en calcularlo.
La prueba de los algoritmos de ruteo la dividiremos en varias partes:
1. la primera parte prueba los algoritmos sobre grafos que sabemos de
antemano que son planos y conexos, ya que para los algoritmos de
ruteo es necesaria esta condicin (aunque no suficiente). Usaremos
los siguientes grafos:
Grafo de Vecindad Relativa
Grafo de Gabriel
Triangulacin de Delaunay
Los algoritmos de ruteo para esta prueba son: Algoritmo de Ruteo
Voraz, Algoritmo de Ruteo con Brjula, Algoritmo de Ruteo con
Brjula aleatorizado, Algoritmo de Ruteo Voraz-Brjula, Algoritmo de
Ruteo por Caras 1, Algoritmo de Ruteo por Caras 2, Algoritmo de
Ruteo Voraz-Caras-Voraz.
2. la segunda parte prueba los algoritmos sobre una mayor cantidad de
grafos, pero interseccionndolos previamente con un grafo de disco
unidad conexo y asegurndonos de obtener un grafo plano y
conexo como resultado. Usaremos los siguientes grafos:
Grafo de Vecindad Relativa
Grafo de Gabriel
Triangulacin de Delaunay Restringida
Grafo de Yao
Grafo Theta
Grafo Half-Space Proximal
En esta prueba slo utilizaremos los algoritmos de ruteo que tienen
asegurado el xito en la bsqueda del camino en grafos planos y
conexos: Ruteo por Caras 1, Ruteo por Caras 2, y Ruteo VorazCaras-Voraz.
3. la tercera parte prueba el algoritmo de Ruteo local en la familia de
Grafos Theta-Lambda. Usaremos varios valores de Theta y Lambda.
Los datos que se recogern en las pruebas sern los siguientes:
Distancia (D): es la distancia Euclidea entre los dos vrtices s, t entre
los que se pretende encontrar un camino. La distancia Eucldea entre
dos puntos la podemos definir como:

- 77 -

Captulo 5

Estudio comparativo

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

Distancia del Algoritmo (DA): es la longitud del camino encontrado por el


algoritmo, y se obtiene sumando las longitudes de todas las aristas del
camino.
Ratio(R) : es el cociente siguiente, que expresa cuantas veces es mayor
la longitud del camino encontrado entre s y t por el algoritmo, que la
distancia Eucldea entre s y t :
DA
R =
D

Para probar los algoritmos sobre estos grafos generamos un nmero de


vrtices que ir variando de forma incremental. En total generaremos 6 grafos,
de 20,40,60,80,100 y 120 vrtices. Estos vrtices se generan de forma
aleatoria. Si un algoritmo de ruteo no encuentra el camino, el valor del Ratio se
pone con valor 0.
Los datos generados por la herramienta ProRouting son pasados a una hoja de
clculo, mediante la cual se pueden calcular valores estadsticos y grficas.
5.1. Prueba 1
La primera prueba utiliza grafos que sabemos de antemano que son planos y
conexos, ya que para los algoritmos de ruteo es necesaria esta condicin,
aunque a veces no suficiente. En esta prueba usaremos todos los algoritmos
de ruteo disponibles (a excepcin del Ruteo de Voronoi y del Ruteo Local Theta
Lambda)
5.1.1. Grafo de Vecindad Relativa

Ratio

Grafo de Vecindad Relativa


9
8
7
6
5
4
3
2
1
0

Voraz
Brujula
Brujula Aleat.
Voraz-Brujula
Caras 1
Caras 2
Voraz-Caras-Voraz
20

40

60

80

100

120

N Vrtices

Figura 86. Ratios para el Grafo de Vecindad Relativa

- 78 -

Captulo 5

Estudio comparativo

La figura 86 muestra el resultado de aplicar los algoritmos de ruteo a 6 Grafos


de Vecindad Relativa con nmero incremental de vrtices.
Como se ve en el grfico, los mejores resultados se obtienen con los algoritmos
de Ruteo Voraz, Brjula, Voraz-Brjula y Voraz-Caras-Voraz, y los peores con
Brjula Aleatorizada, Caras 1 y Caras 2. De entre los algoritmos que obtienen
un buen resultado destacamos el Ruteo Voraz-Caras-Voraz, ya que el resto no
asegura el xito en encontrar el destino, como se puede apreciar en la grfica.
5.1.2. Grafo de Gabriel

Ratio

Grafo de Gabriel
16
14
12
10
8
6
4
2
0

Voraz
Brujula
Brujula Aleat.
Voraz-Brujula
Caras 1
Caras 2
Voraz-Caras-Voraz
20

40

60

80

100

120

N Vrtices

Figura 87. Ratios para el Grafo de Gabriel

En el Grafo de Gabriel se obtienen en general mejores resultados que en el


grafo anterior, de Vecindad Relativa, aunque tambin es cierto que el nmero
de aristas aumenta. El nico algoritmo en el que no se obtienen unos
resultados aceptables es para el Ruteo por Caras 1. Para el resto de algoritmos
se obtiene en general un buen Ratio, aunque slo Ruteo por Caras 2 y VorazCaras-Voraz aseguran el xito.
5.1.3. Triangulacin de Delaunay
Grafo de Delaunay
12

Voraz

Ratio

10

Brujula

Brujula Aleat.

Voraz-Brujula

Caras 1
Caras 2

Voraz-Caras-Voraz

0
20

40

60

80

100

120

N Vrtices

Figura 88. Ratios para la Triangulacin de Delaunay

- 79 -

Captulo 5

Estudio comparativo

Para la Triangulacin de Delaunay se obtienen buenos resultados para todos


los algoritmos a excepcin del Ruteo por Caras 1, debido a que tiene que dar
siempre la vuelta a los tringulos que atraviesa. Para el resto de algoritmos se
obtiene un buen Ratio, en torno a 1.5, y adems los algoritmos siempre
encuentran el destino en esta triangulacin.
Si nos olvidamos del Ruteo por Caras 1 y observamos el resto de algoritmos en
ms detalle (Figura 89), vemos que a excepcin del Ruteo con Brjula
Aleatorizado, el resto tienen un ratio inferior a 1.2 y de media en torno a 1.1, lo
cual es un excelente resultado. Como desventaja podemos decir que el nmero
de aristas de este grafo es elevado, ya que se trata de una triangulacin.
Grafo de Delaunay
1,8
1,6
1,4

Voraz

Ratio

1,2

Brujula

Brujula Aleat.

0,8

Voraz-Brujula

0,6

Caras 2
Voraz-Caras-Voraz

0,4
0,2
0
20

40

60

80

100

120

N Vrtices

Figura 89. Ratios para la triangulacin de Delaunay (2)

5.1.4. Conclusiones sobre la prueba 1


Los mejores resultados para estos grafos los alcanzan los algoritmos de Ruteo
Voraz, Brjula,Voraz-Brjula y Voraz-Caras-Voraz, con unos ratios ligeramente
superiores a 1. Los peores resultados se obtienen con Brjula Aleatorizado,
Caras 1 y Caras 2. Sin embargo estos resultados slo pueden generalizarse en
el caso de la Triangulacin de Delaunay, ya que como sabemos, es el nico de
estos tres grafos en el que se garantiza que todos los algoritmos utilizados van
a alcanzar el destino.
5.2. Prueba 2
En esta prueba se utiliza un mayor nmero de grafos, pero interseccionndolos
previamente con un grafo de disco unidad conexo y asegurndonos de obtener
un grafo plano y conexo en el resultado. El objetivo de esta prueba es
comprobar el rendimiento de los algoritmos de ruteo en grafos de proximidad
con buenas propiedades de cara al ruteo, pero tratando de reducir el nmero
de aristas. Utilizamos para esta prueba solamente los algoritmos de ruteo que

- 80 -

Captulo 5

Estudio comparativo

tienen asegurado encontrar el destino en un grafo plano y conexo: Ruteo por


Caras 1, Ruteo por Caras 2 y Ruteo Voraz-Caras-Voraz.
5.2.1. Grafo de Vecindad Relativa Grafo de Disco Unidad

Ratio

RNG UDG
9
8
7
6
5
4
3
2
1
0

Caras 1
Caras 2
Voraz-Caras-Voraz

20

40

60

80

100

120

N Vrtices
Figura 90. Ratios para el Grafo de Vecindad Relativa

En la figura 89. se muestra la grfica de Ratios para este grafo. Como se puede
ver el mejor resultado lo obtiene. El algoritmo Voraz-Caras-Voraz es el que
obtiene mejores resultados. El Ruteo por Caras 2 obtiene unos resultados
medios que mejoran al incrementar el nmero de vrtices del grafo.

5.2.2. Grafo de Gabriel Grafo de Disco Unidad


GG UDG
10

Ratio

8
6

Caras 1

Voraz-Caras-Voraz

Caras 2

2
0
20

40

60

80

100

120

N' Vertices

Figura 91. Ratios para el Grafo de Gabriel

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

- 81 -

Captulo 5

Estudio comparativo

obtiene unos resultados medios que mejoran al incrementar el nmero de


vrtices del grafo.El Ruteo por Caras 1 es el que obtiene peores resultados.
5.2.3. Grafo de Delaunay Restringido (DT UDG)

RDG
14
12
Ratio

10

Caras 1

Caras 2

Voraz-Caras-Voraz

4
2
0
20

40

60

80

100

120

N' Vertices
Figura 92. Ratios para la Triangulacin de Delaunay Restringida

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

Ratio

8
6

Caras 1

Voraz-Caras-Voraz

Caras 2

2
0
20

40

60

80

100

120

N' Vertices

Figura 93. Ratios para el Grafo de Yao

- 82 -

Captulo 5

Estudio comparativo

En la figura 92 se muestran los Ratios para el grafo de Yao. No distan mucho


de lo obtenido para grafos anteriores.
5.2.5. Grafo Theta Grafo de Disco Unidad

Ratio

Theta Graph Unit Disc Graph


18
16
14
12
10
8
6
4
2
0

Caras 1
Caras 2
Voraz-Caras-Voraz

20

40

60

80

100

120

N' Vertices

Figura 94. Ratios para el Grafo Theta

Para este grafo los resultados que se obtienen para el Ratio son en general
algo ms elevado que en los grafos anteriores. El mejor resultado lo sigue
obteniendo el algoritmo Voraz-Caras-Voraz, seguido del ruteo Por Caras 2. El
peor resultado sigue siendo para el ruteo por Caras 1, que lgicamente tiene
peor Ratio a medida que aumenta el nmero de vrtices.

5.2.6. Grafo Half-Space Proximal Grafo de Disco Unidad


HSPG UDG
10

Ratio

8
6

Caras 1

Voraz-Caras-Voraz

Caras 2

2
0
20

40

60

80

100

120

N' Vertices

Figura 95. Ratios para el Grafo HSPG

- 83 -

Captulo 5

Estudio comparativo

La figura 94 muestra los Ratios encontrados para el Grafo Half-Space Proximal.


En esta ocasin los ratios obtenidos para Voraz-Caras-Voraz y ruteo por Caras
2 son muy parecidos y con tendencia a permanecer as conforme aumenta el
nmero de vrtices. De nuevo el Ruteo por Caras 1 obtiene el peor resultado.

5.2.7. Conclusiones sobre la prueba 2


Los mejores Ratios que se obtienen para todos los grafos son siempre para el
algoritmo de Ruteo Voraz-Caras-Voraz, y suelen estar en torno a un valor
R 1.5 cuando el nmero de vrtices es relativamente alto. Este resultado es
lgico ya que utiliza una tcnica que combina la estrategia voraz, que como
vimos en la prueba 1 es la que se acerca ms rpidamente al destino, y la
estrategia de Ruteo por Caras 2, que asegura el xito para encontrar el camino
y mantiene unos valores de Ratio aceptables. La estrategia de Ruteo por Caras
1 , aunque asegura que se va a alcanzar el destino, tiene unos valores de Ratio
demasiado elevados debido a que debe rodear cada cara que atraviesa una
vez completa ms una fraccin (excepto en el caso trivial de que el destino est
en la cara inicial) .

5.3. Prueba 3
En esta prueba se usa el algoritmo de Ruteo local en la familia de Grafos
Theta-Lambda. Para ello utilizaremos varios valores de Theta y Lambda.
Grafo Theta-Lambda con 20 vrtices
1,4
1,2

1,2-1,4

1
Ratio

1-1,2

0,8

0,8-1

0,6
0,4
0,2
0

0,6-0,8
0,4-0,6
.9
20

40
Theta

60

80

.5

0,2-0,4
Lambda

Figura 96. Ratios del Grafo Theta lambda de 20 vrtices

- 84 -

0-0,2

Captulo 5

Estudio comparativo

Grafo Theta-Lambda de 40 vrtices


1,5
1
Ratio

1-1,5
0,5-1

0,5

0-0,5

.9

0
20

40

60

80

Theta

Lambda

.5

Figura 97. Ratios del Grafo Theta-lambda de 40 vrtices

Grafo Theta-Lambda de 60 vrtices


1,2
1,15
Ratio

1,15-1,2

1,1

1,1-1,15

1,05

1,05-1,1
1-1,05

.9

1
20

40
Theta

60

80

.5

Lambda

Figura 98. Ratios del Grafo Theta-Lambda de 60 vrtices

Como se aprecia en las figuras, el Ratio es muy homogneo y con valores


bajos, inferiores a 1.5 . El valor de Theta influye en gran manera en el Ratio: a
mayor ngulo el Ratio tambin aumenta, debido a que el nmero de aristas del
grafo disminuye.
La gran desventaja de este algoritmo de Ruteo es que slo puede aplicarse a
este grafo, ya que se trata de una estrategia local.

- 85 -

Captulo 6
CONCLUSIONES
En el presente proyecto se ha tratado de mostrar la relacin que subyace entre
los grafos de proximidad y los algoritmos de ruteo online: es necesario
encontrar grafos de proximidad que tengan buenas propiedades geomtricas
que aseguren la existencia de caminos de longitud mxima acotada, entre dos
nodos cualesquiera del grafo. Esta longitud mxima suele expresarse como un
factor t entre la longitud de una ruta que se encuentra y la distancia eucldea
entre los nodos origen y destino. De aqu nace el concepto de t-spanner.
De la misma forma, deben encontrarse tambin algoritmos de ruteo online que
sean capaces de aprovechar al mximo estas propiedades de los grafos y
encontrar caminos lo ms cortos posibles, y que adems garanticen el xito en
encontrar el nodo destino.
La herramienta ProRouting pretende ser un apoyo en la simulacin de
algoritmos de ruteo sobre grafos de proximidad. Posee un nmero considerable
de grafos de proximidad y algoritmos de ruteo, y resulta relativamente fcil
aadir nuevos grafos y algoritmos mediante el lenguaje de programacin Java.

- 86 -

BIBLIOGRAFIA Y ENLACES

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


Geometric Graphs. In Workshop on Combinatorial and Algorithmic Aspects
of Networking, 2005. CAAN-05.

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


geometric spanners that admit local routing strategies. To appear on10th
Workshop on Algorithms and Data Structures.2007.WADS 2007.

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


Delivery in ad hoc Wireless Networks. Wireless Networking, 7(6) pp:609616,
2001.

[4] E. Chvez, S. Dobrev, E. Kranakis, J. Opatrny, L. Stacho, H. Tejeda, J.


Urrutia, Half-Space proximal, A New Local Test for Extracting a Bounded
Dilation Spanner of a Unit Disk Graph. In OPIDIS, 9th International
Conference on Principles of Distributed Systems, Pisa, Italy, December 2005

[5] S-W. Cheng, Y-F. Xu, On -Skeleton as a Subgraph of the Minimum Weight
Triangulation. Theoretical Computer Science, v.262 n.1-2, p.459-471, July
2001

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


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

[7] D.P.Dobkin, S.J. Friedman, K.J. Supowit, Delaunay Graphs are almost as
good as complete graphs. Discrete Comput. Geom., 5 , pp. 399407. 1990

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


Combinatorica,10, pp. 251260. 1998.

[9]

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


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

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


Spanners for Routing in Mobile Networks.IEEE Journal on selected areas in
communications, Vol. 23, No. 1, January 2005.

[11] F. Hurtado, Poligonizaciones simples. Actas del III Encuentro de Geometra


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

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


Algorithms for Proximity Graphs. Comput. Geom. 25(1-2):35-49 (2003)
Dep art a ment de M at e m_atica Aplic ada II _ U ni versitat Polit_ ec nica de Cat al un ya _ Barc elo na_ S p

- 87 -

[13] J.W. Jaromczyk, G.T. Toussaint, Relative Neighborhood Graphs and Their
Relatives. Proceedings of the IEEE,80:15021517, 1992.
.
[14] J.M.Keil, C.A. Gutwin, The Delaunay triangulation closely approximates the
Complete Euclidean Graph. Proc. 1st Worksh. Algorithms and Data
Structures. Springer LNCS 382, pp. 4756, 1989.

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


Face Routing. The third International workshop on foundations of mobile
computing (DIAL-M-POMC'05), 2005.

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


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

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


Geometry. Book Chapter of "Handbook of Sensor Networks", edited by
Mohammad Ilyas et al. CRC Press. 2003.

[18] A.R. Mosteo, J.L. Villaroel, Redes inalmbricas y robtica mvil:


tcnicas geomtricas. I3A Instituto de Investigacin en Ingeniera de Aragn,
2005.

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


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

[20] R.Naranjo, D. Serrano, Triangulacin de Delaunay y subgrafos Notables.


Geometra computacional. Facultad de Informtica. UPM.. 2003.

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


Cambridge University Press.2007.

[22] D. Ramos, Ruteo en Grafos Geomtricos.


Proyecto Fin de Carrera. Facultad de Informtica.UPM.2004

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


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

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


networks. In I. Stojmenovic, editor, Handbook of Wireless Networks and
Mobile Computing, chapter 18, pages 393{406. John Wiley & Sons, 2002

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


and related problems. SIAM J. Comput., 11, pp. 721736. 1982.

- 88 -

Enlaces de Internet:
http://www.cs.umd.edu/class/fall2001/cmsc420/tg.ps.gz
Documento Postcript sobre triangulaciones.
http://wwwcs.unipaderborn.de/cs/agmadh/WWW/Teaching/2005WS/AlgRa
dio/Exercises/solutions2.pdf
Demostraciones sobre spanners.
http://www.dcg.ethz.ch/publications/ewsn06.pdf
Tutorial sobre redes inalmbricas de R.Wattenhofer.
http://cgm.cs.mcgill.ca/~godfried/student_projects/zxm_b_skeleton
Informacin y applet sobre Beta-Skeletons
http://www.dirdim.com/lm_modelexamples.htm
Modelos de ejemplo de nubes de puntos 3D obtenidos mediante scanner.
http://www.fpsols.com/point_cloud.html
Software de demostracin para reconstruccin de nubes de puntos mediante
triangulaciones.

- 89 -

Anda mungkin juga menyukai