Vous êtes sur la page 1sur 10

Fluxo Mximo em Redes

Fluxo Mximo em Redes Digrafos - Fluxos em Redes

2/1
2 4
2/0
3/2
Notas de aula da disciplina IME 04-11312 1/1 1/1 6
1
(Otimizao em Grafos)
4/1
Paulo Eustquio Duarte Pinto 3 5 3/3
3/1
(pauloedp at ime.uerj.br)
Uma rede uma situao que pode ser modelada em digrafos,
onde onde cada aresta tem um fluxo que passa por ela, sendo o
fluxo limitado capacidade da aresta. No digrafo h fontes,
onde o fluxo iniciado e sumidouros, onde o fluxo consumido.

O fluxo msimo pode ser medido nas fontes ou nos sumidouros.

janeiro/2015 sempre possvel representar a rede com apenas uma fonte e um


1 sumidouro. Basta criar arestas artificiais adequadas. 2

Fluxo Mximo em Redes Fluxo Mximo em Redes

Digrafos - Fluxos em Redes - Exemplo 1 Digrafos - Fluxos em Redes - Exemplo 1


UVA 10249 - The Grand Dinner UVA 10249 - The Grand Dinner - Modelagem

1
m1 Criar um vrtice para
.
6
7 8 t1 cada time, um para
. m2
3 cada mesa, interligar
times e mesas com
5 1
4 . 5
capacidade 1.
t2 Interligar fonte com
3 m3 s times com capacidade
4
f 5 2
2 = tamanho do time e
mesas com sumidouro,
Problema: Ao final de uma competio quer-se fazer um jantar de
3 . m4 6 com capacidades =
t3
comemorao, tal que, em cada mesa nunca existam dois participantes
de um mesmo time. Ht times, cada time com um nmero de 5
. nmero de lugares da
mesa. Obter o fluxo
4
participantes dado. So disponveis m mesas, cada uma com um nmero . m5 mximo e checar se
de lugares dados. igual ao nmero de
t4 1
Quer-se saber se possvel distribuir os participantes nas mesas. participantes
Vejamos a modelagem para t = 4 (4 5 3 5) n = 5 (3 5 2 6 4) 3 4

Fluxo Mximo em Redes Fluxo Mximo em Redes

Digrafos - Fluxos em Redes Digrafos - Fluxos em Redes


2/1 2/1
2 4 2 4
2/0 2/0
3/2 3/2
1/1 1/1 6 1/1 1/1 6
1 1
4/1 3/3 4/1 3/3
3 5 3 5
3/1 3/1

Propriedades bsicos da rede utilizadas: Propriedades bsicos da rede utilizadas:

a) fluxo maximo: o fluxo mximo de uma rede o fluxo total de c) conservao do fluxo: nos vrtices que no so fontes ou
sada da fonte ou de entrada do sumidouro. sumidouros, o fluxo conservado (o total que entra em cada
Ex: no vrtice 5 entra 1+1+1 e sai 3. vrtice igual ao total que sai).
Ex: no vrtice 5 entra 1+1+1 e sai 3.
b) DAG: O grafo induzido por um fluxo um digrafo acclico.
2 4 d) Corte mnimo: " O fluxo mximo de uma rede igual
capacidade total de um corte de capacidade mnima".
1 6
Ex: O fluxo mximo de 5 corresponde ao corte das arestas (4,6)
3 5 5 e (5,6) com capacidade 2+3=5. 6

1
Fluxo Mximo em Redes Fluxo Mximo em Redes

Digrafos - Fluxos em Redes Digrafos - Fluxos em Redes - Ford-Fulkerson


2/1 Rede Residual
2 4
2/0 2/1
3/2 2 4
1/1 1/1 6
1 2/0
3/2
4/1 1/1 1/1
3/3 1 6
3 5
3/1
4/1 3/3
3 5
3/1
Algoritmo de Fluxo Mximo (Ford-Fulkerson)
A rede residual criada a partir de um fluxo: fazemdo as
Idia: Comear com um fluxo inicial qualquer e, a cada passo, seguintes modificaes na rede:
melhorar esse fluxo at se chegar a um valor mximo.
a) so adicionadas arestas contrrias para cada aresta com
O aumento gradativo do fluxo feito examinando-se a rede fluxo, com mesma capacidade igual do fluxo.
residual. Enquanto houver algum caminho na rede residual entre
uma fonte e um sumidouro, o fluxo total pode ser melhorado. b) modificada a capacidade de uma aresta com fluxo para o
valor da quantidade residual.
7 8
c) arestas sem fluxo so mantidas sem modificao.

