Algoritmos para Grafos, via Sedgewick  |  Índice remissivo

Fluxo máximo e corte mínimo

Esta página mostra que o algoritmo de Ford e Fulkerson de fato resolve o problema do fluxo máximo.  Assim, prova o célebre Teorema do Fluxo Máximo e Corte Mínimo.  (O teorema foi publicado em 1956 por Ford e Fulkerson e também, no mesmo ano, por Elias, Feinstein e Shannon.)

[A página é um resumo de parte da seção 22.2 (Augmenting-Path Maxflow Algorithms) do livro de Sedgewick.]

Cortes e sua capacidade

Dada um digrafo com vértice inicial s e vértice final t, um  corte  (= cut)  é a união dos leques de saída e entrada de algum conjunto S de vértices que separa s de t, ou seja,

contém s mas não contém t.

Diremos que o conjunto S é a margem s ou lado s do corte. Da mesma forma, diremos que o complemento S de S é a margem t ou lado t do corte.

Às vezes é conveniente representar um corte pela expressão  (S,T) ,  sendo S a lado s do corte e T é a lado t do corte. (É claro que (S,T) é uma partição  do conjunto de vértices do digrafo.)  Um arco de um tal corte (S,T) é direto se vai de S para T e é inverso se vai de T para S.

Numa rede,  a capacidade  de um corte é a soma das capacidades dos arcos diretos do corte.  A expressão "corte mínimo" é uma abreviatura de "corte de capacidade mínima" ou até de "corte de capacidade mínima dentre os que separam o vértice inicial do vértice final".

Sedgewick-part5-java/flow-fig-22-6-a.png

Exemplo A.  Considere a rede abaixo, com vértice inicial 0 e vértice final 5[Este exemplo é cópia da figura 22.16 de Sedgewick.)

     0-1 0-2 1-3 1-4 2-3 2-4 3-5 4-5 
     2   3   3   1   1   1   2   3  

A tabela abaixo lista todos os cortes que separam 0 de 5. Em cada linha temos um corte. A primeira coluna dá o lado 0 do corte, a segunda dá o lado 5 do corte, a terceira dá os arcos diretos do corte, a quarta dá os arcos inversos, e a última dá a capacidade do corte.  Os cortes mínimos têm capacidade 4.

     0     1 2 3 4 5    0-1 0-2                               5  
     0 1     2 3 4 5    0-2 1-3 1-4                           7
     0 2     1 3 4 5    0-1 2-3 2-4                           4
     0 3     1 2 4 5    0-1 0-2 3-5        1-3 2-3            7
     0 4     1 2 3 5    0-1 0-2 4-5        1-4 2-4            8
     0 1 2     3 4 5    1-3 1-4 2-3 2-4                       6
     0 1 3     2 4 5    0-2 1-4 3-5        2-3                6
     0 1 4     2 3 5    0-2 1-3 4-5        2-4                9
     0 2 3     1 4 5    0-1 2-4 3-5        1-3                5
     0 2 4     1 3 5    0-1 2-3 4-5        1-4                6
     0 3 4     1 2 5    0-1 0-2            1-3 1-4 2-3 2-4    5
     0 1 2 3     4 5    1-4 2-4 3-5                           4
     0 1 2 4     3 5    1-3 4-5                               6
     0 2 3 4     1 5    0-1 3-5 4-5        1-3 1-4            7
     0 1 2 3 4     5    3-5 4-5                               5

(A lista está completa? Falta algo?)

Exercícios 1

  1. [Sedgewick 22.22]  Mostre, no estilo do exemplo A, todos os cortes na rede abaixo, que tem vértice inicial 0 e vértice final 5. Para cada corte, liste os arcos diretos e os inversos, bem como a capacidade do corte. 
          0-1 0-2 0-3 1-2 1-3 1-4 2-4 2-5 3-4 3-5 4-5 
          2   3   2   1   1   1   1   2   2   3   2  
    

Cortes limitam fluxo

Suponha dada uma rede (G, s, t, c).  A capacidade dos cortes que separam s de t limita a intensidade dos fluxos:

Delimitação Superior dos Fluxos [Property 22.4 Sedgewick]:  Em qualquer rede (G, s, t, c),  para todo fluxo que respeita as capacidades e para todo corte que separa s de t, a intensidade do fluxo é menor que ou igual à capacidade do corte.

Essa propriedade pode ser informalmente resumida pela seguinte expressão:  intensidade (fluxo) ≤ capacidade (corte) para todo fluxo e todo corte.  Ela decorre imediatamente da propriedade dos saldos.

