Escolar Documentos
Profissional Documentos
Cultura Documentos
Máximo
Exemplos de Aplicações:
1)Maximizar o fluxo de uma rede de distribuição (suprimentos) de uma
companhia a partir de suas fábricas (fornecedores) para os seus (suas)
clientes (fábricas).
2)Maximizar o fluxo de óleo (água) através de um sistema de oleodutos
(aquedutos).
3)Maximizar o fluxo de veículos através de uma rede de transporte.
Algoritmo de Ford-Fulkerson
s = origem, t = destino, P = caminho, f = fluxo total, fij = fluxo do
arco i para o arco j, cij = capacidade de fluxo do arco i para o arco j.
1. Designar um fluxo inicial fij (por exemplo, fij = 0, para todos os
arcos). Compute f.
2. Rotular o nó 1 (s) por ∅. Marque os outros vértices como “não-
rotulados”.
⎧⎪∆1 j se i = 1
∆ ij = c ij − f ij ∆j = ⎨
e
( )
⎪⎩min ∆ i , ∆ ij se i > 1
e rotular j como um rótulo “para frente” (i+,∆j);
ou se fji>0, computar ∆j = min (∆i,fji) e rotular j como um rótulo
“para trás” (i-,∆j);
Se não existir nenhum j, então SAI f. Pare. (f é o fluxo máximo).
4. Repita o passo 3 até o nó destino (t) ser alcançado (isto fornece um
fluxo sobre um Caminho de Aumento)
Se é impossível alcançar o destino, então SAI f. Pare (f é o fluxo
máximo).
Fernando Nogueira Fluxo Máximo 8
5. Determine o caminho P usando os rótulos.
6. Aumente o fluxo existente em P por ∆t. Faça f = f + ∆t.
7. Remover os rótulos dos nós 2, 3,..., t. Volte para o passo 3.
Obs: dever-se utilizar BFS (Breadth First Search) que foi sugerido
para ser utilizado neste algoritmo por Edmonds & Karp em 1972. A
técnica BFS, neste algoritmo, consiste em, antes de scannear um nó
i, scannear todos os nós que foram rotulados antes de i.
O próximo exemplo mostra a execução deste algoritmo para o
problema de maximizar o fluxo de bondes nas rodovias do Parque
Seervada.
O fluxo inicial adotado foi zero.