Está en la página 1de 50

Tópicos I

Unidad I

Arboles, Montículos y Grafos

Semana 5
¿Qué temas
estudiamos en la
clase anterior?
¿Qué han investigado
acerca del tema a
estudiar hoy día?
Tópicos I

Unidad I

Arboles, Montículos y Grafos

Semana 5

Grafos II
Objetivos Generales

Entender el manejo, uso de algoritmos y


estructuras de datos avanzados, haciendo
énfasis en los algoritmos de internet,
seguridad y redes.
Objetivo Específico

Implementar algoritmos utilizando


estructura de datos avanzadas.
Objetivo Instruccional

Implementar algoritmos sobre estructuras


de datos complejas: grafos
Contenidos
Grafos dirigidos

Clausura transitiva

Todos los caminos mas cortos

Flujo de red
Definición
Son aquellos en los que las aristas que conectan
los nodos son de sentido único. También se les
denomina como DIGRAFOS.
Grafos dirigidos

A menudo, la dirección de las aristas reflejan


algún tipo de relación de precedencia en la
aplicación que se esta modelando.

Por ejemplo, un grafo dirigido puede utilizarse


como modelo para una cadena de fabricación,
los nodos corresponden a las tareas a realizar.

El orden en el que aparecen los vértices al especificar


las aristas tiene mucha importancia: la notación V1V2
describe una arista que apunta de V1 hacia V2, pero
no de V2 hacia V1.
Búsqueda en profundidad
Los algoritmos de búsqueda en profundidad
estudiados anteriormente pueden ser
Grafos dirigidos

utilizados exactamente de igual forma con los


grafos dirigidos.

De hecho, opera de una manera un poco


mas directa que con los grafos no dirigidos
dado que no se necesita tener en cuenta las
dobles aristas entre nodos, a menos que estén
incluidas explícitamente en el grafo.
Búsqueda en profundidad
1 2 3 4 5 6 7 8 9 10 11 12

1
2
3
Grafos dirigidos

4
5
6
7
8
9
10
11
12

1 7 8 9 5 2 12 10 11 4 6 3
Búsqueda en profundidad
Como en el caso de los grafos no dirigidos,
existe gran interés en conocer las
Grafos dirigidos

propiedades de conectividad de los grafos


dirigidos. Debería ser posible responder a
preguntas tales como:

• ¿Existe un camino dirigido desde el vértice x al


vértice y?,
• ¿Qué vértices son accesibles desde el vértice x
por medio de un camino dirigido? y
• ¿Existe un camino dirigido desde el vértice x al
vértice y y un camino dirigido desde y a x?
Búsqueda en Amplitud
1 2 3 4 5 6 7 8 9 10 11 12

1
2
3
Grafos dirigidos

4
5
6
7
8
9
10
11
12

1 7 10 8 5 11 9 12 2 4 6 3
Definición
El concepto de transitividad es el mismo que
se utiliza en la teoría matemática, el cual
Clausura transitiva

postula que si:


a<b<c a<c

En el caso de la clausura transitiva, el


concepto se refiere a que existe un camino
que une el vértice x con el vértice y, no
importando que para llegar desde x a y
tengamos que visitar otros vértices del grafo
(camino mas corto).
¿En que consiste?
Consiste en completar el grafo con todas las aristas
que "acortan" el camino entre dos nodos x y y, si es
Clausura transitiva

que se puede llegar de x a y.

En dígrafos muy grandes, el problema de encontrar caminos entre pares


de vértices es demasiado complicado, sólo siguiendo el trazado del
dibujo del mismo, de ahí la importancia de este algoritmo y el interés
que generó su estudio.
Método de Warshall

Ejemplo
Clausura transitiva

1
Método de Warshall
Clausura transitiva

1 1
Clausura transitiva
Método de Warshall
Método de Warshall

Se continua analizando hasta el vértice 9, obteniendo las


