Вы находитесь на странице: 1из 82

UNIVERSIDAD POLITCNICA DE MADRID

FACULTAD DE INFORMTICA



TRABAJO FIN DE CARRERA
RUTEO EN GRAFOS GEOMTRICOS
Julio 2004







AUTOR: David Ramos Prez
TUTOR: Gregorio Hernndez





TABLA DE CONTENIDO
1. Introduccin y Objetivos _____________________________1
1.1 Terminologa y definiciones _____________________________ 1
1.2 Motivacin___________________________________________ 2
1.2.1 El turista perdido________________________________________ 3
1.2.2 Grafos propensos a fallos _________________________________ 4
1.2.3 Redes inalmbricas ______________________________________ 5
2. Algoritmos_________________________________________7
2.1 Clasificacin de algoritmos de routing ____________________ 7
2.1.1 Algoritmos sin memoria deterministas ______________________ 7
2.1.2 Algoritmos aleatorios sin memoria (k bit) __________________ 7
2.1.3 Algoritmos con memoria constante k________________________ 8
2.2 Greedy Routing______________________________________ 10
2.3 Compass Routing ____________________________________ 11
2.4 Randomized Compass Routing _________________________ 12
2.5 Hybrid Greedy Compass Routing ______________________ 13
2.6 Right Hand Routing ________________________________ 15
2.7 Voronoi Routing _____________________________________ 16
2.8 Routing, Broadcasting y Geocasting _____________________ 17
3. Implementacin ___________________________________19
3.1 Requisitos del sistema_________________________________ 20
3.2 Anlisis de la integracin de algoritmos __________________ 21
3.2.1 Integracin de algoritmos de grafos________________________ 22
3.2.1.1 Algoritmo de triangulacin incremental _______________________ 22
3.2.1.2 Algoritmo de triangulacin de Delaunay_______________________ 26
3.2.1.3 Algoritmo de Voronoi _____________________________________ 30
3.2.1.4 Algoritmo de vecindad dirigida (Nearest point) _________________ 32
3.2.1.5 Algoritmo de vecindad Gabriel ______________________________ 33
3.2.1.6 Algoritmo de vecindad relativa (RNG) ________________________ 34
3.2.2 Integracin de algoritmos de routing _______________________ 35
3.2.2.1 Algoritmo de Greedy routing _______________________________ 35
3.2.2.2 Algoritmo de Compass routing ______________________________ 36
3.2.2.3 Algoritmo de Randomized Compass routing ___________________ 37
3.2.2.4 Algoritmo de Hybrid Greedy Compass routing ________________ 38

- ii -
3.2.2.5 Algoritmo de Right Hand routing___________________________ 39
3.2.2.6 Algoritmo de Voronoi routing_______________________________ 40
3.3 Diagramas de clases _________________________________ 41
4. Manual de Usuario_________________________________51
4.1 Herramientas de la aplicacin __________________________ 51
4.1.1 Superficie grfica _______________________________________ 51
4.1.2 Barra de mens ________________________________________ 52
4.1.3 Barras de herramientas__________________________________ 55
4.1.3.1 Barra de herramientas de grafos _____________________________ 55
4.1.3.2 Barra de herramientas de routing_____________________________ 56
4.1.3.3 Barra de herramientas de estadstica __________________________ 57
4.1.4 Barra de estado ________________________________________ 57
5. Estudio Estadstico _________________________________58
5.1 Triangulacin incremental_____________________________ 59
5.2 Triangulacin de Delaunay ____________________________ 61
5.3 Grafo de Gabriel _____________________________________ 63
5.4 RNG_______________________________________________ 65
5.5 Anlisis del comportamiento algortmico _________________ 67
5.5.1 Algoritmo Greedy _______________________________________ 67
5.5.2 Algoritmo Compass _____________________________________ 68
5.5.3 Algoritmo Randomized Compass _________________________ 69
5.5.4 Algoritmo Greedy Compass _____________________________ 70
5.5.5 Algoritmo Right Hand ___________________________________ 71
6. Sumario y Conclusiones_____________________________72


- iii -
LISTA DE ILUSTRACIONES
Ilustracin Pgina

FIG. 1 Mapa de Madrid (Plaza de Espaa) _________________________________ 3
FIG. 2 Mallas 10 x 10 sin fallos y con fallos de vrtices y aristas_________________ 4
FIG. 3 Triangulaciones que vencen al algoritmo greedy ______________________ 10
FIG. 4 Greedy routing en triangulacin de Delaunay_________________________ 11
FIG. 5 Triangulacin que vence al algoritmo compass________________________ 11
FIG. 6 Caracterizacin de ciclos en el algoritmo compass_____________________ 11
FIG. 7 Visibilidad de ciclos en el algoritmo compass _________________________ 12
FIG. 8 Definicin de sentido horario cw(v) y antihorario ccw(v) ________________ 12
FIG. 9 Regiones de los nodos circunscritos al disco D________________________ 14
FIG. 10 Aplicacin de la regla de la mano derecha __________________________ 15
FIG. 11 Grafos T y T que ilustran el algoritmo right hand routing ______________ 15
FIG. 12 Caras del grafo T atravesadas por (s,t) _____________________________ 15
FIG. 13 Camino obtenido por el algoritmo de Voronoi _______________________ 16
FIG. 14 El algoritmo de Voronoi no es eficiente en todas las triangulaciones ______ 16
Fig. 15 Triangulacin incremental_______________________________________ 22
FIG. 16 Arista entre t y p_______________________________________________ 22
FIG. 17 Cierre convexo y sentido elegido __________________________________ 23
FIG. 18 Arista entre t y el soporte inferior _________________________________ 23
Fig. 19 Arista entre t y el soporte superior_________________________________ 23
FIG. 20 Triangulacin de Delaunay ______________________________________ 26
FIG. 21 Diagrama de Voronoi __________________________________________ 27
FIG. 22 Arista ilegal en la triangulacin de Delaunay ________________________ 29
FIG. 23 Arista legal obtenida al aplicar flip ________________________________ 29
FIG. 24 Regiones colineales del grafo de Voronoi ___________________________ 31
FIG. 25 Vrtice q del diagrama de Voronoi ________________________________ 31
FIG. 26 Grafo de vecindad dirigida ______________________________________ 32
FIG. 27 Correspondencia de proximidad entre adyacentes ____________________ 32
FIG. 28 Grafo de vecindad Gabriel_______________________________________ 33
FIG. 29 Vecinos de Delaunay y vecinos de Gabriel __________________________ 33
FIG. 30 Grafo de vecindad relativa (RNG) _________________________________ 34
FIG. 31 Vecinos de Gabriel y vecinos relativos _____________________________ 34
FIG. 32 Greedy routing sobre grafo de Delaunay____________________________ 35
FIG. 33 Compass routing sobre grafo de Delaunay __________________________ 36
FIG. 34 Medicin de ngulo en el algoritmo compass routing__________________ 36
FIG. 35 Random Compas routing sobre grafo de Delaunay____________________ 37
FIG. 36 Adyacentes con menor ngulo al destino cw(v) y ccw(v)________________ 37
FIG. 37 Hybrid Greedy Compass routing sobre grafo de Delaunay ____________ 38
FIG. 38 Right Hand routing sobre grafo de Delaunay_______________________ 39
FIG. 39 Aristas que corta el segmento (s,t) _________________________________ 39
FIG. 40 Voronoi routing _______________________________________________ 40
FIG. 41 RiLiGraph PFC _______________________________________________ 51
FIG. 42 Barra de mens de RiLiGraph____________________________________ 52
FIG. 43 Menu File____________________________________________________ 52
FIG. 44 Menu Edit____________________________________________________ 53
FIG. 45 Menu Execution _______________________________________________ 53
FIG. 46 Menu View ___________________________________________________ 54
FIG. 47 Barra de herramientas de grafos __________________________________ 55

- iv -
FIG. 48 Barra de herramientas de routing _________________________________ 56
FIG. 49 Barra de herramientas de estadstica ______________________________ 57
FIG. 50 Barra de estado de RiLiGraph____________________________________ 57
FIG. 51 Ratios empricos para la triangulacin incremental ___________________ 59
FIG. 52 Ratios para la triangulacin incremental ___________________________ 59
FIG. 53 Media de ratios para la triangulacin incremental ____________________ 60
FIG. 54 Ratios empricos para la triangulacin de Delaunay __________________ 61
FIG. 55 Ratios para la triangulacin de Delaunay___________________________ 61
FIG. 56 Media de ratios para la triangulacin de Delaunay ___________________ 62
FIG. 57 Ratios empricos para el grafo de Gabriel___________________________ 63
FIG. 58 Ratios para el grafo de Gabriel ___________________________________ 63
FIG. 59 Media de ratios para el grafo de Gabriel ___________________________ 64
FIG. 60 Ratios empricos para el grafo RNG _______________________________ 65
FIG. 61 Ratios para el grafo RNG _______________________________________ 65
FIG. 62 Media de Ratios para el grafo RNG________________________________ 66
FIG. 63 Ratios del algoritmo greedy en los cuatro tipos de grafos ______________ 67
FIG. 64 Ratios del algoritmo compass en los cuatro tipos de grafos_____________ 68
FIG. 65 Ratios del algoritmo randomized - compass en los cuatro tipos de grafos__ 69
FIG. 66 Ratios del algoritmo greedy - compass en los cuatro tipos de grafos______ 70
Fig. 67 Ratios del algoritmo right hand en los cuatro tipos de grafos ___________ 71



