SlideShare una empresa de Scribd logo
1 de 76
Descargar para leer sin conexión
ALGORITMOS
(CIC621)
Unidad 6. Grafos
J. Miguel Guanira Erazo MSc.
Escuela de Posgrado – Maestría en Informática 1
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
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
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
Unidad 6. Grafos
Escuela de Posgrado – Maestría en Informática 5
GRAFO
DIRIGIDO
H
Y
P
F
U Q
K
M
A
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
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
• 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
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
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
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
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
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
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
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
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
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
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
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
Unidad 6. Grafos
Escuela de Posgrado – Maestría en Informática 20
H
Y
P
F
Q
A
C
B
SubGrafo
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
Unidad 6. Grafos
Escuela de Posgrado – Maestría en Informática 22
GRAFOS DIRIGIDOS
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
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:
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
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
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
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
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
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
Unidad 6. Grafos
Escuela de Posgrado – Maestría en Informática 31
DETERMINACIÓN DE
CAMINOS EN GRAFOS
DIRIGIDOS
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
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
Unidad 6. Grafos
Escuela de Posgrado – Maestría en Informática 34
ALGORITMO DE DIJKSTRA
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
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
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
Unidad 6. Grafos
• ALGORITMO DE DIJKSTR:
Ejemplo 1:
Escuela de Posgrado – Maestría en Informática 38
11
1
3
2
5
4
64
3
3
5
6
2
1 2 3 4 5
1 0 4 11 ∞ ∞
2 ∞ 0 ∞ 6 2
3 ∞ 3 0 6 ∞
4 ∞ ∞ ∞ 0 ∞
5 ∞ ∞ 5 3 0
Unidad 6. Grafos
• ALGORITMO DE DIJKSTR:
Ejemplo 2:
Escuela de Posgrado – Maestría en Informática 39
4
1 2 3 4 5 6 7 8
1 0 2 ∞ 3 ∞ ∞ ∞ ∞
2 4 0 4 ∞ 6 ∞ ∞ ∞
3 ∞ 6 0 ∞ ∞ 7 ∞ ∞
4 ∞ ∞ ∞ 0 5 ∞ 4
5 ∞ ∞ ∞ 6 0 4 ∞ 3
6 ∞ ∞ ∞ ∞ ∞ 0 ∞ ∞
7 ∞ ∞ ∞ 2 ∞ ∞ 0 5
8 ∞ ∞ ∞ ∞ ∞ ∞ 1 8
7
1
32
5
4
4
3
6
5
6
2
6
7
8
6
4
2
5
1
3
4
Unidad 6. Grafos
Escuela de Posgrado – Maestría en Informática 40
ALGORITMO DE FLOYD
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
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
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
Unidad 6. Grafos
• ALGORITMO DE FLOYD:
Ejemplo:
Escuela de Posgrado – Maestría en Informática 44
1 2 3
1 0 1 3
2 2 0 1
3 4 5 0
3
1
3
2
1
5
2
1
4
w u v
Muv Muw + Mwv
1 1 1
1 1
1 1
2
3
1 1
1
1
2
3
2
2
2
1 1
1
1
2
3
3
3
3
1 1
1
1
2
3
2
2
2
1
2
3
2
2
2
2
2
2
1
2
3
3
3
3
2
2
2
1 1
1
1
2
3
3
3
3
1
2
3
2
2
2
3
3
3
1
2
3
3
3
3
3
3
3
Unidad 6. Grafos
Escuela de Posgrado – Maestría en Informática 45
ALGORITMO DE WARSHALL
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
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
Unidad 6. Grafos
Escuela de Posgrado – Maestría en Informática 48
GRAFOS NO DIRIGIDOS
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
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
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
Unidad 6. Grafos
Escuela de Posgrado – Maestría en Informática 52
ALGORITMO DE PRIM
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
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
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 = {∅}
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
Unidad 6. Grafos
Escuela de Posgrado – Maestría en Informática 57
ALGORITMO DE KRUSKAL
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
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
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)}
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)}
Unidad 6. Grafos
• ALGORITMO DE KUSKAL:
paso 1:
Escuela de Posgrado – Maestría en Informática 62
P = {{1}, {2}, {3}, {4}, {5}, {6}, {7}}
L = { 1-2(2), 1-3(4), 1-4(1),
2-4(3), 2-5(10), 3-4(2),
3-6(5), 4-5(7), 4-6(8),
4-7(4), 5-7(6), 6-7(1)}
3
6
1
5
2
1
4 3 10
5 6
2
4
7
2 7
1
48
1-4(1) ← (u, v)
Unidad 6. Grafos
Escuela de Posgrado – Maestría en Informática 63
BÚSQUEDA EN AMPLITUD
BREADTH-FIRST
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
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
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
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
Unidad 6. Grafos
Escuela de Posgrado – Maestría en Informática 68
BÚSQUEDA EN PROFUNDIDAD
DEPTH-FIRST
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
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
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
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
Unidad 6. Grafos
Escuela de Posgrado – Maestría en Informática 73
EJEMPLOS DE BÚSQUEDA EN
AMPLITUD Y PROFUNDIDAD
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
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
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