Clausura transitiva

siguientes etapas finales


La clausura transitiva de un grafo no ponderado
Todos los caminos mas cortos

(dirigido o no) responde a la pregunta “¿Existe un


camino desde x a y?” para todos los pares de
vértices x, y.

Para los grafos ponderados (dirigidos o no) se puede


desear construir una tabla que permita encontrar el
camino mas corto desde x a y para todos los pares
de vértices.

Este es el “problema de todos los pares de caminos


cortos”.
¿En que consiste?
Todos los caminos mas cortos

El algoritmo del camino mas corto


(warshall) encuentra el camino mas
corto desde el vértice de partida a
cada uno de los otros vértices, por lo
que para hallar todos los caminos mas
cortos, se necesita solamente ejecutar
este procedimiento V veces,
comenzando una vez en cada
vértice.
Método de Floyd
Todos los caminos mas cortos

• El algoritmo representa una red de n nodos como una matriz cuadrada de orden n, la llamaremos matriz C.
De esta forma, el valor Cij representa el coste de ir desde el nodo i al nodo j, inicialmente en caso de no
existir un arco entre ambos, el valor Cij será infinito.
• Definiremos otra matriz D, también cuadrada de orden n, cuyos elementos van a ser los nodos
predecesores en el camino hacia el nodo origen, es decir, el valor Dij representará el nodo predecesor a j
en el camino mínimo desde i hasta j. Inicialmente se comienza con caminos de longitud 1, por lo que Dij = i.
• Las diagonales de ambas matrices representan el coste y el nodo predecesor para ir de un nodo a si
mismo, por lo que no sirven para nada, estarán bloqueadas.

Los pasos a dar en la aplicación del algoritmo de Floyd son los siguientes:
Formar las matrices iniciales C y D.
Se toma k=1.
Se selecciona la fila y la columna k de la matriz C y entonces, para i y j, con i<>k, j<>k e i<>j, hacemos:

Si (Cik + Ckj) < Cij  Dij = Dkj y Cij = Cik + Ckj

En caso contrario, dejamos las matrices como están.

Si k <= n, aumentamos k en una unidad y repetimos el paso anterior, en caso contrario paramos las
iteraciones.

La matriz final C contiene los costes óptimos para ir de un vértice a otro, mientras que la matriz D contiene los
penúltimos vértices de los caminos óptimos que unen dos vértices, lo cual permite reconstruir cualquier
camino óptimo para ir de un vértice a otro.
Método de Floyd
Todos los caminos mas cortos

Aplicar el algoritmo de
Floyd sobre el siguiente
grafo para obtener las
rutas más cortas entre
cada dos nodos.
Método de Floyd
Todos los caminos mas cortos

C 1 2 3 4 5 D 1 2 3 4 5
1 - 3 10 ∞ ∞ 1 1 1 1 1 1
2 3 - ∞ 5 ∞ 2 2 2 2 2 2
3 10 ∞ - 6 15 3 3 3 3 3 3
4 ∞ 5 6 - 4 4 4 4 4 4 4
5 ∞ ∞ ∞ 4 - 5 5 5 5 5 5

Se inicializan las matrices C y D


Método de Floyd
Todos los caminos mas cortos

Iteración: k = 1 2 3 4 5
C 1 2 3 4 5 D 1 2 3 4 5
1 - 3 10 ∞ ∞ 1 1 1 1 1 1
2 3 - ∞
∞ 5 ∞ 2 2 2 2 2 2
3 10 ∞ - 6 15 3 3 3 3 3 3
4 ∞ 5 6 - 4 4 4 4 4 4 4
5 ∞ ∞ ∞ 4 - 5 5 5 5 5 5

Si (Cik + Ckj) < Cij  Cij = Cik + Ckj y Dij = Dkj = k

Para i=2, j=3 se tiene calcular C[2,3]:


C[2,1]+C[1,3] = 3 + 10 = 13