- v -
AGRADECIMIENTOS
El autor desea dar las gracias a Gregorio Hernndez por la oportunidad de
realizar este proyecto fin de carrera y por la tutela del mismo.
A mis padres por el apoyo incondicional que me han mostrado en todos los
das de mi vida.
A mis compaeros de Facultad por estar siempre ah en los momentos
buenos y en los malos.

- vi -
GLOSARIO
API. Applications Program Inteface. Interfaz de programacin de aplicaciones.
Java. Lenguaje de programacin orientado a objetos en el que se ha
implementado la aplicacin objetivo de este PFC.
JVM. Java Virtual Machine. Mquina virtual Java sobre la que ejecuta la
aplicacin RiLiGraph PFC.
RiLiGraph PFC. Nombre de la herramienta software objetivo de este
proyecto.
Routing. Bsqueda del camino que une dos nodos de un grafo.
PFC. Proyecto Fin de Carrera.




- - 1
C a p t u l o 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 R
s
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).
Captulo 1 Introduccin y objetivos
- 2 -

DEF 1.2. Grafo geomtrico plano. Un grafo geomtrico plano G es un grafo
geomtrico cuyo conjunto de vrtice V est formado por elementos de R
2
y cuyos
segmentos de rectas definidos por las aristas del conjunto A se cortan en los puntos finales,
es decir, en los vrtices de V. Por conveniencia, diremos que un vrtice v es de G, v G,
cuando en realidad v V. De igual modo y abusando de la notacin, diremos que una
arista a es de G, a G, siendo realmente a A. Todo el estudio de este proyecto esta
basado en este tipo de grafos.

DEF 1.3. Interseccin de grafos. Dados dos grafos G
1
= (V,A
1
) y G
2
= (V,A
2
), se
define su interseccin como, G
1
G
2
= (V,A
1
A
2
)
DEF 1.4. Adyacencia. Dado un vrtice v de G se define N(v) como el conjunto de
los vrtices adyacentes a v en G.

DEF 1.5. Camino entre dos vrtices. Un camino entre dos vrtices s y t de G es una
secuencia de vrtices desde s hasta t, [s = v
0
, v
1
, , v
k
= t], de forma que (v
i
,v
i+1
) A para
todos los i < k y con todos los v
i
distintos.

DEF 1.6. Grafo conexo. Un grafo G ser conexo si para todo par de vrtices s y t de
G existe un camino en G desde s hasta t.

DEF 1.7. El problema de routing. Inicialmente, en el problema de la bsqueda del
camino que une dos nodos de un grafo (routing) el algoritmo solo conoce el vrtice origen s,
el vrtice destino t y los vrtices adyacentes al origen N(s). Una solucin al problema
consiste en el clculo del camino entre s y t, en donde el algoritmo va aprendiendo los
adyacentes a cada nodo en cada paso que da.

DEF 1.8. xito de un algoritmo. Decimos que un algoritmo de routing tiene xito, si
encuentra un camino desde s hasta t en un nmero finito de pasos.

DEF 1.9. Fallo de un algoritmo. Decimos que un algoritmo de routing falla, si no
encuentra un camino desde s hasta t en un nmero finito de pasos.

DEF 1.10. Grafo que vence a un algoritmo. Decimos que un grafo G vence a un
algoritmo de routing si existe un par de vrtice s y t de G para los que el algoritmo no
encuentra un camino.

1.2 Motivacin
Como decamos al inicio, 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 veamos tres aplicaciones. El primer ejemplo hace uso del
conocimiento humano para la bsqueda del camino en una situacin habitual. El segundo
Captulo 1 Introduccin y objetivos
- 3 -
ejemplo trata de la tolerancia a fallos en la computacin distribuida. El ltimo ejemplo
analiza una red inalmbrica.

1.2.1 El turista perdido


FIG. 1 Mapa de Madrid (Plaza de Espaa)
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.
Captulo 1 Introduccin y objetivos
- 4 -
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 Grafos propensos a fallos

FIG. 2 Mallas 10 x 10 sin fallos y con fallos de vrtices y aristas
Una malla M de dimensiones n x n es un grafo geomtrico M = (V,A) donde el conjunto
de vrtices V cumple:
,
) , ( ) , 1 (
) 1 , ( ) 1 , 1 (

=
n n n
n
V
L
M O M
L

y una arista (v
i
,v
j
) A si y slo si la distancia Eucldea entre v
i
y v
j
, dist(v
i
,v
j
) = 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).