Fluxo Mximo em Redes Fluxo Mximo em Redes

Digrafos - Fluxos em Redes - Ford-Fulkerson Digrafos - Fluxos em Redes 2/1


2 4
Rede Residual - Exemplo Algoritmo Ford-Fulkerson 2/0
3/2
1 1/1 1/1
2/1 1 6
2 4 2 4
2/0 2 1 2
3/2 4/1
1 1 3 5 3/3
1/1 1/1 1 6 Algoritmo (I):
1 6 1 3/1
1
3 1 Zerar Fluxo Total FT e fluxos nas arestas fl(v,w)
4/1 3 5 3
3 5 3/3 Construir a rede residual R
2
3/1 Enquanto (houver caminho c = s...t em R):
rede residual Delta Min {Capacidade das arestas do caminho c}
A rede residual criada a partir de um fluxo: fazemdo as seguintes
Para cada aresta (v, w) de c:
modificaes na rede: Se (v,w) aresta direta, Ento fl(v,w) fl(v,w)+ Delta
Seno fl(v,w) fl(v,w) -Delta;
a) so adicionadas arestas contrrias para cada aresta com fluxo, com mesma FT FT + Delta;
capacidade igual do fluxo.
Fp;
b) modificada a capacidade de uma aresta com fluxo para o valor da Construir a rede residual R;
quantidade residual. Fe;
9 10
c) arestas sem fluxo so mantidas sem modificao.

Fluxo Mximo em Redes Fluxo Mximo em Redes

Digrafos - Fluxos em Redes Algoritmo Ford-Fulkerson Digrafos - Fluxos em Redes Algoritmo Ford-Fulkerson
Maxflow com BP e MA Maxflow com BP e MA

Algoritmo (II)
FluxoMaximo; ExisteCaminho(s, t, minf):
FT 0; pre[s] 1;
E[*,*].fl 0; Se (s=t) Ento Retornar minf;
pre[*} 0; Para i de 1 a n:
Enquanto (fm = ExisteCaminho(s,t,
)): Se ((! pre[i]) e (E[s,i].c > 0)) Ento
FR FT+fm; Se (fm= ExisteCaminho(i, t, min(minf, E[s,i].c))) Ento
pre[*] 0; E[s,i].c E[s,i].c-fm; E[i,s].c E[i,s].c+fm;
Fe; E[s,i].fl E[s,i].fl+fm; E[i,s].fl E[i,s].fl-fm;
Fim; Retornar fm;
Complexidade: O(n2F), onde F o fluxo mximo Fs;
Observaes: Fs;
1. Durante a busca em profundidade, se for encontrado um caminho Fp;
entre a fonte e o sumidouro, o fluxo nas arestas as arestas do Retornar 0;
caminho j atualizado na busca. Fim;
11 12
2. Com matriz de adjacncias no necessrio criar a rede residual.

2
Fluxo Mximo em Redes Fluxo Mximo em Redes