(Cik + Ckj) < Cij  13 < ∞  Cij = 13 y Dij = 1


Método de Floyd
Todos los caminos mas cortos

Iteración: k = 1 2 3 4 5
C 1 2 3 4 5 D 1 2 3 4 5
1 - 3 10 ∞ ∞ De forma análoga se 1 1 1 1 1 1
analiza los demás
2 3 - 13 5 ∞ elementos de la matriz, 2 2 2 1 2 2
obteniéndose al final
3 10 ∞ - 6 15 3 3 3 3 3 3
de la iteración 1 los
4 ∞ 5 6 - 4 siguientes resultados: 4 4 4 4 4 4
5 ∞ ∞ ∞ 4 - 5 5 5 5 5 5

C 1 2 3 4 5 D 1 2 3 4 5
1 - 3 10 ∞ ∞ 1 1 1 1 1 1
2 3 - 13 5 ∞ 2 2 2 1 2 2
3 10 13 - 6 15 3 3 1 3 3 3
4 ∞ 5 6 - 4 4 4 4 4 4 4
5 ∞ ∞ ∞ 4 - 5 5 5 5 5 5
Método de Floyd
Todos los caminos mas cortos

Iteración: k = 1 2 3 4 5
C 1 2 3 4 5 D 1 2 3 4 5
1 - 3 10 ∞ ∞ De forma análoga se 1 1 1 1 1 1
analiza los demás
2 3 - 13 5 ∞ elementos de la matriz, 2 2 2 1 2 2
obteniéndose al final
3 10 13 - 6 15 3 3 1 3 3 3
de la iteración 2 los
4 ∞ 5 6 - 4 siguientes resultados: 4 4 4 4 4 4
5 ∞ ∞ ∞ 4 - 5 5 5 5 5 5

C 1 2 3 4 5 D 1 2 3 4 5
1 - 3 10 8 ∞ 1 1 1 1 2 1
2 3 - 13 5 ∞ 2 2 2 1 2 2
3 10 13 - 6 15 3 3 1 3 3 3
4 8 5 6 - 4 4 2 4 4 4 4
5 ∞ ∞ ∞ 4 - 5 5 5 5 5 5
Método de Floyd
Todos los caminos mas cortos

Iteración: k = 1 2 3 4 5
D 1 2 3 4 5
C 1 2 3 4 5
De forma análoga se
1 1 1 1 2 1
1 - 3 10 8 ∞
analiza los demás 2 2 2 1 2 2
2 3 - 13 5 ∞ elementos de la matriz,
obteniéndose al final 3 3 1 3 3 3
3 10 13 - 6 15
de la iteración 3 los 4 2 4 4 4 4
4 8 5 6 - 4 siguientes resultados:
5 5 5 5 5 5
5 ∞ ∞ ∞ 4 -

C 1 2 3 4 5 D 1 2 3 4 5
1 - 3 10 8 25 1 1 1 1 2 3
2 3 - 13 5 28 2 2 2 1 2 3
3 10 13 - 6 15 3 3 1 3 3 3
4 8 5 6 - 4 4 2 4 4 4 4
5 ∞ ∞ ∞ 4 - 5 5 5 5 5 5
Método de Floyd
Todos los caminos mas cortos

Iteración: k = 1 2 3 4 5
C 1 2 3 4 5 D 1 2 3 4 5
1 - 3 10 8 25 De forma análoga se 1 1 1 1 2 3
analiza los demás
2 3 - 13 5 28 elementos de la matriz, 2 2 2 1 2 3
3 10 13 - 6 15 obteniéndose al final 3 3 1 3 3 3
de la iteración 4 los
4 8 5 6 - 4 siguientes resultados: 4 2 4 4 4 4
5 ∞ ∞ ∞ 4 - 5 5 5 5 5 5