Captulo 1 Introduccin y objetivos
- 5 -
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(v
i
,v
j
) 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, C
u
(V) y C
v
(V). Como U es conexo, contiene una arista (w,x) de
longitud no mayor de 1 de forma que w C
u
(V) y x C
v
(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.

Captulo 1 Introduccin y objetivos
- 6 -
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.




- - 7
C a p t u l o 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 Algoritmos sin memoria deterministas

Se dice que un algoritmo es determinista y que no necesita memoria si el siguiente nodo a
visitar desde un nodo v depende nicamente de v y de N(v). Su funcin de transicin se
define:
: [R
2
, (R
2
)
*
, R
2
] R
2


El primer argumento de corresponde con el nodo actual, el segundo argumento son los
adyacentes del nodo actual y el tercer argumento corresponde con el destino. 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.

Si se define
i
como:
caso otro en
0 i si
) )), , ( ( ), , ( (
) , (
1 1
=

=

t t s N t s
s
t s
i i
i



Vemos que el algoritmo tiene xito en el camino de s a t si y solo si existe un i 0 de forma
que t t s
i
= ) , (

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 t t s t s
j i
= ) , ( ) , ( para algn j i

2.1.2 Algoritmos aleatorios sin memoria (k bit)

Se dice que un algoritmo es aleatorio y que no necesita memoria si el siguiente nodo a
visitar desde un nodo v depende nicamente de v, de N(v) y de k bits aleatorios. Su funcin
de transicin se define:
: [R
2
, (R
2
)
*
, R
2
, {0,1}
k
] R
2


Captulo 2 Algoritmos
- 8 -
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:

caso otro en
0 i si
) , )), , , ( ( ), , , ( (
) , , (
1 1
=

=

i
i i
i
r t R t s N R t s
s
R t s



Donde R = r
1
, r
2
, es una secuencia infinita de k bits.

Formalmente, A falla en el camino de s a t si y solo si t R t s
i
) , , ( 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 Algoritmos con memoria constante k

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:
: [R
2
, (R
2
)
*
, R
2
,
k
] R
2


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 R
2
as como de los log
n bit de enteros. Adicionalmente A define una funcin que concreta como se usa la
memoria M.

: [R
2
, (R
2
)
*
, R
2
,
k
]
k


Si se define
i
como:

caso otro en
0 i si
)) , ( , )), , ( ( ), , ( (
) , (
1 1 1
=

=

t s t t s N t s
t s
i i i
i



donde denota la secuencia vaca, y
Captulo 2 Algoritmos
- 9 -

caso otro en
0 i si
)) , ( , )), , ( ( ), , ( (
) , (
1 1 1
=

=

t s t t s N t s
s
t s
i i i
i



A logra el xito en el camino de s a t si y solo si existe un i 0 de forma que t t s
i
= ) , (
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 v
src
y el destino v
dst
son nodos de G, y un paquete slo se puede mover sobre las
aristas de G. Inicialmente, un paquete solo conoce v
src
, v
dst
y N(v
src
) donde N(v
src
) denota el
conjunto de nodos adyacentes a v. Definiremos v
cur
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 v
src
a v
dst
, decimos que P es el camino de A desde v
src
hasta v
dst
. 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 v
src
y v
dst
.

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).
Captulo 2 Algoritmos
- 10 -
2.2 Greedy Routing
El algoritmo greedy propone como siguiente paso del camino al adyacente de v
cur
, denotado
como gdy(v
cur
), que minimiza dist(gdy(v
cur
), v
dst
) siendo dist(p,q) la distancia Euclidea entre p y q.

Formalmente, greedy se define por la siguiente funcin de transicin:

gdy(v,N(v),t) = u N(v) : dist(u,t) dist(w,t) | w N(v)

Una triangulacin T vence al algoritmo greedy de dos formas: el paquete se queda
indefinidamente pivotando entre dos nodos equidistantes del destino [FIG. 3a] o en el ciclo
formado por tres nodos equidistantes del destino [FIG. 3b]

Veamos como el algoritmo greedy se comporta con triangulaciones de Delaunay y su dual, el
diagrama de Voronoi [OKA]:

En la triangulacin de Delaunay, cada nodo v de T tiene un adyacente que est
necesariamente ms cerca de v
dst
de lo que lo est v [FIG. 4].
Consideremos el diagrama de Voronoi VD(T) de los nodos de T y sea e la primera arista de
VD(T) que intersecta el segmento que une v con v
dst
. La arista e se mueve sobre la frontera
entre dos de las regiones de Voronoi, la regin de v y la regin de u. Dicha arista e divide al
plano en dos semiplanos h
v
= {p : dist(p,v) < dist(p,u)} y h
u
= {p : dist(p,u) < dist(p,v)}. Como
el diagrama de Voronoi es el dual de la triangulacin de Delaunay, la arista (v,u) T. Por
tanto, no existe triangulacin de Delaunay que venza al algoritmo greedy.


FIG. 3 Triangulaciones que vencen al algoritmo greedy
Captulo 2 Algoritmos
- 11 -

FIG. 4 Greedy routing en triangulacin de Delaunay
2.3 Compass Routing

FIG. 5 Triangulacin que vence al algoritmo compass
El algoritmo compass elige como siguiente vrtice del camino cmp(v
cur
) al nodo que minimiza
el ngulo formado por v
dst
, v
cur
, cmp(v
cur
) de entre los adyacentes a v
cur
.

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.


FIG. 6 Caracterizacin de ciclos en el algoritmo compass
Captulo 2 Algoritmos
- 12 -
Podemos caracterizar a este ciclo C de la triangulacin de T, en trminos de visibilidad. Sea
t
1
y t
2
dos tringulos de T. Decimos que t
1
oscurece a t
2
si existe una arista con origen en v
dst

que alcanza primero a t
1
y luego a t
2
. Sea u y v dos nodos de T de forma que cmp(u) = v
[FIG. 6], se define uv como el tringulo de T que pertenece al semiplano limitado por el
segmento que une u con v y que contiene a v
dst
.


FIG. 7 Visibilidad de ciclos en el algoritmo compass
Sea w el tercer vrtice de v
i
v
i+1
. w no puede formar parte del tringulo formado por v
i
, v
i+1
y
v
dst
, ya que si as fuera se cumplira cmp(v
i
) = w. Pero entonces, el segmento que une w y v
i+1

oscurece a v
i
y por tanto v
i
v
i+1
oscurece a v
i-1
v
i
.

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.


2.4 Randomized Compass Routing

FIG. 8 Definicin de sentido horario cw(v) y antihorario ccw(v)
Sea cw(v) el nodo de N(v) que minimiza el ngulo en sentido horariov
dst
, v, cw(v) y sea ccw(v)
el nodo de N(v) que minimiza el ngulo en sentido antihorariov
dst
, 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:

Captulo 2 Algoritmos
- 13 -
rcmp(v,N(v),r) =

) (
) (
v ccw
v cw
si
si
1
0
=
=
r
r


Una triangulacin T vence a un algoritmo de routing (aleatorio) si existe un par de nodos v
src

y v
dst
de T de forma que un paquete con origen en v
src
y con destino en v
dst
tiene probabilidad
0 de alcanzar v
dst
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 v
dst
de T y un conjunto mnimo S de nodos de T
que cumplen:
1. v
dst
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.


2.5 Hybrid Greedy Compass Routing
Hasta ahora hemos visto que los algoritmos greedy y compass, basados en la distancia y la
direccin respectivamente, son vencidos por diferentes tipos de grafos. Veamos que al
combinar elementos de ambos algoritmos obtenemos un algoritmo de routing sin memoria
que no es vencido por ninguna triangulacin.

Sea cw(v) el nodo de N(v) que minimiza el ngulo en sentido horariov
dst
, v, cw(v) y sea ccw(v)
el nodo de N(v) que minimiza el ngulo en sentido antihorario v
dst
, v, ccw(v) [FIG. 8]
Llamaremos a cw(v) y ccw(v) los vecinos compass de v, VC(v) = {cw(v), ccw(v)}.

El algoritmo greedy - compass mueve el paquete situado en el nodo v al nodo u VC(v)
cumplindose dist(u, v
dst
) es mnima.

Formalmente, greedy - compass se define por la siguiente funcin de transicin:

gc(v,N(v), v
dst
) = u VC(v) : dist(u, v
dst
) < dist(w, v
dst
) | w VC(v)

Captulo 2 Algoritmos
- 14 -
Ninguna triangulacin vence al algoritmo greedy - compass.


FIG. 9 Regiones de los nodos circunscritos al disco D
Probmoslo por contradiccin. Sea T una triangulacin que vence al algoritmo greedy -
compass routing. Existe, por tanto, dos nodos v
src
y v
dst
de T para los que no existe un camino.
Adems tiene que existir un ciclo C = v
0
,, v
k-1
de T de tal forma que el algoritmo transita
de v
i
a v
i+1
para todo 0 i k. Como hemos visto anteriormente, v
dst
est en el interior de C.
Todos los nodos de C estn circunscritos al interior o a la frontera del disco D centrado en
v
dst
[FIG. 9].

Probmoslo por contradiccin. No todos los nodos de C estn en D. Consideremos un
nodo v
i
en el interior de D de tal forma que v
i+1
= ccw(v
i
) est en la frontera de D, por tanto
cw(v
i
) no est en el interior de D, de otro modo el algoritmo no hubiera avanzado a v
i+1
.
Entonces la arista que une cw(v
i
) con ccw(v
i
) divide a D en dos regiones, R
1
contiene a v
i
y R
2

contiene a v
dst
. C entra en la regin R
1
por cw(v
i
) y sale por v
i+1
= ccw(v
i
). Por tanto, esto no
puede ocurrir porque tanto cw(cw(v
i
)) como ccw(cw(v
i
)) estn contenidos en el semiespacio
limitado por la arista que une cw(v
i
) con ccw(v
i
) y que contiene a v
dst
, y estos no estn
contenidos en R
1
.

Por lo tanto, todos los nodos de C estn circunscritos al interior o a la frontera del disco D
centrado en v
dst
. Como C contiene a v
dst
y la triangulacin T es conexa, se debe dar que v
j
,
cw(v
j
) o ccw(v
j
) estn contenidos en D. Supongamos que es cw(v
j
). Aqu encontramos la
contradiccin, ya que el algoritmo greedy compass habra elegido a cw(v
j
) en lugar de v
j+1
.


Captulo 2 Algoritmos
- 15 -
2.6 Right Hand Routing

FIG. 10 Aplicacin de la regla de la mano derecha
La regla de la mano derecha establece que un jugador en el interior de un laberinto podr
recorrerlo por completo, y por tanto encontrar la salida, si camina sin despegar su mano de
derecha de las paredes [FIG. 10].


FIG. 11 Grafos T y T que ilustran el algoritmo right hand routing
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.


FIG. 12 Caras del grafo T atravesadas por (s,t)
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 f
1
,,f
k
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
Captulo 2 Algoritmos
- 16 -
segmento (s,t) son compartidas por las caras f
1
,,f
k
. Para cada 1 i < k, f
i
y f
i+1
tienen una
arista comn. Sea v
i
el nodo comn entre f
i
y f
i+1
. Como cada f
i
es convexa, existe un camino
P
i
desde v
i-1
hasta v
i
que deja a la izquierda el segmento (s,t). De la misma forma, debido a la
convexidad de las caras, existe un camino P
0
de s a v
1
que es atravesado slo en s y un
camino P
k-1
de v
k-1
a t que slo es atravesado en t. La unin de P
0
,P
1
,P
k-1
forman el camino
de s a t en T.


2.7 Voronoi Routing

FIG. 13 Camino obtenido por el algoritmo de Voronoi
Consideremos el segmento directo de s a t. Este segmento corta regiones de Voronoi del
grafo en un determinado orden, R
0
, R
m-1
donde R
0
es la regin de Voronoi de s y R
m-1
es
la regin de Voronoi de t. El algoritmo de Voronoi mueve el paquete desde s hasta t a lo
largo del camino v
0
, v
m-1
donde v
i
es el nodo de la regin que define R
i
[FIG. 13].
Este algoritmo se basa en el estudio de Dobkin y otros [DOB] en el que se demuestra que la
triangulacin de Delaunay es una aproximacin al grafo completo de distancias Eucldeas
con un factor constante entre aristas.

Como la regin de Voronoi de un determinado nodo se puede calcular mediante sus
adyacentes de Delaunay, decimos que el algoritmo de Voronoi routing es un algoritmo con
memoria O(1).


FIG. 14 El algoritmo de Voronoi no es eficiente en todas las triangulaciones
Sin embargo, como podemos ver en la [FIG. 14], el algoritmo de Voronoi no es eficiente en
todas las triangulaciones de Delaunay.

Captulo 2 Algoritmos
- 17 -
2.8 Routing, Broadcasting y Geocasting
Adems del problema de la bsqueda de un camino entre dos vrtices en un grafo
geomtrico plano, veamos otras dos alternativas de problemas de routing.

El problema de broadcasting o routing de un punto al plano consiste en enviar un mensaje
desde un vrtice s a todos los otros vrtices que forman el grafo.

Recordando la notacin del inicio del captulo en la clasificacin de los tipos de routing,
decamos que ) , ( t s
i
es el vrtice que se obtiene como resultado del algoritmo de routing en
la etapa i-sima. Para el algoritmo de broadcasting, definimos ) (s
i
de forma similar, excepto
que sin un vrtice destino explcito. Se dice que el algoritmo A resuelve el problema de
broadcasting en un grafo geomtrico plano G = (V,E) si para todo t V existe un i tal que
t s
i
= ) ( .

El problema de geocasting o routing de un punto a una regin consiste en enviar un mensaje
desde un vrtice s a todos los vrtices contenidos en una regin geomtrica convexa r
t
.
Asumimos que s r
t
. Se dice que el algoritmo A resuelve el problema de geocasting en un
grafo geomtrico plano G = (V,E) si para todo t V r
t
, existe un i tal que t r s
t
i
= ) , ( .
Ntese que broadcasting es un caso especial de geocasting en el que r
t
es el espacio Eucldeo.

El tiempo de entrega de ambos algoritmos de routing se define as:

{ }

=

v r s
t
i
i r V v
t
) , (
min max
,

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
Captulo 2 Algoritmos
- 18 -
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).












- - 19
C a p t u l o 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.

Captulo 3 Implementacin
- 20 -
Hoy en da pueden encontrarse implementaciones de un mismo navegador en distintos
sistemas operativos (Windows, Linux, Solaris...), por lo que tambin sera conveniente que
la aplicacin pudiera visualizarse en el navegador independientemente del sistema operativo
en el que se encuentre instalado.

Por ltimo, sera deseable que el proceso de implementacin estuviese acorde con la
apariencia moderna del programa. Es decir, que se tratase de un lenguaje de programacin
orientado a objetos para aprovechar las ventajas de este tipo de metodologa de
programacin. De hecho, la programacin orientada a objetos tiene mucho ms sentido a
la hora de trabajar con componentes de sistemas operativos con entornos grficos.

Todas estas razones unidas a la similitud de sintaxis entre el lenguaje Java y los lenguajes C
/ C++ son las que finalmente han influido en la eleccin del lenguaje de implementacin
de RLG.

Sin embargo, Java cuenta tambin con inconvenientes. Por ejemplo, las funciones
disponibles en Java dependen muchas veces de la versin de la herramienta utilizada para
generar el cdigo, en concreto, de la versin del API del ncleo de Java con el que deban
guardar compatibilidad. Esto, a su vez, limita la versin y el tipo de navegador que se puede
utilizar. La compatibilidad con versiones anteriores en principio est garantizada.

Adems, el aspecto final de la aplicacin tambin depender del navegador utilizado para
visualizarla y de su configuracin, lo cual es una clara desventaja si se desea que el programa
sea utilizable en la mayor cantidad de navegadores posible.

A pesar de este inconveniente y ya que no existe un lenguaje ideal para desarrollar un tipo
de aplicacin determinada, hemos decidido que el lenguaje de implementacin sea Java.


3.1 Requisitos del sistema
Para el correcto funcionamiento y visualizacin de RLG, es necesario que el sistema sobre
el que se ejecute cumpla una serie de requisitos mnimos, aunque se ha pretendido que
dichos requisitos sean lo menos restrictivos posible para que pueda ser utilizable en un gran
nmero de sistemas. En principio, estn determinados por la capacidad para ejecutar la
mquina virtual Java. Para la plataforma PC los requisitos son:

Requisitos hardware:

o Procesador Intel Pentium 500 Mhz. o superior
o 64 Mb. de memoria RAM
o Tarjeta grfica de 32 bits (Se recomienda una resolucin de pantalla de al menos
800x600 puntos)


Captulo 3 Implementacin
- 21 -
Requisitos software:

o Sistema operativo con interfaz grfico
o JVM 1.4.0 o superior
o Navegador que integre JVM


3.2 Anlisis de la integracin de algoritmos
En la forma de integracin de los algoritmos en el sistema, conviene diferenciar los tipos de
algoritmos de grafos de los tipos de algoritmos de routing. As, los algoritmos empleados
para generar los tipos de grafos son:

1. Algoritmo de triangulacin incremental
2. Algoritmo de triangulacin de Delaunay
3. Algoritmo de Voronoi
4. Algoritmo de vecindad dirigida (Nearest point)
5. Algoritmo de vecindad Gabriel
6. Algoritmo de vecindad relativa (RNG)

Asimismo, los algoritmos empleados para generar los caminos son:

1. Algoritmo de Greedy routing
2. Algoritmo de Compass routing
3. Algoritmo de Randomized Compass routing
4. Algoritmo de Hybrid Greedy Compass routing
5. Algoritmo de Right Hand routing
6. Algoritmo de Voronoi routing

Captulo 3 Implementacin
- 22 -
3.2.1 Integracin de algoritmos de grafos

3.2.1.1 Algoritmo de triangulacin incremental

Fig. 15 Triangulacin incremental
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].

