ciência da computação grafos - paginas.unisul.brpaginas.unisul.br/max.pereira/grafos aula...

35
Ciência da Computação GRAFOS Aula 10 Fluxo em Redes Max Pereira

Upload: dinhcong

Post on 21-Jan-2019

226 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Ciência da Computação GRAFOS - paginas.unisul.brpaginas.unisul.br/max.pereira/Grafos Aula 10.pdf · FluxoemRedes Ciência da Computação - GRAFOS Um grafo de fluxo em redes G

Ciência da Computação

GRAFOS

Aula 10 Fluxo em Redes

Max Pereira

Page 2: Ciência da Computação GRAFOS - paginas.unisul.brpaginas.unisul.br/max.pereira/Grafos Aula 10.pdf · FluxoemRedes Ciência da Computação - GRAFOS Um grafo de fluxo em redes G

Fluxo em Redes

Ciência da Computação - GRAFOS

É a transferência de algum tipo de recurso quantificável e sujeito a restriçõesde equilíbrio, de um local (origem) para outro (destino) através de uma rede.

Exemplos:

Líquido fluindo por uma rede de tubos, como a rede de abastecimento de água ou a rede de esgoto;

Peças se deslocando por linhas de montagem; Voz, imagem ou dados em redes de comunicação; Sistemas elétricos de transmissão.

Page 3: Ciência da Computação GRAFOS - paginas.unisul.brpaginas.unisul.br/max.pereira/Grafos Aula 10.pdf · FluxoemRedes Ciência da Computação - GRAFOS Um grafo de fluxo em redes G

Fluxo em Redes

Ciência da Computação - GRAFOS

AplicaçõesConsidere a seguinte situação modelada por um grafo: Cada aresta representa uma rua; O valor de cada aresta indica o maior fluxo possível ao longo da rua

(veículos/hora).

Qual o maior número possível de veículos que pode viajar do local u até o local vem uma hora?

Page 4: Ciência da Computação GRAFOS - paginas.unisul.brpaginas.unisul.br/max.pereira/Grafos Aula 10.pdf · FluxoemRedes Ciência da Computação - GRAFOS Um grafo de fluxo em redes G

Fluxo em Redes

Ciência da Computação - GRAFOS

Imagine que temos uma transportadora, e queremos enviar algumasencomendas de uma cidade para outra. Você pode enviá-las usando vários vôoscom diferentes rotas. No entanto, cada vôo tem um limite de espaço quepodemos utilizar.

Uma questão importante é, qual o volume de encomendas que podemosenviar para o destino, usando os diferentes vôos disponíveis?

Para responder a essa questão vamos explorar um tópico chamado de fluxo emredes, através de modelos de grafos.

Page 5: Ciência da Computação GRAFOS - paginas.unisul.brpaginas.unisul.br/max.pereira/Grafos Aula 10.pdf · FluxoemRedes Ciência da Computação - GRAFOS Um grafo de fluxo em redes G

Fluxo em Redes

Ciência da Computação - GRAFOS

Um grafo de fluxo em redes G = (V, E) é um grafo orientado (direcionado) com dois vértices especiais: o vértice origem, e o vértice destino (sorvedouro). Cadavértice representa uma cidade onde podemos enviar ou receber encomendas. Uma aresta (u, v) no grafo significa que há um vôo direto entre u e v.

Cada aresta tem uma capacidade associada, sempre finita, representando a quantidade de espaço disponível naquele vôo.

Page 6: Ciência da Computação GRAFOS - paginas.unisul.brpaginas.unisul.br/max.pereira/Grafos Aula 10.pdf · FluxoemRedes Ciência da Computação - GRAFOS Um grafo de fluxo em redes G

Fluxo em Redes

Ciência da Computação - GRAFOS

Com esse grafo, nós queremos saber quantas encomendas podemos enviar de “s” para “t”. Como as encomendas “fluem” através do grafo, de s para t, chamamos esse problema de “o problema do fluxo máximo”. Uma solução intuitiva é encontrar caminhos entre s e t onde podemos enviar o máximo de fluxo possível, e depois atualizar o grafo para verificar o espaçoutilizado.

O primeiro número na aresta é o fluxo e o segundo a capacidade

Page 7: Ciência da Computação GRAFOS - paginas.unisul.brpaginas.unisul.br/max.pereira/Grafos Aula 10.pdf · FluxoemRedes Ciência da Computação - GRAFOS Um grafo de fluxo em redes G

Fluxo em Redes

Ciência da Computação - GRAFOS

Nós escolhemos o caminho s u v t. As capacidades ao longo dessecaminho são 3, 3, 4 respectivamente. O que significa que temos um “gargalo” de capacidade igual a 3, ou seja, podemos enviar no máximo 3 unidades aolongo do fluxo.