C 1 2 3 4 5 D 1 2 3 4 5
1 - 3 10 8 12 1 1 1 1 2 4
2 3 - 11 5 9 2 2 2 4 2 4
3 10 11 - 6 10 3 3 4 3 3 4
4 8 5 6 - 4 4 2 4 4 4 4
5 12 9 10 4 - 5 4 4 4 5 5
Método de Floyd
Todos los caminos mas cortos

Iteración: k = 1 2 3 4 5
C 1 2 3 4 5 D 1 2 3 4 5
1 - 3 10 8 12 De forma análoga se 1 1 1 1 2 4
analiza los demás
2 3 - 11 5 9 elementos de la matriz, 2 2 2 4 2 4
obteniéndose al final 3 3 4 3 3 4
3 10 11 - 6 10
de la iteración 5 los
4 8 5 6 - 4 siguientes resultados: 4 2 4 4 4 4
5 12 9 10 4 - 5 4 4 4 5 5

C 1 2 3 4 5 D 1 2 3 4 5
1 - 3 10 8 12 1 1 1 1 2 4
2 3 - 11 5 9 2 2 2 4 2 4
3 10 11 - 6 10 3 3 4 3 3 4
4 8 5 6 - 4 4 2 4 4 4 4
5 12 9 10 4 - 5 4 4 4 5 5
Método de Floyd
Todos los caminos mas cortos

C 1 2 3 4 5 D 1 2 3 4 5
1 - 3 10 8 12 1 1 1 1 2 4
2 3 - 11 5 9 2 2 2 4 2 4
Matrices
3 10 11 - 6 10 finales 3 3 4 3 3 4
4 8 5 6 - 4 4 2 4 4 4 4
5 12 9 10 4 - 5 4 4 4 5 5

Las matrices finales C y D contienen toda la información necesaria para determinar


la ruta más corta entre dos nodos cualquiera de la red.
Por ejemplo, la distancia más corta del nodo 1 al nodo 5 es C[1,5] = 12.

Para determinar la ruta asociada del camino mínimo entre el nodo 1 y el nodo 5
haremos lo siguiente:

Consultamos D[1,5]=4, el nodo predecesor al 5 es el 4, es decir, 4  5.


Consultamos D[1,4]=2, el nodo predecesor al 4 es el 2, es decir, 2  4  5.
Consultamos D[1,2]=1, el nodo predecesor al 2 es el 1, es decir, 1  2  4  5.

Entonces así ya tenemos la ruta completa.


Ejercicio
Todos los caminos mas cortos

Un turista tiene que desplazarse a diario de un pueblo a otro y está estudiando


cuales son los trayectos más cortos usando un mapa de carreteras. Las
carreteras y sus distancias (en km) están representadas en la figura siguiente

A ud. se le solicita que le facilite un mapa de todos los caminos más cortos para
ayudarle en su recorrido. ¿Cual es su propuesta?
Problemática
Los grafos dirigidos ponderados son modelos muy
útiles en ciertos tipos de aplicaciones que implican
flujo de productos a través de una red de
Flujo de red

interconexión. Considérese, por ejemplo, una red de


oleoductos de distintos tamaños, interconectados
de forma compleja, con válvulas que controlen la
dirección del flujo en las derivaciones. Supóngase
además que la red tiene una fuente única (como un
campo de petróleo) y un único destino (como una gran
refinería) al que convergen finalmente todos los
conductos. ¿Qué ajuste de válvula hará máxima la
cantidad de petróleo que fluye de la fuente hacia el
destino?
El problema del flujo de red

A A A
Flujo de red

B C B C B C

D E D E D E

F F F

Flujo máximo en una red simple


El problema del flujo de red
En la grafica idealizada anterior de la
pequeña red de oleoducto, las
canalizaciones tienen una capacidad
fija proporcional a su tamaño y el
Flujo de red

petróleo solamente puede fluir en forma A A A

descendente. Además las válvulas de B C B C B C

cada derivación controlan la capacidad


