• Nenhum resultado encontrado

Grafos-14

N/A
N/A
Protected

Academic year: 2021

Share "Grafos-14"

Copied!
41
0
0

Texto

(1)

Fluxo Máximo em Redes

(2)

Estrutura da Aula

1. Introdução

2. Método de Ford-Fulkerson

3. Rede Residual

(3)
(4)

Problema da Mina

Uma mina de carvão produz 12

toneladas de carvão por dia que precisam ser escoados para um porto usando a malha ferroviária disponível. O grafo a seguir

mostra a malha e a capacidade de cada trecho.

(5)

Problema da Mina

É possível escoar 12 toneladas por dia

da mina para o porto?

Senão, qual o máximo possível?

mina porto A B C 5 8 8 10 10 10

(6)

Fluxo Máximo em Redes

O Problema da Mina pode ser tratado como o

problema de achar o Fluxo Máximo

 O grafo é uma rede direcionada (=grafo

direcionado valorado)

Um vértice fonte: origem do fluxo

 Exemplo: a mina

Um vértice sumidouro: destino do fluxo

 Exemplo: o porto

(7)

Fluxo Máximo em Redes

No cálculo do fluxo, ignorar a

possibilidade de os vértices acumularem fluxo

 O fluxo que entra em um vértice é igual ao

que sai

Exceções são os vértices fonte (só sai) e o

(8)

Representação do Fluxo

Associar a cada aresta o seu fluxo real

(usado) seguido da sua capacidade (fluxo máximo)

 Inicialmente o fluxo real é nulo

mina porto A 0/5 0/8 0/10 0/10 0/10

(9)

Fluxo Máximo em Redes

Fluxo da rede (total)

 Fluxo saindo do vértice fonte, ou

 Fluxo entrando no vértice sumidouro

mina porto A B C 5/5 0/8 0/8 5/10 0/10 5/10

(10)

2. Método de

Ford-Fulkerson

(11)

Método de Ford-Fulkerson

Os algoritmos mais simples

baseiam-se no método de Ford-Fulkerson

Acha um caminho da fonte ao sumidouro,

passando por arestas com capacidade disponível

Chamado “caminho aumentante”

 Incrementa o fluxo da rede ao longo desse

caminho

Incremento é o peso da aresta de menor capacidade

disponível, ao longo do caminho

(12)

Método de Ford-Fulkerson

Não é bem um algoritmo, pois não especifica como achar o caminho, o

que pode ser feito de várias maneiras:

 Com uma pesquisa em profundidade

Com uma pesquisa em extensão

 Com o algoritmo de Dijkstra

(13)

Algoritmo de Edmonds-Karp

É um caso especial do método de

Ford-Fulkerson

O único detalhe específico é o

algoritmo para achar caminhos  Pesquisa em extensão!

Isso garante uma complexidade

(14)

Exemplo 1

Executar o algoritmo de Edmonds-Karp

 Pesquisa em extensão: qual o menor caminho em

número de arestas? mina porto A 0/5 0/8 0/10 0/10

(15)

Exemplo 1

1º caminho: mina→A→porto

 Aresta com capacidade mínima: mina→A

 Incrementa o fluxo de 5 ao longo do caminho

mina porto A C 5/5 0/8 0/8 0/10 5/10 0/10

aresta atingiu sua capacidade máxima

(16)

Exemplo 1

2º caminho: mina→B→A→porto

 Aresta com capacidade mínima: A→porto  Incrementa o fluxo de 5 mina porto A 5/5 5/8 0/10 10/10

(17)

Exemplo 1

3º caminho: mina→B→C→porto

 Aresta com capacidade mínima: mina→B  Incrementa o fluxo de 3 mina porto A C 5/5 8/8 5/8 0/10 10/10 3/10

(18)

“Correção de Fluxo”

Em alguns grafos, pode acontecer de

um caminho “mal escolhido” impedir a criação de outros caminhos

Nestes casos, o algoritmo precisa fazer

uma “correção” no fluxo

 Basta permitir que sejam traçados caminhos no

