Vous êtes sur la page 1sur 63

Caminos y Flujos

optimales
2da y 3er clase
2007

ESQUELETOS OPTIMALES
(mnimo)
Esqueleto de G =(X,U) es un subgrafo que es
un rbol y que contiene todos los vrtices de G.
Esqueleto Mnimo de G = (X, U, W) de orden n, es
aquel esqueleto de valor mnimo.
Aplicable para calcular el costo mnimo de conexin
de un grafo.

A
2
H
8
I
4
P

B 7

4
G
5
6
3 J

3
2

5
1

2
4 K

7 O

8 N

E
7

10

L
3

ESQUELETO MINIMO
ALGORITMO DE KRUSKAL
Repita los siguientes pasos hasta que el conjunto E
tenga (n-1) aristas (
E=
= n-1):
1. Al comenzar E = (vaco)
2. Agregue a E las aristas de menor valor que
no formen un ciclo con las aristas que ya
estn en el conjunto E de aristas.

A
2
H
8
I
4
P

B 7

4
G
5
6
3 J

3
2

5
1

2
4 K

7 O

8 N

E
7

10

L
3

Esqueleto Mnimo
ALGORITMO DE PRIM
1) Elegir una arista con ponderacin mnima; sta ser
la primer arista de un rbol de cubrimiento E.
2) Repetir hasta que el rbol E tenga (n-1) aristas:
Agregar a E una arista de valor mnimo, con un
vrtice en E y otro vrtice que no pertenece a E.
La validez del algoritmo en cuanto a la optimalidad se debe demostrar.
(tambin su complejidad). Demostraremos que Prim encuentra el
ptimo.

A
2
H
8
I
4
P

B 7

4
G
5
6
3 J

3
2

5
1

2
4 K

7 O

8 N

E
7
Valor:

10

L
3

46

Teorema Validez Prim


Demostramos 1) que el resultado es un
esqueleto
y 2) que es mnimo.
1) Al finalizar el algoritmo, por
construccin, E es un subgrafo parcial de
G (conexo) y sin ciclos
 es un ESQUELETO (o rbol de
cubrimiento).

Demostracin Prim (cont.1)


2) Probamos que el esqueleto E construido
es MINIMO por induccin en la k-sima
iteracin del algoritmo.
Al demostrar que E(k) est includo es un
esqueleto mnimo E de G, estoy
demostrando que al finalizar, E(n-1) es
MINIMO (su valor).

Demostracin Prim (2)


Paso base k = 1, n = 2,
E(1) tiene una sola arista
que es la mnima ( o una
de ellas).

E(k-1)

 E(1) algn esqueleto mnimo E de G.


Se cumple.

Demostracin Prim (3)


Paso inductivo

k = (k-1)

((k-1) -isima iteracin).

Suponemos verdadero E(k-1) E que es mnimo.


Sea V = { vi, vi E(k-1)}

Se elije una arista [i,j] de valor


mnimo, tal que

E(k-1)
i

el conjunto de vrtices de E(k-1)

i V,

jV

se le agrega a E(k-1)
j

obteniendo
E(k) = E(k-1) U [i,j]

 Si [i,j] E,  E(k) E (esq. mn) L.Q.Q.D

Demostracin Prim (4)


 Si [i,j] E

 E U [i,j]

contiene un ciclo C.

Tomemos [x,y] C (ciclo), tal que


[x,y] [i,j] , x V, y V.
E(k-1)
i
j

 w[x,y] w[i,j] (no puede ser


menor si no, ya hubiese sido includa
en un paso anterior)
Entonces E' = { E U [i,j] - [x,y] }
W[E] W[ E] (1) .

Por construccin E' es esqueleto, por (1) es mnimo,