de petróleo que va en cada dirección. D E D E D E

Sin importar la forma en la que estén F F F

puestas las válvulas, el sistema alcanza


un estado de equilibrio cuando la
capacidad de petróleo que fluye al
sistema por arriba es igual a la cantidad
que fluye hacia afuera por la parte
inferior y cuando la cantidad de petróleo
que fluye hacia cada derivación es igual
a la que sale de ella.
El problema del flujo de red
A A A

B C B C B C
Flujo de red

D E D E D E

F F F

El objetivo es desarrollar un algoritmo que pueda


encontrar el reglaje de las válvulas “adecuado” para
cualquier red y de esta manera evitar
“embotellamientos”. Además, se desea estar seguros
de que ningún otro reglaje dará un flujo mayor.
El problema del flujo de red
Red: Se define como un grafo dirigido ponderado con dos
vértices principales: uno, que no tiene aristas que apunte a el (la
fuente), y otro que no tiene aristas que apunten afuera de el (el
pozo). Los pesos de las aristas, que se supone que no son
Flujo de red

negativos, se denominan capacidades de las aristas.

Flujo: Se define como un conjunto de pesos en las aristas tal que


el flujo en cada una de ellas es igual o menor que la
capacidad, y el flujo que entra en cada vértice es igual al que
sale de el. El valor del flujo es el que entra en la fuente (o sale del
pozo).

“El problema del flujo de red consiste en


encontrar un FLUJO DE VALOR MÁXIMO para
una red dada” .
Método de Ford-Fulkerson
El algoritmo de Ford-Fulkerson propone buscar
caminos en los que se pueda aumentar el flujo, hasta
que se alcance el flujo máximo. La idea es encontrar
Flujo de red

una ruta de penetración con un flujo positivo neto


que una los nodos origen y destino.

Consideraremos las capacidades iniciales del arco que une el


nodo i y el nodo j como Cij y Cji. Estas capacidades iniciales irán
variando a medida que avanza el algoritmo, denominaremos
capacidades residuales a las capacidades restantes del arco
una vez pasa algún flujo por él, las representaremos como cij y
cji.
Para un nodo j que recibe el flujo del nodo i, definimos una
clasificación [aj,i] donde aj es el flujo del nodo i al nodo j.
Método de Ford-Fulkerson
PASOS:
1. Identificar los nodos origen y destino
2. Identificar la capacidad mas alta que sale del nodo origen
Flujo de red

3. Identificar el nodo intermediario con [af,i] (af es el flujo máximo


de ingreso y i el nodo de donde proviene dicho flujo máximo)
4. Repetir paso 3, como si el nodo intermediario fuera el nodo
origen
5. Actualizar los flujos: (Cij , Cji) = (Ci – k, Cj + k) donde:
C = Capacidad
i , j = índices de los nodos
K = flujo mínimo del camino seleccionado
6. Retornar al paso 2 si al menos hay una salida de flujo del
nodo fuente
7. La suma de los K corresponde al Flujo Máximo.
Método de Ford-Fulkerson
Del nodo 4 al
nodo 1 no hay
Capacidad de flujo
flujo máximo del
nodo 1 al nodo 4 0 4 20

0
0
Flujo de red

10 0 5 Sumidero

Fuente 1 30 0
[ ∞,-]
20

Por ser la fuente


se considera la 10
cantidad de flujo 0
30
máximo de 20
ingreso (∞)
0
2 0 3
40

[ ∞,-]
Por no tener
nodo conocido
como inicio se
considera (-)

PASO 1
Método de Ford-Fulkerson
0 4 20

0
0
Iteración 1
10 0 5 [ 20,3]
30 0

Paso 2
1
Flujo de red

[ ∞,-]
20

30
0
10 Paso 3
20
0
2 0 3
40
[ 30,1]
Actualizando las capacidades
0 4 20