Page 8: Ciência da Computação GRAFOS - paginas.unisul.brpaginas.unisul.br/max.pereira/Grafos Aula 10.pdf · FluxoemRedes Ciência da Computação - GRAFOS Um grafo de fluxo em redes G

Fluxo em Redes

Ciência da Computação - GRAFOS

Agora precisamos atualizar o grafo. Uma escolha óbvia seria subtrair, da capacidade de cada aresta utilizada, o valor 3 – como usamos 3 espaçosdisponíveis em cada aresta, então a capacidade de cada aresta deve serdimuída por 3. Atualizando desse forma, há um único outro caminho partindode s para t (s v t). A aresta (s,v) tem capacidade 2 e a aresta (v,t) agora tem capacidade 1 (devido ao fluxo de 3 no caminho anterior).

Page 9: Ciência da Computação GRAFOS - paginas.unisul.brpaginas.unisul.br/max.pereira/Grafos Aula 10.pdf · FluxoemRedes Ciência da Computação - GRAFOS Um grafo de fluxo em redes G

Fluxo em Redes

Ciência da Computação - GRAFOS

Nosso algoritmo agora termina, pois não temos outros caminhos de s para t.

Porém, podemos fazer melhor?

Se enviarmos apenas 2 unidades através de u,v e direcionar a terceira unidade para u,t então abriremos um novo espaço em ambas as arestas (u,v) e (v,t). Podemos enviar agora mais uma unidade para o caminho s v t, aumentado o nosso fluxo total para 5, o que de fato é o máximo possível.

Page 10: Ciência da Computação GRAFOS - paginas.unisul.brpaginas.unisul.br/max.pereira/Grafos Aula 10.pdf · FluxoemRedes Ciência da Computação - GRAFOS Um grafo de fluxo em redes G

Fluxo em Redes

Ciência da Computação - GRAFOS

Então, o que tinha de errado com nosso algoritmo? Um problema foi a ordemde escolha dos caminhos. Se tivéssemos escolhido primeiro o caminho s ut e depois o caminho s u v t, então encontraríamos a solução ótima. Mas a escolha da ordem dos caminhos pode se tornar difícil.

Testando novamente...

Qual o fluxo máximo?

Page 11: Ciência da Computação GRAFOS - paginas.unisul.brpaginas.unisul.br/max.pereira/Grafos Aula 10.pdf · FluxoemRedes Ciência da Computação - GRAFOS Um grafo de fluxo em redes G

Fluxo em Redes

Ciência da Computação - GRAFOS

Page 12: Ciência da Computação GRAFOS - paginas.unisul.brpaginas.unisul.br/max.pereira/Grafos Aula 10.pdf · FluxoemRedes Ciência da Computação - GRAFOS Um grafo de fluxo em redes G

Fluxo em Redes

Ciência da Computação - GRAFOS

Método de Ford-Fulkerson

Depende de três ideias importantes:

Redes residuais: consite em arestas que podem admitir mais fluxo. Caminhos de aumento: consiste de um caminho simples desde a origem até

o destino, no grafo da rede residual. Cortes: Separam o grafo em duas partes, uma com o vértice de origem e

outra com o vértice de destino.

Page 13: Ciência da Computação GRAFOS - paginas.unisul.brpaginas.unisul.br/max.pereira/Grafos Aula 10.pdf · FluxoemRedes Ciência da Computação - GRAFOS Um grafo de fluxo em redes G

Fluxo em Redes

Ciência da Computação - GRAFOS

Método de Ford-Fulkerson

Redes residuais:Considerando-se uma grafo G e um fluxo f, a rede residual consiste em arestasque podem admitir mais fluxo.

A capacidade residual Cf é a quantidade de fluxo adicional que pode passar por(u, v) sem exceder a capacidade c(u, v):

Cf(u, v) = c(u, v) – f(u, v)

O grafo residual de uma rede de fluxo é essencialmente o grafo da redeexceto que para toda aresta (u, v) que possui x unidades de fluxo, há uma aresta (v, u) com capacidade x no grafo residual.

Page 14: Ciência da Computação GRAFOS - paginas.unisul.brpaginas.unisul.br/max.pereira/Grafos Aula 10.pdf · FluxoemRedes Ciência da Computação - GRAFOS Um grafo de fluxo em redes G

Fluxo em Redes

Ciência da Computação - GRAFOS

Método de Ford-Fulkerson

O grafo residual de uma rede de fluxo é essencialmente o grafo da redeexceto que para toda aresta (u, v) que possui x unidades de fluxo, há uma aresta (v, u) com capacidade x no grafo residual.