Digrafos - Fluxos em Redes Algoritmo Ford-Fulkerson Digrafos - Fluxos em Redes Algoritmo Ford-Fulkerson
Maxflow com BL e MA MAxflow com BL e MA
ExisteCaminho;
Desmarcar vrtices; Esvaziar Fila;
Algoritmo (III)
Enfilar(s, 0, , ); {n da fila = { ver, pai, val}}
Enquanto (f r):
FluxoMaximo;
s Fila[f].ver;
FT 0;
Para i de 1 a n:
Zerar fluxos nas arestas; (E[v,w].fl)
Se (i no marcado) e (E[s,i].c > 0) Ento
Enquanto (1):
Enfilar(i, f, min(Fila[f].val,E[s,i].c);
Se (ExisteCaminho) Ento
Se (i = sumidouro) Ento Parar;
Delta Fila[r].val; {Aresta mnima do caminho}
Fs;
AtualizaCaminho(Delta);
Fp;
FT FT + Delta;
f f+1;
Seno Parar;
Fe;
Fe;
ExisteCaminho (Fila[r].ver = sumidouro);
Fim;
Fim;
{Obs: matriz de Adjacncias E = { cap, fl } }
13 14
Complexidade: O(nm2)

Fluxo Mximo em Redes Fluxo Mximo em Redes

Digrafos - Fluxos em Redes Algoritmo Ford-Fulkerson Digrafos - Fluxos em Redes


Maxflow com BL e MA Ford-Fulkerson - Exemplo

Fluxos colocados inicialmente (note que se poderia


executar o algoritmo sem nenhum fluxo inicial).
AtualizaCaminho(min);
j r; i Fila[r].ver; p Fila[r].pai; s Fila[r].ver; 2/0 1 2
2/0
4
fm Fila[r].ma; 2 4 2/0
2/0 3/1
Enquanto (i fonte): 3/0
1/0 1/0 1/1 1/0
E[s,i].c C[s,i].c - fm; E[i,s].c C[i,s].c + fm; 6 1 6
1
E[s,i].fl C[s,i].fl +fm; E[i,s].fl C[i,s].fl - fm;
4/0 4/0
j p; i Fila[j].ver; p Fila[j].pai; 3 5 3/0 3 5 3/1
Se (i fonte) Ento s Fila[p].ver; 3/0 3/0
Fe;
Fim; 2 2/1 3 2/1
2 4 2 4
2/0 2/0
3/2 3/2
1/1 1/1 1/1 1/1
1 6 1 6

4/0 4/1
15 3 5 3/2 3 5 3/3 16
3/0 3/1

Fluxo Mximo em Redes Fluxo Mximo em Redes

Digrafos - Fluxos em Redes Digrafos - Fluxos em Redes


Ford-Fulkerson - Exemplo (cont.) Ford-Fulkerson - Exemplo (cont.)
2/1 2/1
2 4 2 4
2/0 2/1
3/2 3/2
1/1 1/1 1/1
1 6 1/0 6
1

4/1 4/2
3 5 3/3 3 5 3/3
3/1 3/2
1 Segunda rede Residual - 1
Primeira rede Residual - 4 Encontrado o caminho
2 2 4
Encontrado o caminho 2 1- 3 - 5 - 2 - 4-6
1 2 1
1- 3 - 5 - 4 - 6 1
cujo valor mnimo 1 2
cujo valor mnimo 1 1 1 O Fluxo total pode
1 6 1 1 1
O Fluxo total pode 1 1 6
1 ser aumentado de 1. 1
ser aumentado de 1. 2
3 1 2
3 5 3 2
3 5 3
2 17
1 18

3
Fluxo Mximo em Redes Fluxo Mximo em Redes

Digrafos - Fluxos em Redes Digrafos - Fluxos em Redes Ford-Fulkerson -


Ford-Fulkerson - Exemplo (cont.) Como os algoritmos tratam a rede residual

2/2 1/-1
2 4 2/1
4
2 2 4
2/2 3/1
2/1 1/-1 1/1 1/-1
3/2
1/0 1/0
1
1/0 1/0 6 2/1
1/1
1/1
1 6 4/0 1
1/1 6
3 5 3/0
3/0
4/3 4/1
3/3 3 5 3/3
3 5
3/1
3/3

Terceira Rede Residual 2 4 A rede residual criada a partir de um fluxo modificando a rede da seguinte forma:
No h mais caminho entre
2 2
1 e 6. O Fluxo 5 mximo. 2 a) quando se atribui um fluxo a uma aresta, sua capacidade deduzida deste fluxo.
1 1 1 6 b) a capacidade deduzida somada capacidade da aresta contrrial.
1
3
c) o fluxo atribudo deduzido do fluxo da aresta contrria.
1 3
3 5 3 19 20
d) para se encontrar o fluxo s se analisa os fluxos positivos.

Fluxo Mximo em Redes Fluxo Mximo em Redes

Digrafos - Fluxos em Redes Ford-Fulkerson - Digrafos - Fluxos em Redes -Ford-Fulkerson - Exerccio


Como os algoritmos tratam a rede residual
0
C'=C-F 2 4
2 0
1 2 3
2 2 4 6
2 1 3
2/2 1 6
2 4 1 6
1 0
2/2 2 1
3/2 3 0 3 1 3 9
3 5
1/0
1
1/0 6 3 1
3
3 5 7
4 4
4/3
3 5 3/3 F 2
3/3 2 4
-2 2
2 Exerccio: mostrar os passos da obteno do fluxo mximo na rede
-2 acima, comeando com fluxo zero.
-2 0 0 6 Depois mostrar um corte mnimo correspondente ao fluxo mximo.
1
3 3
-3 3 -3
3 5 21 22
-3