Más contenido relacionado

La actualidad más candente

Algebra lineal 2. Espacios vectoriales
Algebra lineal 2. Espacios vectorialesAlgebra lineal 2. Espacios vectoriales
Algebra lineal 2. Espacios vectorialesEdward Ropero
 
Ejercicios resueltos grafos
Ejercicios resueltos grafosEjercicios resueltos grafos
Ejercicios resueltos grafosTERE FERNÁNDEZ
 
Grafos eulerianos
Grafos eulerianosGrafos eulerianos
Grafos eulerianosborisunefa
 
Estructura Discreta 2 Grafos Eulerianos y Hamiltonianos
Estructura Discreta 2 Grafos Eulerianos y HamiltonianosEstructura Discreta 2 Grafos Eulerianos y Hamiltonianos
Estructura Discreta 2 Grafos Eulerianos y HamiltonianosFabiola Dubraska
 
Diapositivas de estructuras algebraicas
Diapositivas de estructuras algebraicasDiapositivas de estructuras algebraicas
Diapositivas de estructuras algebraicasÄlëx Vïllëğäš
 
Aplicaciones de espacios y subespacios vectoriales
Aplicaciones de espacios y subespacios vectorialesAplicaciones de espacios y subespacios vectoriales
Aplicaciones de espacios y subespacios vectorialesWilson Quinatoa
 
Diapo teoria de grafos
Diapo teoria de grafosDiapo teoria de grafos
Diapo teoria de grafosGera Lopez
 
Leyes de la logica e inferencias
Leyes de la  logica  e inferenciasLeyes de la  logica  e inferencias
Leyes de la logica e inferenciasMaria Gaitan
 
Glosario teoria de grafos
Glosario teoria de grafosGlosario teoria de grafos
Glosario teoria de grafosAndres Baena
 
Exposición de las matrices en el campo de la electrónica por Abigail Simba
Exposición de las matrices en el campo de la electrónica por Abigail SimbaExposición de las matrices en el campo de la electrónica por Abigail Simba
Exposición de las matrices en el campo de la electrónica por Abigail Simbaabigailsimba
 
Series Infinitas Convergentes y Divergentes en Geogebra CAS
Series Infinitas Convergentes y Divergentes en Geogebra CASSeries Infinitas Convergentes y Divergentes en Geogebra CAS
Series Infinitas Convergentes y Divergentes en Geogebra CASJose Perez
 

La actualidad más candente (20)

Algebra lineal 2. Espacios vectoriales
Algebra lineal 2. Espacios vectorialesAlgebra lineal 2. Espacios vectoriales
Algebra lineal 2. Espacios vectoriales
 
Ejercicios resueltos grafos
Ejercicios resueltos grafosEjercicios resueltos grafos
Ejercicios resueltos grafos
 
Grafos
GrafosGrafos
Grafos
 
Grafos eulerianos
Grafos eulerianosGrafos eulerianos
Grafos eulerianos
 
Estructura Discreta 2 Grafos Eulerianos y Hamiltonianos
Estructura Discreta 2 Grafos Eulerianos y HamiltonianosEstructura Discreta 2 Grafos Eulerianos y Hamiltonianos
Estructura Discreta 2 Grafos Eulerianos y Hamiltonianos
 