As arestas tracejadas são as arestas acrescentadas no grafo residual. A capacidade das arestas tracejadas é igual as unidades de fluxo contidas nas arestas sólidas na direção oposta.

Page 15: Ciência da Computação GRAFOS - paginas.unisul.brpaginas.unisul.br/max.pereira/Grafos Aula 10.pdf · FluxoemRedes Ciência da Computação - GRAFOS Um grafo de fluxo em redes G

Fluxo em Redes

Ciência da Computação - GRAFOS

𝐶𝑓 𝑢 → 𝑣 = 𝑐 𝑢 → 𝑣 − 𝑓 𝑢 → 𝑣 , 𝑠𝑒 𝑢 → 𝑣 ∈ 𝐸

𝑓 𝑢 → 𝑣 𝑠𝑒 𝑣 → 𝑢 ∈ 𝐸0, 𝑐𝑎𝑠𝑜 𝑐𝑜𝑛𝑡𝑟á𝑟𝑖𝑜

Grafo residual

Um caminho no grafo residual é chamado de caminho de aumento.

Page 16: Ciência da Computação GRAFOS - paginas.unisul.brpaginas.unisul.br/max.pereira/Grafos Aula 10.pdf · FluxoemRedes Ciência da Computação - GRAFOS Um grafo de fluxo em redes G

Fluxo em Redes

Ciência da Computação - GRAFOS

Caminhos de aumentoSão caminhos simples da origem (s) ao destino (t) através do grafo residual Gf.A capacidade residual de um caminho de aumento p, corresponde à menordentre as capacidades residuais das arestas que fazem parte de p.

Cf = min{Cf(u, v) | (u, v) p}

Page 17: Ciência da Computação GRAFOS - paginas.unisul.brpaginas.unisul.br/max.pereira/Grafos Aula 10.pdf · FluxoemRedes Ciência da Computação - GRAFOS Um grafo de fluxo em redes G

Fluxo em Redes

Ciência da Computação - GRAFOS

CortesUm corte é uma partição de vértices distribuída um dois conjuntos distintos S e T. Em uma rede de fluxo, a origem está localizada em S, e o destino em T.

O conjunto do corte (cut-set) é um conjunto de arestas que começam em S e terminam em T.

A capacidade de um corte é a soma dos valores das arestas que começam em Se terminam em T.

Page 18: Ciência da Computação GRAFOS - paginas.unisul.brpaginas.unisul.br/max.pereira/Grafos Aula 10.pdf · FluxoemRedes Ciência da Computação - GRAFOS Um grafo de fluxo em redes G

Fluxo em Redes

Ciência da Computação - GRAFOS

Cortes

Page 19: Ciência da Computação GRAFOS - paginas.unisul.brpaginas.unisul.br/max.pereira/Grafos Aula 10.pdf · FluxoemRedes Ciência da Computação - GRAFOS Um grafo de fluxo em redes G

Fluxo em Redes

Ciência da Computação - GRAFOS

Cortes

Page 20: Ciência da Computação GRAFOS - paginas.unisul.brpaginas.unisul.br/max.pereira/Grafos Aula 10.pdf · FluxoemRedes Ciência da Computação - GRAFOS Um grafo de fluxo em redes G

Fluxo em Redes

Ciência da Computação - GRAFOS

Método de Ford-Fulkerson (chamado “método” porque encontrarcaminhos de aumento não é especificado).

Os passos:• 1º Escolhe-se um caminho qualquer desde a origem até o

destino cujas arestas possuam capacidade positiva (>0).• 2º Procurar nesse caminho a aresta com menor capacidade (c).• 3º Diminuir c da capacidade de fluxo em cada aresta do

caminho no sentido direto e aumentar c na capacidade das arestas no sentido inverso.

• Voltar ao 1º passo. Se já não existir nenhum caminho em quetodas as arestas tenham capacidade positiva, então o fluxomáximo já está determinado.

Page 21: Ciência da Computação GRAFOS - paginas.unisul.brpaginas.unisul.br/max.pereira/Grafos Aula 10.pdf · FluxoemRedes Ciência da Computação - GRAFOS Um grafo de fluxo em redes G

Fluxo em Redes

Ciência da Computação - GRAFOS

Método de Ford-Fulkerson

Page 22: Ciência da Computação GRAFOS - paginas.unisul.brpaginas.unisul.br/max.pereira/Grafos Aula 10.pdf · FluxoemRedes Ciência da Computação - GRAFOS Um grafo de fluxo em redes G

Fluxo em Redes

Ciência da Computação - GRAFOS

Método de Ford-Fulkerson

