Documentos de Académico
Documentos de Profesional
Documentos de Cultura
operaciones 1
Teoría de grafos
Aplicaciones
Los grafos permiten el modelamiento de muchos problemas
reales:
Aplicaciones directas:
arista
Vertice
Vertices y arcos
arcos
Definiciones
Grafo no orientado
Si tenemos un conjunto no vacío V de vértices y un conjunto E de
aristas (parte de VxV), llamamos grafo no orientado la pareja
ordenada G=(V,E).
aristas
Grafo orientado
Si tenemos un conjunto no vacío V de vértices y un conjunto E de
arcos (parte de VxV), llamamos grafo orientado la pareja ordenada
G=(V,E).
arcos
Vértices incidentes
Se dice que los vértices asociados a una arista (arco) son incidentes
a la arista (arco)
¿grado de
cada nodo?
K5 K12
Subgrafo
Un ciclo elemental es un ciclo donde las aristas (los arcos) son todos
distintos.
b c 1
d e f 2
g h i j k 3
4
l
donc parler du sous-arbre de gauche et du sous-arbre d
d’abord, de manière récursive, le sous-arbre de gauche,
4
10
2
9 7 3
2
8 4
11 13
5 11
4
2
Árbol recubridor mínimo
(minimum spanning tree [MST])
4
10
2 Algoritmo de Kruskal
9 7 3
2
8 4
Agregar las aristas en
orden creciente de
11 13 peso sin generar ciclo
5 11
4
2
Árbol recubridor mínimo
(minimum spanning tree [MST])
4
10
2
9 7 3
2
8 4
11 13
5 11
4
2
Costo mínimo: 30
Árbol recubridor mínimo
(minimum spanning tree [MST])
Algoritmo de Prim
4
10
Empezar con cualquier
2
9 7 3
vértice, y agregar cada
2
vez al árbol parcial una
8 4 arista con exactamente
13 un vértice ya no
11 5 11 incluido en este árbol
tal que ningún ciclo se
4
2 aparezca.
Árbol recubridor mínimo
(minimum spanning tree [MST])
4
1 4
5
9 3
9
7 9
2
10
4
6 2 8
9 18
3
9
Encontrar el MST
9
8 con el algoritmo de
Kruskal y el
algoritmo de Prim
Árbol recubridor mínimo
(minimum spanning tree [MST])
4
1 4
5
9 3
9
7 9
2
10
4
6 2 8
9 18
3
9
8
9
Costo mínimo: 38
Árbol recubridor mínimo
bres couvrants de(minimum
poids minimum du graphe
spanning treeci-après
[MST])(les chiffres sur
ent leur poids).
v1 3 v6
2 5 2
1
v2 2 v7 2 v5
Encontrar el MST
2 2 1
1 con el algoritmo de
v3 3 v4 Kruskal y el
algoritmo de Prim
Grafo bipartito
Un grafo G(N,E) cuyos vértices se pueden separar en dos conjuntos
disjuntos U y V de manera que las aristas sólo pueden conectar
vértices de un conjunto con vértices del otro.
Representaciones de grafos
Chapitre II. Un peu de théorie algébrique des graphes
70 Chapitre II. Un peu de théorie algébrique des graphes
Matriz de adyacencia
v1
v1 ⎛ ⎞
a4 a1 grafo no orientado ⎛0 1 1 1 ⎞0
a4 a1 ⎜01 1 1 1 0 ⎟
a ⎜
⎜1 0 1 1 ⎟1⎟
v4 v4 5 a v2 va7 a v 5v ⎜
⎜ 0 1 1 1⎟ ⎟
6 a6 5 2 7 5 A(G) = ⎜1
⎜
A(G) = ⎜
⎜1 11 00 1 ⎟1⎟
1 1⎟ ⎟
a a a8 a ⎜
⎝
⎝11 1 1 0 ⎟0⎠
a a 2 2 8
1 1 0 0⎠
3 3
00 11 11 000 0
v3 v3
1 5
1 : 3, 4, 5
4 2:3
3 : 1, 2, 4, 5
3 4 : 1, 3, 5
5 : 1, 3, 4
2
xercice 31
Matriz de adyacencia
grafo orientado
1 2 3 4
5 6 7 8
70 Chapitre II. Un peu de théorie algébrique des graphes
Matriz de incidencia
Définition II.1.5. On peut aussi définir la m
“sommets/arêtes”. Si V = {v1 , . . . , vn } et E = {e1 , . . . , e
grafo no matrice
orientadoB de dimension n × m telle que Bi,j = 1 si et
arcosprécédent, cette
v1 incident à vi . En poursuivant l’exemple
⎛ ⎛ ⎞ ⎞
a4 a1 1 0 0 0 1 1 0 11 10 00
⎜1 1 0⎜ 0 1 0 1 0⎟⎟
vértices
⎜ ⎜ 1 0 1 1 1⎟ ⎟
v4 a v a v ⎜ ⎜ ⎟ ⎟
a6 5 2 7 5 ⎜ 0 1 1 0 0 1 0 1 ⎟
⎜A(G) = ⎜⎜
1 1 0 1 1⎟⎟
⎟
a a ⎝ 0 0 1⎝ 1 1 1 1 10 00 00
⎠ ⎠
a 2 8
3 0 0 0 00 10 10 01 01
v3 Définition II.1.6. Dans un graphe simple, on appelle tr
d’arêtes distinctes deux à deux de la forme {a, b}, {b, c
Figure II.1. Un graphe G et sa matrice d’adjacence.
circuit de longueur trois formé d’arêtes distinctes).
Matriz de incidencia
arcos
0 1
1 0 0 0 1 0
B C
vértices
B 1 1 0 0 0 1C
B 0 1 1 0 0 0C
B C
@ 0 0 1 1 0 0 A
0 0 0 1 1 1
grafo orientado
Encontrar un camino más corto
entre dos nodos de un grafo
Caminos más cortos
B 3 F
1 2 3 4
C 4 E
Algoritmo de Dijkstra
Algoritmo de Dijkstra
A(1)
B 3 F
1 2 3 4
A(0)
—> A D 3 G
2 3 2 5
A(2) C 4 E
Algoritmo de Dijkstra
A(1)
B 3 F
1 2 3 4
* A(0)
—> A D 3 G
2 3 2 5
A(2) C 4 E
Algoritmo de Dijkstra
A(1) B(4)
—> B 3 F
1 2 3 4
* A(0)
B(3)
A D 3 G
2 3 2 5
A(2) C 4 E
Algoritmo de Dijkstra
B(4)
* A(1)
—> B 3 F
1 2 3 4
* A(0)
B(3)
A D 3 G
2 3 2 5
A(2) C 4 E
Algoritmo de Dijkstra
B(4)
* A(1)
B 3 F
1 2 3 4
* A(0)
B(3)
A A(5) D 3 G
2 3 2 5
A(2) C 4 E
—> A(6)
Algoritmo de Dijkstra
B(4)
* A(1)
B 3 F
1 2 3 4
* A(0)
B(3)
A A(5) D 3 G
2 3 2 5
* A(2)
—> C 4 E A(6)
Algoritmo de Dijkstra
B(4)
* A(1)
B 3 F D(8)
1 2 3 4
* A(0)
B(3) D(6)
A A(5) D 3 G
—>
2 3 2 5
* A(2) C 4 E A(6)
D(5)
Algoritmo de Dijkstra
B(4)
* A(1)
B 3 F D(8)
1 2 3 4
* A(0)
* B(3) D(6)
A A(5) D 3 G
—>
2 3 2 5
* A(2) C 4 E A(6)
D(5)
Algoritmo de Dijkstra
B(4)
* A(1)
B 3 F D(8)
—>
1 2 3 4
* A(0)
* B(3) D(6)
A A(5) D 3 G F(8)
2 3 2 5
* A(2) C 4 E A(6)
D(5)
Algoritmo de Dijkstra
* B(4)
* A(1)
B 3 F D(8)
—>
1 2 3 4
* A(0)
* B(3) D(6)
A A(5) D 3 G F(8)
2 3 2 5
* A(2) C 4 E A(6)
D(5)
Algoritmo de Dijkstra
* B(4)
* A(1)
B 3 F D(8)
1 2 3 4
* A(0)
* B(3) D(6)
A A(5) D 3 G F(8)
E(10)
2 3 2 5
1 2 3 4
* A(0)
* B(3) D(6)
A A(5) D 3 G F(8)
E(10)
2 3 2 5
1 2 3 4
* A(0)
* B(3) D(6)*
A A(5) D 3 —> G F(8)
E(10)
2 3 2 5
* A(2) C 4 E A(6)
D(5) *
Algoritmo de Dijkstra interactivo
Algoritmo de Bellman-Ford
S
8 10
E A
1
–4 1
2
D B
–1 –2
C
Algoritmo de Bellman-Ford interactivo
Maximum flow problem
imum A 3
fuente 1
capacidad
5 T
9
O 7 B 4 D
2 5
4 pozo
1
6
C E
4
Algoritmo de Ford-Fulkerson interactivo
1
3 2
s 5 t
2 3
2
1
3/3 2
s 3/5 t
2 3/3
2 flujo = ?
1
2
s 2 t
2 flujo = ?
Grafo residual:
1
3 2
s 2 3 t
2 3
2
Grafo residual:
1
3 2
s 2 3 t
2 3
2
Flujos
1
3/3 2/2
s 1/5 t
2/2 3/3
2
Grafo residual:
1
3 2
s 4 1 t
2 3
2
Segundo ejemplo
Red:
1 12 3
4 19
s 1 7 t
12 4
2 11 4
Grafo residual: 4
1 3
8 4
4
15
s 1 7 t
12 4
2 11 4
Grafo residual: 4
1 3
8 4
4
15
s 1 7 t
12 4
2 11 4
Flujos:
1 4/12 3
4/4 4/19
s 0/1 0/7 t
4/12 4/4
2 4/11 4
Grafo residual:
4
1 3
4
8
4
15
s 1 7 t
4
4
8 4
2 4
7
Grafo residual:
4
1 3
4
8
4
15
s 1 7 t
4
4
8 4
2 4
7
Flujos:
1 5/12 3
4/4 5/19
s 1/1 0/7 t
5/12 4/4
2 4/11 4
Grafo residual:
5
1 3
5
7
4
14
s 1 7 t
5
4
7 4
2 4
7