y como E(k) E' se verifica el paso inductivo.
E(k) un esqueleto mnimo (E o E')

L.Q.Q.D.

Representacin de G = (X,U)
a) Grficamente. Mediante puntos y lneas que
representan los nodos (vrtices) y arcos (aristas)
del grafo.
b) Notacin de conjuntos. Por extensin
(enumerando vrtices y aristas) o por
comprensin.
d) Estructuras de datos, por ejemplo listas
encadenadas, stacks, etc.
c) Con MATRICES. Veamos esta forma para
calcular la clausura transitiva de un grafo y
evaluar su conexidad.

Relacin binaria -Adyacencia


Sea G = (X,U) de orden n, siempre orientado.
La relacin binaria de ADYACENCIA en el conjunto X es
el subconjunto A = {(xi, xj); xi A xj} de pares ordenados
de nodos resultantes del producto cartesiano de X x X.

Si (xi,xj) U, decimos que xj es Adyacente a xi y


notamos xi A xj.
Esta relacin se representa mediante la matriz
A = [aij] nxn,
llamada matriz de adyacencia de G que se define

Matriz de adyacencia

1 si xi Axj , (xi , xj ) U

A= aij =
0 si no

[ ]

x2

x3
x4

x1

x5
x6

fig.CFC

Cuando G es no
orientado la matriz
A es Simtrica..
Se almacena la
mitad de los
elementos.

A =

x1

x2

x3

x4

x5

x6

x1

x2

x3

x4

x5

x6

Grafo Ponderado: G=(X,U,W)

wu
( ) si xi Axj , (xi , xj ) U

A= aij =
0 si no

[ ]

Propiedades M. Adyacencia
La matriz de adyacencia es
booleana, sus elementos son
0 y 1.
Brinda informacin sobre la
existencia de caminos de largo 1.

Conexidad vs. Caminos


La conexidad est muy relacionada con la
existencia de caminos.
Un grafo G =(X,U) o un subgrafo de G es
fuertemente conexo, si

( xi , x j ) G , xi x j , camino de xi a x j

Conexidad vs. Caminos


La matriz de adyacencia A informa sobre la
existencia de caminos de largo 1.
Pero para determinar las componentes
fuertemente conexas de G, necesitamos saber
sobre la existencia de caminos de cualquier
largo. Esto lo podemos verificar mediante la
propiedad transitiva.
Para eso introducimos la relacin de
equivalencia en el conjunto X de G.

Relacin de equivalencia
Una relacin binaria es
una relacin de equivalencia cuando es:
1) Reflexiva. x x.
2) Simtrica. x y entonces y x.
3) Transitiva. x y, y z entonces x z.

Propiedad transitiva de R
Una relacin R es transitiva, en un conjunto X,
si i , j , k = 1 , 2 ,... | X | se cumple que
x i R x j y x j R x k entonces

La relacin de
adyacencia A, NO
siempre es transitiva,

xi

xi R xk

xj

xk

Clausura Transitiva
Relacin de alcance (1)
La Clausura Transitiva de una relacin A en el
conjunto X, es la relacin T de alcance definida por:

x Ax
i j

x Tx m 2, y una secuencia de elementos


i j

x , x ,..., x X tal que x = x , x = x y


k1 k2
km
i k1 km j

x Ax
, t = 1, 2,..., m- 1

kt
k (t+1)

C.T. - Relacin de Alcance (2)


Obs: La clausura transitiva de una
relacin A, es la relacin A en s misma.
Si A es la relacin de adyacencia en X, la
Clausura Transitiva en X es la Relacin
de Alcance definida por la existencia de
caminos (secuencias de arcos, dado por
secuencia de nodos).
xi T xj

C i,j

Ci,j = camino que va de xi a xj,

C.T. - Relacin de Alcance (3)


xj es alcanzable desde xi,

xj pertenece a la Clausura transitiva de xi,


La notacin es: xj *(xi)

C.T. - Relacin de Alcance (4)


