Académique Documents
Professionnel Documents
Culture Documents
UFABC
Definição do Problema
12 12/12
v1 v3 v1 v3
16 20 11/16 15/20
4/9
s 10 4 9 7 t s 10 1/4 7/7 t
13 v2 v4 4 8/13 v2 v4 4/4
14 11/14
Algoritmo de Ford-Fulkerson (1956)
12 0/12
v1 v3 0/16
v1 v3 0/20
16 20
0/9
s 10 4 9 7 t s 0/10 0/4 0/7 t
13 v2 v4 4 0/13 v2 v4 0/4
14 0/14
Algoritmo de Ford-Fulkerson
12 4/12
v1 v3 v1 v3
16 20 4/16 20
4/9
s 10 4 9 7 t s 10 4 7 t
13 v2 v4 4 13 v2 v4 4/4
14 4/14
Algoritmo de Ford-Fulkerson
8 4/12
v1 v3 v1 v3
12 4 20 11/16 7/20
4 4/9
5 4 7
s 10 4 t s 7/10 4 7/7 t
13 v2 4 v4 4 13 v2 v4 4/4
10 11/14
Algoritmo de Ford-Fulkerson
8 12/12
v1 v3 v1 v3
5 4 13 11/16 15/20
11 7 4/9
5 4 7
s 3 11 t s 10 1/4 7/7 t
13 v2 11 v4 4 8/13 v2 v4 4/4
3 11/14
Algoritmo de Ford-Fulkerson
12 12/12
v1 v3 v1 v3
5 5 11/16 19/20
11 15 9
5 4 7
s 11 3 t s 10 1/4 7/7 t
8
5 v2 11 v4 4 12/13 v2 v4 4/4
3 11/14
Algoritmo de Ford-Fulkerson
12 12/12
v1 v3 v1 v3
5 1 11/16 19/20
11 9 19 9
s 11 3 7 t s 10 1/4 7/7 t
12
1 v2 11 v4 4 12/13 v2 v4 4/4
3 11/14
Algoritmo de Ford-Fulkerson
1 Ford-Fulkerson(G,s,t):
2 inicializar fluxo f como 0
3 enquanto ∃ caminho aumentante p faça
4 ampliar fluxo f ao longo de p
5 retorne f
Algoritmo de Ford-Fulkerson
1 Ford-Fulkerson(G,s,t):
2 para cada (u, v ) ∈ E faça
3 f [u, v ] = 0
4 f [v , u] = 0
5 enquanto ∃ caminho aumentante p de s para t em Gf
tal que cf (u, v ) > 0 para toda aresta (u, v ) em p faça
6 cf (p) := min{cf (u, v )|(u, v ) ∈ p}
7 para cada (u, v ) ∈ p faça
8 f [u, v ] = f [u, v ] + cf (p)
9 f [v , u] = f [v , u] − cf (p)
Algoritmo de Ford-Fulkerson
• Tempo de execução:
• usando BFS ou DFS, é possível encontrar caminho
aumentante em O(n + m);
• cada caminho encontrado resulta em novo fluxo a ser
acrescentado na rede;
• como os incrementos de fluxo são sempre ≥ 1, o algoritmo
tem tempo de execução O(m · |f |);