2. Unidad 6. Grafos
• GRAFOS:
Un grafo G = (V, A) es una estructura de datos
compuesta por un conjunto de elementos
denominados Vértices (nodos) y un conjunto de
Aristas o Arcos que conectan los vértices.
Cada arista es un par (v, w), donde v, w ∈ V. Si el
par (v, w) es un par ordenado, el grafo recibe el
nombre de Grafo Dirigido.
Escuela de Posgrado – Maestría en Informática 2
3. Unidad 6. Grafos
• GRAFOS:
Los Grafos permiten abordar todos los problemas de
tipo conectividad (el objeto O1 está conectado de una
manera u otra al objeto O2) o de optimización
(caminos más cortos).
Ejemplos:
• Modelación de tráfico
• Planificación de movimientos: recolección de
basura, reparto de correspondencia
• Redes informáticas, Internet.
• Etc.
Escuela de Posgrado – Maestría en Informática 3
4. Unidad 6. Grafos
Escuela de Posgrado – Maestría en Informática 4
Lima
Ancash
Cajamarca
Junín
Ucayali
Cuzco
Ica
Ayacucho Puno
EJEMPLO
DE GRAFO
5. Unidad 6. Grafos
Escuela de Posgrado – Maestría en Informática 5
GRAFO
DIRIGIDO
H
Y
P
F
U Q
K
M
A
6. Unidad 6. Grafos
• GRAFOS:
Definiciones:
•Grado(v): Denominado grado de un vértice, es el
número de aristas que se conectan a un vértice. Se
denota como grado(v). En el ejemplo, P es un
vértice de grado 4, grado(K) = 3, y grado(A) = 0.
Escuela de Posgrado – Maestría en Informática 6
H
Y
P
F
U Q
K
M
A
7. Unidad 6. Grafos
• GRAFOS:
Definiciones:
•Vértices adyacentes: Dos vértices son adyacentes
si está unidos por una arista. En ese caso se dice que
la arista es incidente en esos vértices. En el
ejemplo, P y Q son adyacente, P y K no son
adyacentes.
Escuela de Posgrado – Maestría en Informática 7
H
Y
P
F
U Q
K
M
8. • GRAFOS:
Definiciones:
•a = (u, u): Denominado lazo o bucle, es una arista
que conecta un vértice consigo mismo.
En el ejemplo los nodos H y M están conectados
con lazos.
Unidad 6. Grafos
Escuela de Posgrado – Maestría en Informática 8
H
Y
P
F
U Q
K
M
9. Unidad 6. Grafos
• GRAFOS:
Definiciones :
•P = (v1, v2,…, vn): Denominado camino, es la
secuencia de vértices que se debe seguir para llegar
del vértice v1 (origen) al vértice vn(destino). En el
ejemplo el camino P para llegar del nodo H al nodo
A es H-Y-F-K-A
Escuela de Posgrado – Maestría en Informática 9
H
Y
P
F
U Q
K
M
A
10. Unidad 6. Grafos
• GRAFOS:
Definiciones :
•P = (v1, v2,…, vn): Se denomina camino cerrado, si
el origen (v1) coincide con el destino (vn). En el
ejemplo el camino H-Y-F-Q-P-H, es un camino
cerrado.
Escuela de Posgrado – Maestría en Informática 10
H
Y
P
F
U Q
K
M
A
11. Unidad 6. Grafos
• GRAFOS:
Definiciones :
•P = (v1, v2,…, vn): Se denomina camino simple, si
todos los vértices excepto el origen y el destino,
son distintos. En el ejemplo el camino H-Y-F-Q-P-
H, es un camino simple, pero el camino H-Y-Q-P-
M-Q-K no lo es.
Escuela de Posgrado – Maestría en Informática 11
H
Y
P
F
Q
K
M
A
12. Unidad 6. Grafos
• GRAFOS:
Definiciones :
•Ciclo: Se denominado ciclo, al camino simple y
cerrado que incluye 3 o más vértices. En el ejemplo
los caminos H-Y-Q-P-H y M-K-A-M son ciclos.
Escuela de Posgrado – Maestría en Informática 12
H
Y
P
F
Q
K
M
A
13. Unidad 6. Grafos
• GRAFOS:
Definiciones :
•Tour: Se denominado tour, al camino simple que
une todos los vértices. En el ejemplo el caminos
dado por H-Y-F-K-A-M-P-Q es un tour.
Escuela de Posgrado – Maestría en Informática 13
H
Y
P
F
Q
K
M
A
14. Unidad 6. Grafos
• GRAFOS:
Definiciones :
•Grafo conexo: Un grafo es conexo si para todo par
de vértices del grafo existe un camino entre ellos.
Si el grafo no es dirigido se dice que es “débilmente
conexo”. En el ejemplo se puede decir que el grafo
es débilmente conexo.
Escuela de Posgrado – Maestría en Informática 14
H
Y
P
F
Q
K
M
A
15. Unidad 6. Grafos
• GRAFOS:
Definiciones :
•Grafo árbol: Un grafo es de tipo árbol si es un es
un grafo conexo y no tiene ciclos.
•En el ejemplo se puede decir que el grafo es de tipo
árbol.
Escuela de Posgrado – Maestría en Informática 15
1
5
2
4
3
3
1
4
2
16. Unidad 6. Grafos
• GRAFOS:
Definiciones :
•Si el grafo es dirigido se dice que es “fuertemente
conexo”. En el ejemplo se puede decir que el grafo
es fuertemente conexo.
Escuela de Posgrado – Maestría en Informática 16
H
Y
P
F
Q
17. Unidad 6. Grafos
• GRAFOS:
Definiciones :
•Grafo completo: Un grafo es completo si todos sus
nodos son adyacentes. En el ejemplo se puede decir
que el grafo es completo.
Escuela de Posgrado – Maestría en Informática 17
H
Y
P
F
Q
18. Unidad 6. Grafos
• GRAFOS:
Definiciones :
•Multigrafo: Se denomina así al grafo que por lo
menos dos de sus vértices están conectados por dos
aristas. En el ejemplo se puede decir que el grafo es
multigrafo.
Escuela de Posgrado – Maestría en Informática 18
H
Y
P
F
Q
19. Unidad 6. Grafos
• GRAFOS:
Definiciones :
•Subgrafo: Dado un grafo G = (V, A), se denomina
subgrafo a aquel grafo G1 = (V1, A1) en el que se
cumple que V1 ⊂ V, V1 ≠ ∅ y que A1 ⊂ A. Además
cada arista de A1 es incidente con V1. En el
siguiente ejemplo se puede apreciar este concepto.
Escuela de Posgrado – Maestría en Informática 19
21. Unidad 6. Grafos
• GRAFOS:
Definiciones:
•Grafo etiquetado: Se dice que un grafo está
etiquetado si sus arista tienen algún valor (costo,
peso, longitud etc.).
Escuela de Posgrado – Maestría en Informática 21
H
Y
P
F
U Q
K
M10
55
9
25
8
20
60
18
23. Unidad 6. Grafos
• GRAFOS DIRIGIDOS:
Un grafo dirigido G, denominado también digrafo, es
aquel grafo en el que cada una de sus aristas a está
asignada a un par ordenado (u, v) de vértices de G, es
decir tienen una dirección asignada.
Escuela de Posgrado – Maestría en Informática 23
H
Y
P
F
Q
24. Unidad 6. Grafos
• ARCO O ARISTA DIRIGIDA:
Se denominan así a las aristas de un grafo dirigido.
Se expresan como u → v.
-u es el origen y v es el destino.
-u es predecesor de v y v es sucesor de u.
-u es adyacente hacia v y v es adyacente desde u.
Escuela de Posgrado – Maestría en Informática 24
u varco a:
25. Unidad 6. Grafos
• MATRIS DE AYACENCIA:
Los grafos dirigidos, por lo general se modelan mediante
arreglos de dos dimensiones de valores binarios (0/1 o
false/true). Son matrices cuadradas de orden n x n,
donde n es representa el número de vértices del grafo. A
estos arreglos se les denomina matrices de adyacencia
M. Las filas de la matriz se relacionan con los vértices de
origen, mientras que las columnas los vértices de destino,
y los valores de sus elementos M[u][v] tienen un valor
de 1 (uno) si existe un arco desde u hacia v y 0 (cero) si
no.
Escuela de Posgrado – Maestría en Informática 25
26. Unidad 6. Grafos
• MATRIS DE AYACENCIA:
Ejemplo:
Escuela de Posgrado – Maestría en Informática 26
H
Y
P
F
U Q
K
M
F H K M P Q U Y
F 0 0 1 0 0 1 0 0
H 0 0 0 0 1 0 0 1
K 0 0 0 1 0 0 0 0
M 0 0 1 0 0 0 0 0
P 0 0 0 1 0 1 0 1
Q 0 0 1 0 1 0 0 0
U 0 0 0 0 0 0 0 0
Y 1 1 0 0 0 0 1 0
27. Unidad 6. Grafos
• MATRIS DE AYACENCIA:
Variante (grafos etiquetados):
Escuela de Posgrado – Maestría en Informática 27
F H K M P Q U Y
F 0 0 12 0 0 9 0 0
H 0 0 0 0 6 0 0 0
K 0 0 0 10 0 0 0 0
M 0 0 0 0 0 0 0 0
P 0 0 0 5 0 1 0 8
Q 0 0 11 0 14 0 0 0
U 0 0 0 0 0 0 0 0
Y 7 2 0 0 0 0 2 0
H
Y
P
F
U Q
K
M
10
56
8
12
2
7
2
11
14
9
28. Unidad 6. Grafos
• LISTAS DE AYACENCIA:
Otra manera de modelar los grafos dirigidos, es por
medio de arreglos unidimensionales de n elementos,
donde n representa el número de vértices del grafo. Cada
elemento u del arreglo representan los vértices de origen
y su valor M[u] es un puntero a una lista ligada en donde
cada nodo representa el vértice de destino.
Escuela de Posgrado – Maestría en Informática 28
29. Unidad 6. Grafos
• LISTA DE AYACENCIA:
Ejemplo:
Escuela de Posgrado – Maestría en Informática 29
F
H
K
M
P
Q
U
Y
H
Y
P
F
U Q
K
M
K Q
P Y
M
K
M Q Y
K P
F H U
30. Unidad 6. Grafos
• LISTA DE AYACENCIA:
Ejemplo:
Escuela de Posgrado – Maestría en Informática 30
F
H
K
M
P
Q
U
Y
K/12 Q/9
P/6
M/10
M/5 Y/8
K/11 P/14
F/7 H/2 U/2
H
Y
P
F
U Q
K
M
10
56
8
12
2
7
2
11
14
9
31. Unidad 6. Grafos
Escuela de Posgrado – Maestría en Informática 31
DETERMINACIÓN DE
CAMINOS EN GRAFOS
DIRIGIDOS
32. Unidad 6. Grafos
• DETERMINACIÓN DE CAMINOS EN
GRAFOS DIRIGIDOS:
Existen muchos problemas en los que se requiere
conocer la existencia de caminos , de manera directa o
indirectamente, entre dos puntos. Por otro lado la
determinación del menor camino entre dos puntos es
igualmente útil.
Los grafos dirigidos son ideales para resolver este tipo de
problemas.
Escuela de Posgrado – Maestría en Informática 32
33. Unidad 6. Grafos
• DETERMINACIÓN DE CAMINOS EN
GRAFOS DIRIGIDOS:
Existen muchos algoritmos que permiten encontrar
caminos que partan de un punto de origen y que lleguen
a un punto destino recorriendo la menor distancia. Los
algoritmos más famosos son:
• El algoritmo de Dijkstra
• El algoritmo de Floyd
• El algoritmo de Warshall
Los tres algoritmos emplean una matriz de adyacencia
Escuela de Posgrado – Maestría en Informática 33
35. Unidad 6. Grafos
• ALGORITMO DE DIJKSTRA:
El algoritmo de Dijkstra determina la ruta más corta
entre un vértice de origen a cualquier otro vértice del
grafo dirigido.
Elementos requeridos:
• Una matriz de adyacencia M de n x n elementos en el
que se coloca en cada elemento M[u][v], la distancia
entre los puntos u y v, si no existe el camino se coloca
un valor muy grande (∞). No se consideran los bucles
(M[u][u] = 0).
Escuela de Posgrado – Maestría en Informática 35
36. Unidad 6. Grafos
• ALGORITMO DE DIJKSTRA:
• Una arreglo S que guardará los vértices una vez se
conozca el camino mínimo entre él y el origen.
Inicialmente contendrá el vértice origen. Se maneja
como un conjunto.
• Un arreglo D de n elementos, cada uno representa un
vértice del grafo, en el que se guarda la distancia entre el
origen y el vértice. Al terminar el algoritmo, los
elementos tendrán las distancias mínimas
Escuela de Posgrado – Maestría en Informática 36
37. Unidad 6. Grafos
• ALGORITMO DE DIJKSTRA:
Se tienen el conjunto de vértices V: 1(origen), 2,3,4,…, n
• Colocar el vértice origen en el conjunto S.
• Repetir desde 2 hasta n
o Elegir un vértice v en V-S tal que D[v] sea el mínimo
valor.
o Agregar v a S.
o Repetir para cada vértice w en V-S
Hacer D[w] ← mínimo ( D[w], D[v] + M[v][w] )
Escuela de Posgrado – Maestría en Informática 37
41. Unidad 6. Grafos
• ALGORITMO DE FLOYD:
El algoritmo de Floyd determina la ruta más corta entre
todos los vértices de un grafo dirigido. Así como la ruta a
seguir.
Elementos requeridos:
• Una matriz de adyacencia M de n x n elementos en el
que se coloca en cada elemento M[u][v], la distancia
entre los puntos u y v, si no existe el camino se coloca
un valor muy grande (∞). No se consideran los bucles
(M[u][u] = 0).
Escuela de Posgrado – Maestría en Informática 41
42. Unidad 6. Grafos
• ALGORITMO DE FLOYD:
• Una matriz de T de n x n elementos en el que se coloca
en cada elemento T[u][v], el vértice intermedio para ir
del vértice u al vértice v.
Escuela de Posgrado – Maestría en Informática 42
43. Unidad 6. Grafos
• ALGORITMO DE FLOYD:
•Repetir para todo w desde 1 hasta n
oRepetir para todo u desde 1 hasta n
Repetir para todo v desde 1 hasta n
Si Muw+Mwv < Muv entonces
Muv ← Muw+Mwv
Tuv ← w
Escuela de Posgrado – Maestría en Informática 43
46. Unidad 6. Grafos
• ALGORITMO DE WARSHALL:
El algoritmo de Warshall determina si hay una ruta entre
todos los vértices de un grafo dirigido (no da distancias).
Elementos requeridos:
• Una matriz de adyacencia M de n x n elementos en el
que se coloca en cada elemento M[u][v], el valor 1 si
hay un arco que une los vértices u y v, 0 si no.
• Una matriz de C de n x n, inicialmente igual a M donde
se guardará 1 si hay un camino entre los vértices u y v, 0
si no.
Escuela de Posgrado – Maestría en Informática 46
47. Unidad 6. Grafos
• ALGORITMO DE WARSHALL:
•Repetir para todo w desde 1 hasta n
oRepetir para todo u desde 1 hasta n
Repetir para todo v desde 1 hasta n
Si Cuv = 0 entonces
Cuv ← Cuw ∧ Cwv
Escuela de Posgrado – Maestría en Informática 47
49. Unidad 6. Grafos
• DETERMINACIÓN DE CAMINOS EN
GRAFOS NO DIRIGIDOS:
Los grafos dirigidos sirven para solucionar problemas de
ruteo en los que el costo de ir del vértice u al vértice v el
igual al de ir del vértice v al vértice u.
Escuela de Posgrado – Maestría en Informática 49
11
1
3
2
5
4
6
4
3
3
5
6
2
50. Unidad 6. Grafos
• ÁRBOL DE EXTENSIÓN MÍNIMA:
Un árbol de extensión mínima de un grafo no dirigido
G(V,A) se define como un árbol que conecta todos los
vértices V y está formado por las aristas de menor costo.
Escuela de Posgrado – Maestría en Informática 50
1
5
2
4
3
3
1
3
45
6
2
1
5
2
4
3
3
1
4
2
51. Unidad 6. Grafos
• ÁRBOL DE EXTENSIÓN MÍNIMA:
Si se necesita cablear una casa con un mínimo
de cable, entonces se necesita resolver un
problema de árbol de extensión mínima.
Escuela de Posgrado – Maestría en Informática 51
53. Unidad 6. Grafos
• ALGORITMO DE PRIM:
El algoritmo de Prim permite encontrar el árbol de
extensión mínima para un grafo.
Elementos requeridos:
• Una conjunto V que contiene los vértices del grafo.
V = {1,2,3…n}
• Un conjunto U que contendrá los vértices del grafo.
Inicialmente contiene el primer vértice, U = {1}.
• Un conjunto L de aristas que se formará con las aristas
de menor costo. Inicialmente la lista estará vacía, L=∅ .
Escuela de Posgrado – Maestría en Informática 53
54. Unidad 6. Grafos
• ALGORITMO DE PRIM:
•Mientras V ≠ U hacer
oElegir una arista (u, v) del grafo tal que:
Su costo sea mínimo y
u ∈ U y v ∈ V-U
oAgregar la arista (u, v) a L
oAgregar el vértice v al conjunto U
Escuela de Posgrado – Maestría en Informática 54
55. Unidad 6. Grafos
• ALGORITMO DE PRIM:
Ejemplo 1:
Escuela de Posgrado – Maestría en Informática 55
5
4
1
3
2
1
4
3
3
5
6
2
V = {1, 2, 3, 4, 5}
U = {1}
A = { 1-2, 1-3,
2-3, 2-4,
3-4, 3-5,
4-5}
L = {∅}
56. Unidad 6. Grafos
• ALGORITMO DE PRIM:
Ejemplo 2:
Escuela de Posgrado – Maestría en Informática 56
V = {1, 2, 3, 4, 5, 6, 7}
U = {1}
A = { 1-2, 1-3, 1-4,
2-4, 2-5, 3-4,
3-6, 4-5, 4-6,
4-7, 5-7, 6-7}
L = {∅}
3
6
1
5
2
1
4 3 10
5 6
2
4
7
2 7
1
48
58. Unidad 6. Grafos
• ALGORITMO DE KRUSKAL:
El algoritmo de Kruskal permite encontrar también el
árbol de extensión mínima para un grafo.
Elementos requeridos:
• Un conjunto L que contiene las aristas del grafo y sus
costos.
• Un conjunto P de particiones. P = {{1}, {2}, {3},…{n}}
Escuela de Posgrado – Maestría en Informática 58
59. Unidad 6. Grafos
• ALGORITMO DE KRUSKAL:
•Mientras haya vértices en P que pertenezcan a
particiones distintas hacer
o Elegir de L la arista (u, v) que tenga costo mínimo
o Si u y v están en particiones distintas entonces
Unir las particiones a las que pertenezcan u y v
Escuela de Posgrado – Maestría en Informática 59
60. Unidad 6. Grafos
• ALGORITMO DE KRUSKAL:
Ejemplo 1:
Escuela de Posgrado – Maestría en Informática 60
5
4
1
3
2
1
4
3
3
5
6
2
P = {{1}, {2}, {3}, {4}, {5}}
L = { 1-2(1), 1-3(3),
2-3(3), 2-4(6),
3-4(4), 3-5(2),
4-5(5)}
61. Unidad 6. Grafos
• ALGORITMO DE KRUSKAL:
resultado:
Escuela de Posgrado – Maestría en Informática 61
5
4
1
3
2
1
4
3
2
P = {{1, 2, 3, 4, 5}}
L = { 2-4(6), 4-5(5)}
63. Unidad 6. Grafos
Escuela de Posgrado – Maestría en Informática 63
BÚSQUEDA EN AMPLITUD
BREADTH-FIRST
64. Unidad 6. Grafos
• BÚSQUEDA EN AMPLITUD:
La búsqueda en amplitud es un algoritmo que
permite encontrar un camino entre dos vértices de un
grafo.
El método consiste en que a partir del vértice inicial,
se van analizando los siguientes vértices “por
niveles” (los que están conectados al vértice inicial)
y así se va avanzando hasta encontrar el vértice meta.
Escuela de Posgrado – Maestría en Informática 64
65. Unidad 6. Grafos
• BÚSQUEDA EN AMPLITUD :
Elementos requeridos:
• Una lista P (pendientes) que contiene los vértices que
aun no se han visitado. Funciona como una cola
• Una lista V (visitados) que contiene los vértices que aun
no han sido visitados.
Escuela de Posgrado – Maestría en Informática 65
66. Unidad 6. Grafos
• BÚSQUEDA EN AMPLITUD :
•Insertar el vértice inicial en la lista P
•Mientras P ≠ ∅ y no se llegó al vértice meta
oTomar en X un elemento de P (cola: atender)
oSi X ∉V entonces
Poner X en V (cola: llegada)
Determinar todos los vértices conectados a X
Si en estos vértices no se encuentra el vértice meta
• Colocarlos en P (cola: llegada)
• Si se encontró el vértice meta ⇒ ÉXITO
• De lo contrario ⇒ FRACASO
Escuela de Posgrado – Maestría en Informática 66
67. Unidad 6. Grafos
• BÚSQUEDA EN AMPLITUD :
Ejemplo 1:
Escuela de Posgrado – Maestría en Informática 67
V = {∅}
P = { 1 }
6
5
2
4
3
7
8
9
10
11
12
1
Ruta de 1 a 12
68. Unidad 6. Grafos
Escuela de Posgrado – Maestría en Informática 68
BÚSQUEDA EN PROFUNDIDAD
DEPTH-FIRST
69. Unidad 6. Grafos
• BÚSQUEDA EN PROFUNDIDAD:
La búsqueda en profundidad es un algoritmo que
permite encontrar también un camino entre dos
vértices de un grafo.
El método consiste en que a partir del vértice inicial,
se van analizando los siguientes vértices “por
adyacencia”, se toma un vértice adyacente al del
inicio y se repite el proceso con el vértice elegido
como inicial. Si al final no se encuentra la meta se
sigue con otro vértice adyacente al inicio.
Escuela de Posgrado – Maestría en Informática 69
70. Unidad 6. Grafos
• BÚSQUEDA EN PROFUNDIDAD :
Elementos requeridos:
• Una lista P (pendientes) que contiene los vértices que
aun no se han visitado. Funciona como una cola
• Una lista V (visitados) que contiene los vértices que aun
no han sido visitados.
• Un valor entero LP que indica el límite de profundidad
permitido (el vértice inicial tiene profundidad cero, el
adyacente a él uno, etc. Si se llega al límite la ruta no
tiene éxito.
Escuela de Posgrado – Maestría en Informática 70
71. Unidad 6. Grafos
• BÚSQUEDA EN AMPLITUD :
•Insertar el vértice inicial en la lista P
•Mientras P ≠ ∅ y no se llegó al vértice meta
oTomar en X un elemento de P (pila: push)
oSi X ∉V y su prof(X) ≤ LP entonces
Poner X en V (pila: push)
Determinar todos los vértices adyacentes a X
Si en estos vértices no se encuentra el vértice meta
• Colocarlos en P (pila: push)
• Si se encontró el vértice meta ⇒ ÉXITO
• De lo contrario ⇒ FRACASO
Escuela de Posgrado – Maestría en Informática 71
72. Unidad 6. Grafos
• BÚSQUEDA EN PROFUNDIDAD :
Ejemplo 1:
Escuela de Posgrado – Maestría en Informática 72
V = {∅}
P = { 1 }
Ruta de 1 a 12
LP = 10
6
5
2
4
3
7
8
9
10
11
12
1
73. Unidad 6. Grafos
Escuela de Posgrado – Maestría en Informática 73
EJEMPLOS DE BÚSQUEDA EN
AMPLITUD Y PROFUNDIDAD
74. Unidad 6. Grafos
Escuela de Posgrado – Maestría en Informática 74
PROBLEMA DEL PUZZLE-8
3 2 1
4 5 6
8 7
1 2 3
8
7
4
6 5
75. Unidad 6. Grafos
Escuela de Posgrado – Maestría en Informática 75
PROBLEMA DEL PUZZLE-8
32
1 4
56
8
7
1 2 3
8
7
4
6 5
ESTADO INICIAL ESTADO FINAL
76. Unidad 6. Grafos
Escuela de Posgrado – Maestría en Informática 76
PROBLEMA DEL PUZZLE-8
32
1 4
56
8
7
1 2 3
8
7
4
6 5
ESTADO INICIAL ESTADO FINAL