La Relacin de Alcance T s es transitiva
xi T xj y xj T xi T  xi T xk
y cuando adems cumple con las propiedades
de simetra y reflexividad,
T es una relacin de equivalencia que
particiona a X en
CLASES DE EQUIVALENCIAS,
X1, X2, ... Xm xi , xj Xk k=1,2,...m
se verifica: xi = xj o xi T xj

Clases de equivalencias
Asociadas a un grafo G = (X,U)
X = {xi ; 1
i
n}, significa:
xi xj
si xi = xj
o si existe algun camino
de xi a xj y de xj a xi.

Clase equivalencia- Componente


Fuertemente Conexa
Cada clase de equivalencia corresponde a
una componente fuertemente conexa del
grafo.
Entonces se pueden determinar la
componentes fuertemente conexas del
grafo calculando la clausura transitiva
del conjunto X de nodos.

x2

x3
x4

x1

x5
x6

Ejemplo

fig.CFC

X1 = {x1, x2, x6}

x1 x2 x6

X2 = {x3,x4}

x3 x4

X3 = {x5}

x5 x5

Representacin matricial de la
Relacin de Alcance.

1 si x Tx ,
i
j

T = t =
ij

0
si
no

Conexidad Alcance
Calculando la matriz T,
si tij = 1 xi en X, entonces el grafo G es
fuertemente conexo, o sea que xi, xj existe un
camino de xi a xj.

En caso contrario,
si tij = 0 para algn xi, xj, xj no es alcanzable
desde xi

Las distintas componentes fuertemente conexas


de G, se obtienen a partir de clasificar los
grupos de nodos equivalentes, como aquellos
que son alcanzables entre s.

x2

x3
x4

x1

x5
x6

fig.CFC

T =

x1

x2

x6

x4

x3

x5

x1

x2

x6

x4

x3

x5

Matriz de Alcance T
Indica la existencia de caminos entre pares
de nodos.
Se calcula a partir de la potencia booleana de
la matriz de adyacencia A.

T=

(p)
A
p= 1,

Potencia matriz Booleana


A(0) = I , A(1) = A y
(p)

(p-1)

=A

A, ( producto booleano).

Obs: aij(2) = k=1,n (a ik a kj)


1 si C , l(C ) = p
i, j
i, j
( p) ( p)
A = a
=
ij

0 si no

Clculo de T = p= 1, A

(p)

Teorema Sea A nxn la matriz booleana de la


relacin de adyacencia en un grafo G de
orden n entonces
(s-1)
T = A(I A)
s n- 1,
es la matriz de alcance de G.
La experiencia indica que alcanza con
calcular T = (I A) (n-1)

Grafo Condensado
x2

x3
x4

x1
fig.CFC

X2
X1

x5
x6

X3

Las componentes fuertemente conexas de


un grafo G, se pueden condensar en un
nodo, conformando un nuevo grafo Gc sin
ciclos.

Aplicacin
Planificacin del trnsito y de transporte
urbano.Transbordos. Pasar una sola vez por c/parada
Procedimiento:
1) Condensar G y Encontrar algn camino
hamiltoniano, si existe, en
el grafo
condensado Gc.
2) Encontrar un camino hamiltoniano en
cada nodo del grafo condensado (en cada
componente fuertemente conexa de G).
3) Si es posible, unir el o los caminos
encontrados en el paso 2) con el encontrado
en el paso 1).

Caminos optimales

Camino Optimal (mnimo )


Algoritmo de Dijkstra
Sea un grafo G = (X,U,W), w(u) es el costo de
la arista u, el algoritmo calcula el camino
mnimo ( de costo mnimo) desde un nodo a
a otro z de G.
Con el mismo procedimiento calculamos los
caminos mnimos desde ese nodo a a cada
uno de los otros nodos de G.

Algoritmo de Dijkstra
Para valores crecientes de m (contador de
distancia), se marca aquellos vrtices p que
tienen m como distancia mnima desde el
vrtice a.
Se marca con una etiqueta (r, d(p)), r es el
antecesor del vrtice p, en el camino desde a;
d(p) es la distancia mnima desde a hasta p.

