Ata de aulade 13 de junho 2003Última alteração: 17/06/2003 Redator: Éric Hainer Ostroski |
Rede de Fluxo a cada iteração: |
Descrição da iteração: |
|
Este é o grafo inicial, como na figura
26.8(b) |
|
Todos os caminhos tem de capacidade
1 (colocado à direita da barra), e é atribuído 0 para
o fluxo (colocado à esquerda da barra) pois não existe caminho
algum percorrido nesse momento. |
|
É gerada então
a rede residual, indicando-se a capacidade restante em cada aresta, dada
pela subtração do fluxo utilizado (zero para todos num primeiro
momento) da capacidade inicial. Caminhos com peso nulo (0 - zero) de aresta não precisa ser representado. Os caminhos de retorno também devem ser gerados, indicando o fluxo que já foi utilizado. Eles são representados por uma aresta em direção oposta. (nesta etapa todas arestas de retorno são nulas, por isso não foram representadas) O menor caminho aumentante em ordem lexicográfica é indicado nesta rede. |
|
O caminho aumentante escolhido
tem o seu fluxo aumentado até a capacidade máxima possível,
que é o menor valor de aresta encontrado no caminho da fonte s
ao sumidouro t na rede residual. Continua-se considerando-se o valor mais a direita a capacidade da aresta e o valor mais a esquerda, o fluxo utilizado nessa aresta. Os valores intermediários ficam apenas como histórico das modificações feitas. |
|
Gera-se outra rede residual,
indicando-se a capacidade restante em cada aresta, dada pela subtração
do fluxo utilizado (zero para todos num primeiro momento) da capacidade inicial. Note que já existem arestas de retorno. O próximo caminho aumentante em ordem lexicográfica é indicado nesta rede. |
|
São atualizados os valores
dos fluxos no grafo inicial, somando-se o caminho aumentante. |
|
Continua-se gerando redes residuais
enquanto existir algum caminho da origem ao sumidouro. |
|
A rede de fluxo é atualizada
com o caminho aumentante encontrado. |
|
É gerada ainda a rede residual,
que nesse passo não possue qualquer caminho da origem ao sumidouro. Como não há caminho aumentante, conclui-se que o grafo obtido representa uma rede de fluxo máximo. |
|
Destaque dos caminhos aumentantes que geraram a rede
de fluxo máximo. |
Dado o grafo inicial, como na figura 26.8(b): - Cria-se uma tabela com a primeira coluna indicando as arestas, a segunda coluna as respectivas capacidades e as próximas colunas contendo as alterações das capacidades.
|
linha |
instrução |
explanação sobre a instrução |
1. |
incrementar a capacidade de (u,v) |
|
2. |
criar rede residual |
|
3. |
rodar BFS na rede residual; se encontrar
caminho aumentante, atualiza o fluxo; caso contrário, o fluxo
inicial continua sendo máximo |
Caso o fluxo aumente, será por no máximo 1
unidade, portanto basta procurar caminho aumentante uma vez só,
já que as capacidades são inteiras. |
linha |
instrução |
explanação sobre a instrução |
1. |
Se aresta não é saturada: |
Aresta saturada é aquela onde fluxo = capacidade. |
2. |
decrementar capacidade de
(u,v) |
|
3. |
retornar o fluxo original | O fluxo continua válido e o corte mínimo não diminuiu |
4. |
Senão |
|
5. |
considerando apenas
arestas com fluxo positivo, achar um caminho s-u
e um caminho v-t |
constrói caminho de fluxo positivo s-t que
contenha aresta (u,v). Tal caminho tem que existir pois passa
fluxo positivo por (u,v). |
6. |
decrementar fluxo dos caminhos
s-u, u-v e u-t |
Fluxo fica uma unidade menor |
7. |
decrementar capacidade
(u,v) e criar rede residual |
|
8. |
rodar BFS na rede
residual; se encontrar
caminho aumentante, atualiza o fluxo; caso contrário, o fluxo
inicial continua sendo máximo |
Procura ver se a unidade de fluxo decrementada pode fluir por outro caminho. |