Uma consequência importante dessa propriedade:  Se um fluxo f respeita as capacidades e tem intensidade igual à capacidade de algum corte (S,T) então f é um fluxo de intensidade máxima. Um tal corte é, portanto, um certificado da maximalidade do fluxo.  (E, a propósito, f é um certificado da minimalidade do corte (S,T).)

Exemplo B.  Considere a rede abaixo, com vértice inicial 0 e vértice final 5. (Trata-se da mesma rede do exemplo A.)  A segunda linha dá as capacidades dos arcos e a terceira linha dá um fluxo que respeita as capacidades.

     0-1 0-2 1-3 1-4 2-3 2-4 3-5 4-5 
     2   3   3   1   1   1   2   3  
     2   2   1   1   1   1   2   2 

Dê um corte que corte que certifique a maximalidade do fluxo.

Exercícios 2

  1. [Sedgewick 22.23 modificado]  Considere a rede abaixo, com vértice inicial 0 e vértice final 5.  Encontre um corte de capacidade mínima na rede. Mostre também um corte de capacidade não mínima. Encontre um fluxo máximo dentre os que respeitam as capacidades. Mostre duas diferentes sequências de pseudocaminhos de aumento que levam a um fluxo máximo. 
          0-1 0-2 0-3 1-3 1-4 2-1 2-5 3-4 3-5 4-2 4-5 
          2   3   2   1   1   1   2   2   3   1   2 
    
  2. Prove a Delimitação Superior dos Fluxos dada acima.

Análise do algoritmo dos pseudocaminhos de aumento

Quando discutimos o algoritmo dos pseudocaminhos de aumento, omitimos a prova de sua correção.  É verdade que aquele algoritmo resolve o Problema do Fluxo Máximo?

Para mostrar que isso é verdade, basta provar o seguinte fato:  se não existe um pseudocaminho de aumento em relação a um dado fluxo f então f tem intensidade máxima.  Eis a prova desse fato [veja propriedade 22.5 Sedgewick]:

Suspenda, temporariamente, a cláusula da definição de pseudocaminho de aumento que exige que o pseudocaminho termine em t.  Seja  S  o conjunto de todos os vértices que são término de um pseudocaminho de aumento.  É claro que s está em S.  Seja  T  o conjunto de todos os demais vértices da rede.  O vértice t está em T pois, por hipótese, não existe pseudocaminho de aumento que termine em t.  Portanto, o corte (S,T) separa s de t.  Todos os arcos diretos desse corte estão cheios e todos os arcos inversos estão vazios (por que?).  Portanto, o saldo de f em S é igual à capacidade do corte.

Mas o saldo de f em S é igual à intensidade do fluxo, conforme a Propriedade dos Saldos.  Como não existe fluxo de intensidade maior que a capacidade do corte (S,T), conforme a Delimitação Superior dos Fluxos, nosso fluxo f tem intensidade máxima!

Essa análise do algoritmo dos pseudocaminhos de aumento prova o seguinte teorema (compare com a delimitação superior dos fluxos dada acima):

Teorema do Fluxo Máximo e Corte Mínimo [Maxflow-mincut Theorem, Property 22.5 Sedgewick]:  Em qualquer rede (G, s, t, c),  a intensidade de um fluxo máximo que respeita as capacidades é igual à capacidade de um corte mínimo que separa s de t.

O teorema pode ser informalmente resumido pela seguinte expressão:  max intensidade (fluxo) = min capacidade (corte).  Diz-se que esse teorema estabelece uma "identidade minimax".

Exemplo C.  Considere a rede abaixo, com vértice inicial 0 e vértice final 5. [Este exemplo é cópia da figura 22.14 de Sedgewick.]

     0-1 0-2 1-3 1-4 2-3 2-4 3-5 4-5 
     2   3   3   1   1   1   2   3  

Eis um fluxo que respeita as capacidades:

     0-1 0-2 1-3 1-4 2-3 2-4 3-5 4-5 
     2   2   2   1   1   1   2   2

Eis um corte que separa 0 de 5:

     0 2       1 3 4 5 

A intensidade do fluxo é 4 e a capacidade do corte é 4.  Portanto, o fluxo é máximo e o corte é mínimo.  (Exercício: encontre outro corte mínimo.)

Exercícios 3

  1. A tabela abaixo define uma rede com fluxo (na terceira linha) que respeita as capacidades.  Qual o vértice inicial e o final?  Existe pseudocaminho de aumento para f?  Exiba um fluxo máximo e um corte mínimo.  Qual a capacidade do corte?
          0-1 0-4 1-5 2-0 2-3 2-4 4-3 5-0 5-2 
          1   2   4   2   2   1   2   2   1 
          0   2   2   1   0   0   2   1   1
    

Validated by HTML Validator (based on Tidy) Valid HTML 4.01 Strict Valid CSS!