FIG. 16 Arista entre t y p
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].
p
t
Captulo 3 Implementacin
- 23 -

FIG. 17 Cierre convexo y sentido elegido
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].

FIG. 18 Arista entre t y el soporte inferior
A continuacin se realizar la misma operacin trazando aristas desde el punto t a los
puntos del cierre partiendo del punto siguiente al punto t, pero esta vez se recorre el cierre
en el sentido contrario a la ocasin anterior. Cuando todos los puntos de la triangulacin (y,
por tanto, del cierre) queden al lado izquierdo de la arista trazada, se habr encontrado el
punto de soporte superior [Fig. 19].

Fig. 19 Arista entre t y el soporte superior
t
Captulo 3 Implementacin
- 24 -
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.
Captulo 3 Implementacin
- 25 -

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.


Captulo 3 Implementacin
- 26 -
3.2.1.2 Algoritmo de triangulacin de Delaunay

FIG. 20 Triangulacin de Delaunay
La triangulacin de Delaunay es una de las triangulaciones ms polivalentes por ser
aplicable para la resolucin de multitud de problemas aparentemente sin relacin entre
s, debido a sus propiedades geomtricas y por contar con algoritmos bastante eficientes
para su clculo.

Una definicin informal de la triangulacin de Delaunay podra realizarse destacando las
caractersticas ms importantes: En una triangulacin de Delaunay,

o Todos los puntos estn conectados entre s y forman el mayor nmero de
tringulos posibles sin que se sus aristas se corten (imprescindible para que se trate
de una triangulacin).
o Los tringulos se definen de forma que los puntos ms prximos estn conectados
entre s por una arista.
o Esto implica que los tringulos formados sean lo ms regulares posible, es decir,
que se maximicen sus ngulos menores y se minimice la longitud de sus lados.

Estas propiedades hacen que, como se indic al principio, esta triangulacin sea interesante
en varios campos. El ejemplo ms tpico es el de modelar un terreno mediante una
superficie polidrica. Se trata de triangular en el plano puntos medidos en un terreno real
3D y despus darle elevacin a la triangulacin.

En esta solucin, la precisin de la aproximacin depender de dos factores: El nmero de
puntos que se midan (a ms puntos triangulados, mayor parecido con el terreno real) y la
forma de los tringulos. En este segundo factor, y a igualdad de nmero de puntos
triangulados, los tringulos aproximarn mejor el terreno cuanto menor longitud tenga sus
aristas y mayores sean sus ngulos.

Por lo tanto, la triangulacin de Delaunay en este caso sera la que ms sentido tendra
utilizar. Adems, si se tiene en cuenta que existen algoritmos optimizados (con complejidad
O(n log n)) para resolver esta triangulacin a gran velocidad para un alto nmero de puntos,
la eleccin en este caso est clara.

Captulo 3 Implementacin
- 27 -
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


FIG. 21 Diagrama de Voronoi
Otra posible definicin de la triangulacin de Delaunay podra hacerse partiendo del
diagrama de Voronoi. Bsicamente, un diagrama de Voronoi es una subdivisin del plano
(en el que se encuentran n puntos) en n regiones, de forma que cada segmento de lnea que
sirve de divisin entre dos regiones es equidistante a los dos puntos de sendas regiones (y,
por tanto, perpendicular al eje que une esos dos puntos).

Este diagrama posee una serie de propiedades muy interesantes:

o Cada vrtice del diagrama de Voronoi debe ser centro de un crculo que contenga
al menos tres puntos de la nube en su contorno.
o Cada regin definida por este diagrama es convexa.
o El bisector entre dos regiones del plano formar parte del diagrama de Voronoi si y
slo si puede trazarse un crculo con centro en el bisector y que contenga en su
contorno a los dos puntos (uno de cada regin) sin contener a ningn otro punto
en ningn otro lugar.
Captulo 3 Implementacin
- 28 -
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 La triangulacin de Delaunay es el grafo de rectas dual al diagrama de Voronoi.
o Cada vrtice de un tringulo de Delaunay se corresponde con un vrtice del
diagrama de Voronoi.
o La triangulacin y el diagrama tienen el mismo nmero de aristas y se corresponden
entre s.
o Cada nodo de la triangulacin se corresponde con una regin del diagrama.
o El contorno de la triangulacin es equivalente al cierre convexo de la nube
de puntos.
o No es posible encontrar ningn punto de la nube en el interior de los tringulos
formados por la triangulacin.

Propiedades respecto a circunferencias

La tercera definicin de la triangulacin de Delaunay se puede efectuar recurriendo a sus
propiedades:

o Tres puntos de la nube de puntos son vrtices de un mismo tringulo de la
triangulacin de Delaunay si y slo si puede trazarse un crculo cuyo contorno
contenga esos tres puntos y no contenga otros puntos de la nube en su interior.
o Dos puntos de la nube definen una arista de la triangulacin si y slo si es posible
trazar un crculo cuyo contorno contenga a esos dos puntos pero en su interior no
contenga ningn otro punto de la nube.

