* eeQ
para cada arco e do caminho Q que aumenta o fluxo se e é um arco dirigido para a frente
/ • ( « ) - / • ( « ) + A .
se não (se e é um arco dirigido para trás)
até que um caminho que aumenta o fluxo / * não possa ser encontrado na rede N voltar o fluxo / *
Saída: um fluxo máximo / * da rede N
Este algoritmo é melhor que o de Ford - Fulkerson pois na instrução "enquanto" (**) deste último algoritmo, o caminho que aumenta o fluxo é procurado usando um método de procura breadth first, ou seja, o caminho que aumenta o fluxo passa a ser o caminho mais curto desde a fonte S até ao destino T na rede residual, onde cada aresta tem distância unitária. A análise deste algoritmo depende das distâncias até aos vértices na rede residual.
Em seguida, introduzem-se noções necessárias para mostrar qual o tempo de execução do algoritmo de Edmonds - Karp.
Definição 5.5.4.3: S(u,v) é a distância do caminho mais curto desde os vértices u ate v.
Antes de mostrar a eficiência do algoritmo de Edmonds - Karp, vejamos uma propriedade importante das distâncias dos caminhos mais curtos.
Lema 5.5.4.4: Sejam G um grafo e s G V um vértice qualquer, então para qualquer aresta uv G E, S(s,v)<õ(s,u)+\.
Demonstração:
Se se puder alcançar u através de s, então o mesmo ocorre com v, pois u está ligado ao vértice v. Neste caso, o caminho mais curto desde 5 até v não pode ser mais longo do que o caminho mais curto de s
até u passando pela aresta uv e, deste modo, a desigualdade mantém-se válida. Se não se pode chegar a u através de s, então não existe nenhum caminho desde 5 até u e a desigualdade mantém-se. ■
Notação 5.5.4.5: Seja ôf(u,v) a distância do caminho mais curto desde u até v na rede residual da rede N
com fluxo / , na qual cada aresta tem distância unitária.
Lema 5.5.4.6: Se o algoritmo de Edmonds - Karp for executado usando um fluxo / numa rede N, com fonte S e destino T, então para todos os vértices veVN -{S,T}, a distância do caminho mais curto vtVN- {s,T} na rede residual aumentará monotonamente com cada aumento do fluxo.
Demonstração:
Suponha-se que, para algum vértice v&VN -{S,T}, existe um aumento de fluxo que faz com que a
distância do caminho mais curto entre S e v diminua.
Seja / o fluxo imediatamente antes do primeiro aumento que diminui a distância do caminho mais curto e seja / ' o fluxo imediatamente após. Seja ,v o vértice com ôf.(s,v) mínimo, no qual a distância foi diminuída
pelo aumento de tal modo que: Sf.(S,v)<ôf(S,v). Seja P=<S^> > u - > v > um caminho mais curto
de S até v na rede residual de modo que uveEf, e
Sf,{s,u)=ôr{S,v)-\. (1)
Devido ao modo como v foi escolhido, a etiqueta da distância do vértice u não diminuiu, isto é:
ôf.{s,u)>Sf{s,u). (2)
Tem-se que uveEf, uma vez que se uv e Ef se teria que:
ôf {S, v)=ôf{s,u)+l (usando o Lema 5.5.4.4)
<Sf.(s,u)+\ (peladesigualdade ( 2 ) 0 Sf( s , u ) < ôr{ S , « ) ) = Sf.(S,v) (pelaigualdade (\)oSf.(s,v) = Sr(s,u)+\)
contrariando a hipótese ôf.(s,v)<ôf(s,v).
Repare-se que uveEf e uveEf., uma vez que o aumento efectuado deve ter aumentado o fluxo de v
para u. Este algoritmo aumenta sempre o fluxo ao longo de caminhos mais curtos e, deste modo, o caminho mais curto entre s e u na rede residual tem como último arco uv, assim:
S
f(S,v)-Ô
f(S,u)-l
<ôf.(s,u)-\ (peladesigualdade (2)0Sf{s,u)<Sr(s,u))
= ôr {S,v)-l-1 (pela igualdade (l)) = ôf,(S,v)-2,
contrariando a hipótese de õr(s,v)< ôf(S,v). Assim, concluiu-se que a suposição de que tal vértice v existe
é incorrecta. ■
Teorema 5.5.4.7: Se o algoritmo de Edmonds - Karp for executado usando um fluxo / numa rede N, com fonte S e destino T, então o número total de aumentos de fluxo executados é no máximo o(VE).
Antes de provar este teorema introduza-se a noção de aresta crítica.
Definição 5.5.4.8: Diz-se que uma aresta é crítica numa rede residual se num caminho que aumenta o fluxo
P, a capacidade residual de P é igual à capacidade residual da aresta.
Demonstração do Teorema 5.5.4.7:
Depois de se ter aumentado o fluxo ao longo de um caminho que aumenta o fluxo, qualquer aresta crítica no caminho desaparece da rede residual. Além disso, pelo menos uma aresta em qualquer caminho que aumenta o fluxo deve ser crítica. Mostra-se seguidamente que cada uma das \E\ arestas pode tornar-se crítica no máximo
\v\
— - 1 vezes. 2
Sejam u e v dois vértices ligados por uma aresta de E. Sabendo que os caminhos que aumentam o fluxo
são os caminhos mais curtos, quando a aresta uv é crítica pela primeira vez tem-se que:
õ
f(s,v) = ô
f(s,u)+\. (3)
Uma vez que o fluxo é aumentado, a aresta uv desaparece da rede residual, não aparecendo mais até que o fluxo desde u até v seja diminuído, o que acontecerá se vu aparecer num caminho que aumenta o fluxo. Se
/ ' for o fluxo da rede N quando tal acontece (ou seja, quando vu se torna crítica), então:
ô
r{s,u) = ô
f.(s,v)+l.
Tendo em conta que ôf(s,v)<ôf,(s,v) pelo Lema 5.5.4.6 tem-se que:
ôr{s,u) = ôf.(s,v)+\
^ Sf {S,v)+1 (pela desigualdade do Lema 5.5.4.6)
= ^ ( 5 ^ ) + 1 + 1 (pela igualdade (3))
= õf{s,u)+2.
Consequentemente, a partir do momento em que uv se torna crítica até ao momento em que se torna crítica outra vez, a distância de u a partir da origem aumenta pelo menos em 2. A distância de u, desde a origem, é inicialmente pelo menos 0. Os vértices intermédios num caminho mais curto desde S até u não podem conter S, u ou T, uma vez que uv no caminho crítico implica u * T, Então, até u se tornar inacessível a partir da origem, se isso acontecer a distância será no máximo \v\-2. Deste modo, a aresta uv
tomar-se-á crítica pelo menos — — = — - 1 vezes. Como existem O(E) pares de vértices que podem ter entre eles uma aresta numa rede residual, o número total de arestas críticas durante a execução do algoritmo de Edmonds - Karp será O(VE). Cada caminho que aumenta o fluxo terá pelo menos uma aresta crítica e o teorema decorre. ■
Como cada iteração do algoritmo de Ford - Fulkerson pode ser executada em tempo O(E) , quando o caminho que aumenta o fluxo é encontrado por uma procura BFS, o tempo de execução do algoritmo de Edmonds - Karp será oi^E2 ).
A sequência de acontecimentos considerada no algoritmo de Edmonds - Karp é:
fluxo / -> rede residual -» procura BFS -> caminho que aumenta o fluxo P -> novo fluxo / ' - > -> nova rede residual -> nova procura BFS -> novo caminho que aumenta o fluxo P '.
6. Demonstração do Teorema de Menger
Nesta secção demonstram-se as diversas formas do Teorema de Menger, usando o Teorema do Fluxo Máximo e Corte Mínimo. Comece-se por recordar este último teorema.
Teorema 5.3.14: (Teorema do Fluxo Máximo e Corte Mínimo) Em qualquer rede, o valor do fluxo máximo é igual à capacidade do corte mínimo.
Começa-se por demonstrar o Teorema de Menger para digrafos na forma de arcos.
Teorema 3.3.3: TEOREMA DE MENGER para digrafos (forma de arcos) Seja D um digrafo conexo e sejam
set vértices de D. O número máximo de caminhos - st de arcos disjuntos é igual ao número mínimo de arcos que separam s de t.
Demonstração:
Se existem k caminhos - st de arcos disjuntos, o número minimo de arcos que podem ser removidos tal que t não fique alcançável através de 5 é obviamente k. Assuma-se que existe um conjunto de k arcos no qual a sua remoção leva a que não existam caminhos de 5 para t e que exista um caminho de 5 para / obtido pela remoção de qualquer conjunto de k-\ arcos. Suponha-se que a capacidade de cada arco é 1. Deste modo, a capacidade do corte mínimo é k, logo, pelo Teorema do Fluxo Máximo e Corte Minimo, o valor do fluxo máximo é também k.
Use-se indução sobre k para mostrar que existem k caminhos de arcos disjuntos da fonte para o destino. Seja / o conjunto de todos os números positivos n tais que, se existe um fluxo de valor n, então existem n caminhos - st de arcos disjuntos. Claro que l e / , pois tem de existir pelos menos um caminho que una s a
t. Suponha-se que (k-\)e I e que o fluxo tem valor k . Então existe um caminho P de s para / ao longo
do qual um fluxo de uma unidade pode ser enviado. Se se removerem todos os arcos pertencentes a P,o valor do fluxo da rede resultante é {k-l). Pela hipótese de indução, existem (k-\) caminhos - st de arcos disjuntos. Juntando esses (k-\) caminhos com o caminho P, forma-se um conjunto de k caminhos de arcos disjuntos. Assim, kel. Logo, existem k caminhos de arcos disjuntos da fonte para o destino. ■
Teorema 3.2.4: TEOREMA DE MENGER para grafos (forma de arestas) Seja G um grafo conexo e sejam s e / vértices de G. O número máximo de caminhos - st de arestas disjuntas é igual ao número mínimo de arestas que separam s de t.
Demonstração:
Seja G um grafo conexo. Construa-se o digrafo associado D(G) substituindo cada aresta do grafo por
dois arcos, um em cada direcção. Apaguem-se todos os arcos dirigidos que entram em s e todos os arcos dirigidos que saem de t. O resultado será o digrafo G ' :
L > L
í>
Grafo G Digrafo D(G) Digrafo G '
Existe uma correspondência entre o conjunto dos caminhos dirigidos de s para t em G ' e 0 conjunto dos caminhos 5 e / e m G . Deste modo, o teorema decorre como consequência do Teorema de Menger para digrafos (forma de arcos), uma vez que:
o número máximo de caminhos - st de o número mínimo de arcos que separam 5 de arcos disjuntos em G' t em G',
e então:
o número máximo de caminhos - st de o número mínimo de arestas que separam s arestas disjuntas em G de t em G ,
como pretendido. ■
Teorema 3.3.7: TEOREMA DE MENGER para digrafos (forma de vértices) Seja D um digrafo conexo e sejam s e t vértices não adjacentes de D. O número máximo de caminhos - st de vértices disjuntos é igual
ao número mínimo de vértices que separam s de t.
Demonstração:
Seja D um digrafo conexo. Construa-se um outro digrafo associado D ', substituindo cada vértice v de
D (diferentes de s e t ) por dois vértices v, e v2 unidos por um arco (repare-se que fazer esta transformação
é o mesmo que afirmar que a rede tem restrições de capacidades nos vértices). Esquematizando:
i=>
Digrafo D'
Digrafo D
Todos os arcos dirigidos em D que entram num vértice v transformam-se em arcos dirigidos em D' que entram num vértice v, e todos os arcos dirigidos de D que saem de v transformam-se em arcos dirigidos de
D' que saem de um vértice v2.
Não é difícil ver que dois ou mais caminhos - st em D são vértices disjuntos, se e só se os seus correspondentes caminhos- st em D' são arcos disjuntos. Aplicando o Teorema de Menger para digrafos na forma de arcos em D', obtém-se o Teorema de Menger para digrafos na forma de vértices para D. m
Teorema 3.3.4: TEOREMA DE MENGER para grafos (forma de vértices) Seja G um grafo conexo e sejam
set vértices não adjacentes de G . O número máximo de caminhos - st de vértices disjuntos é igual ao número minimo de vértices que separam s de t.
Demonstração:
Seja G um grafo conexo construa-se o digrafo associado D(G) , substituindo cada aresta do grafo por
dois arcos, um em cada direcção. Apaguem-se todos os arcos dirigidos que entram em s e todos os arcos dirigidos que saem de t. O resultado será o digrafo G '. Existe uma correspondência entre o conjunto dos caminhos dirigidos de s para t em G ' e o conjunto dos caminhos s e / em G. Deste modo, o teorema decorre como consequência do Teorema de Menger para digrafos (forma de vértices), analogamente ao que foi visto anteriormente para o Teorema de Menger para grafos (forma de arestas) que resulta do Teorema de Menger para digrafos (forma de arcos). ■
7. Conclusão
Como vimos existem diversos problemas que podem ser modelados como um problema de fluxo máximo, abstraindo-se dos detalhes. Os métodos de resolução de problemas aqui apresentados têm uma quantidade muito grande de aplicação, podendo ser utilizados em diversas situações, reduzindo o problema inicial ao problema do fluxo máximo.
Bibliografia
[l] ALDOUS, J. & WILSON, R. (2000). Graphs and applications: an introductory approach. London. Springer.
[2] BONDY, J. & MURTY, U. (1978). Graph theory with applications. London. The Macmillian Press LTD.
[3] BUCKLEY, F. & LEWINTER, M. (2003). A friendly introduction to graph theory. New Jersey. Prentice Hall.
[4] CLARK, J. & HOLTON, D. (1991). A first look at graph theory. Singapore. World Scientific.
[5] CORMEN, T., LEISERSON, C, RIVEST, R. & STEIN, C. (2001). Introduction to algorithms. London. McGraw-Hill Book Company.
[6] GROSS, J. & YELLEN, J. (1999). Graph theory and its applications. Boca Raton. CRC Press.
[7] GROSS, J. & YELLEN, J. (2004). Handbook of Graph Theory. Boca Raton. CRC Press.
[8] JUNGNICKEL, D. (1999). Graphs, networks and algorithms. Berlin. Springer.
[9] THE OPEN UNIVERSITY (2003). Networks, Vol. 1: Networks Flows. Milton Keyes. The Open University.
[lO] THE OPEN UNIVERSITY (2005). Graphs, Vol. 4: Graphs and computing. Milton Keyes. The Open University.