FACULTAD DE INFRMATICA
Julio 2007
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
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.
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
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
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
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
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
-4-
Captulo 1
Introduccin y objetivos
Captulo 1
Introduccin y objetivos
-6-
Captulo 1
Introduccin y objetivos
-7-
Captulo 1
Introduccin y objetivos
Figura 6.(a) Malla 10x10 sin fallos. (b) Malla 10x10 con fallos en vrtices y aristas.
-8-
Captulo 1
Introduccin y objetivos
-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)
|p| t
- 10 -
Captulo 2
n-1
n-1
i=1
i=1
i=1
- 11 -
Captulo 2
- 12 -
Captulo 2
- 13 -
Captulo 2
- 14 -
Captulo 2
- 15 -
Captulo 2
si es lo suficientemente pequeo.
Captulo 2
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
- 17 -
Captulo 2
- 18 -
Captulo 2
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.
- 19 -
Captulo 2
- 20 -
Captulo 2
- 21 -
Captulo 2
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.
- 22 -
Captulo 2
Figura 24. Aristas del grafo de Yao, con k=6, y Grafo de Yao
- 23 -
Captulo 2
- 24 -
Captulo 2
- 25 -
Captulo 2
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
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
(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.
- 28 -
Captulo 2
- 29 -
Captulo 2
- 30 -
Captulo 2
- 31 -
Captulo 2
- 32 -
Captulo 2
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.
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
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.
- 34 -
Captulo 2
- 35 -
Captulo 2
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
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).
- 37 -
Captulo 2
- 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.
3.2.
Captulo 3
- 41 -
Captulo 3
- 42 -
Captulo 3
- 43 -
Captulo 3
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.
- 44 -
Captulo 3
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
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.
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
- 47 -
Captulo 3
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).
- 48 -
Captulo 3
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
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:
- 50 -
Captulo 3
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
- 52 -
Captulo 3
- 53 -
Captulo 3
- 54 -
Captulo 3
- 55 -
Captulo 3
- 56 -
Captulo 3
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.
- 57 -
Captulo 3
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.
- 58 -
Captulo 3
- 59 -
Captulo 3
- 60 -
Captulo 3
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.
- 61 -
Captulo 3
Clase StateBar: implementa una barra de estado que visualiza las coordenadas
del ratn e informacin de las operaciones en curso.
- 62 -
Captulo 3
- 63 -
Captulo 3
- 64 -
Captulo 3
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
- 66 -
Captulo 3
- 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.
- 68 -
Captulo 4
Manual de usuario
Open
Save
Exit
Salir de la aplicacin.
Insert Automatic
Select
Remove
Eliminacin de vrtices
- 69 -
Captulo 4
Manual de usuario
Step Start
Step Stop
- 70 -
Captulo 4
Manual de usuario
- 71 -
Captulo 4
Manual de usuario
- 72 -
Captulo 4
Manual de usuario
4.3.
- 73 -
Captulo 4
Manual de usuario
4.4.
Superficie grfica
- 74 -
Captulo 4
Manual de usuario
4.6.
Ventana de configuracin
- 75 -
Captulo 4
Manual de usuario
- 76 -
Captulo 5
ESTUDIO COMPARATIVO
- 77 -
Captulo 5
Estudio comparativo
______________________
d(s,t)= (tx -sx)2 + (ty - sy)2
Ratio
Voraz
Brujula
Brujula Aleat.
Voraz-Brujula
Caras 1
Caras 2
Voraz-Caras-Voraz
20
40
60
80
100
120
N Vrtices
- 78 -
Captulo 5
Estudio comparativo
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
Voraz
Ratio
10
Brujula
Brujula Aleat.
Voraz-Brujula
Caras 1
Caras 2
Voraz-Caras-Voraz
0
20
40
60
80
100
120
N Vrtices
- 79 -
Captulo 5
Estudio comparativo
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
- 80 -
Captulo 5
Estudio comparativo
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.
Ratio
8
6
Caras 1
Voraz-Caras-Voraz
Caras 2
2
0
20
40
60
80
100
120
N' Vertices
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
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
- 82 -
Captulo 5
Estudio comparativo
Ratio
Caras 1
Caras 2
Voraz-Caras-Voraz
20
40
60
80
100
120
N' Vertices
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.
Ratio
8
6
Caras 1
Voraz-Caras-Voraz
Caras 2
2
0
20
40
60
80
100
120
N' Vertices
- 83 -
Captulo 5
Estudio comparativo
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
- 84 -
0-0,2
Captulo 5
Estudio comparativo
1-1,5
0,5-1
0,5
0-0,5
.9
0
20
40
60
80
Theta
Lambda
.5
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
- 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
[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
[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
[9]
- 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.
- 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 -