Con estas propiedades podramos diferenciar la triangulacin de Delaunay de una nube de
puntos respecto a otras triangulaciones de esta forma: una triangulacin de un conjunto de
puntos es de Delaunay si y slo si la circunferencia circunscrita de cualquier tringulo de la
triangulacin no contiene puntos del conjunto.

Podemos servirnos de las tres definiciones vistas anteriormente para definir un algoritmo
que nos permita calcular la triangulacin de Delaunay de un conjunto de puntos.

La primera definicin no es directamente aplicable como algoritmo, ya que exigira calcular
todas las posibles triangulaciones de una nube de puntos para tomar despus la que tenga el
vector de ngulos mayor. Sin embargo, basndonos en una caracterstica de toda
triangulacin (todas las posibles triangulaciones de una nube de puntos tienen el mismo
nmero de tringulos) se puede partir de una triangulacin cualquiera para ir
Captulo 3 Implementacin
- 29 -
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.

FIG. 22 Arista ilegal en la triangulacin de Delaunay
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].

FIG. 23 Arista legal obtenida al aplicar flip
Puede observarse que tambin se cumple la propiedad de maximizacin de ngulos, ya que
al realizar un flip o legalizado de una arista, se maximizan los ngulos de los dos tringulos
afectados por la operacin, y que la arista legalizada es de menor longitud que la ilegal. Una
vez realizado el flip habra que comprobar de igual forma si las cuatro aristas del
cuadriltero son legales, y en caso de no serlo, repetir el proceso.
Captulo 3 Implementacin
- 30 -
3.2.1.3 Algoritmo de Voronoi
Un Diagrama de Voronoi de un conjunto de puntos en el plano, no es ms que la
subdivisin del mismo en regiones formadas por los lugares ms prximos a cada uno de
los puntos [FIG. 21].

De los Diagramas de Voronoi ya hablaba Descartes cuando afirmaba que el sistema solar
estaba formado por vrtices, pero fueron Dirichlet, Voronoi y Thiessen los que profundizaron
en el estudio de estos diagramas.

Son muchas las utilidades de los Diagramas de Voronoi entre las que podemos citar:

o Posicionamiento de antenas en telefona mvil. La regin de Voronoi de cada una
de las antenas determinara qu telfonos deberan realizar la conexin a travs de
la misma.
o Control areo. El Diagrama de Voronoi de cada centro de control, determinara la
zona de espacio areo a controlar por dicha estacin.
o Distribucin de servicios pblicos (hospitales, centros comerciales...). La ubicacin
de dichos establecimientos debera ser (al menos tericamente) la que tenga la
mayor rea de regin de Voronoi con respecto al resto de establecimientos del
mismo tipo, para as aumentar la hipottica clientela.

Denotamos la distancia Eucldea entre dos puntos del plano como dist(p,q):

2 2
) ( ) ( ) , (
y y x x
q p q p q p dist + =

Sea P = {p
1
,p
2
,...,p
n
} 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
p
i
si y solamente si dist(q,p
i
) < dist(q,p
j
) para cada punto p
j
de P, con j distinto de i.

Denotamos el diagrama de Voronoi de P como Vor(P). La regin correspondiente al punto
p
i
la llamaremos V(p
i
).

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:

I
i j n j
j i i
p p h p V

=
, 1
) , ( ) (

Captulo 3 Implementacin
- 31 -
V(p
i
) 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(p
i
,p
j
).

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].


FIG. 24 Regiones colineales del grafo de Voronoi
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].


FIG. 25 Vrtice q del diagrama de Voronoi




q
p
1
p
3
p
2
Captulo 3 Implementacin
- 32 -
3.2.1.4 Algoritmo de vecindad dirigida (Nearest point)

FIG. 26 Grafo de vecindad dirigida
El algoritmo de vecinos ms cercanos determina el vecino ms prximo de cada punto.
Para cada punto se analiza en la estructura DCEL todos sus adyacentes y se selecciona el
que se encuentra ms cerca.

Estructura de datos DCEL

La estructura de datos (TDel.java) por la que se ha optado se basa en un DCEL, ya que
memoriza los adyacentes a cada punto, de este modo se obtienen las aristas que parten de
l. Por otra parte, dada una arista se permite extraer los puntos que la forman (as se
conocen las aristas adyacentes).

Los registros que almacena la estructura de datos se compone de una lista con los puntos
insertados, una lista con el clculo de los puntos del cierre convexo, una arista que indica el
par ms prximo, una lista de aristas con el clculo de la triangulacin incremental, una lista
de aristas con el clculo de la triangulacin Delaunay, una lista de aristas con el clculo del
grafo de vecindad dirigida, una lista de aristas con el clculo del grafo de vecindad Gabriel,
una lista de aristas con el clculo del grafo de vecindad relativa y las correspondientes listas
de aristas con el clculo de los caminos segn los distintos algoritmos de routing.

Los puntos estn implementados como un par de coordenadas (x, y) y las listas con los
correspondientes puntos adyacentes de cada tipo de grafo. Las aristas son, simplemente,
pares de puntos.


FIG. 27 Correspondencia de proximidad entre adyacentes
Este algoritmo genera un grafo dirigido porque la correspondencia de vecino ms prximo
no siempre es recproca [FIG. 27].

Captulo 3 Implementacin
- 33 -
3.2.1.5 Algoritmo de vecindad Gabriel

FIG. 28 Grafo de vecindad Gabriel
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).

FIG. 29 Vecinos de Delaunay y vecinos de Gabriel
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.



(a) (b)
Captulo 3 Implementacin
- 34 -
3.2.1.6 Algoritmo de vecindad relativa (RNG)

FIG. 30 Grafo de vecindad relativa (RNG)
El grafo de vecindad relativa, tambin conocido como grafo de vecindad Luna, es un
subgrafo del grafo de vecindad Gabriel. Para determinar si dos puntos son vecinos
relativos, se toman las dos circunferencias que tienen como centro cada punto y como
radio la distancia entre ellos. La interseccin entre ambas circunferencias da lugar a una
especie de luna, si esta luna no contiene a ningn otro punto, son vecinos relativos.

Este grafo es un subgrafo de Gabriel ya que la circunferencia que deja a ambos vrtices
diametralmente opuestos esta contenida en la luna que definen.


FIG. 31 Vecinos de Gabriel y vecinos relativos
Ntese que para determinar el grafo de vecindad relativa, slo habr que comprobar que
aristas del grafo de Gabriel cumplen la condicin luna.
(a) (b)
Captulo 3 Implementacin
- 35 -
3.2.2 Integracin de algoritmos de routing
3.2.2.1 Algoritmo de Greedy routing

FIG. 32 Greedy routing sobre grafo de Delaunay
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 (v
src
) y
el nodo destino (v
dst
). En cada iteracin se compara la distancia al destino de cada nodo
adyacente al nodo actual (v
cur
) 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.
v
src
v
dst
Captulo 3 Implementacin
- 36 -
3.2.2.2 Algoritmo de Compass routing

FIG. 33 Compass routing sobre grafo de Delaunay
El algoritmo compass es de alguna forma otro algoritmo voraz en el que su funcin de
seleccin no se fundamenta en la distancia sino en el ngulo con el destino [FIG. 34].

FIG. 34 Medicin de ngulo en el algoritmo compass routing
En el algoritmo compass una vez definido el tipo de grafo, se selecciona el nodo origen (v
src
) y
el nodo destino (v
dst
). En cada iteracin se compara el ngulo entre el nodo adyacente al
nodo actual (v
cur
) y el nodo destino (v
dst
) 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.




v
src
v
dst
v
src
v
dst
Captulo 3 Implementacin
- 37 -
3.2.2.3 Algoritmo de Randomized Compass routing

FIG. 35 Random Compas routing sobre grafo de Delaunay
En el algoritmo random compass una vez definido el tipo de grafo, se selecciona el nodo
origen (v
src
) y el nodo destino (v
dst
). En cada iteracin se compara el ngulo tanto a izquierda
como a derecha entre el nodo adyacente al nodo actual (v
cur
) y el nodo destino (v
dst
) 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.


FIG. 36 Adyacentes con menor ngulo al destino cw(v) y ccw(v)



v
src
v
dst
Captulo 3 Implementacin
- 38 -
3.2.2.4 Algoritmo de Hybrid Greedy Compass routing

FIG. 37 Hybrid Greedy Compass routing sobre grafo de Delaunay
En el algoritmo greedy compass una vez definido el tipo de grafo, se selecciona el nodo
origen (v
src
) y el nodo destino (v
dst
). En cada iteracin se compara el ngulo tanto a izquierda
como a derecha entre el nodo adyacente al nodo actual (v
cur
) y el nodo destino (v
dst
) 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.




v
dst
v
src
Captulo 3 Implementacin
- 39 -
3.2.2.5 Algoritmo de Right Hand routing

FIG. 38 Right Hand routing sobre grafo de Delaunay
En el algoritmo right hand una vez definido el tipo de grafo, se selecciona el nodo origen
(v
src
) y el nodo destino (v
dst
). 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.


FIG. 39 Aristas que corta el segmento (s,t)











v
src
v
dst
Captulo 3 Implementacin
- 40 -
3.2.2.6 Algoritmo de Voronoi routing


