• Nenhum resultado encontrado

Problema do Fluxo Máximo

N/A
N/A
Protected

Academic year: 2021

Share "Problema do Fluxo Máximo"

Copied!
14
0
0

Texto

(1)

Problema do Fluxo Máximo

Aulas 21 e 22

2

Conteúdo

Conteúdo.

„ Problema do Fluxo Máximo. „ Problema do Corte Mínimo. „ Teorema Max-fluxo min-corte „ Algoritmo de caminho aumentante. „ capacidade-escala.

„ Caminho aumentante Mínimo.

3

„ rede reliability. „ Segurança de dados

estatísticos.

„ Computação Distribuída. „ Egalitarian stable matching. „ Muito mais . . .

Fluxo Máximo e Corte Mínimo

Fluxo Máximo e Corte Mínimo.

„ Dois riquíssimos problemas algoritmicos „ Problema clássico em otimização combinatória. „ Dualidade matemática. Aplicações / reduções. „ Conectividade em redes. „ Emparelhamento bipartido. „ Data mining. „ Open-pit mining. „ Escalonamento de vôos. „ Processamento de imagens. 4

Rede de Fluxo Máximo: G = (V, E, s, t, u) . „ (V, E) = Grafo dirigido, sem arcos paralelos „ Dois nós distintos: s = source, t = sink. „ u(e) = capacidade do arco e.

Rede de Fluxo Máximo

Capacidade s 2 3 4 5 6 7 t 15 5 30 15 10 8 15 9 6 10 10 10 15 4 4

(2)

5

s-t fluxoé uma função f: E → ℜ satisfazendo:

„ Para cada e ∈ E: 0 ≤ f(e) ≤ u(e) (capacidade)

„ Para cada v ∈ V – {s, t}: (conservação)

Fluxos