Fluxo Mximo em Redes Fluxo Mximo em Redes

Digrafos - Fluxos em Redes Ford-Fulkerson - Exemplo 2 Digrafos - Fluxos em Redes Ford-Fulkerson - Exerccio
UVA 11045 - My T-Shirt suits Me
UVA 10080: Coelhos e gavies
Modelar o seguinte problema:
Problema: so dadas as posies dso dadas as posies (x, y) de n
coelhos, e tambm as posies (x, y) de vrias tocas. Gavies vo
atacar em 1 min. Quantos coelhos podem se salvar, sabendo que a
velocidade de todos os coelhos v e que em, cada toca cabem 2
coelhos?

t2
t1 t3
Exerccio: modelar a soluo por fluxo mximo para o seguinte
problema: c3
Problema: So dadas np pessoas que vo ser presenteadas com uma T- c2
Shirt. H nc camisetas de cada um dos 6 tamanhos (XXL, XL, L, M, S,
XS). Cada pessoa informa dois tamanhos satisfatrios para ela. c4
possvel distribuir as camisetas de forma a satisfazer a todos? c6 c5
23 c1 24

4
Fluxo Mximo em Redes Fluxo Mximo em Redes

Digrafos - Fluxos em Redes Ford-Fulkerson - Exemplo 4 Digrafos - Fluxos em Redes Ford-Fulkerson - Exemplo 4
UVA 10330 - Power Transmission UVA 10330 - Power Transmission - Modelagem

1 10 5
10 13
10

0 30 3 30 7 20 4 40 8 40 9
2
20 5 5 7

Problema: qual a maior potncia que pode chegar a Dhaka, partindo do 2 20 6


centro gerador (Barisal) e transmitindo por redes com capacidades
dadas e passando por reguladores, com limite de capacidade de
entrada. Quando existe capacidade nos vrtices cria-se um vrtice
artificial e coloca-se a capacidade do vrtice na aresta que liga o
Dado adicional: cada regulador tem uma capacidade mxima. 25 26
vrtice original ao criado.
No caso: 1 (10), 2 (20) , 3 (30), 4 (40).

Fluxo Mximo em Redes Fluxo Mximo em Redes

Digrafos - Fluxos em Redes Ford-Fulkerson - Exemplo 4 Digrafos - Fluxos em Redes Ford-Fulkerson - Exemplo 5
UVA 10330 - Power Transmission - Fluxo Mximo UVA 10511 - Counciling

Problema: So dados n clubes, m partidos polticos e p pessoas.


1 10/10 5 Cada uma das pessoas membro de um nico partido e scia de
qualquer nmero de clubes. Quer-se nomear um scio de cada
10/10 13/10 clube para fazer parte do conselho municipal, de tal forma que o
10
nmero de membros de cada partido seja inferior metade do
nmero total de membros do conselho. Alm disso, nenhuma
0 30/20 3 30/20 7 20/20 4 40/37 8 40/37 9 pessoa pode representar mais de um clube. Dizer se possvel e
indicar uma soluo.
2
20/7 5 5 7/7
EX p1 PT C1 C2 C3
p2 PV
2 20/7 6 p3 PT C2 C3
p4 PS C1 C3
p5 PV C2 C1

27 28

Fluxo Mximo em Redes Fluxo Mximo em Redes

Digrafos - Fluxos em Redes Ford-Fulkerson - Exemplo 5 Digrafos - Fluxos em Redes Ford-Fulkerson - Exemplo 6
UVA 10511 - Counciling - Modelagem UVA 10735 - Euler Circuit

1 p1
1 1 Cria-se o grafo com
C1 1 2 5 3
PT um n para cada 1
1 clube, 1 para cada
p2 4
1 pessoa e 1 para cada
1
partido. Clubes so
C2 1 1 PV
conectados fonte
1 p3 1 t
s com 1, pessoas aos
1
1 seus clubes e ao seu 6
1 1 PS 1 partido com 1.
p4
C3 1 Partidos ao sumidouro
com (n-1)/2. O Problema: dado um grafo onde algumas arestas esto orientadas e
1 1
1 fluxo mximo deve outras no, verificar se possvel orientar as arestas no orientadas
p5 ser = n (num. de tal que o digrafo possua circuito euleriano.
clubes)
29 Obs: um digrafo possui circuito euleriano se o grafo subjacente for
30
conexo e, para cada vrtice seu grau de entrada igual ao de sada.