FIG. 40 Voronoi routing
En el algoritmo Voronoi el tipo de grafo es siempre la triangulacin de Delaunay que
determina las propias regiones de Voronoi. Se selecciona el nodo origen (v
src
) y el nodo
destino (v
dst
). El segmento (v
src
,v
dst
) determina las regiones de Voronoi por las discurrir el
camino. En cada iteracin se elige al nodo adyacente que determina la regin de Voronoi
que es cortada por el segmento (v
src
,v
dst
). Al igual que en el algoritmo anterior, la eficiencia
del algoritmo radica en el espacio de bsqueda de cada iteracin, que queda determinado
por las regiones de Voronoi cortadas por el segmento (v
src
,v
dst
). El nmero de elementos de
este conjunto es siempre reducido y por tanto el espacio de bsqueda tambin lo es.


v
src
v
dst
Captulo 3 Implementacin
- 41 -
3.3 Diagramas de clases


CLASE 1 Clase Geocomp
La CLASE 1, Geocomp es la clase que contiene la estructura de ventanas de la aplicacin (una
barra de mens, una barra de herramientas de grafos, una barra de routing, una barra de
estadstica, una barra de estado y la superficie grfica o lienzo, adems de todos los botones
integrados en las barras de herramientas que transmiten las operaciones del usuario).
Captulo 3 Implementacin
- 42 -
Tambin se implementan los mtodos de acceso a la clase de lectura / escritura de
archivos.



CLASE 2 Clase Canvas
Captulo 3 Implementacin
- 43 -
La CLASE 2, Canvas implementa el lienzo o zona grfica donde se representan los
resultados.
Contiene los mtodos que controlan el repintado as como las estructuras de datos que
hacen posible la ejecucin paso a paso de los algoritmos de routing.



CLASE 3 Clase TDel
Captulo 3 Implementacin
- 44 -
La CLASE 3, TDel contiene la estructura de datos principal basada en un DCEL y tambin
contiene los mtodos de clculo de todos los grafos y algoritmos de routing. En esta clase se
implementan estructuras que memorizan los adyacentes a cada punto, de este modo se
obtienen las aristas que parten de cada punto y por otra parte, dada una arista se permite
extraer los puntos que la forman (as se conocen las aristas adyacentes).

Tambin se dispone de una lista con los puntos insertados, una lista con el clculo de los
puntos del cierre convexo, una arista que indica el par ms prximo, una lista de aristas con
el clculo de la triangulacin incremental, una lista de aristas con el clculo de la
triangulacin Delaunay, una lista de aristas con el clculo del grafo de vecindad dirigida, una
lista de aristas con el clculo del grafo de vecindad Gabriel, una lista de aristas con el
clculo del grafo de vecindad relativa y las correspondientes listas de aristas con el clculo
de los caminos segn los distintos algoritmos de routing.




CLASE 4 Clase Punto
Captulo 3 Implementacin
- 45 -
La CLASE 4, Punto mantiene la representacin de puntos como entidad de dos coordenadas
y contiene todas las estructuras de datos que permiten obtener los adyacentes a un punto
segn el tipo de grafo.

En esta clase se implementan los mtodos de clculo del siguiente adyacente del camino de
los algoritmos de routing.




CLASE 5 Clase Arista
La CLASE 5, Arista contiene la representacin de aristas como entidad de dos puntos. En
esta clase se implementan los mtodos de clculo con aristas: longitud, mediatriz, primer
Punto, etc

Adems, contiene los mtodos que dibujan las aristas en el lienzo o superficie grfica y que
forman los grafos y los caminos.
Captulo 3 Implementacin
- 46 -


CLASE 6 Clase Arista_Crculo
La CLASE 6, Arista_Crculo contiene la implementacin de los mtodos que permiten dibujar
los puntos de la superficie grfica.





CLASE 7 Clase Crculo_Crculo
La CLASE 7, Crculo_Crculo contiene la implementacin de los mtodos que permiten
dibujar el remarcado en las selecciones de puntos, el origen y el destino en la superficie
grfica.
Captulo 3 Implementacin
- 47 -


CLASE 8 Clase Arco
La CLASE 8, Arco contiene la implementacin de la representacin de ngulos medidos en
grados necesaria para los mtodos de routing que utilizan el sentido de giro de los arcos y la
extensin de los mismos.



CLASE 9 Clase Lnea
Captulo 3 Implementacin
- 48 -
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.




CLASE 10 Clase Barra de Estado
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.
Captulo 3 Implementacin
- 49 -


CLASE 11 Clase Lista_Animacin
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.




CLASE 12 Clase WEdge
La CLASE 12, WEdge contiene una representacin especial de aristas necesarias para el
clculo del diagrama de Voronoi.
Captulo 3 Implementacin
- 50 -


CLASE 13 Clase WTrig
La CLASE 13, WTrig implementa una representacin de tringulos usada en el clculo del
diagrama de Voronoi.



- - 51
C a p t u l o 4
MANUAL DE USUARIO

FIG. 41 RiLiGraph PFC
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
La zona grfica se utiliza para varios propsitos:

Servir al usuario directamente como entrada para indicar a la aplicacin los puntos que
componen la nube de puntos. El comportamiento ser el siguiente:

o Insercin de puntos: Se pulsa el botn izquierdo del ratn sobre el lugar en el que
se desee insertar cada punto. Las coordenadas del puntero del ratn son indicadas
en la zona derecha de la barra de estado.

Captulo 4 Manual de usuario
- 52 -
o Seleccin de un punto. Se pulsa el botn izquierdo sobre un punto dibujado de la
superficie grfica. El punto seleccionado quedar marcado en color azul.

o Borrado de un punto: Simplemente hay que seleccionar el punto y pulsar el botn
Supr. del teclado o acudir al men Edit Remove.

o Desplazamiento de un punto: Se selecciona el punto que se desea mover y sin
soltar la pulsacin de ratn se desplaza hasta la posicin deseada. Cuando se suelta
el botn el desplazamiento es completado.

o No se podrn superponer dos puntos: Si se trata de introducir un punto en el lugar
que ya ocupa otro, el nuevo punto no se introducir. Si se trata de desplazar un
punto hasta el lugar ocupado por otro, los dos puntos se fusionan pasando a ser un
nico punto.


Mostrar la representacin grfica del resultado de las operaciones sobre la nube de puntos
y, si as se especifica, visualizar tambin los procesos paso a paso:

o Los puntos se representan como crculos de color rojo. Para facilitar la localizacin
de los mismos se representan en un tamao superior al propio tamao de un solo
punto.

o Las aristas de los grafos sern representadas por rectas del color que indique cada
tipo de grafo.


4.1.2 Barra de mens

FIG. 42 Barra de mens de RiLiGraph
La barra de mens se compone de cinco listas. File, Edit, Execution, View y Help.

Menu File


FIG. 43 Menu File
Captulo 4 Manual de usuario
- 53 -

New
Crea un nuevo espacio de trabajo

Open
Abre un archivo de puntos previamente guardado tipo grp

Save
Guarda las coordenadas de los puntos dibujados actualmente en un
archivo de puntos tipo grp

Exit
Finaliza la aplicacin

Menu Edit


FIG. 44 Menu Edit

Draw nodes
Selecciona el modo de insercin manual

Automatic
Selecciona el modo de insercin automtico

Select
Selecciona un punto

Remove
Elimina el punto seleccionado

Menu Execution


FIG. 45 Menu Execution

Dinamic
Establece el modo de ejecucin dinmico

Step
Establece el modo de ejecucin paso a paso
Captulo 4 Manual de usuario
- 54 -

Start
Selecciona el tipo de procedimiento a ejecutar paso a
paso

Incremental triangulation
Dibuja la triangulacin incremental paso a paso

Delaunay triangulation
Dibuja la triangulacin de Delaunay paso a paso

Gabriel Graph
Dibuja el grafo de Gabriel paso a paso

RNG
Dibuja el grafo de vecindad relativa paso a paso

Greedy routing
Dibuja el camino de greedy routing paso a paso

Compass routing
Dibuja el camino de compass routing paso a paso

Random compass routing
Dibuja el camino de random compass routing paso a paso

Greedy - Compass routing
Dibuja el camino de greedy - compass routing paso a paso

Right Hand routing
Dibuja el camino de right hand routing paso a paso

Voronoi routing
Dibuja el camino de Voronoi routing paso a paso


Menu View


FIG. 46 Menu View

Closest pair
Dibuja el par de puntos mas prximo

Convex hull
Dibuja el cierre convexo

Delaunay triangulation
Dibuja la triangulacin de Delaunay

Incremental triangulation
Dibuja la triangulacin incremental
Captulo 4 Manual de usuario
- 55 -

Neighbours node
Dibuja los vecinos de Delaunay mas prximos

Nearest point Graph
Dibuja el grafo de vecindad dirigida

Gabriel Graph
Dibuja el grafo de Gabriel

RNG
Dibuja el grafo de vecindad relativa

Open reference system
Abre el cuadro de dilogo para cargar un sistema de
referencia


4.1.3 Barras de herramientas

4.1.3.1 Barra de herramientas de grafos


FIG. 47 Barra de herramientas de grafos

Crea un nuevo espacio de trabajo

Abre un archivo de puntos previamente guardado tipo grp