Diapositivas de estructuras algebraicas
Diapositivas de estructuras algebraicasDiapositivas de estructuras algebraicas
Diapositivas de estructuras algebraicas
 
Aplicaciones de espacios y subespacios vectoriales
Aplicaciones de espacios y subespacios vectorialesAplicaciones de espacios y subespacios vectoriales
Aplicaciones de espacios y subespacios vectoriales
 
Diapo teoria de grafos
Diapo teoria de grafosDiapo teoria de grafos
Diapo teoria de grafos
 
Grafos resueltos
Grafos  resueltosGrafos  resueltos
Grafos resueltos
 
Leyes de la logica e inferencias
Leyes de la  logica  e inferenciasLeyes de la  logica  e inferencias
Leyes de la logica e inferencias
 
Isomorfos y arboles
Isomorfos y arbolesIsomorfos y arboles
Isomorfos y arboles
 
Numeros complejos ppt
Numeros complejos pptNumeros complejos ppt
Numeros complejos ppt
 
Glosario teoria de grafos
Glosario teoria de grafosGlosario teoria de grafos
Glosario teoria de grafos
 
Grafo bipartito
Grafo bipartitoGrafo bipartito
Grafo bipartito
 
Conceptos básicos de los grafos
Conceptos básicos de los grafosConceptos básicos de los grafos
Conceptos básicos de los grafos
 
Exposición de las matrices en el campo de la electrónica por Abigail Simba
Exposición de las matrices en el campo de la electrónica por Abigail SimbaExposición de las matrices en el campo de la electrónica por Abigail Simba
Exposición de las matrices en el campo de la electrónica por Abigail Simba
 
Relaciones y Grafos
Relaciones y GrafosRelaciones y Grafos
Relaciones y Grafos
 
Series Infinitas Convergentes y Divergentes en Geogebra CAS
Series Infinitas Convergentes y Divergentes en Geogebra CASSeries Infinitas Convergentes y Divergentes en Geogebra CAS
Series Infinitas Convergentes y Divergentes en Geogebra CAS
 
Teoria-de-grafos
Teoria-de-grafosTeoria-de-grafos
Teoria-de-grafos
 
Tema 4 Relaciones
Tema 4   RelacionesTema 4   Relaciones
Tema 4 Relaciones
 

Similar a Algoritmos de grafos para determinar caminos óptimos

Presentación1 grafos
Presentación1 grafosPresentación1 grafos
Presentación1 grafosozilricardo
 
Presentación1 grafos
Presentación1 grafosPresentación1 grafos
Presentación1 grafosozilricardo
 
METODOS Y CONSEPTOS ESTRUCTURA DE GRAFOS
METODOS Y CONSEPTOS ESTRUCTURA DE GRAFOSMETODOS Y CONSEPTOS ESTRUCTURA DE GRAFOS
METODOS Y CONSEPTOS ESTRUCTURA DE GRAFOSJunior Vallenilla
 
Clase 9 grafos parte iii (cam min - arbol min)-ay_ed-2014
Clase 9  grafos parte iii (cam min - arbol min)-ay_ed-2014Clase 9  grafos parte iii (cam min - arbol min)-ay_ed-2014
Clase 9 grafos parte iii (cam min - arbol min)-ay_ed-2014Nicolas Mattone
 
Teoría de Grafos en sage
 Teoría de Grafos en sage Teoría de Grafos en sage
Teoría de Grafos en sagekennethmath
 
grafosalgoritmosfundamentales-170507070811.pdf
grafosalgoritmosfundamentales-170507070811.pdfgrafosalgoritmosfundamentales-170507070811.pdf
grafosalgoritmosfundamentales-170507070811.pdfEdgardRamirezHuaccha
 
Algoritmos de Dijkstra, Warshall, Ordenación Topológica.
Algoritmos de Dijkstra, Warshall, Ordenación Topológica.Algoritmos de Dijkstra, Warshall, Ordenación Topológica.
Algoritmos de Dijkstra, Warshall, Ordenación Topológica.Bryan Aguilar Yaguana
 
Grafos (angel)[1]
Grafos (angel)[1]Grafos (angel)[1]
Grafos (angel)[1]ozilricardo
 