sentido contrário ao do fluxo de uma aresta

 Desfaz o fluxo estabelecido naquela aresta (mas não

(19)

Exemplo 2

Aplicando a pesquisa em extensão,

vários caminhos podem ser escolhidos  Vamos supor que o primeiro caminho escolhido seja

"fonte→A→D→sumidouro" fonte sumi. A B C 0/3 D 0/5 0/5 0/4 0/7

(20)

Exemplo 2

1º caminho: fonte→A→D→sumidouro

 Aresta de capacidade mínima: A→D  Aumenta o fluxo de 4

fonte A B

0/3

4/5 0/5

(21)

Exemplo 2

2º caminho: fonte→A→B→sumidouro

 Aresta de capacidade mínima: fonte→A  Aumenta o fluxo de 1 fonte sumi. A B C 0/3 D 5/5 1/5 4/4 1/7

(22)

Exemplo 2

Este é o fluxo máximo da rede?

 Não. O primeiro caminho escolhido “bloqueou" a

descoberta de um fluxo maior

Por isso, o algoritmo permite seguir no

contra-fluxo das arestas

 A "capacidade" da aresta no sentido inverso é dada

pelo valor do fluxo dela

 Segui-la no sentido inverso, desfaz o fluxo que passa

pela aresta

(23)

Exemplo 2

3º caminho: fonte→C→D→A→B

→sumid.

 Arestas de capacidade mínima: fonte→C e C→D

fonte sumi. A B C 0/3 D 5/5 1/5 4/4 1/7

(24)

Exemplo 2

3º caminho: fonte→C→D→A→B

→sumid.

 Arestas de capacidade mínima: fonte→C e C→D  Aumenta o fluxo de 3 fonte A B 3/3 5/5 4/5 1/4 4/7 desfez parte do fluxo desta aresta!

(25)

Rede Residual

Assim, para implementar o

método de Ford-Fulkerson, é

preciso representar o grafo com arestas tanto no sentido do fluxo como no sentido contrário

Isso é o que representa a rede

(26)
(27)

Rede Residual

Mostra apenas quanto ainda

resta da capacidade de cada aresta

 Por isso o nome “residual”

Para permitir desfazer um fluxo,

cria uma aresta no sentido contrário ao de cada fluxo estabelecido

(28)

Rede Residual

A rede residual consiste em

representar arestas assim:

 Na direção original da aresta, com o peso

dado pela diferença (capacidade – fluxo)

 Na direção contrária à original, com peso

dado pelo valor do fluxo atual

 Indica que pode desfazer esse fluxo

(29)

Rede Residual

No início, a rede residual é

idêntica ao grafo original

 Conseqüência da definição de rede residual

(slide anterior)

Vamos rever o exemplo 2 usando

(30)

Exemplo 2 (revisto)

Aplicando a pesquisa em extensão,

dois caminhos podem ser escolhidos  Vamos supor que seja escolhido o caminho

"fonte→A→D→sumidouro" fonte A B 3 5 5 4 7 Rede Residual

(31)

Exemplo 2 (revisto)

1º caminho: fonte→A→D→sumidouro

 Aresta de capacidade mínima: A→D  Aumenta o fluxo de 4 fonte sumi. A B C 3 D 4 5 4 7 Rede Residual 1 0 0 removidas!

(32)

Exemplo 2 (revisto)

2º caminho: fonte→A→B→sumidouro

 Aresta de capacidade mínima: fonte→A  Aumenta o fluxo de 1 Rede Residual fonte A B 3 1 4 4 1 5 6

(33)

Exemplo 2 (revisto)

3º caminho: fonte→C→D→A→B

→sumid.

 Arestas de capacidade mínima: fonte→C e C→D  Aumenta o fluxo de 3 Rede Residual fonte sumi. A B C 3 D 4 1 1 4 5 3 3

(34)

Rede Residual

Com as redes residuais, é possível

“desfazer” um fluxo de maneira natural

 Existe uma aresta que representa esse caso

Essa é a implementação correta dos

algoritmos do método de Ford-Fulkerson

 Incluindo o Edmonds-Karp

Pode ser facilmente representada com uma matriz de adjacências

(35)
(36)

Pseudocódigo

Entradas

C[1..n][1…n] – a rede (grafo com pesos), dada como

matrix de adjacências

s – fonte (source)t – sumidouro (sink)

Saídas

f – valor do fluxo total (será o máximo, no final)

F[1..n][1..n] – a rede de fluxo, indicando o fluxo em

cada aresta

Temporários importantes

(37)

EdmondsKarpMaxFlow(C, s, t)

f := 0 (initial overall flow is zero) F := zero(1..n, 1..n) (starts with zero for all edges) R := copy(C) (starts with a copy of C)

forever

Pred := BreadthFirstSearch(R, s) (paths starting in s)

m = MinimumCapacity(Pred, s, t) (minimum in the path from s to t) if m = -1 (happens only if there is no path)

break

f := f + m (increases the overall flow) v := t

while v ≠ s (traverses the edges of the path, backward) u := Pred[v] (the edge uv is in the path)

F[u,v] := F[u,v] + m (increments the flow in uv) F[v,u] := F[v,u] - m

R[u,v] := R[u,v] – m (reduces the residual capacity of uv) R[v,u] := R[v,u] + m

(38)

Exemplo

Mostrar a atualização de f, m e R

em um exemplo pequeno  Dois caminhos aumentantes

(39)

Complexidade

Método de Ford-Fulkerson: O(E.f)

Onde f é o fluxo máximo do grafo

 Assumindo que o caminho é achado

aleatoriamente

Edmonds-Karp: O(VE2)

 Em grafos densos: O(V5)

Algoritmo de Dinic (ou Dinitz): O(V2E)

 Parecido com o Edmonds-Karp

(40)

Outros Algoritmos

Os algoritmos “push-relabel” são

considerados os melhores para o problema de fluxo

O mais importante, tem

complexidade: O(V2√E)

Em grafos densos: O(V3)

(41)

Referências

Links úteis  Simulação http://www-b2.is.tokushima-u.ac.jp/~ikeda/suur i/maxflow/MaxflowApp.shtml?demo3 https://visualgo.net/en/maxflow  Wikipedia: http://en.wikipedia.org/wiki/Ford-Fulkerson_algori thm

Referências

Documentos relacionados

políticas e os mecanismos legais que regem o uso racional dos antimicrobianos, com o objetivo de introduzir mudanças que visem controlar o crescimento da resistência a esses

Entrada (contacto NC) de fotocélula activa na fase de abertura e fecho.. PHC Fotocélula Entrada (contacto NC) de fotocélula activa na fase

The sample size and the number of tablets per test depends on the total hardness of water required:.. Water Hardness Required Sample Size Number of Tablets Less than

Podem ocorrer mais reacções adversas em doentes com compromisso renal ou hepático clinicamente significativo (ver secções 4.2 e 5.2). As recomendações da posologia para

Entre essas técnicas a análise por ativação com nêutrons associada a espectrometria de raios gama de alta resolução, tem sido a mais usada, para a determinação da

COLOQUE SEMPRE QUE POSSÍVEL AS SUAS TORRES NA 7ª OU 8ª FILA Uma torre colocada na sétima fila é uma vantagem não apenas por representar um perigo para os peões inimigos, mas

com o auxílio do ANN toolbox. Com o intuito de aumentar a precisão das redes, diversas transformações matemáticas foram realizadas com as variáveis DAP, HT e