= v e v e e f e f of out to in ) ( ) ( s 2 3 4 5 6 7 t 15 5 30 15 10 8 15 9 6 10 10 10 15 4 4 4 0 0 0 0 0 0 0 4 4 0 4 0 0 0 Capacidade Fluxo ∑ = ∑ ∈ E w v w v e w v f e f ) , ( : of out ) , ( : ) ( ∑ = ∑ ∈ E v w w v e v w f e f ) , ( : to in ) , ( : ) ( 6

s-t fluxoé uma função f: E → ℜ satisfazendo:

„ para cada e ∈ E: 0 ≤ f(e) ≤ u(e) (capacidade)

„ para cada v ∈ V – {s, t}: (conservação)

Fluxo Máximo: encontrar um s-t fluxo que maximiza o fluxo que sai da fonte.

Fluxos

s 2 3 4 5 6 7 t 15 5 30 15 10 8 15 9 6 10 10 10 15 4 4 4 0 0 0 0 0 0 0 4 4 0 4 0 Valor = 4

= s e e f f of out ) ( 0 0 capacidade fluxo

= v e v e e f e f of out to in ) ( ) ( 7

s-t fluxoé uma função f: E → ℜ satisfazendo:

„ para cada e ∈ E: 0 ≤ f(e) ≤ u(e) (capacidade)

„ para cada v ∈ V – {s, t}: (conservação)

Fluxo Máximo: encontrar um s-t fluxo que maximiza o fluxo que sai da fonte.

Fluxos

s 2 3 4 5 6 7 t 15 5 30 15 10 8 15 9 6 10 10 10 15 4 4 10 6 6 11 11 1 10 3 8 8 0 4 0 valor = 24 0 0 capacidade fluxo

= v e v e e f e f of out to in ) ( ) ( 8

An s-t fluxois a function f: E → ℜ that satisfies:

„ para cada e ∈ E: 0 ≤ f(e) ≤ u(e) (capacidade)

„ para cada v ∈ V – {s, t}: (conservação)

Fluxo Máximo: encontrar um s-t fluxo que maximiza o fluxo que sai da fonte.

Fluxos

s 2 3 4 5 6 7 t 15 5 30 15 10 8 15 9 6 10 10 10 15 4 4 10 9 9 14 14 4 10 4 8 9 1 0 0 valor = 28 0 0 capacid ade fluxo

= v e v e e f e f of out to in ) ( ) (

(3)

9

Redes

comunicação Rede telefone, computador, satélite Nós Arcos

cabos, fibra ótica, microondas

Fluxo voz, video, pacotes circuitos portas, registradores,

processodores fios

corrente elétrica

mecânica junções estacas, molas energia

hidráulica reservatórios, estações

de tratamento canos fluído, óleo

finanças ações, dinheiro transações dinheiro

transporte aeroportos, intersecção de ruas estradas, rotas aéreas vôos, veículos, passageiros

química locais limites energia

10

s-t corteé uma partição de nós (S, T) tal que s ∈ S, t ∈ T. „ capacidadede um s-t corte (S, T) é:

s-t Corte Mínimo: Encontrar um s-t corte de capacidade mínima.

Cortes

∈ ∈ ∈ = T w S vvw E S e w v u e u , ) , ( of out ). , ( : ) ( s 2 3 4 5 6 7 t 15 5 30 15 10 8 15 9 6 10 10 10 15 4 4 capacidade = 30 11

s-t corteé uma partição de nós (S, T) tal que s ∈ S, t ∈ T. „ capacidadede um s-t corte (S, T) é:

s-t Corte Mínimo: Encontrar um s-t corte de capacidade mínima.

Cortes

s 2 3 4 5 6 7 t 15 5 30 15 10 8 15 9 6 10 10 10 15 4 4 capacidade = 62

∈ ∈ ∈ = T w S vvw E S e w v u e u , ) , ( of out ). , ( : ) ( 12

s-t corteé uma partição de nós (S, T) tal que s ∈ S, t ∈ T. „ capacidadede um s-t corte (S, T) é:

s-t Corte Mínimo: Encontrar um s-t corte de capacidade mínima.

Cortes

s 2 3 4 5 6 7 t 15 5 30 15 10 8 15 9 6 10 10 10 15 4 4 capacidade = 28

∈ ∈ ∈ = T w S vvw E S e w v u e u , ) , ( of out ). , ( : ) (

(4)

13

L1.Seja f um fluxo, e (S, T) um corte. Então, o fluxo enviado através do corte é igual a quantidade chegando ab t.

Fluxos e Cortes

s 2 3 4 5 6 7 t 15 5 30 15 10 8 15 9 6 10 10 10 15 4 4 f e f e f e f s e S e S e = = −

of out to in of out ) ( ) ( ) ( valor = 24 10 6 6 10 10 0 10 4 8 8 0 4 0 0 0 14 10 6 6 10 10 0 10 4 8 8 0 4 0 0 0

L1.Seja f um fluxo, e (S, T) um corte. Então, o fluxo enviado através do corte é igual a quantidade chegando ab t.

Fluxos e Cortes

s 2 3 4 5 6 7 t 15 5 30 15 10 8 15 9 6 10 10 10 15 4 4 f e f e f e f s e S e S e = = −

of out to in of out ) ( ) ( ) ( valor = 24 15 10 6 6 10 10 0 10 4 8 8 0 4 0 0

L1.Seja f um fluxo, e (S, T) um corte. Então, o fluxo enviado através do corte é igual a quantidade chegando ab t.

Fluxos e Cortes

s 2 3 4 5 6 7 t 15 5 30 15 10 8 15 9 6 10 10 10 15 4 4 f e f e f e f s e S e S e = = −

of out to in of out ) ( ) ( ) ( valor = 24 0 16

Seja f um fluxo, e (S, T) um corte. Então, Prova por indução em |S|.

„ Caso Base: S = { s }.

„ Hípótese Indutiva: suponha que vale para |S| < k.

Considere um corte (S, T) with |S| = k

S = S' ∪ { v } para algum v ≠ s, t, |S' | = k-1 ⇒ cap(S', T') = | f |.

incluir v a S' aumenta a capacidade do corte por

Fluxos e Cortes

. ) ( ) ( to in of out

− = S e S e f e f e f 0 ) ( ) ( to in of out = −

v e v e e f e f s v t Depois s v t S' Antes S

(5)

17

L2.Seja f um fluxo, e (S, T) um corte. Então, | f | ≤ cap(S, T). Prova.

Corolário.Seja f um fluxo, e (S, T) um corte. Se |f| = cap(S, T), então f é um Fluxo Máximo e (S, T) de um Corte Mínimo.

Fluxos e Cortes

T) cap(S, ) ( ) ( ) ( ) ( of out of out to in of out = ≤ ≤ − =

S e S e S e S e e u e f e f e f f s t S T 7 6 8 4 18

Fluxo Máximo e Corte Mínimo

Corolário.Seja f um fluxo, e (S, T) um corte. Se |f| = cap(S, T), então f é um Fluxo Máximo e (S, T) é um Corte Mínimo.

s 2 3 4 5 6 7 t 15 5 30 15 10 8 15 9 6 10 10 10 15 4 4 10 9 9 15 15 4 10 4 8 9 1 0 0 fluxo valor = 28 0 0 corte capacidade = 28 19

Teorema Max-flow Min-cut

Teorema MAX-flow MIN-cut(Ford-Fulkerson, 1956):Qualquer rede, o valor do Fluxo Máximo é igual ao valor do corte mínimo.

„ “Boa caracterização." „ Prova IOU. s 2 3 4 5 6 7 t 15 5 30 15 10 8 15 9 6 10 10 10 15 4 4 10 9 9 15 15 4 10 4 8 9 1 0 0 fluxo valor = 28 0 0 corte capacidade = 28 20

Construindo um Algoritmo

Encontre um s-t caminho onde cada arco tem u(e) > f(e) e "aumente“ o fluxo ao longo do caminho.

s 4 2 5 3 t 4 0 0 0 0 0 0 4 0 4 4 fluxo valor = 0 10 13 10

(6)

21

Construindo um Algoritmo

Encontre um s-t caminho onde cada arco tem u(e) > f(e) e "aumente“ o fluxo ao longo do caminho.

„ Repita até não poder mais.

s 4 2 5 3 t 4 0 0 0 0 0 0 4 0 4 4 fluxo valor = 10 10 13 10 10 10 10 X X X 22

Construindo um Algoritmo

Encontre um s-t caminho onde cada arco tem u(e) > f(e) e "aumente“ o fluxo ao longo do caminho.

„ Repita até não poder mais. „ Algoritmo Greedy falha.

s 4 2 5 3 t 10 13 10 4 0 0 10 10 10 0 4 0 4 4 fluxo valor = 10 s 4 2 5 3 t 10 13 10 5 4 4 10 6 10 4 5 4 5 5 fluxo valor = 14 23

Arco Residual

Grafo original G = (V, E). „ fluxo f(e).

„ Arco e = (v, w) ∈ E.

Grafo Residual: Gf= (V, Ef).

„ Arcos Residuais e = (v, w) e eR= (w, v). „ “Desfaz" fluxo enviado.

v 17 w 6 capacidade fluxo v 11 w Capacidade Residual 6 Capacidade Residual 24

Grafo Residual e Caminho Aumentante

Grafo Residual : Gf= (V, Ef). „ Ef= {e : f(e) < u(e)} ∪ {eR: f(e) > 0}.

s 4 2 5 3 t 10 13 10 4 0 0 10 10 10 0 4 0 4 4 s 4 2 5 3 t 10 10 10 4 4 4 4 3 ⎩ ⎨ ⎧ ∈ ∈ − = E e E e e f e u e uf f(e) if R if ) ( ) ( ) ( G Gf

(7)

25

Caminho Aumentante

Caminho aumentante = Caminho no Grafo Residual.

s 4 2 5 3 t 10 13 10 4 0 0 10 10 10 0 4 0 4 4 s 4 2 5 3 t 10 10 10 4 4 4 4 3 G Gf 4 4 6 4 4 X X X X X 26

Caminho Aumentante

Caminho aumentante = Caminho no Grafo Residual. „ Fluxo Máximo ⇔ sem caminhos aumentantes ???

s 4 2 5 3 t 10 13 10 4 4 4 10 6 10 4 4 4 4 4 s 4 2 5 3 t 10 6 10 4 4 4 4 7 fluxo valor = 14 G Gf 27

Teorema Max-flow Min-cut

Teorema dos Caminhos Aumentantes(Ford-Fulkerson, 1956): U m fluxo f é Fluxo Máximo se e só sem não há caminhos aumentantes.

Teorema MAX-flow MIN-cut (Ford-Fulkerson, 1956):o valor do Fluxo Máximo é igual ao valor do corte mínimo.

Provamos ambos simultaneamente mostrando :

(i) f é um Fluxo Máximo.

(ii) Não há caminhos aumentantes relativos a f. (iii) Há um a corte (S, T) tal que |f| = cap(S, T).

28

Prova do Teorema Max-flow Min-cut

Provamos ambos simultaneamente mostrando :

(i) f é um Fluxo Máximo.

(ii) Não há caminhos aumentantes relativos a f. (iii) Há um a corte (S, T) tal que |f| = cap(S, T).

(i) ⇒ (ii)

„ Mostramos a contrapositiva.

„ Seja f um fluxo. Se há um caminho aumentante, então podemos aumentar f enviando fluxo ao longo do caminho.

(iii) ⇒ (i) „ Próximo slide. (iii) ⇒ (i)

(8)

29

Prova do Teorema Max-flow Min-cut

Provamos ambos simultaneamente mostrando :

(i) f é um Fluxo Máximo.

(ii) Não há caminhos aumentantes relativos a f. (iii) Há um a corte (S, T) tal que |f| = cap(S, T).

(ii) ⇒ (iii)

„ Seja f um fluxo sem caminhos aumentantes.

„ Seja S um conj. de vertices atingíveis de s no grafo residual.

claramente s ∈ S, e t ∉ S pela definição de f

T) (S, ) ( ) ( ) ( of out to in of out cap e u e f e f f S e S e S e = = − =

s t Rede Original S T 30

Algoritmo Caminho Aumentante

b ← bottleneck(P)

FOREACH e ∈ P

IF (e ∈ E) // arco indo

f(e) ← f(e) + b

ELSE // arco voltando f(eR) ← f(e) - b RETURN f Aumenta (f, P) FOREACH e ∈ E f(e) ← 0 Gf ← grafo residual

WHILE (houver caimho aumentante P)

f ← aumenta(f, P) atualiza Gf RETURN f FordFulkerson (V, E, s, t) 31

Tempo de execução

Suposição: todas as capacidades são inteiros entre 0 e U. Invariante: todo valor de fluxo f(e) e toda capacidade residual uf(e) permanece um inteiro durante o algoritmo.

Teorema: o algoritmo termina em no máximo | f * | ≤ nU iterações.

Corolário: se U = 1, então o algorithm é O(mn).

Teorema da integralidade: Se todas as capacidades são inteiras, então há um Fluxo Máximo f para o qual todo valor de fluxo f(e) é um inteiro.

Nota: o algoritmo pode não terminar em instâncias patológicas (com capacidades irracionais). Além disso, o valor de fluxo pode nem mesmo convergir para a resposta correta.

32 100 0 0 s 4 2 t 1 100 100 0 0 0

Escolha de Bons Caminhos Aumentantes

Tome cuidado na escolha dos caminhos aumentantes.

(9)

33 100 0 0 s 4 2 t 1 100 100 0 0 0

Escolha de Bons Caminhos Aumentantes

Tome cuidado na escolha dos caminhos aumentantes.

100 1 1 1 X X X 34 100 1 0 s 4 2 t 100 1 1 0

Escolha de Bons Caminhos Aumentantes

Tome cuidado na escolha dos caminhos aumentantes.

100 100 1 35 100 1 0 s 4 2 t 1 100 100 1 1 0

Escolha de Bons Caminhos Aumentantes

Tome cuidado na escolha dos caminhos aumentantes.

100 1 0 1 X X X 36 s 4 2 t 1 100 100 100 100 0 1 1 1 1

Escolha de Bons Caminhos Aumentantes

Tome cuidado na escolha dos caminhos aumentantes.

(10)

37

Escolha de Bons Caminhos Aumentantes

. Tome cuidado na escolha dos caminhos aumentantes „ Algumas escolhas levam a algoritmos exponenciais. „ Boas escolhas levam a algoritmos polinomiais. Objetivo: Escolher caminhos aumentantes tal que:

„ Escontre caminhos aumentantes eficientemente. „ Poucas iterações.

Edmonds-Karp (1972): Escolher caminho aumentante com „ Capacidade Máxima. (caminho gordo)

„ Capacidade suficientemente grande . (escala da capacidade) „ Menor número de arcos. (caminho mínimo)

38

Capacidade de Escala

Intuição: Escolher caminho de maior capacidade aumenta o fluxo na quantidade máxima possível.

„ Não precisa encontrar o caminho com a maior capacidade exata. „ Mantenha o parâmetro de escalaΔ.

„ Seja Gf(Δ) o subgrafo do grafo residual consistindo só de arcos com capacidade pelo menosΔ.

110 s 4 2 t 1 170 102 122 Gf 110 s 4 2 t 170 102 122 Gf(100) 39

Capacidade de Escala

Intuição: Escolher caminho de maior capacidade aumenta o fluxo na quantidade máxima possível.

„ Não precisa encontrar o caminho com a maior capacidade exata. „ Mantenha o parâmetro de escalaΔ.

„ Seja Gf(Δ) o subgrafo do grafo residual consistindo só de arcos com capacidade pelo menosΔ.

FOREACH e ∈ E, f(e) ← 0

Δ ← menor potência de 2 maior ou igual a U

WHILE (Δ ≥ 1)

Gf(Δ) ← Δ-grafo residual

WHILE (houver caminho aumentante P em Gf(Δ))

f ← aumenta(f, P) atualize Gf(Δ) Δ ← Δ / 2 RETURN f escalaMaxfluxo(V, E, s, t) 40

Capacidade de Escala: Análise

L1. Se todas as capacidades são inteiras, então durante o algoritmo, todo valor de fluxo e de capacidade residual permanecem inteiros.

„ Assim, Δ = 1 ⇒ Gf(Δ) = Gf, e no término f é um Fluxo Máximo. L2. O while externo repete 1 + ⎣log2 U⎦ vezes.

„ Inicialmente U ≤ Δ < 2U, e Δ diminui por um fator de 2 a cada iteração.

L3. Seja f o fluxo no final de uma fase de Δ-escala. Então o valor do fluxo máximo é no máximo | f | + m Δ.

L4. Há no máximo 2m aumentos por fase de escala. „ Seja f o fluxo no final da fase de escala anterior. „ L3 ⇒ |f*| ≤ | f | + m (2Δ).

„ Cada aumento em uma Δ-fase aumenta | f | de pelo menos Δ. Teorema. O algoritmo roda em tempo O(m2log (2U) ) .

(11)

41

Capacidade de Escala: Análise

L3. Seja f o fluxo no final de uma fase de Δ-escala. Então o valor do fluxo máximo é no máximo | f | + m Δ.

„ Mostramos que no final de umaΔ-fase, há um a corte (S, T) tal que cap(S, T) ≤ | f | + m Δ.

„ Escolha S para ser o conj. de nós atingíveis de s em Gf(Δ).

claramente s ∈ S, e t ∉ S pela definição de S

-T) cap(S, e u e u e f e f f S e S e S e S e S e S e S e = Δ − Δ − = Δ − Δ − ≥ − =

to in of out of out to in of out to in of out ) ( ) ) ( ( ) ( ) ( s t Rede Original S T 42

Escolha de Bons Caminho Aumentantes

. Tome cuidado na escolha dos caminhos aumentantes „ Algumas escolhas levam a algoritmos exponenciais. „ Boas escolhas levam a algoritmos polinomiais. Objetivo: Escolher caminhos aumentantes tal que:

„ Escontre caminhos aumentantes eficientemente. „ Poucas iterações.

Edmonds-Karp (1972): escolha caminho aumentante com „ Capacidade Máxima. (Caminho gordo)

„ Capacidade suficientemente grande. (escada de capacidade) „ Menor número de arcos. (menor caminho)

43

Menor caminho aumentante

Intuição: escolha o caminho via breadth first search. „ Fácil de implementar.

Podem implementar para ver!

„ Encontra caminhos aumentantes com menor número of arcos.

FOREACH e ∈ E

f(e) ← 0 Gf ← grafo residual

WHILE (houver caminho aumentante)

encontre um caminho P com o BFS f ← aumenta(f, P)

atualiza Gf

RETURN f

FewerAugmentingPath(V, E, s, t)

44

Menor caminho aumentante: Descrição da Análise

L1. Durante o algoritmo, o comprimento do menor caminho nunca diminui.

„ Prova a seguir.

L2. Depois de no máximo m aumentos de menores caminhos, o comprimento do menor caminho aumentante aumenta estritamente.

„ Prova a seguir.

Teorema. O algoritmo menor caminho aumentante rod em tempo O(m2n).

„ O(m+n) para encontrar o menor caminho aumentante via BFS. „ O(m) aumentos para caminhos de k arcos exatos.

„ Se há um caminho aumentante, ele é único. ⇒ 1 ≤ k < n

(12)

45

Menor caminho aumentante: Análise

Grafo Nível de (V, E, s).

„ para cada vértice v, definaλ(v) como o comprimento (número de arcos) do menor caminho de s a v.

„ LG= (V, EG) é subgrafo de G que contêm apenas os arcos (v,w) ∈ E com λ(w) = λ(v) + 1. s 2 3 5 6 t s 2 3 5 6 t λ = 0 λ = 1 λ = 2 λ = 3 LG: G: 46

Menor caminho aumentante: Análise

Grafo Nível de (V, E, s).

„ para cada vértice v, definaλ(v) como o comprimento (número de arcos) do menor caminho de s a v.

„ L = (V, F) é subgrafo de G que contêm apenas os arcos (v,w) ∈ E com λ(w) = λ(v) + 1.

„ Compute em tempo O(m+n) usando BFS, removendo arcos laterais e de volta.

„ P é um menor s-v caminho em G se e só se ele é um s-v caminho em L. s 2 3 5 6 t λ = 0 λ = 1 λ = 2 λ = 3 L: 47

Menor caminho aumentante: Análise

L1. Durante o algoritmo, o comprimento do menor caminho nunca diminui.

„ Sejam f e f' fluxos antes e depois de aumentar o menor. „ Sejam L e L' grafos níveis de Gfe Gf '

„ Apenas arcos de volta incluidos em Gf '

Caminhos com arcos voltando tem comprimento maior que o comprimento anterior s 2 3 5 6 t λ = 0 λ = 1 λ = 2 λ = 3 L s 2 3 5 6 t L' 48

Menor caminho aumentante: Análise

L2. Depois de no máximo m aumentos de menores caminhos, o comprimento do menor caminho aumentante aumenta estritamente.

„ Pelo menos um arco (o arco gargalo) é removido de L depois de cada aumento.

„ Nenhum novo arco é adicionado a L até que o comprimento do menor caminho cresça estritamente.

s 2 3 5 6 t λ = 0 λ = 1 λ = 2 λ = 3 L s 2 3 5 6 t L'

(13)

49

Menor caminho aumentante: Resumo da Análise

L1. Durante o algoritmo, o comprimento do menor caminho nunca diminui.

L2. Depois de no máximo m aumentos de menores caminhos, o comprimento do menor caminho aumentante aumenta estritamente. Teorema. O algoritmo menor caminho aumentante roda em tempo O(m2n).

„ O(m+n) para encontrar o menor caminho aumentante via BFS. „ O(m) aumentos para caminhos de exatamente k arcos. „ O(mn) aumentos.

Nota: Θ(mn) aumentos são necessários em algumas redes. „ Tente reduzir o tempo em cada aumento.

„ Árvore Dinâmicas ⇒ O(mn log n) Sleator-Tarjan, 1983 „ Idéia Simples ⇒ O(mn2)

50

Menor caminho aumentante: Versão Melhorada

Dois tipos de aumentos.

„ Aumento normal: Comprimento do menor caminho não muda. „ Aumento especial: comprimento do menor caminho cresce. L3. Grupo de aumentos normais tomam tempo O(mn).

„ Explicitamente mantenha o grafo nível - ele muda de no máximo 2n arcos depois de cada aumento normal.

„ Inicie em s, avance em um arco em LG até alcançar t ou não conseguir.

Se alcaçar t, aumente e delete pelo menos um arco

Se não conseguir, delete o nó

s 2 3 5 6 t λ = 0 λ = 1 λ = 2 λ = 3 LG 51

Menor caminho aumentante: Versão Melhorada

s 2 3 5 6 t LG s 2 3 5 6 t LG s 2 5 6 t LG aumenta aumenta delete 3 52

menor caminho aumentante: Versão Melhorada

s 2 5 6 t LG s 2 5 6 t LG

PARE: Comprimento do menor caminho deve ter crescido

(14)

53

menor caminho aumentante: Versão Melhorada

ARRAY pred[v ∈ V] LG ← grafo nível de Gf v ← s, pred[v] ← nil REPEAT WHILE (houver (v,w) ∈ LG) pred[w] ← v, v ← w IF (v = t)

P ← caminho def. por pred[] f ← aumenta(f, P) atualiza LG v ← s, pred[v] ← nil delete v de LG UNTIL (v = s) RETURN f AdvanceRetreat(V, E, f, s, t) avanço retrai aumenta 54

menor caminho aumentante: Versão Melhorada

Dois tipos de aumentos.

„ Aumento normal: Comprimento do menor caminho não muda. „ Aumento especial: comprimento do menor caminho cresce. L3. Grupo de aumentos normais tomam tempo O(mn).

„ Explicitamente mantenha o grafo nível - ele muda de no máximo 2n arcos depois de cada aumento normal.

„ Inicie em s, avance em um arco em LG até alcançar t ou não conseguir.

Se alcaçar t, aumente e delete pelo menos um arco

Se não conseguir, delete o nó

No máximo n avanços antes do evento acima Teorema. O Algoritmo roda em tempo O(mn2).

„ Tempo O(mn) entre aumentos especiais. „ No máximo n aumentos especiais.

55

Escolha de bons caminho aumentantes: Resumo

Os primeiros 4 supõe capacidades entre 0 e U.

Método Aumentos

Caminho aumentante nU

Capacidade Máxima m log U Capacidade de escala m log U

Menor caminho mn Tempo mnU m log U (m + n log n) m2 log U m2n

Menor caminho melhorado mn mn2

Capacidade de escala melhor m log U mn log U

56

Histórico

Dantzig Autor Simplex Método Tempo mn2U 1951 Ano

Ford, Fulkerson Caminho aumentante mnU 1955

Edmonds-Karp Menor caminho m2n

1970

Dinitz Menor caminho mn2

1970

Edmonds-Karp, Dinitz Capacidade de escala m2 log U 1972

Dinitz-Gabow Capacidade de escala mn log U 1973

Karzanov Prefluxo-push n3

1974

Sleator-Tarjan Árvore Dinâmica mn log n 1983

Goldberg-Tarjan FIFO prefluxo-push mn log (n2 / m) 1986

. . . . . . . . .

. . .

Goldberg-Rao Função Comprimento m3/2 log (n2 / m) log U mn2/3 log (n2 / m) log U 1997

Referências

Documentos relacionados

contingência, novidade imprevisível são as próprias marcas do tempo Encarando o espaço e o tempo sociais como realidades próprias, construídas pela posição relativa de uns

III Workshop do Projeto Dicionário Histórico do Português do Brasil 47 Exemplos de buscas (7) ● Sufixos ● Unitex : &lt;&lt;mente$&gt;&gt; ● Philologic: .*mente ● Resultados

Em Entre Douro e Minho e no Algarve a superfície total das explorações agrícolas ocupa cerca de 1/3 da área geográfica das regiões, sendo que a Beira Litoral é a

A existência da referida relação é obtida no contexto de um modelo pós-key- nesiano de crescimento a dois setores no qual se assume que (i) existe completa es- pecialização

Modeladora  –   Equipamento profissional para indústria alimentícia destinado à. modelar massas pela sua passagem entre

Na tentativa de suprir as necessidades e reforçar as decisões ma- ternas no que tange a aleitar, o Ministério da Saúde do Brasil lança mão de estratégias que visam à promoção,

O sêmen diluído foi submetido ao teste de termo resistência lento (TTR) e descongelado aos testes TTR, hiposmótico (HOST), supravital, teste com sondas fluorescentes e de

ROCHA PARA SOLTA-LA E FAÇA O DESLOCAMENTO DE MAIS VEZES, E SEM SOBRECARREGAR A MÁQUINA. USE APENAS O