Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Grafos Geometricos
Grafos Geometricos
FACULTAD DE INFORMTICA
TABLA DE CONTENIDO
1.2
Motivacin___________________________________________ 2
1.2.1
1.2.2
1.2.3
2. Algoritmos_________________________________________ 7
2.1
2.1.1
2.1.2
2.1.3
2.2
2.3
2.4
2.5
2.6
2.7
2.8
3. Implementacin ___________________________________ 19
3.1
3.2
3.2.1
3.2.1.1
3.2.1.2
3.2.1.3
3.2.1.4
3.2.1.5
3.2.1.6
3.2.2
3.2.2.1
3.2.2.2
3.2.2.3
3.2.2.4
3.2.2.5
3.2.2.6
3.3
4. Manual de Usuario_________________________________ 51
4.1
4.1.1
4.1.2
4.1.3
Barras de herramientas__________________________________ 55
4.1.3.1
4.1.3.2
4.1.3.3
4.1.4
Triangulacin incremental_____________________________ 59
5.2
5.3
5.4
RNG_______________________________________________ 65
5.5
5.5.1
5.5.2
5.5.3
5.5.4
5.5.5
6. Sumario y Conclusiones_____________________________ 72
- ii -
LISTA DE ILUSTRACIONES
Ilustracin
Pgina
- iii -
- iv -
56
57
57
59
59
60
61
61
62
63
63
64
65
65
66
67
68
69
70
71
AGRADECIMIENTOS
-v-
GLOSARIO
JVM. Java Virtual Machine. Mquina virtual Java sobre la que ejecuta la
aplicacin RiLiGraph PFC.
- vi -
Captulo 1
INTRODUCCIN Y OBJETIVOS
El objetivo de este PFC es el de implementar una herramienta software que permita
estudiar el problema de la bsqueda de caminos en grafos en los que solamente se conoce
la informacin local a cada nodo, empleando para ello diversas estrategias.
Este tipo de problemas de routing aparecen en robtica, computacin distribuida, redes de
telefona, redes de computadores e incluso en nuestra vida diaria.
En numerosas ocasiones, el conocimiento del entorno por el cual discurre el camino es
incompleto y por tanto el robot / vehculo / paquete tiene que aprender del entorno. Los
algoritmos de routing empleados en este tipo de entornos tienen esta caracterstica de
aprendizaje y se conocen como online algorithms [BOS].
La herramienta software (RiLiGraph PFC) incluye diversos tipos de grafos que permiten un
amplio abanico de estudio sobre los que aplicar las estrategias de routing. En concreto, se
incluyen los siguientes tipos: Triangulacin incremental, Triangulacin de Delaunay, Grafo de
Voronoi, Grafo de vecindad dirigida, Grafo de Gabriel y Grafo de vecindad relativa (RNG). Adems se
incluyen diversas utilidades que complementan el estudio de grafos: Vecinos Delaunay de un
nodo, Cierre convexo y Vecinos ms prximos. Originalmente, RiLiGraph se basa en el trabajo de
los compaeros de facultad Rubn Naranjo y Damin Serrano.
Los algoritmos de routing desarrollados son: Greedy routing, Compass routing, Randomized
Compass routing, Hybrid Greedy Compass routing, Right Hand routing y Voronoi routing.
Una curiosa funcionalidad aadida al entorno, es la posibilidad de visualizar entornos de
trabajo real, tales como mapas cartogrficos, diagramas de redes, planos de estructuras, etc.
sobre los que es posible estudiar las diferentes estrategias de routing.
La estructura de este proyecto se compone de los siguientes captulos. El Captulo 2 est
dedicado al estudio de los algoritmos presentados y su integracin en el entorno software.
En el Captulo 3 se describen los detalles de implementacin de la herramienta y en el
Captulo 4 se incluye el Manual de usuario. El Captulo 5 se compone de un estudio
estadstico sobre las bondades de cada uno de los algoritmos estudiados. En el Captulo 6
se extractan las conclusiones obtenidas con el estudio.
1.1 Terminologa y definiciones
DEF 1.1. Grafo geomtrico. Dado el conjunto de vrtices V formado por n puntos
de Rs y el conjunto de aristas A formado por m pares de elementos de V. Un grafo
geomtrico G consiste en la tupla G = (V,A).
-1-
Captulo 1
Introduccin y objetivos
Captulo 1
Introduccin y objetivos
El turista perdido
Supongamos que un turista recin llegado a Madrid quiere visitar la plaza de Espaa. Segn
sabe, la plaza esta junto al edificio y la torre Espaa, dos de los construcciones mas elevadas
de la ciudad y por tanto visibles desde varios kilmetros. Tambin supongamos que las
calles por las que transitar permiten que al llegar a una interseccin vea las siguientes
intersecciones.
En estas condiciones, el mapa de la FIG. 1 representa un grafo geomtrico plano en el que
las intersecciones forman los vrtices del grafo y las calles que unen las intersecciones son
las aristas del grafo. La bsqueda del camino hasta la plaza de Espaa se ha convertido en
un problema de bsqueda de caminos en un grafo geomtrico plano.
No es probable que nuestro turista trate de calcular su camino hasta la plaza de Espaa
mediante un sofisticado algoritmo de routing, sino que emplear su sentido comn y tratar
de tomar las calles que hacen que la siguiente interseccin sea la ms prxima a los elevados
edificios. Curiosamente, como veremos mas adelante, esta sencilla estrategia ser la
adoptada por el algoritmo Greedy, un algoritmo cuyo rendimiento, analizado en el captulo
5, es muy prometedor.
El anlisis de las estrategias seguidas por los diversos algoritmos de routing, pueden ayudar a
planificar el urbanismo de los nuevos barrios de las ciudades y a saber donde ubicar seales
de posicionamiento en funcin del fallo del algoritmo en estudio.
-3-
Captulo 1
Introduccin y objetivos
El ejemplo anterior puede parecer explcitamente preparado para ilustrar estas tcnicas, ya
que el objetivo es siempre conocido por el agente que se desplaza, pero pensemos en la
tecnologa de posicionamiento por satlite (GPS y el futuro europeo Galileo) cuyos
dispositivos receptores cada da se hace ms populares. Estas unidades son capaces de
determinar su posicin en la superficie de la Tierra por medio de triangulacin con los
satlites geoestacionarios.
La popularizacin de estos dispositivos en toda clase de aparatos con capacidad de
movimiento o susceptible de trasladarse, nos hace pensar en la integracin con uno de los
mas exitosos dispositivos tecnolgicos, el telfono mvil. En los prximos meses veremos
esta integracin en dos etapas, primero como accesorio de los telfonos y ms tarde
integrado en el propio terminal mvil.
Ya podemos ver como la aplicacin de las tcnicas de routing estudiadas en este proyecto las
empleamos para encontrar la ruta adecuada a nuestro destino mientras conducimos un
vehculo equipado con navegador (GPS) y tambin lo veremos en un futuro en los
telfonos mientras caminamos por nuestras ciudades.
1.2.2
V = M
O
M ,
(1, n) L (n, n)
y una arista (vi,vj) A si y slo si la distancia Eucldea entre vi y vj, dist(vi,vj) = 1. [FIG. 2a]
Las mallas son un tipo de red de interconexin estudiadas ampliamente en la computacin
distribuida [MOR]. Los algoritmos paralelos de routing mas comunes alcanzan su objetivo
moviendo en primer lugar el paquete a la columna correcta (coordenada x) y luego lo
mueven a la fila adecuada (coordenada y).
-4-
Captulo 1
Introduccin y objetivos
Este sencillo algoritmo obtiene resultados correctos mientras que todos los elementos de
proceso (vrtices) y todos los elementos de comunicacin (aristas) de la red estn
operativos y funcionen adecuadamente. Pero en ocasiones, algn elemento de la red puede
fallar [FIG. 2b] produciendo que el algoritmo de routing tambin falle. Adems, estos fallos
son impredecibles, lo que supone que puede que el error no se propague a todos los
elementos de proceso de la red. En esta situacin, la comunicacin entre nodos se
convierte en un problema de bsqueda de caminos en un grafo geomtrico plano.
1.2.3
Redes inalmbricas
Las redes inalmbricas son redes que conectan estaciones distantes sin necesidad de cable.
Dos nodos de una WLAN (Wireless Local Area Network) se podrn comunicar si la distancia
que las une es menor que el mnimo rango de transmisin de las dos estaciones. La
tremenda popularidad de estas redes de computadores y su desaforado crecimiento puede
producir cambios en la topologa de red de una determinada organizacin que no sean
asumidos por la totalidad de nodos. En estas condiciones, la comunicacin entre nodos de
la red se convierte en un problema de routing.
El grafo de discos unitarios U = (V,A) es un tipo de grafo geomtrico cuyas aristas
cumplen dist(vi,vj) 1. Este tipo de grafo es el modelo comnmente aceptado para
representar WLAN en las que todos sus nodos transmiten con el mismo rango de
potencia.
Ntese que a diferencia de los grafos de mallas, la posicin de los vrtices de U es arbitraria
pudindose llegar incluso a que U no sea plano. En estos casos, se demuestra que siendo U
conexo, se puede extraer un subgrafo U de U solamente con informacin local a U. De
hecho, el conjunto de aristas de U con un vrtice comn v de U se pueden calcular a partir
de los adyacentes de v. Por lo tanto, el problema de routing en U se convierte en un
problema de routing en un grafo geomtrico plano.
Dados dos vrtices u y v U, sea el disco (u,v) con dimetro dist(u,v). Veamos como el grafo
de Gabriel GG(S) [3.2.1.5] es un grafo geomtrico en el que la arista (u,v) slo esta presente
si el disco dist(u,v) no contiene otro punto de S.
Sea U = GG(S) U. Estudiemos como siendo U conexo, U tambin lo es. Dado el rbol
de expansin mnimo AEM(V) subconjunto de GG(V) probemos que AEM(V) U si U
es conexo. Veamos, por contradiccin, como AEM(V) contiene una arista (u,v) con
longitud mayor de 1. Eliminando esta arista de AEM(V) produce un grafo con dos
componentes conexos, Cu(V) y Cv(V). Como U es conexo, contiene una arista (w,x) de
longitud no mayor de 1 de forma que w Cu(V) y x Cv(V). Reemplazando la arista (u,v)
por (w,x) en AEM(V) obtenemos un grafo conexo de S con peso menor que AEM(V). Lo
que se contradice.
-5-
Captulo 1
Introduccin y objetivos
Sea (u,v) una arista de U de forma que (u,v) GG(V). Dada la definicin de GG(V) existe
un punto w contenido en el disco con dimetro dist(u,v), este punto acta como testigo de
que (u,v) GG(V).
Veamos como cada arista puede ser identificada y eliminada por u y v usando solamente
informacin local. Sean u y v vrtices de U, de forma que (u,v) GG(V) y sea w un testigo
de ello. Por tanto, (u,w) y (v,w) estn en U. Probmoslo, sea m el punto medio de (u,v).
Entonces, dist(u,m) , dist(v,m) y dist(w,m) . Por tanto, dada la triple inecuacin,
dist(u,w) 1, dist(v,w) 1 y (u,w) y (v,w) estn en U.
A travs de la bsqueda de un vrtice v S, un paquete puede eliminar las aristas que
inciden en v que no estn en U simplemente eliminando cualquier arista que no esta en
GG(N(v) {v}). Anteriormente hemos visto que si aplicamos este algoritmo a cada vrtice de
U, entonces el grafo resultante es conexo. Como GG(V) es plano, U tambin lo es. Por
tanto, hemos conseguido generalizar el problema de routing en un grafo unitario en un
problema de routing en un grafo geomtrico plano.
-6-
Captulo 2
ALGORITMOS
La clasificacin de los algoritmos de routing empleados, responde a su necesidad de
memoria y/o a su aleatoriedad.
2.1 Clasificacin de algoritmos de routing
2.1.1
i ( s, t ) = i 1
i 1
( ( s, t ), N ( ( s, t )), t ) en otro caso
Vemos que el algoritmo tiene xito en el camino de s a t si y solo si existe un i 0 de forma
que i ( s, t ) = t
Lo que distingue a los algoritmos sin memoria es que si visitan al mismo vrtice dos veces,
entonces el algoritmo falla ya que queda atascado en un bucle. Formalmente, A falla en el
camino de s a t si y solo si i ( s, t ) = j ( s, t ) t para algn i j
2.1.2
-7-
Captulo 2
Algoritmos
El primer argumento de corresponde con el nodo actual, el segundo argumento son los
adyacentes del nodo actual, el tercer argumento corresponde con el destino y el ltimo
argumento es una cadena de k bits aleatorios. La salida de corresponde con el resultado
de la funcin que es uno de los nodos adyacentes a v y el que se visitar en la siguiente
iteracin.
Diremos que un algoritmo aleatorio sin memoria falla si la probabilidad de alcanzar t
comenzando en s es 0. Formalmente:
s
si i = 0
i ( s, t , R) = i 1
i 1
( ( s, t , R), N ( ( s, t , R)), t , ri ) en otro caso
Donde R = r1, r2, es una secuencia infinita de k bits.
Formalmente, A falla en el camino de s a t si y solo si i ( s, t , R) t para todo i y todo R.
Puede parecer que esta definicin de fallo es un tanto dbil, en cuanto se puede dar el caso
que solo una de las infinitas secuencias de R consiga el xito. Pero realmente no es difcil
verificar que si el algoritmo no es vencido por un grafo G entonces para cualquier par de
vrtices s y t de G, la probabilidad de obtener xito es 1. (Debido a que el algoritmo no
necesita memoria)
2.1.3
Se dice que un algoritmo necesita memoria constante k si el siguiente nodo a visitar desde
un nodo v depende nicamente de v, de N(v) y de M, donde M es una memoria de k bits
que contiene informacin de nodos previamente visitados. Su funcin de transicin se
define:
: [R2, (R2)*, R2, k] R2
El primer argumento de corresponde con el nodo actual, el segundo argumento son los
adyacentes del nodo actual y el tercer argumento representa la memoria usada por el
algoritmo. El conjunto k es el alfabeto de elementos representables por una unidad de
memoria. Para nuestro caso, consiste en un conjunto de puntos de R2 as como de los log
n bit de enteros. Adicionalmente A define una funcin que concreta como se usa la
memoria M.
: [R2, (R2)*, R2, k] k
Si se define i como:
si i = 0
i ( s, t ) = i 1
i 1
i 1
( ( s, t ), N ( ( s, t )), t , ( s, t )) en otro caso
Captulo 2
Algoritmos
si i = 0
i ( s, t ) = i 1
i 1
i 1
( ( s, t ), N ( ( s, t )), t , ( s, t )) en otro caso
A logra el xito en el camino de s a t si y solo si existe un i 0 de forma que i ( s, t ) = t
Definiremos el entorno de estudio como el grafo dirigido sobre el plano P, con n nodos
cuyas aristas tienen un peso definido por la distancia Euclidea definida entre sus nodos
extremos.
El origen vsrc y el destino vdst son nodos de G, y un paquete slo se puede mover sobre las
aristas de G. Inicialmente, un paquete solo conoce vsrc , vdst y N(vsrc) donde N(vsrc) denota el
conjunto de nodos adyacentes a v. Definiremos vcur como el nodo en el que el paquete esta
transitando.
Lo que justifica el estudio de las necesidades de memoria de los algoritmos de routing, son
las redes de comunicaciones en las que la memoria usada por el algoritmo, es almacenada
en informacin de cabecera que viaja en el paquete. Dado que esta informacin slo se
necesita en labores de encaminamiento y ni emisor ni receptor hacen uso de la misma,
produce un descenso efectivo del ancho de banda de la comunicacin.
Dado un algoritmo A, decimos que un grafo G vence a A si existe un par origen / destino tal
que un paquete nunca alcanza el destino comenzando en el origen. Si con A se encuentra un
camino P desde vsrc a vdst , decimos que P es el camino de A desde vsrc hasta vdst. En esta
definicin no estamos usando el trmino camino de un modo estrictamente terico, ya que
P puede contener al mismo nodo ms de una vez.
Los algoritmos de routing que hemos estudiados son los siguientes:
1. Greedy routing. Es un algoritmo sin memoria que no es vencido por ninguna
triangulacin de Delaunay.
2. Compass routing. Es un algoritmo sin memoria que no es vencido por ninguna
triangulacin regular.
3. Randomized Compass routing. Es un algoritmo aleatorio sin memoria que usa 1 bit
aleatorio por cada paso y no es vencido por ninguna triangulacin.
4. Hybrid Greedy Compass routing. Es un algoritmo sin memoria que no es vencido por
ninguna triangulacin.
5. Right Hand routing. Es un algoritmo que usa memoria O(1) y no es vencido por
ninguna divisin convexa.
6. Voronoi routing. Es un algoritmo para triangulaciones de Delaunay que usa memoria
O(1) en el que el paquete nunca viaja mas de una constante proporcional a la
distancia Euclidea entre vsrc y vdst .
Al final de este captulo consideraremos otros tipos de problemas de routing. En concreto
estudiaremos dos variantes de estos problemas, los algoritmos de broadcasting (routing del
punto al plano) y geocasting (routing del punto a la regin).
-9-
Captulo 2
Algoritmos
- 10 -
Captulo 2
Algoritmos
El algoritmo compass elige como siguiente vrtice del camino cmp(vcur) al nodo que minimiza
el ngulo formado por vdst , vcur , cmp(vcur) de entre los adyacentes a vcur .
Formalmente, compass se define por la siguiente funcin de transicin:
cmp(v, N(v), t) = u N(v) : (u, v, t) (w, v, t) | w N(v)
El ngulo que se estima es el menor de los medidos en sentido horario y antihorario. Puede
parecer inicialmente que el algoritmo compass debe encontrar un camino entre dos nodos
cualesquiera de un grafo. Sin embargo, la triangulacin mostrada en la FIG. 5 muestra un
tipo de grafo en el que nunca se alcanza el destino, ya que el paquete se encuentra
continuamente pivotando en el ciclo formado entre los nodos de la triangulacin.
- 11 -
Captulo 2
Algoritmos
Sea w el tercer vrtice de vivi+1. w no puede formar parte del tringulo formado por vi , vi+1 y
vdst , ya que si as fuera se cumplira cmp(vi) = w. Pero entonces, el segmento que une w y vi+1
oscurece a vi y por tanto vivi+1 oscurece a vi-1vi .
La triangulacin de Delaunay es un caso especial de una triangulacin regular [ZIE]. Si T es
una triangulacin regular, no existe ningn conjunto de tringulos de T que se oscurezcan
cclicamente entre s desde ningn nodo [EDE]. Este resultado junto con las propuestas
anteriores confirma que ninguna triangulacin regular vence al algoritmo compass.
Sea cw(v) el nodo de N(v) que minimiza el ngulo en sentido horario vdst, v, cw(v) y sea ccw(v)
el nodo de N(v) que minimiza el ngulo en sentido antihorario vdst, v, ccw(v) [FIG. 8]
El algoritmo randomized compass mueve el paquete a uno de los candidatos de {cw(v), ccw(v)}
con equiprobabilidad.
Formalmente, randomized compass se define por la siguiente funcin de transicin:
- 12 -
Captulo 2
Algoritmos
cw(v) si r = 0
rcmp(v,N(v),r) =
ccw(v) si r = 1
Una triangulacin T vence a un algoritmo de routing (aleatorio) si existe un par de nodos vsrc
y vdst de T de forma que un paquete con origen en vsrc y con destino en vdst tiene probabilidad
0 de alcanzar vdst en un nmero finito de pasos.
Como randomized compass routing es un algoritmo sin memoria, si encontramos una
triangulacin T que no venza al algoritmo implica que el paquete alcanza su destino con
probabilidad 1.
No hay ninguna triangulacin que venza al algoritmo randomized compass routing.
Probmoslo por contradiccin. Sea T una triangulacin que vence al algoritmo randomized
compass routing. Existe, por tanto, un nodo vdst de T y un conjunto mnimo S de nodos de T
que cumplen:
1. vdst S.
2. El subgrafo H de T formado por los nodos de S es conexo.
3. Para cada v S, cw(v) S y ccw(v) S.
Sea v un nodo en la frontera de H. La existencia de cada nodo est probada [CHV]. Los
adyacentes de v deben ser cw(v) y ccw(v). Por la propia definicin de cw(v) y ccw(v), y por el
hecho de que T sea una triangulacin, (v, cw(v), ccw(v) )est en T, pero esto no es posible ya
que v no est en la frontera de H.
Captulo 2
Algoritmos
Probmoslo por contradiccin. Sea T una triangulacin que vence al algoritmo greedy compass routing. Existe, por tanto, dos nodos vsrc y vdst de T para los que no existe un camino.
Adems tiene que existir un ciclo C = v0 ,, vk-1 de T de tal forma que el algoritmo transita
de vi a vi+1 para todo 0 i k. Como hemos visto anteriormente, vdst est en el interior de C.
Todos los nodos de C estn circunscritos al interior o a la frontera del disco D centrado en
vdst [FIG. 9].
Probmoslo por contradiccin. No todos los nodos de C estn en D. Consideremos un
nodo vi en el interior de D de tal forma que vi+1 = ccw(vi) est en la frontera de D, por tanto
cw(vi) no est en el interior de D, de otro modo el algoritmo no hubiera avanzado a vi+1.
Entonces la arista que une cw(vi) con ccw(vi) divide a D en dos regiones, R1 contiene a vi y R2
contiene a vdst . C entra en la regin R1 por cw(vi) y sale por vi+1 = ccw(vi). Por tanto, esto no
puede ocurrir porque tanto cw(cw(vi)) como ccw(cw(vi)) estn contenidos en el semiespacio
limitado por la arista que une cw(vi) con ccw(vi) y que contiene a vdst , y estos no estn
contenidos en R1.
Por lo tanto, todos los nodos de C estn circunscritos al interior o a la frontera del disco D
centrado en vdst . Como C contiene a vdst y la triangulacin T es conexa, se debe dar que vj ,
cw(vj) o ccw(vj) estn contenidos en D. Supongamos que es cw(vj). Aqu encontramos la
contradiccin, ya que el algoritmo greedy compass habra elegido a cw(vj) en lugar de vj+1 .
- 14 -
Captulo 2
Algoritmos
Sea el grafo T obtenido mediante borrado de todas las aristas de T que intersectan al
segmento que une origen con destino [FIG. 11]. El algoritmo right hand routing utiliza la regla
de la mano derecha para transitar desde s hasta t por la cara f.
Right Hand routing es un algoritmo que usa memoria O(1) y no es vencido por ninguna
divisin convexa.
Para probar que right hand routing es un algoritmo que no es vencido por ninguna divisin
convexa tan slo necesitamos demostrar que s y t estn conectados en T, ya que forman
parte de la misma cara f de T [FIG. 11b]. Sean f1,,fk las caras de T que son atravesadas por
el segmento que une s con t [FIG. 12]. Ntese que todas las aristas atravesadas por el
- 15 -
Captulo 2
Algoritmos
segmento (s,t) son compartidas por las caras f1,,fk. Para cada 1 i < k, fi y fi+1 tienen una
arista comn. Sea vi el nodo comn entre fi y fi+1. Como cada fi es convexa, existe un camino
Pi desde vi-1 hasta vi que deja a la izquierda el segmento (s,t). De la misma forma, debido a la
convexidad de las caras, existe un camino P0 de s a v1 que es atravesado slo en s y un
camino Pk-1 de vk-1 a t que slo es atravesado en t. La unin de P0,P1,Pk-1 forman el camino
de s a t en T.
Sin embargo, como podemos ver en la [FIG. 14], el algoritmo de Voronoi no es eficiente en
todas las triangulaciones de Delaunay.
- 16 -
Captulo 2
Algoritmos
max min {
vV rt
( s, rt ) = v ,
Es el nmero de pasos dados por el paquete antes de que todos los vrtices de la regin de
destino hayan visto al paquete.
Ntese que siguiendo esta notacin nos estamos restringiendo a algoritmos en los que hay
exactamente una sola copia del paquete en un determinado momento durante la ejecucin
del algoritmo. La razn por la que restringimos las ocurrencias se explica en trminos de
aplicabilidad, ya que ni el robot, ni el vehculo ni la persona que camina pueden estar
duplicados. Aunque hemos hecho el estudio bajo este modelo, estos algoritmos permitiran
la duplicacin de paquetes, en cuyo caso el nmero de mensajes enviados por el algoritmo
sera el mismo aunque puede aumentar el tiempo de ejecucin.
Es destacable que existe un algoritmo aleatorio sin memoria que resulta trivial para el
problema de broadcasting. En cada etapa, el paquete simplemente elige un vecino aleatorio.
El resultado es un camino aleatorio en G, si continuamos el camino indefinidamente, todos
los vrtices de G sern visitados.
Si permitimos que nuestros algoritmos usen memoria O(n) para resolver los problemas de
broadcasting y geocasting, entonces encontraremos fcilmente un algoritmo con un tiempo de
- 17 -
Captulo 2
Algoritmos
entrega ptimo simulando la bsqueda en profundidad del primero. Este tipo de bsqueda
hace uso de una pila y varios bits de marca de vrtices de G, lo que puede ser simulado con
un tamao de memoria O(n). Por tanto, con este proceso obtenemos un algoritmo de
broadcasting con un tiempo de entrega O(n).
- 18 -
Captulo 3
IMPLEMENTACIN
En este captulo se tratarn los detalles de implementacin de la aplicacin RiLiGraph PFC
(en adelante RLG) y la integracin de los distintos algoritmos analizados en el Captulo 2 en
la herramienta software.
Concretamente se justificar la eleccin del lenguaje de programacin utilizado para
codificar RLG, se detallarn los requisitos mnimos que debe cumplir la mquina donde se
desee utilizar dicha aplicacin y se especificarn detalles de implementacin para dar una
idea de los algoritmos que se han implementado en RLG y sus condiciones de
funcionamiento.
En este trabajo, la eleccin del lenguaje de programacin ha quedado determinada, en gran
parte, por el objetivo que persegua la aplicacin y por el uso que se pretende hacer de ella.
Para el desarrollo de RLG se ha elegido el lenguaje Java.
Como se coment anteriormente, esta herramienta pretende agrupar varios algoritmos de
routing y ponerlos a prueba mediante nubes de puntos y tipos de grafos propuestos por el
usuario. Para ello, tambin se pretende dotar a RLG de un aspecto claro y visualmente
atractivo, de modo que tanto el problema propuesto como su solucin (adems de las
opciones elegidas) puedan apreciarse rpidamente de un simple vistazo.
Adems, el interfaz de usuario de RLG debe ser claro, rpido y sencillo. Para ello se tiende
a un sistema de manejo en el que todas las operaciones se puedan realizar mediante el ratn
(ubicacin de puntos, eleccin del tipo de grafo, eleccin del tipo de routing, visualizacin de
las operaciones realizadas por la aplicacin paso a paso, etc.)
En principio, estas especificaciones nos hacen dirigirnos a lenguajes de programacin que
como Java cuenten con amplias libreras grficas que produzca cdigo para sistemas
operativos con interfaz grfica. De este modo se cuenta con la ventaja de que los elementos
utilizados para la comunicacin con la aplicacin (interfaz) son ampliamente conocidos
(botones, ventanas, listas desplegables...).
Adems, aprovechando las ventajas que ofrece el lenguaje Java sobre su orientacin a la red
Internet, se podra aumentar la versatilidad de RLG. Es decir, el cdigo del programa
podra estar localizado en un servidor pudindose descargar desde cualquier lugar, sin
necesidad de ms ayuda que la del navegador que se utilice habitualmente (applet de Java)
Una ventaja aadida a la ejecucin desde un navegador es que el programa no requiere una
compleja instalacin o libreras especficas. Es ms, RLG puede integrarse dentro de un
entorno en el que se encuentra su propia documentacin en formato HTML, fcil de
redactar y utilizar, y con un aspecto bastante atractivo.
-19-
Captulo 3
Implementacin
- 20 -
Captulo 3
Implementacin
Requisitos software:
o Sistema operativo con interfaz grfico
o JVM 1.4.0 o superior
o Navegador que integre JVM
- 21 -
Captulo 3
3.2.1
Implementacin
El algoritmo seguido para este tipo de triangulaciones comienza con la ordenacin de los
puntos a triangular segn las abscisas de las coordenadas de los puntos. Aunque esta
ordenacin implica realizar una serie de clculos aadidos respecto a una triangulacin
incremental sin preordenacin, permitir posteriormente asegurar que cada punto a
introducir estar fuera de la red de tringulos construida hasta el momento. De esta forma
se evita la necesidad de comprobar si cada punto se encuentra dentro de algn tringulo ya
formado y, por consiguiente, de cambiar su estructura para triangularlo.
Una vez obtenida la preordenacin, el problema que surge es el de evitar que las aristas que
se van trazando se crucen con otras ya pertenecientes a la triangulacin. La solucin
es trazar siempre la primera arista desde el punto a triangular (al que, por claridad
llamaremos t) hacia el ltimo punto que se triangul (p) ya que siempre puede hacerse sin
riesgo de corte [FIG. 16].
Una vez dado ese primer paso, partiendo del punto p se podr recorrer el cierre convexo de
la triangulacin en los dos sentidos [FIG. 17].
- 22 -
Captulo 3
Implementacin
Se tomar un sentido cualquiera y se trazarn aristas desde el punto t hacia los puntos del
cierre. Llegar un momento en el que, al trazar una arista desde t a un punto del cierre,
todos los dems puntos del cierre queden al mismo lado de la arista trazada. Si todos los
puntos quedan al lado derecho, dicho punto del cierre ser el punto de soporte inferior
[FIG. 18].
- 23 -
Captulo 3
Implementacin
Una vez encontrados los puntos de soporte superior e inferior, se habr finalizado la
triangulacin del punto t y se podr elegir el siguiente punto de la nube para aadirlo a la
triangulacin existente.
A continuacin se describe el algoritmo de una forma ms precisa:
1. Ordenar todos los puntos de la nube a triangular por su coordenada X (En caso de
que dos puntos tengan igual coordenada X, se ordenarn por su coordenada Y)
2. Tomar los tres primeros puntos ordenados y formar un tringulo. Este triangulo
formar por s mismo la triangulacin de esos tres primeros puntos, y su cierre
convexo ser el mismo tringulo.
3. Mientras queden puntos de la nube por triangular, tomar el primero de ellos por
orden (punto t) para realizar con l las siguientes operaciones:
3.1 Trazar una arista desde punto t hacia el punto p en la triangulacin.
3.2 Tomando los puntos del cierre en un sentido determinado a partir del siguiente
al punto t en el sentido elegido, ir trazando aristas desde dichos puntos hacia el
punto t, hasta encontrar un punto de soporte.
3.3 Tomando los puntos del cierre en el sentido contrario partiendo del siguiente
punto al punto t en el sentido elegido, e ir trazando aristas desde dichos puntos
hacia el punto t, hasta encontrar el otro punto de soporte.
3.4 Una vez calculada la nueva triangulacin, calcular su cierre convexo y volver a 3
hasta triangular todos los puntos.
En la aplicacin se ha tomado el orden de la preordenacin de la siguiente manera: primero
los puntos con menor coordenada X y luego los de mayor. En caso de coincidir la
coordenada X de varios puntos, se colocar primero el de menor coordenada Y.
A la hora de ir trazando aristas desde el punto t hacia los puntos del cierre convexo de la
triangulacin, se ha optado por recorrer la triangulacin en el sentido de las agujas del reloj
hasta encontrar el punto de soporte inferior. Una vez logrado, se recorre el cierre en el
sentido antihorario hasta encontrar el punto de soporte superior.
El clculo del cierre convexo de una triangulacin es bastante costoso, y penalizara mucho
la velocidad de la triangulacin si se tuviera que calcular por completo cada vez que se
inserta un nuevo punto. Por tanto, el cierre se puede calcularse de la siguiente forma:
Cada vez que se aade un punto a la triangulacin se trazarn aristas desde ste hacia el
cierre de la triangulacin. Por lo tanto, muchas de las aristas que antes eran exteriores,
pasan a ser ahora interiores a la triangulacin. Por lo tanto esas aristas interiores ya no
pertenecern al cierre convexo.
Sin embargo, las dos aristas que se trazan desde el punto aadido hacia los dos puntos de
soporte siempre sern exteriores en la triangulacin, por lo que deben ser aadidas
automticamente al cierre de la misma.
Ya que, en cada paso, el cierre de la triangulacin se calcula a partir del cierre anterior, tan
slo queda indicar el comienzo del algoritmo del clculo del cierre: El algoritmo
comenzar con el primer tringulo obtenido por la triangulacin, y su cierre ser todo el
tringulo.
- 24 -
Captulo 3
Implementacin
Como puede verse, este algoritmo del clculo del cierre convexo no necesita complicados
clculos imprescindibles en otros algoritmos para comprobar si dos aristas se cortan, ni
necesita realizar un nmero de operaciones desmesurado. De hecho, se puede realizar la
eliminacin de aristas del cierre convexo a medida que quedan aristas interiores al trazar
nuevas aristas desde el punto t hacia el cierre convexo, con lo que se podra integrar el
algoritmo del clculo del cierre dentro del clculo de la triangulacin.
Por ltimo, sealar que en este algoritmo de triangulacin es imprescindible recalcular
todos los tringulos desde el principio cada vez que se inserta un punto. Esto se debe a que,
al insertar un nuevo punto, ste puede variar la preordenacin de puntos existente.
- 25 -
Captulo 3
Implementacin
- 26 -
Captulo 3
Implementacin
Otra aplicacin de esta triangulacin, como se vio en la introduccin, es ser la base para el
clculo de otras estructuras (rboles y grafos), tambin debido a sus propiedades: A partir
de la triangulacin de Delaunay, descartando aristas, se pueden obtener fcilmente grafos
de vecindad relativa de puntos.
La triangulacin de Delaunay puede caracterizarse de varias formas, que servirn para
definirla y para encontrar mtodos que sirvan para calcularla. A continuacin se dan tres
definiciones:
Maximizacin de ngulos
Dado que todas las posibles triangulaciones sobre un mismo conjunto finito de puntos en
el plano cuenta necesariamente con el mismo nmero de tringulos (y que, por tanto, todos
los posibles vectores de ngulos correspondientes a esas triangulaciones tendran el mismo
nmero de elementos) , podra definirse la triangulacin de Delaunay como la que posee el
vector de ngulos mayor de entre todas las posibles triangulaciones, entendindose que los
vectores han sido ordenados mediante orden lexicogrfico.
Diagrama de Voronoi
- 27 -
Captulo 3
Implementacin
Estas propiedades hacen que este diagrama pueda servir para conocer el rea de influencia
de cada punto, encontrar el lugar del plano ms alejado de los puntos que actualmente
forman la nube, encontrar el punto ms cercano a un lugar del plano cualquiera, averiguar
dnde situar un punto para que su rea de influencia sea mayor teniendo en cuenta los
puntos ya existentes en el plano, etc.
Una vez conocido el diagrama de Voronoi, pueden definirse una serie de propiedades que
permiten calcular una triangulacin de Delaunay a partir de dicho diagrama de forma
directa e inequvoca. Es por eso que se dice que el diagrama de Voronoi y la triangulacin
de Delaunay son duales:
o
o
o
o
o
o
Captulo 3
Implementacin
modificndola; bastar con cambiar los orgenes y destinos de las aristas para obtener una
triangulacin a partir de cualquier otra.
Aqu es donde cobran importancia las propiedades indicadas en las definiciones de
maximizacin de ngulos y propiedades respecto a circunferencias: dada una triangulacin
cualquiera, se puede ir comprobando si cada tringulo cumple la propiedad respecto a
circunferencias (circunferencia circunscrita al tringulo). En caso de no ser as, existir un
punto en el interior de la circunferencia que compartir una arista con el tringulo
circunscrito.
Dicha arista compartida sera una arista ilegal [FIG. 22], y habra que realizar sobre ella lo que
se denomina una operacin de flip. Esta operacin consiste en cambiar esa arista ilegal
por una arista legal y se realizar de la siguiente forma:
Puede observarse que los tres puntos del tringulo sobre el que se circunscribe la
circunferencia forman, junto con el punto interno a circunferencia pero ajeno al tringulo,
un cuadriltero. En ese caso, la arista ilegal sera una de las diagonales del cuadriltero, y
bastara con cambiar dicha diagonal por la diagonal opuesta para completar la operacin de
flip [FIG. 23].
- 29 -
Captulo 3
Implementacin
dist ( p, q) = ( px qx ) 2 + ( p y q y ) 2
Sea P = {p1,p2,...,pn} un conjunto de n puntos distintos en el plano. Definimos el diagrama
de Voronoi de P como la subdivisin del plano en n regiones, cada una correspondiente a
un punto de P, cumpliendo, que un punto q pertenece a la regin correspondiente al punto
pi si y solamente si dist(q,pi) < dist(q,pj) para cada punto pj de P, con j distinto de i.
Denotamos el diagrama de Voronoi de P como Vor(P). La regin correspondiente al punto
pi la llamaremos V(pi).
Observemos por un momento la estructura de una nica regin de Voronoi. Para dos
puntos p y q en el plano definimos el bisector de p y q como el bisector perpendicular del
segmento pq. Este bisector divide el plano en dos semiplanos. Denotamos el semiplano que
contiene a p como h(p,q) y al semiplano que contiene a q como h(q,p). Se puede observar
que r pertenece a h(p,q) si y solamente si dist(r,p) < dist(r,q). Podemos obtener de aqu las
siguientes conclusiones:
V ( pi ) =
I h( p , p )
i
1 j n , j i
- 30 -
Captulo 3
Implementacin
V(pi) es la interseccin de n-1 semiplanos y por tanto una regin poligonal convexa con,
como mximo n-1 vrtices y n-1 lados. Es decir, que la regin de Voronoi de un
determinado punto, consistir en la interseccin de todos los semiplanos h(pi,pj).
Obviamente ste no sera un algoritmo eficiente para el clculo del Diagrama de Voronoi
de la nube de puntos completa ya que habra que repetir el proceso para los n puntos de la
nube.
Si todos los puntos de P son colineales, entonces Vor(P) (Diagrama de Voronoi de P) estar
formada por n-1 rectas paralelas y n regiones [FIG. 24].
Para un conjunto de puntos P del plano, un punto q es vrtice del Diagrama de Voronoi de
P si y solamente si el crculo vaco de mayor tamao con centro en q contiene tres o ms
puntos de P sobre su circunferencia [FIG. 25].
p1
p3
q
p2
- 31 -
Captulo 3
Implementacin
- 32 -
Captulo 3
Implementacin
El grafo de vecindad Gabriel [FIG. 28] es un subgrafo del grafo de Delaunay. Para
determinarlo, retomaremos la definicin del grafo de Delaunay basada en la creacin de
circunferencias vacas.
Dos puntos dados sern vecinos Gabriel si la circunferencia que los deja diametralmente
opuestos no contiene a ningn otro punto [FIG. 29b] (ntese que en este caso es muy difcil
que tres puntos coincidan en la misma circunferencia, y que en Delaunay tambin esta
contemplada esta posibilidad, es por esto que el grafo de Gabriel es un subgrafo de
Delaunay).
(a)
(b)
El algoritmo que se sigue, toma la lista de aristas del grafo de Delaunay y comprueba la
condicin anterior en cada una de las aristas. Si se encuentra una arista legal se aade a la
lista de aristas del grafo Gabriel, si por el contrario se encuentra una arista ilegal, se
desestima y se pasa a analizar la siguiente arista.
- 33 -
Captulo 3
Implementacin
(a)
(b)
Ntese que para determinar el grafo de vecindad relativa, slo habr que comprobar que
aristas del grafo de Gabriel cumplen la condicin luna.
- 34 -
Captulo 3
3.2.2
Implementacin
vdst
vsrc
El algoritmo greedy es un algoritmo voraz muy simple que requiere de las siguientes
condiciones para su utilizacin:
o Para construir la solucin, disponemos de un conjunto de tamao n, que son los
candidatos a formar parte de la solucin.
o Debe existir una funcin que compruebe si un subconjunto de los n candidatos son
vlidos, es decir, forman una posible solucin del problema. Si el conjunto de
candidatos puede alcanzar una solucin, esa solucin se denomina factible.
o Debe existir otra funcin, de seleccin, que es la que decide quin es el candidato
ms prometedor.
Un esquema voraz ha de seguir los siguientes pasos:
1. Inicializar el conjunto de candidatos.
2. En cada caso, se intenta aadir al conjunto de los escogidos al mejor de los no
escogidos utilizando la funcin de seleccin, que estar basada en algn criterio de
optimizacin.
3. Tras cada paso, comprobamos si el conjunto seleccionado es completable, es decir,
comprobar si al aadir ms candidatos podemos llegar a una solucin.
a. Si no es completable, se rechaza el ltimo candidato y no vuelve a entrar en
el conjunto.
b. Si es completable, el candidato ya no sale del conjunto.
4. Tras cada incorporacin, comprobamos si el conjunto es solucin.
5. El algoritmo termina al encontrar la solucin.
6. El algoritmo es correcto si la solucin encontrada es la ptima.
En el algoritmo greedy una vez definido el tipo de grafo, se selecciona el nodo origen (vsrc) y
el nodo destino (vdst). En cada iteracin se compara la distancia al destino de cada nodo
adyacente al nodo actual (vcur) y se elige aquel nodo adyacente con menor distancia. La
eficiencia del algoritmo radica en el espacio de bsqueda de cada iteracin, que corresponde
con el conjunto de nodos adyacentes al nodo actual. El nmero de elementos de este
conjunto es siempre reducido y por tanto el espacio de bsqueda tambin lo es.
- 35 -
Captulo 3
Implementacin
vdst
vsrc
En el algoritmo compass una vez definido el tipo de grafo, se selecciona el nodo origen (vsrc) y
el nodo destino (vdst). En cada iteracin se compara el ngulo entre el nodo adyacente al
nodo actual (vcur) y el nodo destino (vdst) y se elige aquel nodo adyacente con menor ngulo.
Al igual que en el algoritmo anterior, la eficiencia del algoritmo radica en el espacio de
bsqueda de cada iteracin, que corresponde con el conjunto de nodos adyacentes al nodo
actual. El nmero de elementos de este conjunto es siempre reducido y por tanto el espacio
de bsqueda tambin lo es.
- 36 -
Captulo 3
Implementacin
vdst
vsrc
En el algoritmo random compass una vez definido el tipo de grafo, se selecciona el nodo
origen (vsrc) y el nodo destino (vdst). En cada iteracin se compara el ngulo tanto a izquierda
como a derecha entre el nodo adyacente al nodo actual (vcur) y el nodo destino (vdst) y se
selecciona aquellos nodos adyacentes que minimizan el ngulo a izquierda o en sentido
antihorario (ccw(v)) y el ngulo a derecha o en sentido horario (cw(v)) [FIG. 36]. El algoritmo
determina con probabilidad 0.5 cual es el nodo elegido entre los dos seleccionados
anteriormente. Al igual que en el algoritmo anterior, la eficiencia del algoritmo radica en el
espacio de bsqueda de cada iteracin, que corresponde con el conjunto de nodos
adyacentes al nodo actual. El nmero de elementos de este conjunto es siempre reducido y
por tanto el espacio de bsqueda tambin lo es.
- 37 -
Captulo 3
Implementacin
vdst
vsrc
En el algoritmo greedy compass una vez definido el tipo de grafo, se selecciona el nodo
origen (vsrc) y el nodo destino (vdst). En cada iteracin se compara el ngulo tanto a izquierda
como a derecha entre el nodo adyacente al nodo actual (vcur) y el nodo destino (vdst) y se
selecciona aquellos nodos adyacentes que minimizan el ngulo a izquierda o en sentido
antihorario (ccw(v)) y el ngulo a derecha o en sentido horario (cw(v)) [FIG. 36]. El algoritmo
elige de entre los dos nodos seleccionados anteriormente al que tiene menor distancia con
el destino. Al igual que en el algoritmo anterior, la eficiencia del algoritmo radica en el
espacio de bsqueda de cada iteracin, que corresponde con el conjunto de nodos
adyacentes al nodo actual. El nmero de elementos de este conjunto es siempre reducido y
por tanto el espacio de bsqueda tambin lo es.
- 38 -
Captulo 3
Implementacin
vdst
vsrc
En el algoritmo right hand una vez definido el tipo de grafo, se selecciona el nodo origen
(vsrc) y el nodo destino (vdst). Se eliminan todas las aristas que corta el segmento (s,t) [FIG. 39].
El polgono f que surge al eliminar las aristas, determina el camino entre s y t. Partiendo de
s, se elige al nodo a la derecha de s que forma parte del contorno de f. En cada iteracin se
elige el siguiente nodo del contorno de f. Al igual que en el algoritmo anterior, la eficiencia
del algoritmo radica en el espacio de bsqueda de cada iteracin, que queda determinado
por el contorno del polgono f. El nmero de elementos de este conjunto es siempre
reducido y por tanto el espacio de bsqueda tambin lo es.
- 39 -
Captulo 3
Implementacin
vdst
vsrc
- 40 -
Captulo 3
Implementacin
Captulo 3
Implementacin
- 42 -
Captulo 3
Implementacin
- 43 -
Captulo 3
Implementacin
- 44 -
Captulo 3
Implementacin
- 45 -
Captulo 3
Implementacin
- 46 -
Captulo 3
Implementacin
- 47 -
Captulo 3
Implementacin
La CLASE 9, Lnea implementa una representacin de recta que une dos puntos necesaria
para los algoritmos que verifican el corte de las rectas que unen origen con destino o que
atraviesan regiones.
La CLASE 10, StateBar o barra de estado implementa los mtodos necesarios para visualizar
las coordenadas del ratn movindose por la superficie grfica y los mtodos que muestran
informacin del procedimiento ejecutndose en cada paso de los algoritmos.
- 48 -
Captulo 3
Implementacin
La CLASE 11, Lista_Animacin contiene los mtodos necesarios para almacenar informacin
en las listas sobre el procedimiento ejecutndose en cada paso de los algoritmos.
La CLASE 12, WEdge contiene una representacin especial de aristas necesarias para el
clculo del diagrama de Voronoi.
- 49 -
Captulo 3
Implementacin
La CLASE 13, WTrig implementa una representacin de tringulos usada en el clculo del
diagrama de Voronoi.
- 50 -
Captulo 4
MANUAL DE USUARIO
RiLiGraph PFC es una aplicacin JAVA distribuida en un paquete JAR y por tanto
ejecutable en un sistema con instalacin de JVM. La distribucin de los elementos no
difiere de la empleada en otras herramientas grficas. RiLiGraph se basa originalmente en el
trabajo de los compaeros de facultad Rubn Naranjo y Damin Serrano. Se compone de
una barra de mens, de una barra de herramientas de grafos (situada horizontalmente), de
dos barras de herramientas laterales (barra de routing situada a la izquierda y barra de
estadstica situada a la derecha), de una barra de estado y de la superficie grfica o lienzo.
4.1 Herramientas de la aplicacin
4.1.1
Superficie grfica
Captulo 4
Manual de usuario
Barra de mens
La barra de mens se compone de cinco listas. File, Edit, Execution, View y Help.
Menu File
- 52 -
Captulo 4
Manual de usuario
New
Open
Save
Exit
Menu Edit
Draw nodes
Automatic
Select
Selecciona un punto
Remove
Menu Execution
Dinamic
Step
- 53 -
Captulo 4
Manual de usuario
Incremental triangulation
Delaunay triangulation
Gabriel Graph
RNG
Greedy routing
Compass routing
Voronoi routing
Start
Menu View
Closest pair
Convex hull
Delaunay triangulation
Incremental triangulation
Captulo 4
4.1.3
Manual de usuario
Neighbours node
Gabriel Graph
RNG
Barras de herramientas
- 55 -
Captulo 4
Manual de usuario
Muestra/Oculta la triangulacin de Delaunay
Muestra/Oculta el grafo de Voronoi
Muestra/Oculta el grafo de vecindad dirigida
Muestra/Oculta el grafo de Gabriel
Muestra/Oculta el grado de vecindad relativa
- 56 -
Captulo 4
Manual de usuario
Dist
A.D.
Coef
4.1.4
Barra de estado
- 57 -
Captulo 5
ESTUDIO ESTADSTICO
En este captulo estudiaremos el comportamiento de los algoritmos de routing en diferentes
tipos de grafos. Concretamente, analizaremos el rendimiento emprico de los algoritmos de
routing en los siguientes tipos de grafos generados aleatoriamente:
o
o
o
o
Triangulacin Incremental
Triangulacin de Delaunay
Grafo de Gabriel
RNG
El estudio recoge los datos estadsticos que ofrece la aplicacin RiLiGraph PFC sobre 11
grafos sobre los que se va variando el nmero de vrtices generados aleatoriamente y
aplicados a los tipos de grafos sealados anteriormente. Los datos han sido volcados sobre
una hoja de clculo comercial y sobre la aplicacin estadstica StatGraphics Plus 5.1.
Los resultados de este estudio estn agrupados segn los cuatro tipos de grafos anteriores,
que son los grafos conexos que hemos implementado en RiLiGraph PFC.
Definamos los estadsticos que emplearemos en el estudio:
Dado el grafo G y dos nodos origen s y destino t de G, definiremos P(s,t) al conjunto de
pares entre s y t que componen el camino entre origen y destino en G:
P( s, t ) = {( s, p1 ), ( p1 , p2 ),...( pn 1 , t )}
Dado el grafo G y dos nodos origen s y destino t de G, definiremos la distancia euclidea DE
entre s y t:
DE = dist ( s, t ) = ( sx t x ) 2 + ( s y t y ) 2
Asimismo, la distancia obtenida por el algoritmo DA es la suma de las distancias de cada
elemento del conjunto P(s,t):
DA = dist ( P( s, t ))
R=
DA
DE
-58-
Captulo 5
Estudio estadstico
Greedy
11,00
Compass
Random compass
9,00
Greedy compass
Ratio
Right Hand
7,00
5,00
3,00
1,00
10
20
40
60
80
100
120
140
160
180
200
N vrtices
Ratio
8
6
4
2
0
Greedy
Compass
Rnd-comps
Captulo 5
Estudio estadstico
mejor resultado lo obtiene el algoritmo Greedy, seguido de los algoritmos Greedy Compass y
Compass. Los algoritmos Random Compass y Right hand obtienen los peores resultados.
5,5
Media de Ratios
4,5
3,5
2,5
1,5
FIG. 53 Media de ratios para la triangulacin incremental
- 60 -
Captulo 5
Estudio estadstico
2,20
Random compass
Greedy compass
2,00
Ratio
Right Hand
Voronoi
1,80
1,60
1,40
1,20
1,00
10
20
40
60
80
100
120
140
160
180
200
N vrtices
Ratio
1,9
1,6
1,3
1
Greedy
A la vista de los ratios expresados en la FIG. 55 diremos que los algoritmos cuyos valores de
ratios son menores y sufren menor dispersin obtienen los mejores resultados. Es de
destacar que para la triangulacin de Delaunay todos los algoritmos obtienen mejores ratios
- 61 -
Captulo 5
Estudio estadstico
que para la triangulacin incremental como as lo demuestra el rango de valores en los que
se mueven el estadstico Ratio. Como no poda ser de otra manera, la regularidad de este
tipo de triangulacin maximiza el grado de eficiencia de los algoritmos de routing.
El mejor resultado lo obtiene el algoritmo Compass, seguido de los algoritmos Greedy
Compass y Right hand. Los algoritmos Random Compass, Greedy y Voronoi obtienen los peores
resultados.
1,6
Media de Ratios
1,5
1,4
1,3
1,2
1,1
1
Greedy
Captulo 5
Estudio estadstico
2,40
Random compass
2,20
Greedy compass
Right Hand
Ratio
2,00
1,80
1,60
1,40
1,20
1,00
10
20
40
60
80
100
120
140
160
180
200
N vrtices
2,5
Ratio
2,2
1,9
1,6
1,3
1
Greedy
Compass
Rnd-comps
Grd-comps
Right hand
A la vista de los ratios expresados en la FIG. 58 diremos que los algoritmos cuyos valores de
ratios son menores y sufren menor dispersin obtienen los mejores resultados. Es de
- 63 -
Captulo 5
Estudio estadstico
destacar que al igual que para la triangulacin de Delaunay, ya que el grafo de Gabriel es un
subgrafo notable de Delaunay, todos los algoritmos obtienen mejores ratios que para la
triangulacin incremental como as lo demuestra el rango de valores en los que se mueven
el estadstico Ratio.
En este tipo de grafo, los resultados son bastante homogneos salvo en la estrategia
aleatoria. El mejor resultado lo obtiene el algoritmo Compass, seguido muy de cerca por los
algoritmos Greedy, Greedy Compass y Right hand. El algoritmo Random Compass, obtiene el
peor resultado.
Media de Ratios
2,1
1,9
1,7
1,5
1,3
1,1
Greedy
Compass
Rnd-comps
Grd-comps
Right hand
- 64 -
Captulo 5
Estudio estadstico
5.4 RNG
8,00
Greedy
Compass
7,00
Random compass
Greedy compass
Ratio
6,00
Right Hand
5,00
4,00
3,00
2,00
1,00
10
20
40
60
80
100
120
140
160
180
200
N vrtices
Ratio
6
4
2
0
Greedy
Compass
Rnd-comps
Grd-comps
Right hand
A la vista de los ratios expresados en la FIG. 61 diremos que los algoritmos cuyos valores de
ratios son menores y sufren menor dispersin obtienen los mejores resultados. Es de
destacar que al igual que para la triangulacin de Delaunay, ya que el grafo RNG es un
- 65 -
Captulo 5
Estudio estadstico
subgrafo notable de Delaunay, todos los algoritmos obtienen mejores ratios que para la
triangulacin incremental como as lo demuestra el rango de valores en los que se mueven
el estadstico Ratio.
En este tipo de grafo, al igual que en el grafo de Gabriel, los resultados son bastante
homogneos salvo en la estrategia aleatoria. El mejor resultado lo obtiene el algoritmo
Compass, seguido muy de cerca por los algoritmos Greedy, Greedy Compass y Right hand. El
algoritmo Random Compass, obtiene el peor resultado.
Media de Ratios
3,2
2,7
2,2
1,7
1,2
Greedy
Compass
Rnd-comps
Grd-comps
Right hand
- 66 -
Captulo 5
Estudio estadstico
Algoritmo Greedy
8,00
7,00
Ratio
6,00
5,00
4,00
3,00
2,00
1,00
10
20
40
60
80
Greedy Inc
Greedy Del
100
N vrtices
120
140
160
180
Greedy Gab
Greedy RNG
200
Segn se puede extraer de la FIG. 63, el comportamiento del algoritmo greedy es bastante
homogneo en todos los grafos estudiados. Adems parece que el comportamiento no se
ve penalizado por grafos con elevado nmero de vrtices y que los resultados se mantienen
constantes y a un buen ndice de ratio.
Cabe destacar que cuanto mas regular sea el grafo sobre el que aplicar el algoritmo, mejores
resultados se obtendrn, como as queda demostrado en la tendencia que sigue la superficie
de la figura en los grafos de Delaunay y sus derivados (Gabriel y RNG).
- 67 -
Captulo 5
5.5.2
Estudio estadstico
Algoritmo Compass
8,00
7,00
5,00
4,00
Ratio
6,00
3,00
2,00
1,00
Compass Inc
Compass Del
Compass Gab
Compass RNG
10
20
40
60
80
100
120 140
160
180 200
N vrtices
- 68 -
Captulo 5
5.5.3
Estudio estadstico
Ratio
6
5
4
3
2
1
10
20
40
60
80
N vrtices
100
120
140
160
180
R-comp Inc
R-comp Del
R-comp Gab
R-comp RNG
200
- 69 -
Captulo 5
5.5.4
Estudio estadstico
Ratio
6,00
5,00
4,00
3,00
2,00
1,00
10
20
40
60
80
N vrtices
100
120
140
160
180
200
Gre-com Inc
Gre-com Del
Gre-com Gab
Gre-com RNG
Segn se puede extraer de la FIG. 66, el comportamiento del algoritmo greedy - compass es
bastante homogneo en los grafos regulares estudiados, sufriendo una perturbacin en la
triangulacin incremental en torno al centenar de vrtices. Los resultados obtenidos siguen
por tanto dos tendencias, en las triangulaciones regulares (Delaunay y derivados) el
comportamiento no se ve penalizado por grafos con elevado nmero de vrtices y los
resultados en este tipo de grafos se mantienen constantes y a un buen ndice de ratio,
mientras que en la triangulacin incremental el algoritmo obtiene resultados algo peores
que en los grafos regulares y adems se presente un resultado atpico en el conjunto de la
muestra de esta triangulacin.
Cabe destacar que cuanto mas regular sea el grafo sobre el que aplicar el algoritmo, mejores
resultados se obtendrn, como as queda demostrado en la tendencia que sigue la superficie
de la figura en los grafos de Delaunay y sus derivados (Gabriel y RNG).
- 70 -
Captulo 5
5.5.5
Estudio estadstico
8
7
5
4
Ratio
3
2
1
Right-H Inc
Right-H Del
Right-H Gab
Right-H RNG
10
20
40
60
80
180 200
140 160
120
100
N vrtices
- 71 -
Captulo 6
SUMARIO Y CONCLUSIONES
En este proyecto hemos estudiado los problemas de routing en grafos geomtricos planos y
su aplicacin en la herramienta de software obtenida, RiLiGraph PFC. Adems de las
implicaciones tericas de los algoritmos de routing y de las peculiaridades tcnicas de la
aplicacin, tambin hemos pretendido relacionar los problemas de routing con aplicaciones
prcticas. Como decamos en el primer captulo, existen numerosas aplicaciones que se
benefician del estudio de la bsqueda de caminos en grafos geomtricos planos en donde
se hace uso de diversos elementos de la geometra computacional, teora de grafos, teora
de computadores, etc
Como prueba de este estudio hemos estudiado tres aplicaciones que hacen uso de la
bsqueda de caminos en grafos geomtricos, la bsqueda del camino mas corto transitando
por una ciudad desconocida, la aplicacin del routing en el campo de la tolerancia a fallos en
la computacin distribuida y el anlisis del encaminamiento en redes inalmbricas.
Sumario de Captulos
Captulo 1. En este captulo presentamos el problema de routing sobre grafos geomtricos,
establecemos las definiciones y conceptos relativos a los problemas y presentamos la
motivacin del proyecto en forma de tres tipos de aplicaciones que se benefician de los
tipos de algoritmos de bsqueda de caminos en grafos.
Captulo 2. Este captulo comienza con la clasificacin de los algoritmos de routing
empleados en funcin de su necesidad de memoria y de su aleatoriedad. Ms adelante se
estudian los algoritmos presentados y su integracin en el entorno software.
Captulo 3. En el tercer captulo se describen los detalles de implementacin de la
herramienta, los requisitos necesarios para su correcta ejecucin, los detalles de integracin
de los algoritmos de routing en la aplicacin software y los diagramas de clases resultado del
diseo de la aplicacin.
Captulo 4. En este captulo se incluye el manual de usuario de la aplicacin en el que se
detallan los componentes de la misma.
Captulo 5. El captulo se compone de un estudio estadstico sobre el rendimiento de cada
uno de los algoritmos estudiados.
-72-
BIBLIOGRAFA
[BER]
M. DE BERG, M.VAN
KREVELD, M. OVERMARKS Y
O. SCHWARZKOPF.
Computacional Geometry.
Algorithms and Applications.
Springer-Verlag. 1997
[BON]
J. A. BONDY Y U. S. R. MURTY.
Graph Theory with Applications.
Elsevier North Holland.
1976
[BOS]
[BUS]
[CHV]
[DOB]
[KRA]
E. KRANAKIS, H. SINGH Y J.
URRUTIA.
Compass routing on geometric
networks.
11th Canadian Conference on
Computational Geometry.
1999
[MOR]
P. BOSE Y P. MORIN.
Online Routing in Triangulations.
School of Computer Science.
Carleton University Ottawa.
Canada
[NAR]
FRANK BUSCHMAN.
Pattern-oriented software
architecture. A system of patterns.
John Wiley & Sons. West
Sussex, England. 1996
R. NARANJO Y D. SERRANO.
Triangulacin de Delaunay y
Subgrafos notables. Geometra
Computacional. Facultad de
Informtica. 2003
[OKA]
V. CHVTAL.
A combinatorial theorem in plane
geometry.
J. of Combin. Theory Ser. B.
1975
A. OKABE, B. BOOTS Y K.
SUGIHARA.
Spatial Tesselations: Concepts and
Applications of Voronoi Diagrams.
John Wiley & Sons. 1992
[PAT]
N. PATRICK Y S. HERBERT.
Java. Manual de Referencia.
Osborne/McGraw-Hill. 1997
[STE]
[ZIE]
G. M. ZIEGLER.
Lectures on Polytopes, no 154 in
Graduate Texts in Mathematics.
Springer-Verlag. New York.
1994
D. DOBKIN, S. J. FRIEDMAN Y
K. J. SUPOWIT.
Delaunay graphs are almost as good
as complete graphs.
Comput. Geom, 5. 1990
[EDE]
H. EDELSBRUNNER.
An acyclicity theorem for cell
complexes in d dimension.
Combinatorica. 1988
[HOP]
A. HOPCROFT Y R. EL-YANIV.
Online Computation and
Competitive Analysis.
Cambridge University Press.
1988
- 73 -