Page 23: Ciência da Computação GRAFOS - paginas.unisul.brpaginas.unisul.br/max.pereira/Grafos Aula 10.pdf · FluxoemRedes Ciência da Computação - GRAFOS Um grafo de fluxo em redes G

Fluxo em Redes

Ciência da Computação - GRAFOS

Método de Ford-Fulkerson

Page 24: Ciência da Computação GRAFOS - paginas.unisul.brpaginas.unisul.br/max.pereira/Grafos Aula 10.pdf · FluxoemRedes Ciência da Computação - GRAFOS Um grafo de fluxo em redes G

Fluxo em Redes

Ciência da Computação - GRAFOS

Método de Ford-Fulkerson

Page 25: Ciência da Computação GRAFOS - paginas.unisul.brpaginas.unisul.br/max.pereira/Grafos Aula 10.pdf · FluxoemRedes Ciência da Computação - GRAFOS Um grafo de fluxo em redes G

Fluxo em Redes

Ciência da Computação - GRAFOS

Método de Ford-Fulkerson

Page 26: Ciência da Computação GRAFOS - paginas.unisul.brpaginas.unisul.br/max.pereira/Grafos Aula 10.pdf · FluxoemRedes Ciência da Computação - GRAFOS Um grafo de fluxo em redes G

Fluxo em Redes

Ciência da Computação - GRAFOS

Método de Ford-Fulkerson

Page 27: Ciência da Computação GRAFOS - paginas.unisul.brpaginas.unisul.br/max.pereira/Grafos Aula 10.pdf · FluxoemRedes Ciência da Computação - GRAFOS Um grafo de fluxo em redes G

Fluxo em Redes

Ciência da Computação - GRAFOS

Método de Ford-Fulkerson (algoritmo)

Page 28: Ciência da Computação GRAFOS - paginas.unisul.brpaginas.unisul.br/max.pereira/Grafos Aula 10.pdf · FluxoemRedes Ciência da Computação - GRAFOS Um grafo de fluxo em redes G

Fluxo em Redes

Ciência da Computação - GRAFOS

Teorema do Fluxo Máximo

“Para toda a rede com uma só origem e um só destino o fluxomáximo é igual ao valor mínimo de corte entre todos os cortes

possíveis da rede.”

Page 29: Ciência da Computação GRAFOS - paginas.unisul.brpaginas.unisul.br/max.pereira/Grafos Aula 10.pdf · FluxoemRedes Ciência da Computação - GRAFOS Um grafo de fluxo em redes G

Fluxo em Redes

Ciência da Computação - GRAFOS

Método de Ford-Fulkerson

Page 30: Ciência da Computação GRAFOS - paginas.unisul.brpaginas.unisul.br/max.pereira/Grafos Aula 10.pdf · FluxoemRedes Ciência da Computação - GRAFOS Um grafo de fluxo em redes G

Fluxo em Redes

Ciência da Computação - GRAFOS

Page 31: Ciência da Computação GRAFOS - paginas.unisul.brpaginas.unisul.br/max.pereira/Grafos Aula 10.pdf · FluxoemRedes Ciência da Computação - GRAFOS Um grafo de fluxo em redes G

Fluxo em Redes

Ciência da Computação - GRAFOS

Fluxo máximo = 23

Page 32: Ciência da Computação GRAFOS - paginas.unisul.brpaginas.unisul.br/max.pereira/Grafos Aula 10.pdf · FluxoemRedes Ciência da Computação - GRAFOS Um grafo de fluxo em redes G

Fluxo em Redes

Ciência da Computação - GRAFOS

Corte mínimo

C = 29 C = 26 C = 24

Page 33: Ciência da Computação GRAFOS - paginas.unisul.brpaginas.unisul.br/max.pereira/Grafos Aula 10.pdf · FluxoemRedes Ciência da Computação - GRAFOS Um grafo de fluxo em redes G

Fluxo em Redes

Ciência da Computação - GRAFOS

Corte mínimo

C = 34C = 35

Page 34: Ciência da Computação GRAFOS - paginas.unisul.brpaginas.unisul.br/max.pereira/Grafos Aula 10.pdf · FluxoemRedes Ciência da Computação - GRAFOS Um grafo de fluxo em redes G

Fluxo em Redes

Ciência da Computação - GRAFOS

Corte mínimo

C = 23C = 34

Corte mínimo

Page 35: Ciência da Computação GRAFOS - paginas.unisul.brpaginas.unisul.br/max.pereira/Grafos Aula 10.pdf · FluxoemRedes Ciência da Computação - GRAFOS Um grafo de fluxo em redes G

Fluxo em Redes

Ciência da Computação - GRAFOS

Encontrar o fluxo máximo (método de Ford-Fulkerson)