FLUXO M ´
AXIMO EM REDES
S. Rangel1; Departamento de Matem´atica Aplicada, IBILCE, UNESP - Univ Estadual
Paulista, 15054-000, S˜ao Jos´e do Rio Preto, SP, Brasil.
1.
Conceitos b´
asicos e resultados principais
Considere uma rede D(V, E) em que a cada aresta e∈ E est´a associado um n´umero real positivo c denominado capacidade da aresta e.
Suponha que a rede D possua:
• Um v´ertice s ∈ V chamado origem (fonte). • Um v´ertice t ∈ V chamado destino (sumidouro).
Defini¸c˜ao Um fluxo f de s a t em D ´e uma fun¸c˜ao que a cada aresta e ∈ E associa um n´umero real n˜ao negativo f (e) satisfazendo as seguintes condi¸c˜oes:
i) 0 ≤ f(e) ≤ c(e), ∀e ∈ E (capacidade) ii) ∀ v ∈ V tal que v ̸= s and v ̸= t: ∑
vj∈V f (vj, v) = ∑ vj∈V f (v, vj) (conserva¸c˜ao do fluxo) iii) ∑ vj∈V
f (s, vj) = F , onde F ´e o valor do fluxo na rede.
iv) ∑
vj∈V
f (vj, t) = F
Exemplo Na Figura 1 ´e exibido um fluxo em uma rede. Note que:
- Em cada aresta o termo antes do parentesis indica sua capacidade e o termo entre parentesis o fluxo na aresta.
- a aresta (v2, v3) possui capacidade 2 e fluxo 1.
- O valor do fluxo no v´ertice v2 ´e 3 e no v´ertice s ´e 4 (valor do fluxo na rede).
Figura 1: Fluxo em uma rede [2]
Exerc´ıcio
1) Verificar que o fluxo exibido na Figura 1 ´e um Fluxo Legal, ou seja, satisfaz as condi¸c˜oes i) a iv).
2) Considerando esta mesma rede, definir uma atribui¸c˜ao de fluxos para as arestas que n˜ao satisfa¸ca ii).
3) Qual o valor m´aximo de fluxo para esta rede?
Defini¸c˜ao Seja F um fluxo em uma rede D(V, E). Uma aresta ´e dita saturada se
f (e) = c(e). Um v´ertice v ∈ V ´e dito saturado quando todas as arestas convergentes a v ou divergentes de v est˜ao saturadas.
Exemplo Verifique se h´a v´ertices ou arestas saturados na rede exibida na Figura 1
Defini¸c˜ao O problema de fluxo m´aximo em redes consiste em dada uma rede e um v´ertice origem s e um vertice destino t, determinar uma atribui¸c˜ao de fluxo para as arestas da rede satisfazendo as condi¸c˜oes i) a iv) tal que fluxo na rede seja o maior poss´ıvel.
Defini¸c˜ao Um fluxo ´e dito maximal quando todo caminho de s a t em D cont´em pelo menos uma aresta saturada.
Obs1: Todo fluxo m´aximo ´e maximal, mas a rec´ıproca n˜ao ´e verdadeira. Na Figura 2 temos um fluxo maximal que n˜ao ´e m´aximo e na Figura 3 um fluxo m´aximo (e maximal). Exerc´ıcio Defina um fluxo maximal que n˜ao seja m´aximo na rede da Figura 1.
Defini¸c˜ao Seja S ⊂ V um subconjunto de v´ertices tal que s ∈ S e t /∈ S, e seja ¯
S = V − S. Um corte (S, ¯S) relativo a s e t em D ´e um subconjunto de arestas de D que possuem uma extremidade em S e outra em ¯S. Assim todo caminho da origem s
ao destino t em D cont´em alguma aresta de (S, ¯S).
Exemplo Considere a rede da Figura 1:
1) Sejam S ={s} e ¯S ={v1, v2, v3, v4, t}. Ent˜ao: (S, ¯S) =
Figura 2: Fluxo maximal em uma rede [2]
Figura 3: Fluxo maximo em uma rede [2]
Nota¸c˜ao:
- (S, ¯S)+ ={(v, w) ∈ E tal que v ∈ S e w ∈ ¯S
- (S, ¯S)− ={(v, w) ∈ E tal que w ∈ S e v ∈ ¯S
Defini¸c˜ao A capacidade c(S, ¯S) do corte (S, ¯S) ´e igual a soma das capacidades das arestas de (S, ¯S)+, ou seja, c(S, ¯S) = ∑
ej∈(S, ¯S)+
c(ej). Um corte m´ınimo ´e aquele que
possui capacidade m´ınima (cmin).
Defini¸c˜ao Seja F um fluxo e (S, ¯S) um corte em D. Ent˜ao, f (S, ¯S) ´e o fluxo no corte (S, ¯S) e ´e definido por:
f (S, ¯S) = ∑ ej∈(S, ¯S)+ f (ej)− ∑ ej∈(S, ¯S)− f (ej).
Obs 2: O valor do fluxo em uma rede ´e igual ao valor do fluxo no corte: (S, ¯S) = (s, V − s).
Obs 3: Note que o valor do fluxo na rede n˜ao pode ultrapassar a capacidade de qualquer corte (S, ¯S). Assim, temos que:
F = f (S, ¯S) = ∑ ej∈(S, ¯S)+ f (ej)− ∑ ej∈(S, ¯S)− f (ej)≤ c(S, ¯S),∀(S, ¯S). Em particular: F ≤ cmin
como sendo uma rede tal que:
i) O conjunto de v´ertices de D(f ) coincide com o conjunto de v´ertices de D.
ii) Se (v, w) ´e uma aresta direta em D ent˜ao (v, w) tamb´em ser´a uma aresta direta em D(f ) com capacidade c′(v, w) = c(v, w)− f(v, w).
iii) Se (v, w) ´e uma aresta contr´aria em D, ent˜ao (w, v) ´e uma aresta contr´aria em
D(f ) com capacidade c′(v, w) = f (v, w).
Exerc´ıcio Construir as redes residuais das redes exibidas nas Figuras 1 e 2.
Defini¸c˜ao Um caminho de s a t na rede residual ´e chamado de caminho aumen-tante (ou caminho de aumento de fluxo).
Lema 2 [2] Seja F um fluxo em uma rede D(V, E) e D(f ) a rede residual associada. Suponha que exista em D(f ) um caminho aumentante {v1, v2, ..., vk} da origem v1 = s
ao destino vk = t. Ent˜ao o fluxo na rede pode ser aumentado de:
F′ = min{c′(vj, vj+1), 1 ≤ j ≤ k}.
Teorema [2] O valor do fluxo m´aximo em uma rede D(V, E) ´e igual `a capacidade do corte m´ınimo.
Corol´ario [2] Um fluxo em uma rede D(V, E) ´e m´aximo se e somente se n˜ao existe caminho aumentante na rede residual associada.
Estes resultados foram usados por Ford e Fulkerson para definir um algoritmo para resolver o problema de fluxo m´aximo em redes (e.g. [2], [1]).
Exerc´ıcio Resolva o problema de fluxo m´aximo considerando a rede exibida na Figura 4. Discuta a complexidade computacional do Algoritmo de Fluxo M´aximo de Ford e Fulkerson usando esta rede como exemplo.
2.
O Algoritmo de Ford e Fulkerson
Algoritmo de Fluxo M´aximo em redes [1] (Ford e Fulkerson, 1956,1957,1962)
Dados de entrada: Um digrafo G(V, E); para cada aresta ej ∈ E, um n´umero
inteiro positivo c(ej); um v´ertice origem s; e um v´ertice destino t.
1. In´ıcio 2. F = 0
3. Para todo ej ∈ E fa¸ca f(ej) = 0
4. Construa a rede residual D(f)
5. enquanto existir um caminho v1, v2, ..., vk de v1 = s a vk = t em D(f ) fa¸ca:
6. F′ = min{c′(vj, vj+ 1), 1≤ j ≤ k}
7. para j = 1, ....k fa¸ca:
8. se (vj, vj+1) ´e aresta direta ent˜ao f (vj, vj+1) = f (vj, vj+1) + F′
9. caso contr´ario f (vj, vj+1) = f (vj, vj+1)− F′
10. fim para 11. F = F + F′
12. Construa a nova rede residual D(f ) 13. fim enquanto
14. fim
Para determinar o corte m´ınimo na rede associado ao fluxo m´aximo fa¸ca:
Seja F o fluxo m´aximo na rede e f (vi, vj) o fluxo na aresta (vi, vj). Ent˜ao o corte m´ınimo
´e dado por: i) s∈ S
ii) Se vi ∈ S e f(vi, vj) < c(vi, vj) ent˜ao vj ∈ S.
iii) Se vi ∈ S e f(vi, vj) > 0 ent˜ao vj ∈ S.
Maiores detalhes ver na pagina 157 de [1] e o cap´ıtulo 6 de [2].
Referˆ
encias
[1] Boaventura, P. O., Grafos : teoria, modelos, algoritmos, Edgard Blucher, 2003 (Pg. 157).
[2] Szwarcfiter, J.L. - Grafos e Algoritmos Computacionais, Ed. Campos, 1988 (Cap. 6).
[3] Mirzaian, A. - Algorithms Animation Worshop, York Univer-sity, ´ultima visita dezembro 2014 (http://www.cse.yorku.ca/ aaw/; http://www.cse.yorku.ca/ aaw/Wang/MaxFlowStart.htm)