5
Fluxo Mximo em Redes Fluxo Mximo em Redes

Digrafos - Fluxos em Redes Ford-Fulkerson - Exemplo 6 Digrafos - Fluxos em Redes Ford-Fulkerson - Exemplo 6
UVA 10735 - Euler Circuit - Modelagem UVA 10735 - Euler Circuit - Modelagem
Inicialmente: cria- Depois: excluem-se
12 se o grafo com um as arestas
1 n para cada aresta 1
orientadas e ajusta-
12 e um para cada 12 se a capacidade do
1 1 vrtice inicial. 1 vrtice de entrada
25 2 Ligam-se as arestas 2 correspondente.
1 aos vrtices de sua 1
Obtem-se o fluxo
1 26 2 extremidade. As 26 1
mximo. Se todas as
1 3 t arestas ligando 1 3 t arestas que chegam
s 1 vrticesao sumidouro s 0
1 35 1 35 em t estiverem
tm capacidade = satudadas, ento h
1 grau de
63 4 1 4 1 soluo e os vrtices
1 entrada/sada 1
correspondentes so
1 2 desejado. As demais 1 1 onde "chegam" as
45 45
5 tm capacidade 1. 5 arestas que tm
1 1
As arestas sem fluxo.
46 2 46 2
fluxo so de sada
6 de cada um desses31 6 32
56 56
vrtices.

Fluxo Mximo em Redes Fluxo Mximo em Redes

Digrafos - Fluxos em Redes Ford-Fulkerson - Exemplo 6 Digrafos - Emparelhamento mximo em grafos bipartidos
Problema 10735 - Euler Circuit
Emparelhamento mximo em grafo bipartido

Problema (Casamento estvel): Dados n rapazes e m garotas e os


5 3 interesses, determinar o maior nmero de casais que podem ser
1 2 formados
4

H1 H2 H3 H4 H5 H6

Soluo Final M1 M2 M3 M4 M5 M6
Circuito: 1 - 2 - 5 - 4 - 3 - 5 - 6 - 2 - 1

A soluo determinar um emparelhamento mximo no grafo bipartido.


33 Problemas desse tipo podem, facilmente, ser transformados em 34
problemas de fluxo mximo.

Fluxo Mximo em Redes Fluxo Mximo em Redes

Digrafos - Emparelhamento mximo em grafos bipartidos Digrafos - Emparelhamento mximo em grafos bipartidos

Emparelhamento mximo em grafo bipartido - Emparelhamento mximo em grafo bipartido -


Casamento estvel Casamento estvel - Modelagem por Fluxo
H1 H2 H3 H4 H5 H6 Soluo 1
(4)

H1 H2 H3 H4 H5 H6
M1 M2 M3 M4 M5 M6

H1 H2 H3 H4 H5 H6
Soluo
tima M1 M2 M3 M4 M5 M6
(5)

M1 M2 M3 M4 M5 M6 35 36

6
Fluxo Mximo em Redes Fluxo Mximo em Redes

Digrafos - Emparelhamento mximo em grafos bipartidos Digrafos - Emparelhamento mximo em grafos bipartidos

Emparelhamento mximo em grafo bipartido - Emparelhamento mximo em grafo bipartido -


Casamento estvel - Modelagem por Fluxo Casamento estvel - Modelagem por Fluxo

1 1
1- Acrescenta-se uma
fonte e um sumidouro.

2. Liga-se a fonte ao
2 3 4 5 6 7 2 3 4 5 6 7
conjunto V1

3. Liga-se o V2 ao
sumidouro.

8 9 12 13 4. As arestas de V1 8 9 12 13
10 11 10 11
p/V2 passam a ser
direcionadas.

5. Todas as
37 38
14 capacidades so 1. 14

Fluxo Mximo em Redes Fluxo Mximo em Redes

Digrafos - Fluxos em Redes Ford-Fulkerson - Exemplo 7 Digrafos - Fluxos em Redes Ford-Fulkerson - Exemplo 7

UVA 663: Sorting Slides UVA 663: Sorting Slides


A B C D

1 2 3 4

Modelagem:
1- Criar o grafo bipartido das possibilidades de associao.
2. Encontrar o fluxo mximo.
3. Checar se cada emparelhamento do fluxo mximo necessrio
(quando retirado diminui o fluxo mximo). Isso deve ser feito
retirando-se, temporariamente cada aresta do emparelhamento e
Problema: dadas das posies dos slides e dos nmeros, indicar quais
39 checando-se se o valor do fluxo mximo diminui.. 40
associaes entre nmeros e slides podem ser feitas com segurana.