0
0
K = min (∞,30,20) = 20
[ 20,3]
10 0 5
1 30 10 0 i=1,j=3
[ ∞,-]
20 20 (Cij , Cji) = (30 – 20, 0 + 20) = (10,20)
i=3,j=5
20
0
10 (Cij , Cji) = (20 – 20, 0 + 20) = (0,20)
30
20
0
2 0 3 0
40
[ 30,1]
Método de Ford-Fulkerson [ 10,3]
0 4 20

0
0
Iteración 2
[ 20,4]
10 0 5
1 10 20 K = min (∞,20,40,10,20) = 10
Flujo de red

[ ∞,-]
20
(C12 , C21) = (20 – 10, 0 + 10) = (10,10)
20 10 (C23 , C32) = (40 – 10, 0 + 10) = (30,10)
30
0 (C34 , C43) = (10 – 10, 0 + 10) = ( 0,10)
0
2 3
40
0
(C45 , C54) = (20 – 10, 0 + 10) = (10,10)
[ 20,1] [ 40,2]

0 4 10

10
10
10 0 5
1 10 20
[ ∞,-]
10

20 0
30
0
10
2 10 3
30
Método de Ford-Fulkerson
0 4 10

10 10
[ 30,2]
Iteración 3
10 0 5
1 10 20 K = min (∞,10,30) = 10
Flujo de red

[ ∞,-]
10

(C12 , C21) = (10 – 10, 10 + 10) = (0,20)


0
30
20
(C25 , C52) = (30 – 10, 0 + 10) = (20,10)
0
10
2 10 3
30
[ 10,1]

0 4 10

10
10
10 10 5
1 10 20
[ ∞,-]
0

20 0
20
0
20
2 10 3
30
Método de Ford-Fulkerson
0 4 10

10 10
[ 20,2]
Iteración 4
10 10 5
1 10 20 K = min (∞,10,10,20) = 10
Flujo de red

[ ∞,-]
0
(C13 , C31) = (10 – 10, 20 + 10) = (0,30)
20 0 (C32 , C23) = (10 – 10, 30 + 10) = (0,40)
20
0 (C25 , C52) = (20 – 10, 10 + 10) = (10,20)
20
2 10 3
30 [ 10,1]
[ 10,3]

0 4 10

10
10
10 20 5
1 0 20
[ ∞,-]
0

30 0
10
0
20
2 0 3
40
Método de Ford-Fulkerson
[ 10,1]
0 4 10

10 10
[ 10,4]
Iteración 5
10 20 5
1 0 20 K = min (∞,10,10) = 10
Flujo de red

[ ∞,-]
0

(C14 , C41) = (10 – 10, 0 + 10) = (0,10)


10
30 0
(C45 , C54) = (10 – 10, 10 + 10) = (0,20)
0
20
2 0
3
40

10 4 0

10
20
0 20 5
1 0 20
[ ∞,-]
0

30 0
10
0
20
2 0 3
40
Método de Ford-Fulkerson
10 4 0

10 20
0 20 5
1 0 20
Flujo de red

[ ∞,-]
0
Residual
30 0
10
0
20
2 0
3
40

Flujo Máximo = Ʃ k
= 20+10+10+10+10
= 60
Método de Ford-Fulkerson
0 4 20 Propuesta Residual
0
0
10 0 5 10 4 0

1 30 0 10 20
Flujo de red

20 0 20 5
1 0 20
10
0 0
30
20
0
2 0 3
40
30 0
10
0
20
2 0
3
40

10 4
[Residual] – [Propuesta]
10 20
20 5
1 20

30

20
2 3 Flujo Máximo = 60
¿Cuáles son ¿Por qué me
los temas interesaría en mi
estudiados vida profesional?
el día de
hoy?
¿Para que me
sirve y como lo
aplicaría en mi
vida personal?
Tópicos I

Unidad I

Arboles, Montículos y Grafos

Semana 5

Grafos II

También podría gustarte