Está en la página 1de 77

Investigación de

operaciones 1

Teoría de grafos
Aplicaciones
Los grafos permiten el modelamiento de muchos problemas
reales:

Aplicaciones directas:

• Problemas de redes (transporte, telecomunicaciones, etc.)


• Problemas de transporte
• Problemas de flujos
• Problemas de afectación (afectación de recursos, distribución)
Terminología básica
Vertices y aristas

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).

Un grafo orientado se dice


también grafo dirigido, o
digrafo.

arcos
Vértices incidentes
Se dice que los vértices asociados a una arista (arco) son incidentes
a la arista (arco)

el vértice 3 es incidente a 4 arcos


Vértices adyacentes
Dos vértices son adyacentes cuando son incidentes a una misma
arista (arco).
2 vértices adyancentes

¿cuales son los


vértices adyacentes
de esos dos grafos?
Grado de un vertice (x)
El grado de un vértice es el número de aristas incidentes a él. se
denota
así…

¿cuales son los grados


de los vértices 3 en
cada grafo?
Con grafos orientados
+
(x) Grado de salida: número de aristas que salen del vértice x.

(x) Grado de entrada: número de aristas que llegan al vértice x.


+
(x) = (x) + (x)

¿cuales son los grados


de entrada y de salida
de vértice 3?
Grafo completo
Un grafo es completo si cualquier par de vértices son adyacentes

¿grado de
cada nodo?

K5 K12
Subgrafo

G’=(V’, E’) es un subgrafo de G=(V, E) si V’ ⊆ V y E’ ⊆ E ∩ (V’xV’).


Caminos
En un grafo no orientado, un camino es una secuencia de aristas, tal
que cada arista de la secuencia tenga un extremo común con el arco
precedente y el otro con el siguiente

En un grafo orientado, un camino es una secuencia de arcos, tal que


el vértice extremo terminal de cada uno (exceptuando el último)
coincide con el vértice inicial del arco siguiente.
Caminos elementales y simples

Un camino elemental es un camino donde las aristas (los arcos) son


todas distintos.

Un camino simple es un camino elemental donde los vértices son


todos distintos.
Ciclo

Un ciclo es un camino cerrado

Un ciclo elemental es un ciclo donde las aristas (los arcos) son todos
distintos.

Un ciclo simple es un ciclo elemental donde los vértices son todos


distintos.
Vértices conectados
Dos vértices son conectados si existe un camino entre los dos.

En un grafo no orientado, escribimos a~b cuando los vértices a y b son


conectados.

Es una relación de equivalencia en los grafos no orientados.

En un grafo orientado, escribimos a→b cuando existe un camino


orientado entre a y b. Los vértices a y b son fuertemente conectados si
a→b y b→a. Escribimos a⟷b cuando a y b son fuertemente conectados.
Grafo conexo
Un grafo no orientado es conexo si cada par de vértices es
conectada.

Un grafo orientado es simplemente conexo si cada par de vértices


del grafo no orientado correspondiente es conectada.

Un grafo orientado es fuertemente conexo si existe un camino


(orientado) entre cada par de vértices.
Componente conexo de un grafo

Un subgrafo G’ de un grafo G es un componente conexo del grafo G


si cada par de vértices de G’ es conectada.

En un grafo orientado G, un subgrafo G’ es un componente


fuertemente conexo si existe un camino (orientado) entre cada par
de sus vértices.
Componente fuertemente conexo y ciclo máximo

Un ciclo máximo es un ciclo donde no se puede adjuntar ningún otro


vértice del grafo.

Los vértices de un ciclo máximo conforman un componente


fuertemente conexo.

Un (sub)grafo orientado es fuertemente conexo si y solo si existe


un ciclo que pasa por todos sus vértices.
Ce graphe est simplement connexe mais il n’est pas forteme
b
6
1 3
a 5 d e
4 7
2
¿Conexo?
¿Simplemente conexo?
c
¿Fuertemente conexo?
¿Componentes fuertemente conexos?
Figure I.31. Un graphe orienté.

effet, il n’existe pas de chemin joignant les sommets d à


Caminos,
árboles y
bosques

JP. Gilson, Compiègne, France