Fluxo Mximo em Redes Fluxo Mximo em Redes

Digrafos - Fluxos em Redes Ford-Fulkerson - Exemplo 8 Digrafos - Fluxos em Redes Ford-Fulkerson - Exemplo 8

UVA 11159: Factors and multiples UVA 11159: Factors and multiples
2 3 4 5
Problema: dados dois conjuntos
2 3 4 5 de nmeros, determinar o
mnimo de nmeros que devem
ser retirados para que no
segundo conjunto no haja
6 7 8 9 nenhum mltiplo dos nmeros do
primeiro.

6 7 8 9
Modelagem:
1- Criar o grafo bipartido dos mltiplos.
2. Encontrar o fluxo mximo.
Problema: dados dois conjuntos de nmeros, determinar o mnimo 3. Esse o valor procurado (Teorema de Knig: o valor da cobertura
de nmeros que devem ser retirados dos dois conjuntos para que
mnima de arestas de um bipartido igual ao do emparelhamento
no segundo conjunto no haja nenhum mltiplo dos nmeros do mximo). Obs: Enconctrar o conjunto a retirar no trivial...
primeiro. 41 42

7
Fluxo Mximo em Redes Fluxo Mximo em Redes

Digrafos - Fluxos em Redes Ford-Fulkerson - Exerccio Digrafos - Fluxos em Redes

UVA 10080: Coelhos e gavies Cobertura mnima em um grafo bipartido

Modelar o seguinte problema: O Teorema de Knig diz que, "Em um grafo bipartido, uma cobertura
Problema: so dadas as posies dso dadas as posies (x, y) de n mnima de vrtices tem a mesma cardinalidade que a do emparelha-
coelhos, e tambm as posies (x, y) de vrias tocas. Gavies vo mento mximo. Ento, para achar o tamanho da cobertura mnima,
atacar em 1 min. Quantos coelhos podem se salvar, sabendo que a executamos o algoritmo de emparelhamento mximo.
velocidade de todos os coelhos v e que em, cada toca cabem 2
coelhos? Obs: a cobertura mnima o menor conjunto de vrtices
tal que todas as arestas so incidentes a algum vrtice
t2 do conjunto.
t1 t3 5
1 2 3 4 6
c3
c2

c4
c6 c5
c1 43
7 8 9 10 11 12 44

Fluxo Mximo em Redes Fluxo Mximo em Redes

Digrafos - Fluxos em Redes Digrafos - Fluxos em Redes


Cobertura mnima em um grafo bipartido
Cobertura mnima em um grafo bipartido
Como achar a cobertura mnima:
O Teorema de Knig diz que, "Em um grafo bipartido, uma cobertura
a) Considerar a partio dos vrtices R e L.
mnima de vrtices tem a mesma cardinalidade que a do emparelha-
b) Construir T = conjunto de vrtices que participam de caminhos
mento mximo. Ento, para achar o tamanho da cobertura mnima,
alternantes comeando nos vrtices no emparelhados em L.
executamos o algoritmo de emparelhamento mximo.
c) Cobertura mnima = C = {L\T} (R T}.
Obs: a cobertura mnima o menor conjunto de vrtices tal que
todas as arestas so incidentes a algum vrtice do conjunto.
1 2 3 4 5 6 1 2 3 4 5 6

1 2 3 4 5 6

7 8 9 10 11 12 7 8 9 10 11 12

7 8 9 10 11 12

45 46
Emparelhamento mximo = 5 = Cobertura mnima

Fluxo Mximo em Redes Fluxo Mximo em Redes

Digrafos - Fluxos em Redes Digrafos - Fluxos em Redes


Corte Mnimo (Min Cut)
Cobertura mnima em um grafo bipartido
C = {L\T} (R
T}. Um corte em uma rede corresponde retirada de algumas
arestas que disconectam o grafo em dois subgrafos conexos, onde
s e t esto em componentes distintos.
R= {1,2,3,4,5,6} L= {7,8,9,10,11,12} T= {2,5,9,11,12} Teor: A capacidade total do corte mnimo = Fluxo mximo.
No exemplo abaixo deve haver um corte cujo valor 37.

1 2 3 4 5 6 1 2 3 4 5 6 10/10 5
1
10/10 13/10
10