Tema 5 diapositivas de la teoría de grafos.pptx
Tema 5 diapositivas de la teoría de grafos.pptxTema 5 diapositivas de la teoría de grafos.pptx
Tema 5 diapositivas de la teoría de grafos.pptxAndreFurios
 
Grafos
Grafos Grafos
Grafos itzelk
 
Grafos
Grafos Grafos
Grafos itzelk
 
Revista Manuel Torres: Mirror-x100@
Revista Manuel Torres: Mirror-x100@Revista Manuel Torres: Mirror-x100@
Revista Manuel Torres: Mirror-x100@Mrx Mirrorx
 
Fundamentos de la Teoría de Grafos en Curso de Educagratis
Fundamentos de la Teoría de Grafos en Curso de EducagratisFundamentos de la Teoría de Grafos en Curso de Educagratis
Fundamentos de la Teoría de Grafos en Curso de EducagratisEducagratis
 
Estructura de datos
Estructura de datosEstructura de datos
Estructura de datosLeo Solis
 

Similar a Algoritmos de grafos para determinar caminos óptimos (20)

Presentación1 grafos
Presentación1 grafosPresentación1 grafos
Presentación1 grafos
 
Presentación1 grafos
Presentación1 grafosPresentación1 grafos
Presentación1 grafos
 
METODOS Y CONSEPTOS ESTRUCTURA DE GRAFOS
METODOS Y CONSEPTOS ESTRUCTURA DE GRAFOSMETODOS Y CONSEPTOS ESTRUCTURA DE GRAFOS
METODOS Y CONSEPTOS ESTRUCTURA DE GRAFOS
 
Clase 9 grafos parte iii (cam min - arbol min)-ay_ed-2014
Clase 9  grafos parte iii (cam min - arbol min)-ay_ed-2014Clase 9  grafos parte iii (cam min - arbol min)-ay_ed-2014
Clase 9 grafos parte iii (cam min - arbol min)-ay_ed-2014
 
Teoría de Grafos en sage
 Teoría de Grafos en sage Teoría de Grafos en sage
Teoría de Grafos en sage
 
Grafos en sage
Grafos en sageGrafos en sage
Grafos en sage
 
grafosalgoritmosfundamentales-170507070811.pdf
grafosalgoritmosfundamentales-170507070811.pdfgrafosalgoritmosfundamentales-170507070811.pdf
grafosalgoritmosfundamentales-170507070811.pdf
 
Algoritmos de Dijkstra, Warshall, Ordenación Topológica.
Algoritmos de Dijkstra, Warshall, Ordenación Topológica.Algoritmos de Dijkstra, Warshall, Ordenación Topológica.
Algoritmos de Dijkstra, Warshall, Ordenación Topológica.
 
Tema grafos
Tema grafosTema grafos
Tema grafos
 
Grafos
GrafosGrafos
Grafos
 
Grafos (angel)[1]
Grafos (angel)[1]Grafos (angel)[1]
Grafos (angel)[1]
 
Tema 5 diapositivas de la teoría de grafos.pptx
Tema 5 diapositivas de la teoría de grafos.pptxTema 5 diapositivas de la teoría de grafos.pptx
Tema 5 diapositivas de la teoría de grafos.pptx
 
S4-SCBC.pptx
S4-SCBC.pptxS4-SCBC.pptx
S4-SCBC.pptx
 
S4-SCBC.pptx
S4-SCBC.pptxS4-SCBC.pptx
S4-SCBC.pptx
 
Grafos
Grafos Grafos
Grafos
 
Grafos
Grafos Grafos
Grafos
 
Revista Manuel Torres: Mirror-x100@
Revista Manuel Torres: Mirror-x100@Revista Manuel Torres: Mirror-x100@
Revista Manuel Torres: Mirror-x100@
 
Grafos
GrafosGrafos
Grafos
 
Fundamentos de la Teoría de Grafos en Curso de Educagratis
Fundamentos de la Teoría de Grafos en Curso de EducagratisFundamentos de la Teoría de Grafos en Curso de Educagratis
Fundamentos de la Teoría de Grafos en Curso de Educagratis
 
Estructura de datos
Estructura de datosEstructura de datos
Estructura de datos
 