Guarda las coordenadas de los puntos dibujados actualmente en un archivo
de puntos tipo grp

Abre el cuadro de dilogo para que el usuario teclee el nmero de puntos
aleatorios a insertar

Elimina el punto seleccionado

En ejecucin paso a paso, muestra el siguiente paso del algoritmo
seleccionado

En ejecucin paso a paso, detiene la ejecucin

Muestra/Oculta el par de puntos ms prximo

Muestra/Oculta el cierre convexo

Muestra/Oculta los vecinos de Delaunay de un nodo

Muestra/Oculta la triangulacin incremental
Captulo 4 Manual de usuario
- 56 -

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


4.1.3.2 Barra de herramientas de routing

FIG. 48 Barra de herramientas de routing

Estable el modo de seleccin de origen. Permite seleccionar el nodo origen
del camino

Establece el modo de seleccin de destino. Permite seleccionar el nodo
destino del camino

Muestra/Oculta el camino de greedy

Muestra/Oculta el camino de compass

Muestra/Oculta el camino de random compass

Muestra/Oculta el camino de greedy - compass

Muestra/Oculta el camino de right hand

Muestra/Oculta el camino de Voronoi


Captulo 4 Manual de usuario
- 57 -
4.1.3.3 Barra de herramientas de estadstica


FIG. 49 Barra de herramientas de estadstica
Dist Distancia lineal entre el nodo origen y el nodo destino
A.D. Distancia obtenida con el algoritmo en uso
Coef Razn entre la distancia algortmica y la distancia lineal


4.1.4 Barra de estado


FIG. 50 Barra de estado de RiLiGraph
En la seccin izquierda se ofrece informacin relativa al proceso en ejecucin: punto
seleccionado, origen seleccionado, destino seleccionada, estado del camino respecto del
grafo, en ejecucin paso a paso se detalla la informacin de la operacin efectuada en cada
paso, etc.

En la seccin derecha, en negrita, se visualiza permanentemente las coordenadas por donde
se mueve el puntero del ratn.



- - 58
C a p t u l o 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 Triangulacin Incremental
o Triangulacin de Delaunay
o Grafo de Gabriel
o 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:

{ } ) , ),...( , ( ), , ( ) , (
1 2 1 1
t p p p p s t s P
n
=

Dado el grafo G y dos nodos origen s y destino t de G, definiremos la distancia euclidea DE
entre s y t:

2 2
) ( ) ( ) , (
y y x x
t s t s t s dist DE + = =

Asimismo, la distancia obtenida por el algoritmo DA es la suma de las distancias de cada
elemento del conjunto P(s,t):

= )) , ( ( t s P dist DA

Y por tanto, el ratio R quedar definido por:

DE
DA
R =
Captulo 5 Estudio estadstico
- 59 -
5.1 Triangulacin incremental
1,00
3,00
5,00
7,00
9,00
11,00
10 20 40 60 80 100 120 140 160 180 200
N vrtices
R
a
t
i
o
Greedy
Compass
Random compass
Greedy compass
Right Hand

FIG. 51 Ratios empricos para la triangulacin incremental
El experimento mostrado en la FIG. 51 consiste en medir el rendimiento de los algoritmos
de routing expresado en forma de Ratio sobre 11 muestras aleatorias de triangulaciones
incrementales.

FIG. 52 Ratios para la triangulacin incremental
La FIG. 52 muestra otra representacin de los ratios en donde se aprecia la eficiencia de
cada tipo de algoritmo. As, diremos que los algoritmos cuyos valores de ratios estn menos
dispersos y sean menores obtienen los mejores resultados para este tipo de triangulacin. El
R
a
t
i
o

0
2
4
6
8
10
12
Greedy Compass Rnd-comps Grd-comps Right hand
Captulo 5 Estudio estadstico
- 60 -
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.

FIG. 53 Media de ratios para la triangulacin incremental
Para reafirmar estos resultados en la FIG. 53 estudiamos el estadstico de la media de ratios
y vemos que los resultados de los tres algoritmos por debajo de la zona media se
corresponden con los algoritmos Greedy, Greedy Compass y Compass, y los algoritmos por
encima de esa zona son los algoritmos Random Compass y Right hand. Por tanto, podemos
definir dos grupos diferenciados de algoritmos para este tipo de triangulaciones. Los
algoritmos que utilizan una estrategia directa (Greedy, Greedy Compass y Compass) y los que
utilizan una estrategia indirecta (Random Compass y Right hand).

Podemos concluir que para la triangulacin incremental las mejores estrategias de routing
son aquellas que utilizan una va directa.


M
e
d
i
a

d
e

R
a
t
i
o
s

1,5
2,5
3,5
4,5
5,5

Captulo 5 Estudio estadstico
- 61 -
5.2 Triangulacin de Delaunay
1,00
1,20
1,40
1,60
1,80
2,00
2,20
2,40
10 20 40 60 80 100 120 140 160 180 200
N vrtices
R
a
t
i
o
Greedy
Compass
Random compass
Greedy compass
Right Hand
Voronoi

FIG. 54 Ratios empricos para la triangulacin de Delaunay
El experimento mostrado en la FIG. 54 consiste en medir el rendimiento de los algoritmos
de routing expresado en forma de Ratio sobre 11 muestras aleatorias de triangulaciones de
Delaunay.

FIG. 55 Ratios para la triangulacin de Delaunay
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
1
1,3
1,6
1,9
2,2
2,5
Greedy Compass Rnd-comps Grd-comps Right hand Voronoi
R
a
t
i
o

Captulo 5 Estudio estadstico
- 62 -
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.


FIG. 56 Media de ratios para la triangulacin de Delaunay
Para reafirmar estos resultados en la FIG. 56 estudiamos el estadstico de la media de ratios
y vemos que los resultados de los tres algoritmos por debajo de la zona media se
corresponden con los algoritmos Compass, Greedy Compass y Right hand y los algoritmos por
encima de esa zona son los algoritmos Greedy, Random Compass y Voronoi.

Un dato interesante sobre esta clasificacin es que el algoritmo Compass obtiene mejores
resultados que el algoritmo Greedy, esto se explica porque para tomar la arista cuya direccin
es la ms semejante a la direccin de st , el algoritmo Compass trata de maximizar el ratio de
progreso, es decir, la reduccin de distancia con t, mientras que el algoritmo Greedy trata de
alcanzar el mximo progreso en cada paso. El resultado es que, normalmente, el algoritmo
Greedy consigue menos pasos que el algoritmo Compass pero esta reduccin de etapas
supone una desventaja en la distancia global recorrida por el camino en trminos de
distancia Eucldea.

Otro dato a destacar es el pobre resultado obtenido por el algoritmo de Voronoi. Esto es
debido a que Voronoi utiliza una estrategia algortmica bastante conservadora. Esta
cualidad conservadora no eleva el rendimiento de este algoritmo bajo las condiciones de
aleatoriedad de configuracin de los grafos estudiados.

Podemos concluir que para la triangulacin de Delaunay las mejores estrategias de routing
son aquellas que tratan de maximizar el ratio de progreso.
M
e
d
i
a

d
e

R
a
t
i
o
s

1
1,1
1,2
1,3
1,4
1,5
1,6
Greedy Compass Rnd-comps Grd-comps Right hand Voronoi
Captulo 5 Estudio estadstico
- 63 -
5.3 Grafo de Gabriel
1,00
1,20
1,40
1,60
1,80
2,00
2,20
2,40
2,60
10 20 40 60 80 100 120 140 160 180 200
N vrtices
R
a
t
i
o
Greedy
Compass
Random compass
Greedy compass
Right Hand

FIG. 57 Ratios empricos para el grafo de Gabriel
El experimento mostrado en la FIG. 57 consiste en medir el rendimiento de los algoritmos
de routing expresado en forma de Ratio sobre 11 muestras aleatorias de grafos de Gabriel.


FIG. 58 Ratios para el grafo de Gabriel
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
R
a
t
i
o

1
1,3
1,6
1,9
2,2
2,5
Greedy Compass Rnd-comps Grd-comps Right hand
Captulo 5 Estudio estadstico
- 64 -
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.

FIG. 59 Media de ratios para el grafo de Gabriel
Para reafirmar estos resultados en la FIG. 59 estudiamos el estadstico de la media de ratios
y vemos que los resultados de los cuatro algoritmos por debajo de la zona media se
corresponden con los algoritmos Compass, Greedy, Greedy Compass y Right hand y el
algoritmo por encima de esa zona es el algoritmo Random Compass.

El pobre resultado del algoritmo Random Compass respecto al obtenido por el resto de
algoritmos se debe fundamentalmente a su propia naturaleza, la aleatoriedad. Debido a que
en el grafo de Gabriel no se alcanza un objetivo t desde cualquier origen s, el algoritmo
obtiene caminos en los que para alcanzar el objetivo ha de desandar el propio camino
efectuado, lo que supone duplicar en ese tramo el coste en distancia.

Es destacable, como hemos sealado anteriormente, que en este tipo de grafos no todas las
estrategias logran alcanzar un objetivo t desde cualquier origen s y por tanto obtenemos
resultados en los que el grafo vence a la estrategia algortmica.



M
e
d
i
a

d
e

R
a
t
i
o
s

1,1
1,3
1,5
1,7
1,9
2,1
Greedy Compass Rnd-comps Grd-comps Right hand
Captulo 5 Estudio estadstico
- 65 -
5.4 RNG
1,00
2,00
3,00
4,00
5,00
6,00
7,00
8,00
10 20 40 60 80 100 120 140 160 180 200
N vrtices
R
a
t
i
o
Greedy
Compass
Random compass
Greedy compass
Right Hand

FIG. 60 Ratios empricos para el grafo RNG
El experimento mostrado en la FIG. 60 consiste en medir el rendimiento de los algoritmos
de routing expresado en forma de Ratio sobre 11 muestras aleatorias de grafos RNG (grafo
de vecindad relativa).

FIG. 61 Ratios para el grafo RNG
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
R
a
t
i
o

0
2
4
6
8
Greedy Compass Rnd-comps Grd-comps Right hand
Captulo 5 Estudio estadstico
- 66 -
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.

FIG. 62 Media de Ratios para el grafo RNG
Para reafirmar estos resultados en la FIG. 62 estudiamos el estadstico de la media de ratios
y vemos que los resultados de los cuatro algoritmos por debajo de la zona media se
corresponden con los algoritmos Compass, Greedy, Greedy Compass y Right hand y el
algoritmo por encima de esa zona es el algoritmo Random Compass.

El psimo resultado del algoritmo Random Compass respecto al obtenido por el resto de
algoritmos se debe fundamentalmente a su propia naturaleza, la aleatoriedad. Debido a que
en el grafo RNG no se alcanza un objetivo t desde cualquier origen s, el algoritmo obtiene
caminos en los que para alcanzar el objetivo ha de desandar el propio camino efectuado, lo
que supone duplicar en ese tramo el coste en distancia.

Es destacable, como hemos sealado anteriormente, que en este tipo de grafos al igual que
en el grado de Gabriel, no todas las estrategias logran alcanzar un objetivo t desde
cualquier origen s y por tanto obtenemos resultados en los que el grafo vence a la estrategia
algortmica.

M
e
d
i
a

d
e

R
a
t
i
o
s

1,2
1,7
2,2
2,7
3,2
Greedy Compass Rnd-comps Grd-comps Right hand
Captulo 5 Estudio estadstico
- 67 -
5.5 Anlisis del comportamiento algortmico
Veamos cual es el comportamiento de cada algoritmo analizndolos conjuntamente en los
diferentes tipos de grafos.

Para apreciar las sustanciales diferencias de comportamientos de los cinco algoritmos, las
figuras que se presentan a continuacin mantienen la misma escala, de forma que se pueda
establecer una relacin cuantitativa de los resultados obtenidos.

5.5.1 Algoritmo Greedy
10
20
40
60
80
100
120
140
160
180
200
Greedy Inc
Greedy Del
Greedy Gab
Greedy RNG
1,00
2,00
3,00
4,00
5,00
6,00
7,00
8,00
R
a
t
i
o
N vrtices

FIG. 63 Ratios del algoritmo greedy en los cuatro tipos de grafos
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).


Captulo 5 Estudio estadstico
- 68 -
5.5.2 Algoritmo Compass
10
20
40
60
80
100
120
140
160
180
200
Compass Inc
Compass Del
Compass Gab
Compass RNG
1,00
2,00
3,00
4,00
5,00
6,00
7,00
8,00
R
a
t
i
o
N vrtices

FIG. 64 Ratios del algoritmo compass en los cuatro tipos de grafos
Analizando la superficie de la FIG. 64 se puede apreciar como el comportamiento del
algoritmo compass es homogneo en los grafos regulares y como ese mismo
comportamiento es bastante heterogneo en la triangulacin incremental. Los resultados
obtenidos siguen por tanto dos tendencias, mientras que el algoritmo obtiene resultados
dispares al aumentar el nmero de vrtices en la triangulacin incremental, parece que en
las triangulaciones regulares (Delaunay y derivados) el comportamiento no se ve penalizado
por grafos con elevado nmero de vrtices y que los resultados en este tipo de grafos se
mantienen constantes y a un buen ndice de ratio.

Es destacable la igualdad del comportamiento obtenido por el algoritmo compass en los
grafos regulares (y en los derivados) y como esos resultados no se ven afectados por el
aumento del nmero de vrtices.




Captulo 5 Estudio estadstico
- 69 -
5.5.3 Algoritmo Randomized Compass

10
20
40
60
80
100
120
140
160
180
200
R-comp Inc
R-comp Del
R-comp Gab
R-comp RNG
1
2
3
4
5
6
7
8
R
a
t
i
o
N vrtices

FIG. 65 Ratios del algoritmo randomized - compass en los cuatro
tipos de grafos
Segn se aprecia en la FIG. 65 el comportamiento del algoritmo randomized compass es
totalmente heterogneo en cualquiera de las cuatro modalidades de grafos. No se obtienen
mejores resultados ni a menor nmero de vrtices ni a mayor regularidad del grafo.

Las extrema irregularidad de comportamientos, expresadas en forma de picos y valles en la
superficie de la figura, no demuestran mas que la aleatoriedad de la estrategia de routing
seguida por este algoritmo. Esta aleatoriedad no permite determinar la bondad del ratio
obtenida en un camino dado, ya que dos clculos del mismo camino, siguiendo esta
estrategia aleatoria, sern necesariamente distintos y por tanto sus ratios tomarn diferentes
valores.

Adoptar este algoritmo como estrategia de routing para un sistema dado (red inalmbrica,
sistema de guiado, ) supone un elevado riesgo, ya que no se puede determinar con un
ndice de fiabilidad constante el ratio que el algoritmo obtendr en el clculo del camino.


Captulo 5 Estudio estadstico
- 70 -
5.5.4 Algoritmo Greedy Compass

10
20
40
60
80
100
120
140
160
180
200
Gre-com Inc
Gre-com Del
Gre-com Gab
Gre-com RNG
1,00
2,00
3,00
4,00
5,00
6,00
7,00
8,00
R
a
t
i
o
N vrtices

FIG. 66 Ratios del algoritmo greedy - compass en los cuatro tipos
de grafos
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).



