Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
CONCEPTO
Lateora
de
grafos(tambin
llamadateora de las grficas) es un
campo de estudio de las matemticas y
las ciencias de la computacin, que
estudia
las
propiedades
de
los
grafos(tambin llamadasgrficas) que
son estructuras que constan de dos
partes, el conjunto de VERTICES, nodos
o puntos; y el conjunto de ARISTAS,
lneas o lados que pueden ser
orientados o no.
Definicin
Grafo: un grafo es un conjunto, no vaco,
de objetos llamados nodos (o vrtices) y
una seleccin de pares de nodos,
llamados ejes (o aristas) donde estos
pueden ser orientados o no.
Un grafo G = (V,X), donde V es un
conjunto nodos y X es un subconjunto
del conjunto de pares no ordenados de
elementos distintos de V.
Definicin
Nodos / Vrtices: constituyen los
objetos de la situacin a representar.
Ejemplo: V = {A,B,C,D,E}
Ejes / Aristas /Arcos: conforman las
relaciones entre un par de objetos
representados por los nodos.
Ejemplo: X = {(A,B),(A,C),(B,C),(B,E),
(C,D),(D,E)}
Tanto los nodos como ejes, pueden tener
atributos cuantitativos y/o cualitativos
(variables de cualquier tipo).
Ejemplos
Tipos:
Grafo simple:
Multigrafo:
Pseudografo:
Grafo dirigido:
Terminologa:
Etiquetado. Distincin que se hace a los vrtices
y/o aristas mediante una marca que los hace
unvocamente distinguibles del resto, es decir,
asignarle a cada vrtice o arista un nombre.
Adyacencia. Se dice que dos vrtices son
adyacentes si hay una arista que los conecte
entre ellos.
Grado de un vrtice. El grado de un vrtice es
un nmero natural de 0 al infinito que designa el
nmero de aristas le conectan con otros vrtices.
Grafo complementario:
Grafo original
Grafo bipartito:
Grafo bipartito completo:
Grafo complementario
rboles:
Un rbol es un grafo
conexo y sin ciclos o
lazos, es decir, un grafo
simple.
Terminologa:
Bosque. Un rbol es considerado un bosque si
sus componentes conexas son rboles.
rbol generador. Un rbol generador de un
grafo conexo es un subgrafo conexo con el menor
nmero posible de aristas y con todos los vrtices
del grafo original. No tiene porque ser nico.
rbol generador mnimo. El rbol generador
mnimo es un rbol generador construido sobre
un grafo conexo ponderado con un criterio de
seleccin de aristas definido por su menor peso.
h
j
l
k
j
Representacin de Grafos
Dirigidos
Una representacin comn para un grafo
dirigido G = (V,A) es la matriz de adyacencia.
La matriz de adyacencia para G es una matriz A
de dimensin n x n, de elementos booleanos,
donde A[i,j] es verdadero si y slo si existe un
arco que vaya del vrtice i al j.
Con frecuencia se exhibirn matrices adyacencias
con 1 para verdadero y 0 para falso.
19
21
23
Grafos No Dirigidos
Parte de la terminologa para grafos dirigidos es
aplicable a los no dirigidos.
Un grafo no dirigido G consiste en un conjunto
finito de vrtices V y un conjunto de aristas A G
= (V,A).
Los vrtices se denominan tambin nodos o puntos.
Las aristas es un par no ordenado de vrtices; la arista
(v,w) = (w,v)
27
30
Representacin de Grafos No
Dirigidos
Los mtodos de representacin de grafos dirigidos
se pueden emplear para representar los no
dirigidos.
Una arista no dirigida entre v y w se representa
simplemente con dos aristas dirigidas, una de v a w, y
otra de w a v.
Representacin de Grafos No
Dirigidos (cont.)
32
Algoritmos de Grafos
Dirigidos
Algoritmos de determinacin de los
caminos ms cortos:
Algoritmo de Dijkstra.
Algoritmo de Floyd-Warshall.
35
37
6. Se regresa al paso 4.
39
40
Iteraci
n
D[2]
D[3]
D[4]
D[5]
Inicial
{1}
---
10
30
100
41
Iteraci
n
D[2]
D[3]
D[4]
D[5]
Inicial
{1}
---
10
30
100
{1,2}
10
60
30
100
42
Iteraci
n
D[2]
D[3]
D[4]
D[5]
Inicial
{1}
---
10
30
100
1
2
{1,2}
{1,2,4}
2
4
10
10
60
50
30
30
100
90
43
Iteraci
n
D[2]
D[3]
D[4]
D[5]
Inicial
{1}
---
10
30
100
1
2
3
{1,2}
{1,2,4}
{1,2,4,3}
2
4
3
10
10
10
60
50
50
30
30
30
100
90
60
Iteraci
n
D[2]
D[3]
D[4]
D[5]
Inicial
{1}
---
10
30
100
1
2
3
{1,2}
{1,2,4}
{1,2,4,3}
{1,2,4,3,
5}
2
4
3
10
10
10
60
50
50
30
30
30
100
90
60
10
50
30
60
4
44
45
48
49
1 122 3 34 54
5
0 10 30 100
2
3
4
5
50
0 50
0 10
20 0 60
A [i,j]
0
1
0
0
0
2
0
0
0
3
0
0
0
4
0
0
0
5
0
0
0
1
2
3
4
5
0 0 0 0 0
0 0 0 0 0
1
2
3
4
5
1 2 3 4
51 2 3 4 5
0 10 30 100
0 50
0 10
20 0 60
0
A [i,j]
0
51
1
2
3
4
5
1 2 3 4
51 2 3 4 5
0 10 30 100
0 50
0 10
20 0 60
0
A [i,j]
1
1
2
3
4
1
0
0
0
0
2
0
0
0
0
3
0
0
0
0
4
0
0
0
0
5
0
0
0
5 0 0 0 0 0
P
1
2
3
4
5
1 2 3 4
51 2 3 4 5
0 10 30 100
0 50
0 10
20 0 60
0
A [i,j]
1
52
1
2
3
4
5
1 2 3 4
51 2 3 4 5
0 10 60 30 100
0 50
0 10
20 0 60
0
A [i,j]
2
1
2
3
4
1
0
0
0
0
2
0
0
0
0
3
2
0
0
0
4
0
0
0
0
5
0
0
0
5 0 0 0 0 0
P
1
2
3
4
5
1 2 3 4
51 2 3 4 5
0 10 60 30 100
0 50
0 10
20 0 60
0
A [i,j]
2
53
1
2
3
4
5
1 2 3 4
51 2 3 4 5
0 10 60 30 70
0 50 60
0 10
20 0 30
0
A [i,j]
3
1
2
3
4
1
0
0
0
0
2
0
0
0
0
3
2
0
0
0
4
0
0
0
0
5
3
3
0
5 0 0 0 0 0
P
1
2
3
4
5
1 2 3 4
51 2 3 4 5
0 10 60 30 70
0 50 60
0 10
20 0 30
0
A [i,j]
3
54
1
2
3
4
5
1 2 3 4
51 2 3 4 5
0 10 50 30 60
0 50 60
0 10
20 0 30
0
A [i,j]
4
1
2
3
4
1
0
0
0
0
2
0
0
0
0
3
4
0
0
0
4
0
0
0
0
5
4
3
0
5 0 0 0 0 0
P
1
2
3
4
5
1 1 22 3 3
4 54
5
0 10 50 30 60
0 50 60
0 10
20 0 30
0
A [i,j]
4
55
1
2
3
4
5
1 1 22 3 3
4 54
5
0 10 50 30 60
0 50 60
0 10
20 0 30
0
A [i,j]
5
1
2
3
4
1
0
0
0
0
2
0
0
0
0
3
4
0
0
0
4
0
0
0
0
5
4
3
0
5 0 0 0 0 0
P
1 122 3 34 5 4
5
1 0 10 50 30 60
2 0 50 60
3 0 10
4 20 0 30
5 0
A
56
1
2
3
4
1
0
0
0
0
2
0
0
0
0
3
4
0
0
0
4
0
0
0
0
5
4
3
0
5 0 0 0 0 0
P
57
58
60
12 3
1 0 1 1
2 0 0 1
3 0 0 0
4 0 0 1
5 0 0 0
4 5
1 1
0 1
0 1
0 1
0 0
61
63
1 122 3 34 5 4
5
1 0 10 50 30 60
2 0 50 60
3 0 10
4 20 0 30
5 0
max
64
60
65
66
67
Ejemplo:
Realizar el recorrido en anchura (siga el
orden alfabtico) y encontrar el bosque
abarcador del siguiente grafo dirigido.
70
71
Pseudocdigo del
algoritmo:
72
Algoritmos de Grafos
Dirigidos
Algoritmo de Bsqueda en
ArcosProfundidad
DF:
(cont.)
Si en tiempo de descubrimiento de u
tenemos el arco (u,v):
i. Si el estado de v es NO_VISITADO,
entonces (u,v) DF.
ii. Si el estado de v es VISITADO, entonces
(u,v) es un arco hacia atrs.
iii. Si el estado de v es TERMINADO,
entonces (u,v) es un arco de cruce o arco
hacia delante. Ser de cruce si d[v]<d[u];
y ser hacia delante si d[v]>d[v].
74
Algoritmos de Grafos
Dirigidos
Algoritmo de Bsqueda en
Profundidad (cont.)
75
Ejemplo:
Realizar el recorrido en profundidad
(siga el orden alfabtico) y encontrar el
bosque abarcador del siguiente grafo
dirigido.
77
78
79
Algoritmos de Grafos No
Dirigidos
Algoritmos de determinacin de los caminos
ms cortos:
Algoritmo del camino ms corto.
Ejemplo:
Encontrar el camino ms corto entre los
vrtices a y h.
82
D[ g ]
D[h]
D[ g ] 6
D[h]
86
D[c] min{ ,2 2} 4
D[ f ] 1
D[ g ] 6
D[h]
D[ g ] 6
D[h] 5
D[ g ] 6
D[h] 5
D[ g ] 6
D[h] 5
92
93
94
95
http://www.dma.fi.upm.es/java/matematicadiscreta/Kru
skal%5Fprim/applet.htm
.
http://students.ceid.upatras.gr/~papagel/project/prim.h
tm
.
96
4 5
5
97
5 3
5 5 6 4
5 2
3 6 6
4 2 6
V-U
---
{1,2,3,4,5,
6}
{1}
{2,3,4,5,6
}
4 5
5
98
5 3
5 5 6 4
5 2
3 6 6
4 2 6
V-U
---
{1,2,3,4,5,
6}
{1}
{2,3,4,5,6
}
{(1,3)}
{1,2,3,4,5,
6}
{1,3}
{2,4,5,6}
4 5
5
99
5 3
5 5 6 4
5 2
3 6 6
4 2 6
V-U
---
{1,2,3,4,5,
6}
{1}
{2,3,4,5,6
}
{(1,3)}
{1,2,3,4,5,
6}
{1,3}
{2,4,5,6}
{(1,3),(3,6)}
{1,2,3,4,5,
6}
{1,3,6}
{2,4,5}
4 5
5
100
5 3
5 5 6 4
5 2
3 6 6
4 2 6
V-U
---
{1,2,3,4,5,
6}
{1}
{2,3,4,5,6
}
{(1,3)}
{1,2,3,4,5,
6}
{1,3}
{2,4,5,6}
{(1,3),(3,6)}
{1,2,3,4,5,
6}
{1,3,6}
{2,4,5}
{(1,3),(3,6),(6,4)}
{1,2,3,4,5,
6}
{1,3,4,6}
{2,5}
4 5
5
101
5 3
5 5 6 4
5 2
3 6 6
4 2 6
V-U
---
{1,2,3,4,5,6}
{1}
{2,3,4,5,6}
{(1,3)}
{1,2,3,4,5,6}
{1,3}
{2,4,5,6}
{(1,3),(3,6)}
{1,2,3,4,5,6}
{1,3,6}
{2,4,5}
{(1,3),(3,6),(6,4)}
{1,2,3,4,5,6}
{1,3,4,6}
{2,5}
{(1,3),(3,6),(6,4),(3,2)}
{1,2,3,4,5,6}
{1,2.3,4,6}
{5}
4 5
5
102
5 3
5 5 6 4
5 2
3 6 6
4 2 6
V-U
---
{1,2,3,4,5,6}
{1}
{2,3,4,5,6}
{(1,3)}
{1,2,3,4,5,6}
{1,3}
{2,4,5,6}
{(1,3),(3,6)}
{1,2,3,4,5,6}
{1,3,6}
{2,4,5}
{(1,3),(3,6),(6,4)}
{1,2,3,4,5,6}
{1,3,4,6}
{2,5}
{(1,3),(3,6),(6,4),(3,2)}
{1,2,3,4,5,6}
{1,2.3,4,6}
{5}
{(1,3),(3,6),(6,4),(3,2),(2,5)}
{1,2,3,4,5,6}
{1,2,3,4,5,6}
{}
4 5
5
103
5 3
5 5 6 4
5 2
3 6 6
4 2 6
V-U
---
{1,2,3,4,5,6}
{1}
{2,3,4,5,6}
{(1,3)}
{1,2,3,4,5,6}
{1,3}
{2,4,5,6}
{(1,3),(3,6)}
{1,2,3,4,5,6}
{1,3,6}
{2,4,5}
{(1,3),(3,6),(6,4)}
{1,2,3,4,5,6}
{1,3,4,6}
{2,5}
{(1,3),(3,6),(6,4),(3,2)}
{1,2,3,4,5,6}
{1,2.3,4,6}
{5}
{(1,3),(3,6),(6,4),(3,2),(2,5)}
{1,2,3,4,5,6}
{1,2,3,4,5,6}
{}
5 6
1 1
5 6
*
6 4
3 3
U {1,3}
V U {2,4,5,6}
1 2 3
M [2] *
*
D[2] 0 5 1
P[2] 0 3 1
U {1,2,3,4,6}
V U {5}
1 2 3
M [5] * * *
D[5] 0 5 1
P[5] 0 3 1
4 5 6
5 6 4
1 3 3
4 5 6
*
*
2 3 4
6 2 3
U {1,3,6}
V U {2,4,5}
1 2 3
M [3] *
*
D[3] 0 5 1
P[3] 0 3 1
U {1,2,3,4,5,6}
V U {}
1 2 3
M [6] * * *
D[6] 0 5 1
P[6] 0 3 1
4 5 6
*
2 6 4
6 3 3
4 5 6
* * *
2 3 4
6 2 3
105
107
108
109
110
Costo
Aristas
(1,3)
(4,6)
(2,5)
(3,6)
(1,4) (2,3)
(3,4)
(3,5) (5,6)
111
Costo
Aristas
(1,3)
(4,6)
(2,5)
(3,6)
(1,4) (2,3)
(3,4)
(3,5) (5,6)
112
113
114
115
Ejemplo:
Realizar el recorrido en anchura (siga el
orden alfabtico) y encontrar el bosque
abarcador del siguiente grafo no
dirigido.
116
117
Pseudocdigo del
algoritmo:
118
120
Ejemplo:
Realizar el recorrido en profundidad
(siga el orden alfabtico) y encontrar el
bosque abarcador del siguiente grafo
dirigido.
121
122
123
Referencias Bibliogrficas
Aho, Hopcroft & Ullman. Estructuras
de Datos y Algoritmos. Pearson
Addison Wesley Longman, Primera
Edicin, 1998.
Wikipedia. URL:
http://es.wikipedia.org.
124