Algoritmos de grafos para determinar caminos óptimos

  • 1. ALGORITMOS (CIC621) Unidad 6. Grafos J. Miguel Guanira Erazo MSc. Escuela de Posgrado – Maestría en Informática 1
  • 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
  • 20. Unidad 6. Grafos Escuela de Posgrado – Maestría en Informática 20 H Y P F Q A C B SubGrafo
  • 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
  • 22. Unidad 6. Grafos Escuela de Posgrado – Maestría en Informática 22 GRAFOS DIRIGIDOS
  • 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
  • 34. Unidad 6. Grafos Escuela de Posgrado – Maestría en Informática 34 ALGORITMO DE DIJKSTRA
  • 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
  • 38. Unidad 6. Grafos • ALGORITMO DE DIJKSTR: Ejemplo 1: Escuela de Posgrado – Maestría en Informática 38 11 1 3 2 5 4 64 3 3 5 6 2 1 2 3 4 5 1 0 4 11 ∞ ∞ 2 ∞ 0 ∞ 6 2 3 ∞ 3 0 6 ∞ 4 ∞ ∞ ∞ 0 ∞ 5 ∞ ∞ 5 3 0
  • 39. Unidad 6. Grafos • ALGORITMO DE DIJKSTR: Ejemplo 2: Escuela de Posgrado – Maestría en Informática 39 4 1 2 3 4 5 6 7 8 1 0 2 ∞ 3 ∞ ∞ ∞ ∞ 2 4 0 4 ∞ 6 ∞ ∞ ∞ 3 ∞ 6 0 ∞ ∞ 7 ∞ ∞ 4 ∞ ∞ ∞ 0 5 ∞ 4 5 ∞ ∞ ∞ 6 0 4 ∞ 3 6 ∞ ∞ ∞ ∞ ∞ 0 ∞ ∞ 7 ∞ ∞ ∞ 2 ∞ ∞ 0 5 8 ∞ ∞ ∞ ∞ ∞ ∞ 1 8 7 1 32 5 4 4 3 6 5 6 2 6 7 8 6 4 2 5 1 3 4
  • 40. Unidad 6. Grafos Escuela de Posgrado – Maestría en Informática 40 ALGORITMO DE FLOYD
  • 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
  • 44. Unidad 6. Grafos • ALGORITMO DE FLOYD: Ejemplo: Escuela de Posgrado – Maestría en Informática 44 1 2 3 1 0 1 3 2 2 0 1 3 4 5 0 3 1 3 2 1 5 2 1 4 w u v Muv Muw + Mwv 1 1 1 1 1 1 1 2 3 1 1 1 1 2 3 2 2 2 1 1 1 1 2 3 3 3 3 1 1 1 1 2 3 2 2 2 1 2 3 2 2 2 2 2 2 1 2 3 3 3 3 2 2 2 1 1 1 1 2 3 3 3 3 1 2 3 2 2 2 3 3 3 1 2 3 3 3 3 3 3 3
  • 45. Unidad 6. Grafos Escuela de Posgrado – Maestría en Informática 45 ALGORITMO DE WARSHALL
  • 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
  • 48. Unidad 6. Grafos Escuela de Posgrado – Maestría en Informática 48 GRAFOS NO DIRIGIDOS
  • 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
  • 52. Unidad 6. Grafos Escuela de Posgrado – Maestría en Informática 52 ALGORITMO DE PRIM
  • 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
  • 57. Unidad 6. Grafos Escuela de Posgrado – Maestría en Informática 57 ALGORITMO DE KRUSKAL
  • 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)}
  • 62. Unidad 6. Grafos • ALGORITMO DE KUSKAL: paso 1: Escuela de Posgrado – Maestría en Informática 62 P = {{1}, {2}, {3}, {4}, {5}, {6}, {7}} L = { 1-2(2), 1-3(4), 1-4(1), 2-4(3), 2-5(10), 3-4(2), 3-6(5), 4-5(7), 4-6(8), 4-7(4), 5-7(6), 6-7(1)} 3 6 1 5 2 1 4 3 10 5 6 2 4 7 2 7 1 48 1-4(1) ← (u, v)
  • 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