Captulo 5 Estudio estadstico
- 71 -
5.5.5 Algoritmo Right Hand

10
20
40
60
80
100
120
140
160
180
200 Right-H Inc
Right-H Del
Right-H Gab
Right-H RNG
1
2
3
4
5
6
7
8
R
a
t
i
o
N vrtices

Fig. 67 Ratios del algoritmo right hand en los cuatro tipos de
grafos
Analizando la superficie de la Fig. 67 se puede apreciar como el comportamiento del
algoritmo right hand es homogneo en los grafos regulares y como ese mismo
comportamiento es asinttico en la triangulacin incremental. Los resultados obtenidos
siguen por tanto dos tendencias, mientras que el algoritmo obtiene resultados dispares
(llegando al comportamiento asinttico) al aumentar el nmero de vrtices en la
triangulacin incremental, parece que en las triangulaciones regulares (Delaunay y
derivados) el comportamiento no se ve penalizado por grafos con elevado nmero de
vrtices y que los resultados en este tipo de grafos se mantienen constantes y a un buen
ndice de ratio.

Cabe sealar que en los grafos RNG (grafos de vecindad relativa), no todas las estrategias
de routing logran alcanzar un objetivo t desde cualquier origen s y por tanto obtenemos
resultados en los que el grafo vence a la estrategia algortmica. Este puede ser el motivo a
los dos picos que podemos observar en la superficie de la figura correspondientes a la
estrategia right hand sobre el grafo RNG.

Es destacable la igualdad del comportamiento obtenido por el algoritmo right hand en los
grafos regulares de Delaunay y Gabriel y como esos resultados no se ven afectados por el
aumento del nmero de vrtices.





- - 72
C a p t u l o 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.






- 73 -
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]
P. BOSE Y P. MORIN.
Online Routing in Triangulations.
School of Computer Science.
Carleton University Ottawa.
Canada
[BUS]
FRANK BUSCHMAN.
Pattern-oriented software
architecture. A system of patterns.
John Wiley & Sons. West
Sussex, England. 1996
[CHV]
V. CHVTAL.
A combinatorial theorem in plane
geometry.
J. of Combin. Theory Ser. B.
1975
[DOB]
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
[KRA]
E. KRANAKIS, H. SINGH Y J.
URRUTIA.
Compass routing on geometric
networks.
11
th
Canadian Conference on
Computational Geometry.
1999
[MOR]
PATRICK R. MORIN. Online
Routing in Geometric Graphs.
Thesis submitted to the
Faculty of Graduated Studies
and Research. School of
Computer Science. Carleton
University. 2001
[NAR]
R. NARANJO Y D. SERRANO.
Triangulacin de Delaunay y
Subgrafos notables. Geometra
Computacional. Facultad de
Informtica. 2003
[OKA]
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]
PAUL L. STEPHENSON , NEAL
T. ROGNESS , JUSTINE M.
RITCHIE Y PATRICIA A. B.
STEPHENSON.
SPSS Manual for Moore &
McCabe's Introduction to the
Practice of Statistics.
W. H. Freeman & Co. 1998
[ZIE]
G. M. ZIEGLER.
Lectures on Polytopes, no 154 in
Graduate Texts in Mathematics.
Springer-Verlag. New York.
1994

Вам также может понравиться