0 30/20 3 30/20 7 20/20 4 40/37 8 40/37 9


7 8 9 10 11 12 7 8 9 10 11 12
2
20/7 5 5 7/7
L\T= {7,8,10} R
T={2,5} C = {2, 5, 7, 8, 10}
2 20/7
47 6 48

8
Fluxo Mximo em Redes Fluxo Mximo em Redes

Digrafos - Fluxos em Redes Digrafos - Fluxos em Redes


Corte Mnimo (Min Cut) Corte Mnimo (Min Cut)
No exemplo abaixo o corte mnimo dado pelas arestas: (0,1),
O Algoritmo que encontra o corte mnimo faz DFS no grafo
{7,4), (6,4), cuja soma das capacidades 37. Este corte
residual, a partir de s. Todos os vrtices visitados fazem parte
particiona os vrtices em dois conjuntos: {0,2,3,6,7} e
do primeiro conjunto. Os no visitados, do segundo.
{1,5,4,8,9}

1 10/10 5 1 10/10 5

10/10 13/10 10/10 13/10


10 10

0 30/20 3 30/20 7 20/20 4 40/37 8 40/37 9 0 30/20 3 30/20 7 20/20 4 40/37 8 40/37 9
2 2
20/7 5 5 7/7 20/7 5 5 7/7

2 20/7 2 20/7
6 49 6 50

Fluxo Mximo em Redes Fluxo Mximo em Redes

Digrafos - Fluxos em Redes Digrafos - Fluxos em Redes

MaxFlow MinCost Problema MaxFlow MinCost Problema


Se tivermos a 2 6
soluo indicada 1/2 1/2 1/2
Quando se coloca custos nas arestas, alm da capacidade tem-se 1/2
o problema de encontrar o fluxo mximo, com o mnimo custo. A com fluxo mximo 1/2
de 1, e custo 10, 1 4 5 8
soluo eliminar ciclos negativos no digrafo residual do fluxo
mximo. No exemplo, o segundo parmetro o custo. podemos reduzir o
custo para 6, 1/1 1/1 1/1
1/1
identificando dois 3 7
2 6 ciclos de custo
1/2 1/2 1/2 negativo no digra-
1/2
fo residual. 2 6
4 1/2 5 8 1/2 1/2 1/2
1 Arestas contrri- 1/2
as tm custo ne- 1/2 1/-2
1/1 gativo. 1 4 5 8
1/1 1/1 1/1
3 7
1/1 1/1 1/1
1/1
3 7
51 52

Fluxo Mximo em Redes Fluxo Mximo em Redes

Digrafos - Fluxos em Redes Fluxo Mximo - Problemas UVA Sugeridos:


MaxFlow MinCost Problema a) Fluxo Mximo d) Bipartite Matching
563 - Crime Wave
10380 - Shogi Tournament
10511 - Counciling 663 - Sorting Slides
Eliminando esses 10594 - Data Flow 670 - The Dog Task
ciclos (basta 10735 - Euler Circuit 10072 - Bob laptop ...Barlow
acrescentar o 10779 - Collector's problem 10092 - The problem with problem-
fluxo da aresta 2 6 10806 - Dijkstra,Dijkstra setter
de capacidade 1/2 1/2 1/2 10983 - By one, get the rest free 10122 - Mysterious mountain
1/2
mnima), obtemos 11167 - Monkeys in the Emei Mountain 10615 - Rooks
4 1/2 5 8 11301 - Great Wall of China 10746 - Crime Wave n- The Sequel
uma soluo de 1
custo 6. 11358 - Faster Processing Facility 10804 - Gopher Strategy
1/1 11380 - Down Went the Titanic 11138 - Nuts 'n' Bolts
1/1 1/1 1/1
11506 - Angry Programmer 11159 - Factors and Multiples
3 7 11544 - Recruiter's Problem 11262 - Weird Fence
11594 - All Pairs Maximum Flow 11381 - Elegant Strings
11603 - It's about Bandwith 11383 - Golden Tiger Claw
11613 - acme Corporation 11418 - Clever Naming Patterns
11642 - Bangladesh Premier League 11419 - SAM I AM
11647 - Judgement Dady 11439 - Maximizing the ICPC
53 11757 - Winger Trial 54
11765 - Component Placement

9
Fluxo Mximo em Redes

FIM

55

10

Vous aimerez peut-être aussi