Algoritmo de Dijkstra

w(u)

(r, d(p))
p

1) m = 1, marcar a con (-, 0)

q
m=x

2) Chequear cada arista u = (p,q) desde algn p


ya marcado, hasta algn q sin marcar.
Suponga que p est marcado con (r, d(p))
Si d(p) + w(u) = m , marcar q con (p,m).
Si solamente estamos interesados en el
camino hasta z, al marcar z, ejecutar el
punto 4

Algoritmo de Dijkstra
3)

Si x sin marcar
volver al punto 2
Sino

entonces m := m + 1;

ejecutar el punto 4.

4) Para cualquier vrtice y, d(y) (2da parte de la


etiqueta de y) es el valor de un camino
mnimo de a a y. Ese camino lo puedo
encontrar retrocediendo desde y, usando la
1era parte de las etiquetas de los vrtices
encontrados en el retroceso.

Ejemplo Dijkstra
(F,7)

(A,9)

7
(-,0)

(F,5)

(I,6)

4
(G,9)

(E,7)

E
(F,6)

(D,9)

El camino mnimo F-E-D-C


A

2
3

6
3

Redes de flujo

Redes de Flujo
Red es un grafo orientado, ponderado, con un nodo
a llamado fuente y otro nodo z llamado pozo,
terminal o resumidero (sink).

Modela problemas del tipo:


a) maximizar el flujo de petrleo, a travs de
redes oleoductos;
b) maximizar el nmero de llamadas
telefnicas en la red de telefona.

Redes de Flujos
N = ( X, U, W)
X = { a, z, xi, 1
I n-2}
U = { uk = (xi, xj), 1
k m}
W = { w(u) u U, w(u) = (k(u), (u))}
k(u) es la capacidad o cota superior de lo que puede
transportar el arco u
(u) el flujo o la cantidad de sustancia que realmente
transporta el arco u.

Ejemplo
d

5,5

b
7,4

7,6
4,3
4,1

a
4,0

3,2
8,6

8,8
c

5,5

Unidades de flujo van de un sitio a otro por la red. Transporte


de petrleo: barriles por minuto. Las capacidades son
restricciones en las lneas. El flujo es el fludo que se transporta
o enva.

Flujo mximo
El problema que se modela
max {Flujo de a a z}
segn restricciones (capacidades)

Tener en cuenta algoritmo a aplicar. La


capacidad y flujo de los arcos pueden NO ser enteros
o positivos. Trataremos caso Enteros positivos.

Definicin
El conjunto de los nodos X
se puede particionar en dos subconjuntos P, y Pc
P U Pc = X,
P
Pc =

5,5

b
7,4

7,6
4,3
4,1

a
4,0

3,2
8,6

8,8
c

5,5

Particin: P={b,c}, Pc ={a,d,e,z},

Corte en una red N


Conjunto de arcos incidentes hacia el exterior de P.
(P, Pc) = { (x, y) , x
P, y
Pc, PUPc = X, P
Pc = }
d

5,5

b
7,4

7,6
4,3
4,1

a
4,0

3,2
8,6

8,8
c

5,5

Particin: P={b,c}, Pc={a,d,e,z},


CORTE (P, Pc)={(b,d),(b,e),(c,e)};

Un corte determina caminos desde a hasta z


Corte (P, Pc) = {(x,y) , x
P, y
Pc, PUPc = X, P
Pc = }

P={b, c }

5,5

7,4

7,6

4,3

4,1

a
4,0

3,2

8,6

8,8
c

5,5

(P, Pc) = {(b,d), (b,e), (c,e)}

Corte a-z
Corte a-z (fuente-terminal) : a P y z Pc.
Ejemplo: P = {a,b,c}
(P,Pc)={(b,d),(b,e),(c,e)}