Árboles y bosques
les sous-arbres pointés de racine v0,1 , . . . , v0,k0 , puis la racine v0 . Pour le
parcours infixe, nous supposerons disposer d’un arbre binaire. (On peut
I.9. Arbres
donc parler du sous-arbre de gauche et du sous-arbre de droite.) On parcourt
d’abord, de manière récursive, le sous-arbre de gauche, puis la racine, et enfin
Un árbol es un grafo no 28orientado conexo sin ciclo.
le sous-arbre de droite .
Chapitre I. Premier contact avec les graphes Pour un arbre pointé (A, v0 ), les sommets de A peuve
I.9.9. Considérons l’arbre suivant
binaire leur distance
pointé
Un bosque es un grafo no orientado donde cada componente conexo
Exemple à
donnév0 . Si
à v
la est un
figure sommet
I.57. tel que d(v
que v est un sommet de niveau i. Un arbre pointé a été repr
es unLes fils d’un noeud sont ordonnés par l’ordre alphabétique de leur label. Si
árbol. I.56.
a v0

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,

ÁrbolesI.9.9. Considérons l’arbre binaire pointé


28
le sous-arbre de droite .
Exemple
Les fils d’un noeud sont ordonnés par l’ordre alphabé
TEOREMA: Todas las propuestas siguientes son equivalentes para
cualquier grafo G con n vértices: a
• G es un árbol c
b
• G es un grafo aciclico y conexo
d e f
• G es aciclico con n–1 aristas
g h i j k
• G es conexo con n–1 aristas

• Cualquier par de vértices distintos son conectados por un camino l


simple
Figure I.57. Un arbre à parcour

on parcourt cet arbre de manière préfixielle, on obtie


Árbol recubridor mínimo
(minimum spanning tree [MST])

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

Figure II.1. Un graphe G et sa matrice d’adjacence.


Figure II.1. Un graphe G et sa matrice d’adjacence.
eur droit. Un « 1 » sur la diagonale indiquerait
Exercice 30 une boucle.
e j . Dans uneles
d’adjacences, matrice
lignesd’adjacences,
et les colonnesOn lesa lignes et
représentent
calculé les colonnes
les
ci-dessous représentent
les matrices les
M 2 et
le
du est symétrique
graphe.(i,Un : m i j = m ji . On peut dire que la diagonale est un axe de
position j) «signifie
1 » à laque position (i, j) signifie
le sommet i est que le au
adjacent sommet i est adjacent au
jne Matriz de adyacencia de ces matrices, à
. fois que l’on fixe l’ordre des sommets, il existe une matrice d’adjacence
quoi
0
correspondent
1
les n
our chaque graphe. Celle-ci n’est la matrice d’adjacences 3 1 d’aucun
2 2 2autre g
1 5 0 1 0 1
0 0 1 1 1 0 0 1 B1 1 1 1 0 1 1 C
B
B C
C
e 30 4 B 0 0 1 0 0 C B 0 M 02 1
= B0 2 0 C0 4 2 2 C
B 2 C
M 3 = B 1 1 0
B1 1 C C
culé ci-dessous M B
les=matrices
B 1 1 0 M 1 et
1 C
CM (M
B est la @
matrice
2 C1 ci-dessus).
2 3 2 A Pour
3 @ A @ 1 0 1 0 1 A
1 0 1 0 1
matrices, à quoi correspondent les nombres obtenus ? 2 1 2 2 3
0 1 0 11 1 0 1 0 1 01 0 1
2 3 1 2 2 2 6 2 8 7 7
rice a
stiques : B
plusieurs caractéristiques
1 1 0 1 1: C 1.9.2 Listes d’adjacences
B 2 0 4 2 2 C
B C B C
ede 2
estlignes
carrée
M que¿Qué
: B
il
= Bde y arepresentan
autant
2 colonnes. de lignes CM 2
quey M
de 3 ?
colonnes.
0 4 2 2C On peut aussiMreprésenter 3 B
= B8 4un6graphe 8 8C C
simple
’y a que des @
zéros
diagonale allant sur
2 du1coin la diagonale
2 supérieur
3 2 desA allant
gauche du coin
au supérieur
coin infé- @gauche
7 2 au
8 coin
6 A
infé-
7
ur droit. Un « 1 » sur la diagonale
sommets
indiquerait une
auxquels
boucle.
il est adjacent. Ce s
iagonale indiquerait 2 1une2boucle. 2 3 7 2 8 7 6
9.2 Listes d’adjacences
n peut aussi représenter un graphe simple en donnant pour chacun de
Listas de adyacencias
es sommets auxquels il est adjacent. Ce sont les listes d’adjacences

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

A D 3 G ¿Cuales son los caminos más


cortos entre A y los otros vértices?
2 3 2 5

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

* 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

* 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

* 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

También podría gustarte