(1)Problema de Fluxo de Custo
Mínimo
(2)Definição
●
Dado um grafo G(V,E) com arestas capacitadas
e com custo não nulo. Encontrar o modo de
transferir f unidades de fluxo por G de modo
que o custo total seja mínimo, sem violar a
capacidade das arestas.
(3)Modelagem matemática
●
Seja c
ij
o custo de transmitir uma unidade de fluxo
pela arco (i,j)
●
Seja u
ij
a capacidade do arco (i,j)
●
Seja x
ij
a quantidade de fluxo que passa pelo arco (i,j)
●
Seja r
ij
a capacidade residual do arco (i,j) (u
ij
-x
ij
ou x
ij
)
●
Seja b
i
a oferta (+) ou demanda (-) de fluxo dos
vértices
●
Condição:
∑
i∈V
(4)Modelagem matemática
Minimizar
∑
(
i , j)∈E
c
ij x
ij
Sujeito a
∑
j :(i , j)∈ E
x
ij −
∑
j :( j , i)∈E
x
ji=
b
i , ∀ i∈V
0≤ x
ij≤
u
ij ∀ (
i , j)∈E
(5)Algoritmo de Caminhos mínimos
sucessivos
●
Sucessive Shortest Path ou ssp
●
Utiliza várias vezes o algoritmo de caminhos
mínimos
●
Permite inviabilidade no equilíbrio de fluxo dos
nós, e vai removendo estas inviabilidades a
cada iteração
(6)Definições adicionais
●
e(i) – desbalanceamento do nó i
●
cp
ij
– custo reduzido do arco (i,j)
●
p(i) – potencial do vértice i (neste caso o potencial está
ligado à distância do vértice a partir da fonte do fluxo)
●
d(i) distância da origem do fluxo até o vértice i
●
Seja Gr(G,X) a rede residual definida por um grafo G e um
fluxo X
e(i)=b
i+
∑
j :( j ,i)∈E
x
ji−
∑
j :( j ,i)∈ E
x
ij
cp
ij=
c
ij−
p(i)+ p( j)
(7)Definições adicionais
●
S – Conjunto de vértices com desbalanceamento
positivo
–
S = {i: e(i)>0}
●
T – Conjunto de vértices com desbalanceamento
negativo
–
T={i:e(i)<0}
●
Condição: não pode haver desequilíbrio de
demanda/oferta na rede. A soma das demandas e
ofertas deve ser igual a zero
(8)Algoritmo SSP
Algoritmo SSP(Grafo G, Fluxo X, Conjunto S, Conjunto T)
Início
X[i][j] = 0 para todo i, j em G.V
p(i) = 0 para todo i em G.V
e(i) = b
i para todo i em G.V
Inicialize os conjuntos S = {i: e(i)>0} e T={i:e(i)<0}
enquanto ( !vazio(S) ) faça
(9)Algoritmo SSP
Selecione um vértice l de T
Determine as distâncias mínimas d(j) em Gr(G,X)
de k para todos os outros j usando cp
ij
Determine o caminho mínimo SP entre k e l
Atualize p(i)=p(i)-d(i) para todo i
alpha = min(e(k), -e(l), min(r
ij: (i,j) pertence a SP))
aumente alpha unidades de fluxo em SP
atualize X, Gr(G,X), os custos cp
ij, e(k), e(l), S e T
(10)Exemplo
3
1 2
4
2,4
2,2 3,3
1,5
1,2
Custo,capacidade
(11)Exemplo
3
1 2
4
2,4
2,2 3,3
1,5
1,2
cp ,capacidade residual
E(1)=4
p(1)=0
E(4)=-4
p(4)=0
E(2)=0
p(2)=0
E(3)=0
p(3)=0
(12)Exemplo
3
1 2
4
2,4
2,2 3,3
1,5
1,2
cp ,capacidade residual
E(1)=4
p(1)=0
E(4)=-4
p(4)=0
E(2)=0
p(2)=0
E(3)=0
p(3)=0
S={1}
T={4}
(13)Exemplo
3
1 2
4
2,4
2,2 3,3
1,5
1,2
cp ,capacidade residual
E(1)=4
p(1)=0
E(4)=-4
p(4)=0
E(2)=0
p(2)=0
E(3)=0
p(3)=0
S={1}
T={4}
d={0,2,2,3}
(14)Exemplo
3
1 2
4
2,4
2,2 3,3
1,5
1,2
cp ,capacidade residual
E(1)=4
p(1)=0
E(4)=-4
P(4)=-3
E(2)=0
P(2)=-2
E(3)=0
P(3)=-2
S={1}
T={4}
d={0,2,2,3}
(15)Exemplo
3
1 2
4
2,4
2,2 3,3
1,5
1,2
cp ,capacidade residual
E(1)=4
p(1)=0
E(4)=-4
P(4)=-3
E(2)=0
P(2)=-2
E(3)=0
P(3)=-2
S={1}
T={4}
d={0,2,2,3}
SP = 1->3->4 alpha =2
(16)Exemplo
3
1 2
4
2,4
2,0 3,3
1,3
1,2
cp ,capacidade residual
E(1)=4
p(1)=0
E(4)=-4
P(4)=-3
E(2)=0
P(2)=-2
E(3)=0
P(3)=-2
S={1}
T={4}
d={0,2,2,3}
SP = 1->3->4 alpha =2
-2,2
-1,2
(17)Exemplo
3
1 2
4
0,4
2,3
0,3
1,2
cp ,capacidade residual
E(1)=2
p(1)=0
E(4)=-2
P(4)=-3
E(2)=0
P(2)=-2
E(3)=0
P(3)=-2
S={1}
T={4}
0,2
0,2
X={(1->3,2),
(3->4,2)}
(18)Exemplo
3
1 2
4
0,4
2,3
0,3
1,2
cp ,capacidade residual
E(1)=2
p(1)=0
E(4)=-2
P(4)=-3
E(2)=0
P(2)=-2
E(3)=0
P(3)=-2
S={1}
T={4}
0,2
0,2
d={0,0,1,1}
X={(1->3,2),
(3->4,2)}
(19)Exemplo
3
1 2
4
0,4
2,3
0,3
1,2
cp ,capacidade residual
E(1)=2
p(1)=0
E(4)=-2
P(4)=-4
E(2)=0
P(2)=-2
E(3)=0
P(3)=-3
S={1}
T={4}
0,2
0,2
d={0,0,1,1}
SP = 1->2->3->4 alpha =2
X={(1->3,2),
(3->4,2)}
(20)Exemplo
3
1 2
4
0,2
2,3
0,1
-1,2
cp ,capacidade residual
E(1)=2
p(1)=0
E(4)=-2
P(4)=-4
E(2)=0
P(2)=-2
E(3)=0
P(3)=-3
S={1}
T={4}
X={(1->3,2),
(3->4,2)}
0,2
0,4
d={0,0,1,1}
0,2
SP = 1->2->3->4 alpha =2
(21)Exemplo
3
1 2
4
0,2
1,3
0,1
0,2
cp ,capacidade residual
E(1)=0
p(1)=0
E(4)=0
P(4)=-4
E(2)=0
P(2)=-2
E(3)=0
P(3)=-3
S={}
T={}
X={(1->3,2),
(1->2,2),
(2->3,2),
(3->4,4)}
0,2
0,4
0,2
(22)Algoritmo Escala de Capacidades
Seja Gr(G,x,delta) uma rede residual de um
grafo G com fluxo x, em que os arcos possuem
capacidade no mínimo delta. Neste caso a rede
Gr(G,x,1) é a rede residual tradicional
(23)Algoritmo Escala de Capacidades
Algoritmo escalaCapacidades(Fluxo x, Grafo G,
Vértice s, Vértice t)
Início
x[i][j]=0 para todo i,j em G.V
p(i)=0 para todo i em G.V
delta= 2^piso(ln(max(u
ij:(i,j) pertence a G.E))
defina Gr(G,x,delta)
(24)Algoritmo Escala de Capacidades
Para cada (i,j) em Gr(G,X) Faça
Se(r
ij>=delta & cp
ij <0) Então
Passe r
ij unidades de fluxo em (i,j)
Atualize X e e(i) para todo i
fim se
fim para
S(delta) = {i: e(i)>=delta}
T(delta) = {i: e(i)<=-delta}
(25)Algoritmo Escala de Capacidades
Enquanto(!vazio(S(delta)) &
!vazio(T(delta))) Faça
Selecione um vértice k de S(delta)
Selecione um vértice l de T(delta)
Determine d(j) para todo j partindo de k
em Gr(G,X,delta) observando cp
ij
Seja P o caminho mínimo de k para l
em Gr(G,X,delta)
(26)Algoritmo Escala de Capacidades
Atualize p(i)=p(i)-d(i) para todo i em G.V
Aumente delta unidades no fluxo de P
Atualize X, S(delta), T(Delta), Gr(X,delta)
Fim Enquanto
delta=delta/2
Fim Enquanto
Fim
(27)Exemplo
3
1 2
4
2,35
4,15 5,50
2,64
7,5
Custo,capacidade
5
10,40
2,20
(28)Exemplo
3
1 2
4
2,35
4,15 5,50
2,64
7,5
Cp,capacidade
e(1)=40
p(1)=0
e(4)=-40
p(4)=0
e(2)=0
p(2)=0
e(3)=0
p(3)=0
5
e(5)=0
p(5)=0
10,40
2,20
(29)Exemplo
3
1 2
4
2,35
5,50
2,64
Cp,capacidade
e(1)=40
p(1)=0
e(4)=-40
p(4)=0
e(2)=0
p(2)=0
e(3)=0
p(3)=0
5
e(5)=0
p(5)=0
10,40
2,20
Delta = 16
S={1} T={4}
(30)Exemplo
3
1 2
4
2,35
5,50
2,64
Cp,capacidade
e(1)=40
p(1)=0
e(4)=-40
p(4)=0
e(2)=0
p(2)=0
e(3)=0
p(3)=0
5
e(5)=0
p(5)=0
10,40
2,20
Delta = 16
S={1} T={4}
(31)Exemplo
3
1 2
4
2,35
5,50
2,64
Cp,capacidade
e(1)=40
p(1)=0
e(4)=-40
p(4)=0
e(2)=0
p(2)=0
e(3)=0
p(3)=0
5
e(5)=0
p(5)=0
10,40
2,20
Delta = 16
S={1} T={4}
l=4
(32)Exemplo
3
1 2
4
2,35
5,50
2,64
Cp,capacidade
e(1)=40
p(1)=0
e(4)=-40
P(4)=-7
e(2)=0
P(2)=-2
e(3)=0
P(3)=-19
5
e(5)=0
P(5)=-17
10,40
2,20
Delta = 16
S={1} T={4}
l=4
(33)Exemplo
3
1 2
4
0,35
0,50
14,64
Cp,capacidade
e(1)=40
p(1)=0
e(4)=-40
P(4)=-7
e(2)=0
P(2)=-2
e(3)=0
P(3)=-19
5
e(5)=0
P(5)=-17
0,40
0,20
Delta = 16
S={1} T={4}
l=4
(34)Exemplo
3
1 2
4
0,19
0,34
14,64
Cp,capacidade
e(1)=24
p(1)=0
e(4)=-24
P(4)=-7
e(2)=0
P(2)=-2
e(3)=0
P(3)=-19
5
e(5)=0
P(5)=-17
0,40
0,20
Delta = 16
S={1} T={4}
l=4
0,16
0,16
X={(1-2,16),
(2-4,16)}
(35)Exemplo
3
1 2
4
0,19
0,34
14,64
Cp,capacidade
e(1)=24
p(1)=0
e(4)=-24
P(4)=-7
e(2)=0
P(2)=-2
e(3)=0
P(3)=-19
5
e(5)=0
P(5)=-17
0,40
0,20
Delta = 16
S={1} T={4}
l=4
0,16
0,16
X={(1-2,16),
(2-4,16)}
(36)Exemplo
3
1 2
4
0,3
0,18
14,64
Cp,capacidade
e(1)=24
p(1)=0
e(4)=-24
P(4)=-7
e(2)=0
P(2)=-2
e(3)=0
P(3)=-19
5
e(5)=0
P(5)=-17
0,40
0,20
Delta = 16
S={1} T={4}
l=4
0,32
0,32
X={(1-2,32),
(2-4,32)}
(37)Exemplo
3
1 2
4
0,18
14,64
Cp,capacidade
e(1)=8
p(1)=0
e(4)=-8
P(4)=-7
e(2)=0
P(2)=-2
e(3)=0
P(3)=-19
5
e(5)=0
P(5)=-17
0,40
0,20
Delta = 16
S={} T={}
0,32
0,32
X={(1-2,32),
(2-4,32)}
(38)Exemplo
3
1 2
4
0,18
14,64
Cp,capacidade
e(1)=8
p(1)=0
e(4)=-8
P(4)=-7
e(2)=0
P(2)=-2
e(3)=0
P(3)=-19
5
e(5)=0
P(5)=-17
0,40
0,20
Delta = 16/2=8
0,32
0,32
X={(1-2,32),
(2-4,32)}
-15,15
(39)Exemplo
3
1 2
4
0,18
14,64
Cp,capacidade
e(1)=8
p(1)=0
e(4)=-8
P(4)=-7
e(2)=0
P(2)=-2
e(3)=0
P(3)=-19
5
e(5)=0
P(5)=-17
0,40
0,20
Delta = 8
0,32
0,32
X={(1-2,32),
(2-4,32)}
-15,0
15,15
(40)Exemplo
3
1 2
4
0,18
14,64
Cp,capacidade
E(1)=-7
p(1)=0
e(4)=-8
P(4)=-7
e(2)=0
P(2)=-2
e(3)=15
P(3)=-19
5
e(5)=0
P(5)=-17
0,40
0,20
Delta = 8
0,32
0,32
X={(1-2,32),
(1-3,15),
(2-4,32)}
15,15
T={4}
S={3}
(41)Exemplo
3
1 2
4
0,18
14,64
Cp,capacidade
E(1)=-7
p(1)=0
e(4)=-8
P(4)=-7
e(2)=0
P(2)=-2
e(3)=15
P(3)=-19
5
e(5)=0
P(5)=-17
0,40
0,20
Delta = 8
0,32
0,32
X={(1-2,32),
(1-3,15),
(2-4,32)}
15,15
S={3} T={4}
(42)Exemplo
3
1 2
4
0,18
0,64
Cp,capacidade
E(1)=-7
P(1)=-14
e(4)=-8
P(4)=-21
e(2)=0
P(2)=-16
e(3)=15
P(3)=-19
5
e(5)=0
P(5)=-41
0,40
24,20
Delta = 8
0,32
0,32
X={(1-2,32),
(1-3,15),
(2-4,32)}
1,15
S={3} T={4}
l=4
(43)Exemplo
3
1 2
4
0,18
0,64
Cp,capacidade
E(1)=-7
P(1)=-14
e(4)=-8
P(4)=-21
e(2)=0
P(2)=-16
e(3)=15
P(3)=-19
5
e(5)=0
P(5)=-41
0,40
24,20
Delta = 8
0,32
0,32
X={(1-2,32),
(1-3,15),
(2-4,32)}
1,15
S={3} T={4}
l=4
(44)Exemplo
3
1 2
4
0,18
0,56
Cp,capacidade
E(1)=-7
P(1)=-14
e(4)=-8
P(4)=-21
e(2)=0
P(2)=-16
e(3)=15
P(3)=-19
5
e(5)=0
P(5)=-41
0,40
24,20
Delta = 8
0,32
0,32
X={(1-2,32),
(1-3,15),
(2-4,32)}
1,15
S={3} T={4}
l=4
0,8
(45)Exemplo
3
1 2
4
0,18
0,56
Cp,capacidade
E(1)=-7
P(1)=-14
e(4)=0
P(4)=-21
e(2)=0
P(2)=-16
e(3)=7
P(3)=-19
5
e(5)=0
P(5)=-41
0,40
24,20
Delta = 8
0,32
0,32
X={(1-2,32),
(1-3,15),
(2-4,32),
(3-4,8)}
1,15
S={} T={}
0,8
(46)Exemplo
3
1 2
4
0,18
0,56
Cp,capacidade
E(1)=-7
P(1)=-14
e(4)=0
P(4)=-21
e(2)=0
P(2)=-16
e(3)=7
P(3)=-19
5
e(5)=0
P(5)=-41
0,40
24,20
Delta = 8/2=4
0,32
0,32
X={(1-2,32),
(1-3,15),
(2-4,32),
(3-4,8)}
1,15
0,8
4,5
(47)Exemplo
3
1 2
4
0,18
0,56
Cp,capacidade
E(1)=-7
P(1)=-14
e(4)=0
P(4)=-21
e(2)=0
P(2)=-16
e(3)=7
P(3)=-19
5
e(5)=0
P(5)=-41
0,40
24,20
Delta =4
0,32
0,32
X={(1-2,32),
(1-3,15),
(2-4,32),
(3-4,8)}
1,15
0,8
4,5
(48)Exemplo
3
1 2
4
0,18
0,56
Cp,capacidade
E(1)=-7
P(1)=-14
e(4)=0
P(4)=-21
e(2)=0
P(2)=-16
e(3)=7
P(3)=-19
5
e(5)=0
P(5)=-41
0,40
24,20
Delta =4
0,32
0,32
X={(1-2,32),
(1-3,15),
(2-4,32),
(3-4,8)}
1,15
S={3} T={1}
0,8
4,5
(49)Exemplo
3
1 2
4
0,22
0,52
Cp,capacidade
E(1)=-7
P(1)=-14
e(4)=0
P(4)=-21
e(2)=0
P(2)=-16
e(3)=7
P(3)=-19
5
e(5)=0
P(5)=-41
0,40
24,20
Delta =4
0,28
0,28
X={(1-2,32),
(1-3,15),
(2-4,32),
(3-4,8)}
1,15
S={3} T={1}
0,12
4,5
0,7
l=1
(50)Exemplo
3
1 2
4
0,22
0,52
Cp,capacidade
E(1)=-3
P(1)=-14
e(4)=0
P(4)=-21
e(2)=0
P(2)=-16
e(3)=3
P(3)=-19
5
e(5)=0
P(5)=-41
0,40
24,20
Delta =4
0,28
0,28
X={(1-2,28),
(1-3,15),
(2-4,28),
(3-4,12)}
1,15
S={} T={}
0,12
4,5
0,7
(51)Exemplo
3
1 2
4
0,24
0,50
Cp,capacidade
E(1)=-3
P(1)=-14
e(4)=0
P(4)=-21
e(2)=0
P(2)=-16
e(3)=3
P(3)=-19
5
e(5)=0
P(5)=-41
0,40
24,20
Delta =4/2=2
0,26
0,26
X={(1-2,28),
(1-3,15),
(2-4,28),
(3-4,12)}
1,15
S={3} T={1}
0,14
4,5
0,9
l=1
(52)Exemplo
3
1 2
4
0,24
0,50
Cp,capacidade
E(1)=-1
P(1)=-14
e(4)=0
P(4)=-21
e(2)=0
P(2)=-16
e(3)=1
P(3)=-19
5
e(5)=0
P(5)=-41
0,40
24,20
Delta =2
0,26
0,26
X={(1-2,26),
(1-3,15),
(2-4,26),
(3-4,14)}
1,15
S={} T={}
0,14
4,5
0,9
(53)Exemplo
3
1 2
4
0,24
0,50
Cp,capacidade
E(1)=-1
P(1)=-14
e(4)=0
P(4)=-21
e(2)=0
P(2)=-16
e(3)=1
P(3)=-19
5
e(5)=0
P(5)=-41
0,40
24,20
Delta =2/1=1
0,26
0,26
X={(1-2,26),
(1-3,15),
(2-4,26),
(3-4,14)}
1,15
S={3} T={1}
0,14
4,5
0,9
(54)Exemplo
3
1 2
4
0,25
0,50
Cp,capacidade
E(1)=-1
P(1)=-14
e(4)=0
P(4)=-21
e(2)=0
P(2)=-16
e(3)=1
P(3)=-19
5
e(5)=0
P(5)=-41
0,40
24,20
Delta =1
0,25
0,25
X={(1-2,26),
(1-3,15),
(2-4,26),
(3-4,14)}
1,15
S={3} T={1}
0,15
4,5
0,10
l=1
(55)Exemplo
3
1 2
4
0,25
0,50
Cp,capacidade
E(1)=0
P(1)=-14
e(4)=0
P(4)=-21
e(2)=0
P(2)=-16
e(3)=0
P(3)=-19
5
e(5)=0
P(5)=-41
0,40
24,20
Delta =1
0,25
0,25
X={(1-2,25),
(1-3,15),
(2-4,25),
(3-4,15)}
1,15
S={} T={}
0,15
4,5
0,10
(56)Exemplo
3
1 2
4
0,25
0,50
Cp,capacidade
E(1)=0
P(1)=-14
e(4)=0
P(4)=-21
e(2)=0
P(2)=-16
e(3)=0
P(3)=-19
5
e(5)=0
P(5)=-41
0,40
24,20
Delta =1/2=0,5
0,25
0,25
X={(1-2,25),
(1-3,15),
(2-4,25),
(3-4,15)}
1,15
S={} T={}
0,15
4,5
0,10
(57)Exemplo
3
1 2
4
0,25
0,50
Cp,capacidade
E(1)=0
P(1)=-14
e(4)=0
P(4)=-21
e(2)=0
P(2)=-16
e(3)=0
P(3)=-19
5
e(5)=0
P(5)=-41
0,40
24,20
Delta =1/2=0,5
0,25
0,25
X={(1-2,25),
(1-3,15),
(2-4,25),
(3-4,15)}
1,15
S={} T={}
0,15
4,5
0,10
Critério de
parada