5,5

7,4

7,6
4,3
4,1

a
4,0

3,2
8,6

8,8

Capacidad del corte (P,Pc)


k(P,Pc) = ucorte k(u) .

5,5

Flujo a-z
Flujo a-z, ( fuente-terminal) en N, es aquel en el que:
(u) u U, el nodo fuente a y el pozo z, satisfacen
las siguientes condiciones:
a) 0 (u) k(u)

u U

b) (u) = 0, u I-(a) y u I+(z)


asegura que el flujo vaya de la fuente al pozo y no al revs.

c) x a, x z, uI+(x) (u) = uI-(x) (u)


implica que el flujo (parcial) que entra a un nodo x,
es igual al flujo que sale de x,
(condicin o ley de conservacin de flujo de Kirchhoff).

Ejemplo
a) 0 (u) k(u) u U

5,5

b
7,4

7,6
4,3
4,1

a
4,0

3,2
8,6

8,8
c

5,5

b) (u) = 0, u I-(a) y u I+(z)


c) x a, x z, u
I+(x) (u) = u
I-(x) (u)

Flujo a-z (2)


Para todo subconjunto de nodos P
que NO contenga ni a ni z:
c')

u(P, Pc) (u) = u(Pc, P) (u)


d

5,5

b
7,4

7,6
4,3
4,1

Es decir:

4,0

3,2
8,6

8,8

el flujo que ingresa a P


es igual al flujo que sale de P.

5,5

Flujo a-z en N
(u) u U, a y z satisfacen las sg. cond.:
a) 0 (u) k(u) u U
b) (u) = 0, u I-(a) y u I+(z)
c) x a, x z, uI+(x) (u) = uI-(x) (u)
c') P que NO contengan a ni z,
u(Pc,P,) (u)
u(P,Pc)(u) =

Justificacin c
c) x a, x z, uI+(x) (u) = uI-(x) (u)
Si tomamos P que NO contiene a ni z y
sumamos en los x P, se obtiene la siguiente
igualdad
x P u

+
I (x)

(u) = x P u I-(x) (u)

Obs que se suma en ambos miembros el flujo de


aquellos arcos que van de un nodo en P a otro en
P, entonces algunos (u) se repiten y por tanto se
pueden eliminar.

Ejemplo P={b,c}
x P u

I+(x)

(u) = x P u I-(x) (u)

5,5

b
7,
4

(no contiene a ni z)

7,6

4,3

4,1

4,0

3,2

8,6

8,8
c

5,5

Justificacin c;

P = {b,c}

uI+(b) (u) = 5+2 = uI-(b) (u) = 4+3


uI+(c) (u) = 5+3 = uI-(c) (u) = 8+0
xP 5+2+5+3 == xP 4+3+8+0
Eliminando los flujos (u) (P,P) que se
repiten en ambos miembros se obtiene c')
Para P que No contenga a ni z:
u

(P, Pc)

(u) = u

c
(P , P)

(u)

Cont. Ejemplo, elimino flujos (P,P)


(P,Pc) = {(b,d), (b,e), (c,e)}, (Pc ,P) = {(a,b),(a,c),(d,c)}

7,
4

5,5

7,6

4,3

4,1

4,0

3,2

8,6

8,8
c

5,5

Cuantificacin flujo a-z


|
| es el valor del flujo a-z,
se define como la suma del flujo que sale de a.
|
| = uI+(a) (u)
Una cota superior de |
| es la suma de las
capacidades de los arcos incidentes hacia el
exterior de a.
|
| = uI+(a) (u) uI+(a) k(u)

Ejemplo: |
|
d

5,5

b
7,4

7,6
4,3

4,1

a
4,0

3,2
8,6

8,8
c
|
| = u

+
I (a)

5,5

(u) = 12 < uI+(a) k(u) = 15

Vous aimerez peut-être aussi