Академический Документы
Профессиональный Документы
Культура Документы
IMPLEMENTACIN DE UNA
LIBRERIA PARA EL ESTUDIO DE LA
SECUENCIA DE EXCENTRICIDADES
DE UN GRAFO
por Fernando Gil
21 de septiembre de 2008
0.1. Agradecimientos
La realizacin de este trabajo nal de carrera se ha debido a mucha gente.
Principalmente a mi profesor de proyecto Joan Gimbert cuyo apoyo e inters
ha sido constante y a otros tantos profesores que durante estos aos de carrera
me han enseado a usar el coco.
Tambin a mis padres que por fn vern a su hijo acabar la carrera, fuente
de la mayora de sus preocupaciones (que no son pocas).
A mi otra parte del ser, Rachel, por todo lo que t ya sabes y por todo lo
dems. Adems del excelente apoyo bibliogrco que me has dado.
A mis compaeros de universidad y sin embargo amigos, gracias por estar
ah! Una mencin especial para mi colega Joan, sin l mis grafos seran ms feos
y pixelados.
A mis amigos que han tenido que aguantar mis neuras exclusivamente.
Y para Mari y Ral por hacerme acordar que tena que comer para vivir...
Finalmente a mi compaero de trabajo, Antonio Belenguer.
Gracias!
ndice general
0.1.
Agradecimientos
. . . . . . . . . . . . . . . . . . . . . . . . . . .
1. Presentacin
1.1.
Preliminares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2.
Objetivos a conseguir
1.3.
Estructura de la memoria
. . . . . . . . . . . . . . . . . . . . . .
1.4.
Lecturas recomendadas . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . .
I Teora de grafos
10
11
2.1.
La Teora de Grafos
2.1.1.
2.2.
2.3.
. . . . . . . . . . . . . . . . . . . . . . . . .
11
Ejemplos histricos . . . . . . . . . . . . . . . . . . . . . .
12
2.1.1.1.
. . . . . . . . . . . .
12
2.1.1.2.
13
. . . . . . . . . . . . .
14
2.2.1.
14
2.2.2.
16
Secuencias de excentricidades . . . . . . . . . . . . . . . . . . . .
18
2.3.1.
19
2.3.2.
20
3.2.
22
Representacin matricial . . . . . . . . . . . . . . . . . . . . . . .
22
3.1.1.
Matriz de adyacencias . . . . . . . . . . . . . . . . . . . .
22
3.1.2.
23
. . . . . . . . . . . . . . . . . . . .
Listas de adyacencias
. . . . . . . . . . . . . . . . . . .
24
. . . . . . . . . . . . . . . . . . . .
24
NDICE GENERAL
3.3.
3.2.1.1.
Grafo
. . . . . . . . . . . . . . . . . . . . . . . .
3.2.1.2.
Digrafo
. . . . . . . . . . . . . . . . . . . . . . .
24
25
. . . . . . . . .
27
. . . . . . . . . . . . . . . . . . . . . . . . . . .
27
3.3.1.
Densidad
3.3.2.
Alternativas de representacin
. . . . . . . . . . . . . . .
28
II Nauty
29
30
4.1.
Qu es el Nauty?
4.2.
4.3.
4.3.2.
4.4.
. . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
30
31
. . . . . . . . . . . . . . . . . .
36
Graph6 (g6) . . . . . . . . . . . . . . . . . . . . . . . . . .
36
4.3.1.1.
N(n) . . . . . . . . . . . . . . . . . . . . . . . . .
36
4.3.1.2.
R(x) . . . . . . . . . . . . . . . . . . . . . . . . .
36
4.3.1.3.
. . . . . . . . . . . .
36
Sparse6 (s6) . . . . . . . . . . . . . . . . . . . . . . . . . .
37
Conclusiones de NAUTY
. . . . . . . . . . . . . . . . . . . . . .
38
III La herramienta
39
5. Implementacion de la herramienta
40
5.1.
Lenguaje de desarrollo . . . . . . . . . . . . . . . . . . . . . . . .
40
5.2.
Desarrollo de la aplicacin . . . . . . . . . . . . . . . . . . . . . .
41
5.2.1.
GEM.exe
41
5.2.2.
Clases programadas
. . . . . . . . . . . . . . . . . . . . .
41
5.2.2.1.
Clase lista
. . . . . . . . . . . . . . . . . . . . .
41
5.2.2.2.
Clase cola . . . . . . . . . . . . . . . . . . . . . .
42
5.2.2.3.
GraphFactory
. . . . . . . . . . . . . . . . . . .
42
5.2.2.4.
ConvertNauty
. . . . . . . . . . . . . . . . . . .
5.2.3.
5.3.
5.4.
. . . . . . . . . . . . . . . . . . . . . . . . . . .
42
. . . . . . . . .
42
43
5.3.1.
5.3.2.
. . . . . . . . . . . . .
5.3.3.
43
. . . . . . . . . .
44
. . . . . . . . . . . .
44
Diseo de interaccin . . . . . . . . . . . . . . . . . . . . . . . . .
45
NDICE GENERAL
5.4.1.
. . . . . . . . .
45
5.4.2.
45
5.4.3.
Conversin Nauty
45
. . . . . . . . . . . . . . . . . . . . . .
47
48
6.1.
Conclusiones
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
48
6.2.
49
6.3.
. . . . . . . . . . . . .
50
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
50
6.3.1.
Links
6.3.2.
Aplicaciones y programas
V Anexo
. . . . . . . . . . . . . . . . . .
50
53
ndice de guras
2.1.
. . . . . . . . . . . . . . .
12
2.2.
Grafo de Knigsberg . . . . . . . . . . . . . . . . . . . . . . . . .
13
2.3.
Excentricidad de un vrtice
. . . . . . . . . . . . . . . . . . . . .
15
2.4.
Digrafo
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
17
2.5.
2.6.
3.1.
. . . . . . . . . . . .
17
. . . . . . . . . . . . . .
18
Digrafo D1
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
23
3.2.
Digrafo D2
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
24
3.3.
. . . . . . . . . . . . . . . . . .
25
3.4.
25
3.5.
. . . . . . . . . . . . . . . . .
26
3.6.
26
4.1.
Ayuda geng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
31
4.2.
. . . . . . . . . . . . . . . .
32
4.3.
. . . . . . . . . . . . . . . . . . . . . .
33
4.4.
33
4.5.
Tabla ASCII 1
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
34
4.6.
Tabla ASCII 2
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
35
5.1.
Menu GEM.exe . . . . . . . . . . . . . . . . . . . . . . . . . . . .
41
List of Algorithms
1.
Algoritmo BFS
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
20
ndice de cuadros
3.1.
. . . . . . . . . . . . . . . .
23
3.2.
Matriz de digrafo D2 . . . . . . . . . . . . . . . . . . . . . . . . .
24
5.1.
43
5.2.
Especicacin TablaEx . . . . . . . . . . . . . . . . . . . . . . . .
45
5.3.
. . . . . . .
45
5.4.
Especicacin TablaEx . . . . . . . . . . . . . . . . . . . . . . . .
45
5.5.
Especicacin TablaEx . . . . . . . . . . . . . . . . . . . . . . . .
45
Captulo 1
Presentacin
1.1. Preliminares
El proyecto se encargar bsicamente de dos dinmicas iniciales:
1
pequeo.
. Realizar
rdenes pequeos.
. Generar
de excentricidades.
CAPTULO 1.
PRESENTACIN
1: INTRODUCCIN
. CAPTULO
2: TEORIA DE GRAFOS
. CAPTULO
3: REPRESENTACIN INFORMTICA DE
GRAFOS
. CAPTULO
4: NAUTY
. CAPTULO
5: LA HERRAMIENTA
. CAPTULO
. Parte
Ver [10], [5], [7], [13], [6], [14], [15], [1], [12], [3]
. Parte
. Parte
[11]
. Parte
[2]
Como veremos durante el trabajo muchos de estos han sido citados especialmente en algunas partes.
Parte I
Teora de grafos
10
Captulo 2
Conceptos bsicos de la
Teora de Grafos
2.1. La Teora de Grafos
La teora de grafos, que naci como una rama de la Topologa, se ha convertido hoy en da en una herramienta matemtica indispensable en campos tan
diversos como la investigacin operativa, la lingstica, la qumica, la fsica, la
gentica, la teora de redes o la teora de la decisin.
Es por ello, que para casi cualquier rama de la ciencia, se hace necesario el
conocimiento de las ideas bsicas que sustentan a la denominada teora de grafos.
Este captulo tiene por objeto introducir al lector en los conocimientos bsicos sobre grafos de manera que podamos explicar ms adelante los apartados
ms complejos del trabajo.
Se recomienda diferentes documentos (Ver [10], [5], [7], [13], [6], [14], [15],
[1], [12]), de forma que el lector encuentre ms facilidades en el entendimiento
de este trabajo.
11
CAPTULO 2.
12
CAPTULO 2.
13
El grafo ser recorrible si existe un camino que contenga todos los vrtices
y que pase por cada arista exactamente una vez.
Supongamos que haya un camino que no empiece ni termine en un vrtice
u. Cada vez que el camino llegue a u debe de salir por otro que no haya sido
utilizado. De esa manera, las aristas del camino incidentes en u deben aparecer
de dos en dos, es decir, el grado de u es par. As, si el grado de v es impar, el
camino debe empezar y terminar en otro vrtice impar.
Basndose en ese razonamiento, se deduce, a lo largo del camino, no puede
haber ms de dos vrtices que sean impares. El grafo anterior tiene sus cuatro
vrtices impares, por lo que no es recorrible.
chicas al
CAPTULO 2.
14
Denicin 1:
Un grafo G = (V, E) es una estructura combinatoria constituida por un
conjunto nito V = V(G) de elementos denominados vrtices y un conjunto E
Denicin 2:
El grado de un vrtice v en un grafo G = ( V, E ), que denotaremos por
Denicin 3:
Dado un grafo G = ( V, E ), una secuencia de vrtices uo , u1 , ... , un con
ui-1 ui
E, 1
un .
Denicin 4:
Si entre todo par de vrtices u y v de G existe un recorrido, el grafo se denomina conexo y, en este caso, la distancia entre u y v, d( u, v ), es la longitud
mnima de los recorridos entre esos vrtices.
0 y d( u, v ) = 0 si y solo si u = v
CAPTULO 2.
15
d( u, v ) = d( v, u )
d( u, v )
d( u, w ) + d( w, v )
d( u, v ) =
Denicin 5:
La excentricidad de un vrtice u
vrtice
que es igual
a 2.
Denicin 6:
El dimetro de G es el mximo de las excentricidades de todos sus vrtices.
Propiedad:
Si G tiene orden n, entonces diam(G)
n - 1
Denicin 7:
El radio de G es el mnimo de las excentricidades de todos sus vrtices.
Un vrtice de un grafo es
otro vrtice es el radio.
CAPTULO 2.
16
Propiedad:
rad(G)
diam(G)
2rad(G)
Denicin 8:
El concepto de grafo dirigido, o digrafo, deriva directamente del concepto de
grafo, exigiendo que las aristas, ahora denominadas arcos, sean pares ordenados
de vrtices distintos. De esta manera, un digrafo G = ( V, E ) es una estructura
combinatoria formada por el par ( V, E) de conjuntos nitos tales que E es un
conjunto de pares ordenados de elementos distintos de V. Si a = ( u, v )
Denicin 9:
Dados dos vrtices u y v, un recorrido de longitud h
0 desde u hasta v es
E( G ), 1
n.
Denicin 10:
Si entre todo par de vrtices u y v de G existe un recorrido de u hasta v, el
digrafo se denomina fuertemente conexo y, en este caso, la distancia de u a v,
CAPTULO 2.
17
2rad(G)
.
.
.
.
.
.
v1 3
v2 5
v3 5
v4 4
v5 3
v6 3
2rad(G) se cumple.
La distancia cumplir la propiedad de simetria (para cualquier par de vrtices) si el digrafo es simtrico (en cuyo caso se identicaria como grafo), es decir,
siempre que tengamos el arco ( u, v ) tendremos el arco en sentido opuesto ( v,
u ).
CAPTULO 2.
18
Denicin 11:
Una secuencia no decreciente S:
a1 ,
... ,
an
ai
El grafo de la gura es de orden 6 y sus vrtices son v1, v2, v3, v4, v5 y v6.
Pasamos a calcular la excentricidad de cada vrtice:
e(v1)= 2, e(v2)= 2, e(v3)= 2, e(v4)= 3, e(v5)= 3, e(v6)= 3
As pues, la secuencia de excentricidades del grafo es
2,2,2,3,3,3
(Vese [10] )
CAPTULO 2.
19
Propiedades:
Si S:
a1 ,
... ,
an
a1
n/2
a1 <k an ,
in-1)
an
entonces
ai
ai+1
= k para al
min { n - 1, 2a1 }
Estas propiedades no se cumplen para la parte de digrafos. Veamos a continuacin cuales de ellas se satisfacen.
Propiedades:
Si S:
a1 ,
... ,
an
ai+1 ai +
an
1 para todo i ( 1
n - 1 )
n - 1
Propiedad:
Una secuencia S:
a1 ,
... ,
an
Propiedad:
Una secuencia constante S de longitud p
una secuencia de excentricidades si y solo si
2 , S: a,
a p - 1
... , a, con a
Z +,
es
CAPTULO 2.
20
distancia [u]0
2.
laux V
3.
4.
- {u}
{u}
primero (c)
5.
6.
7.
8.
cinsertar (w)
9.
laux laux
- {w}
10.
n para cada
11.
12.
eliminar ()
n mientras
CAPTULO 2.
21
La notacin que utilizaremos para dichas secuencias estar ordenada de menor a mayor y los nmeros estarn elevados a otros que sern las veces que se
repita dicha excentricidad en nuestro grafo.
Para orden 3:
13 , 11 22
Para orden 4:
14 , 11 23 , 12 22 , 24 , 22 32
De aqu las
1 2
1 2
22 32
Ejemplo:
Quisieramos probar que
Si
13
pudiera formarla.
secuencia no es minimal.
Segn los grafos vayan aumentando su orden se vuelve ms complicado solucionar el problema de las listas de minimales. Nuestra herramienta intentar
solucionar la labor en este campo como veremos en la parte III.
Captulo 3
Representacin de grafos y
digrafos
Tanto para la representacin de un grafo o un digrafo como un par (V,E)
de conjuntos nitos, donde los elementos de E tienen la forma {u, v} o (u, v),
siendo u y v vrtices diferentes de V, como la representacin mediante un dibujo,
no resultan adecuadas si queremos que sean procesadas por un ordenador.
A continuacin presentamos las diferentes representaciones.
1
0
aij
Si vi y vj son
En otro caso.
adyacentes.
22
CAPTULO 3.
23
vi
vi .
La matriz de adyacencia de un digrafo no es, en general, simtrica, no obstante, preserva los elementos nulos en la diagonal. El nmero de elementos iguales
a 1 en la la i de A(G) es
g + (vi ),
vi , mientras que
g (vi ), el grado
vi .
v1
v2
v3
v4
v1
v2
v3
v4
. Cuando
. Cuando
. Cuando
CAPTULO 3.
24
-1
-1
-1
-1
-1
At
Otro tipo de matrices, las denominadas matrices de incidencias, son frecuentemente utilizadas pero de ellas no hablar en este trabajo.
vi .
CAPTULO 3.
25
3.2.1.2. Digrafo
La lista de adyacencias de un digrafo G, con conjunto de vrtices V={v1 ,v2 ,...,vn },
es una lista formada por n sublistas, una por cada vrtice
vrtices
vj
vi ,
vi .
CAPTULO 3.
26
Y su digrafo correspondiente:
g + (vi ),
el
vi .
Otra forma alternativa, tambin utilizando listas entrelazadas, es la representacin mediante Listas de Aristas de las que no hablar en este trabajo.
CAPTULO 3.
27
3.3.1. Densidad
La
2|E|
n(n1)
|E|
n(n1)
1.
1.
CAPTULO 3.
28
matriz de adyacencias
Para el diseo de este proyecto ambas opciones han sido elegidas. Las matrices para la parte de manejo de cheros y las listas para la parte algortmica
de pura programacin.
Parte II
Nauty
29
Captulo 4
Herramienta generadora de
grafos
4.1. Qu es el Nauty?
Nauty es un programa creado por Brendan McKay (Ver [11]) compuesto por
diferentes herramientas para la ayuda del estudio del grupo de automorsmos
de un grafo, de hecho, las siglas
nauty
signican
no automorphism,yes?
gtools.
geng.
CAPTULO 4.
31
#./make gtools
Dicho esto pasamos a explicar la utilizacin y cdigo de dicha herramienta.
Debido a que este trabajo se basa en el clculo de excentricidades nos basaremos en la primera opcin del geng, la opcin -c para grafos conexos.
CAPTULO 4.
32
CAPTULO 4.
33
Slo existe un grafo conexo con dos nodos y una arista, como podemos
comprobar en la tabla de grafos conexos.
La representacin del resultado es mediante cdigo ASCII. De esta manera
y siguiendo el ejemplo anterior vemos que el grafo resultante es el A_.
Pero cul es la explicacin de este resultado? Pasamos a ver la tabla de
cdigos ASCII.
CAPTULO 4.
34
Pero el Nauty no slo usa los cdigos ASCII de las letras sino que hay carcteres especiales que tambin corresponden al resultado y de los cuales tambin
sera til conocer su cdigo ASCII.
CAPTULO 4.
35
htttp://www.theskull.com/javascript/ascii-binary.html
Nuestro resultado para el grafo conexo de dos nodos era A_ que pasado a
binario es 0100000101011111.
Este cdigo es un tipo de formato de datos especco para la codicacin de
grafos que pasaremos a aclarar a continuacin.
CAPTULO 4.
36
N(n)
R(x)
4.3.1.1. N(n)
Seguimos con el ejemplo anterior, nuestro grafo de orden 5.
Para el clculo del formato en bigendian debemos sumar
63
al orden del
4.3.1.2. R(x)
Realizamos una codicacin inicial mediante la forma:
(0,1), (0,2), (1,2), (0,3), (1,3), (2,3), ... (n-1,n)
Este estilo de codicacin es muy til debido a que si se aaden nuevos
vrtices con sus nuevas aristas estos se situarn al nal de la codicacin y no
tendremos que variar el orden de las codicaciones anteriores.
En orden de los enlaces los que se encuentran en nuestro grafo los representamos mediante un 1 y los que no se encuentran mediante un 0.
As la
CAPTULO 4.
37
:Fa@x^
Este cdigo representa a un grafo? Veamos como podemos asociar este texto
a un grafo.
(
3 bits
K = 3
CAPTULO 4.
38
Parte III
La herramienta
39
Captulo 5
Implementacion de la
herramienta
En este capitulo explicaremos la eleccin del lenguaje de programacin asi
como las razones que nos han llevado a utilizarlo, adems de una pequea denicin de las clases que conforman la herramienta.
lenguaje
zacin en C++ pero se desestim debido a las numerosas libreras de JAVA que
pueden facilitar la gestin de numerosas operaciones.
Las razones por las que se ha elegido este lenguaje:
1.
Su amplia difusin.
2.
3.
Su capacidad de abstraccin.
4.
5.
La
identicar los servicios que nos ofrece y no la forma en la que estn implementados.
40
CAPTULO 5.
IMPLEMENTACION DE LA HERRAMIENTA
41
y diferenciar dos claros niveles como son la intercie (que indicar los servicios ofertados) y la implementacin (la forma en la que estos servicios estn
desarrollados)
maneras han sido trasladadas a JAVA que fue nalmente el sistema empleado.
5.2.1. GEM.exe
El ejecutable de la aplicacin. Necesario para acceder al men inicial que
accede a todas las clases realizadas.
CAPTULO 5.
42
IMPLEMENTACION DE LA HERRAMIENTA
EDI
5.2.2.3. GraphFactory
La factora de grafos es el centro de nuestra aplicacin con numerosas funciones que generan grafos aleatorios (otro sistema, diferente al de Nauty), genera
matrices y calcula excentricidades.
5.2.2.4. ConvertNauty
Esta clase es una herramienta til para la conversin de los sistemas de
codicacin de Brendan a mi propio sistema de codicacin.
Nauty emplea (como hemos visto en capitulos anteriores) la codicacin
Graph6. Mediante esta clase podemos convertir esta codicacin en su grafo, y
ms adelante en su matriz de adyacencias para poder ser guardado en el txt.
CAPTULO 5.
43
IMPLEMENTACION DE LA HERRAMIENTA
Nodos
Nmero de bits
SQ
2+1
000
s1
3+2+1
4+3+2+1
10
12
00
s2
5+4+3+2+1
15
18
000
s1
6+5+4+3+2+1
21
24
000
s1
7+6+5+4+3+2+1
28
30
00
s2
8+7+6+5+4+3+2+1
36
36
9+8+7+6+5+4+3+2+1
45
48
000
s1
Campos:
Nodos:
Total:
Mltiplo:
Secuencia:
. Caso
. Caso
. Caso
(Nota: Esta por ver si para rdenes superiores existe una secuencia lgica en
la introduccin de 0's de tal manera que podamos determinar automticamente
el nmero a ingresar. Podra resultar interesante realizar un estudio sobre este
tema en un futuro.)
CAPTULO 5.
IMPLEMENTACION DE LA HERRAMIENTA
44
CAPTULO 5.
45
IMPLEMENTACION DE LA HERRAMIENTA
1,1
X X(Y).
Se generan unos grafos siguiendo las opciones por pantalla, con la posibilidad
de crear un .txt para guardar los datos.
CAPTULO 5.
IMPLEMENTACION DE LA HERRAMIENTA
46
Parte IV
Conclusiones y trabajos
futuros
47
Captulo 6
Conclusiones y trabajos
futuros
En este captulo veremos cuales son las conclusiones a las que hemos llegado
despus de realizar el proyecto asi como las futuras mejoras o trabajos a realizar
a partir de nuestra aplicacin.
6.1. Conclusiones
Durante el transcurso de la realizacin se han tenido que solucionar numerosos problemas. El primero de ellos se trataba de desentraar la adaptacin del
sistema Nauty pero debido a su alta complejidad ha sido descartado. Durante un
tiempo se busc un nuevo sistema de generacin, incluido en esta aplicacin. Se
generaban todas las matrices posibles para un orden, tras lo cul, se miraban si
reejaban grafos conexos. Pero de nuevo nos encontrabamos con las dicultades
del isomorsmo (problema NP).
Finalmente se solucion obteniendo los cheros de grafos de Nauty y generando las tablas de excentricidades a partir de ellos.
El autor espera que dicha aplicacin sirva para acelerar la resolucin del
problema de la excentricidad y avanzar en la matera de la teora de grafos.
48
CAPTULO 6.
49
el apartado 2.3.2)
3
El problema de la secuencia de 0's: para rdenes superiores determinar la existencia de una secuencia lgica de inclusin de 0's. (Visto
en el apartado 5.2.5.2)
CAPTULO 6.
50
htttp://www.theskull.com/javascript/ascii-binary.html
Conver-
OmniGrae (Mac OS X)
LYX
gcc y g++
Eclipse
Bibliografa
[1] M. Behzad, J. E. Simpson, Eccentric sequences and eccentric sets in graphs, Discrete Math,
16,
Journal,
50(125),
garica,
6,
[11] B. D. McKay, Nauty User's Guide, Computer Science Department of Australian National University, 2002.
[12] R. C. Read, R. J. Wilson, An Atlas of Graphs, Clarendon Press, 1998.
51
BIBLIOGRAFA
52
Parte V
Anexo
53