1 / 53

FLUXO EM REDES

FLUXO EM REDES. Prof. M.Sc. Fábio Francisco da Costa Fontes Maio - 2009. Introdução. Grafos podem ser usados para modelar o fluxo de materiais numa rede: Líquidos fluindo por tubos Peças por linhas de montagem Corrente por redes elétricas Informações por redes de comunicação

Télécharger la présentation

FLUXO EM REDES

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. FLUXO EM REDES Prof. M.Sc. Fábio Francisco da Costa Fontes Maio - 2009

  2. Introdução • Grafos podem ser usados para modelar o fluxo de materiaisnuma rede: • Líquidos fluindo por tubos • Peças por linhas de montagem • Corrente por redes elétricas • Informações por redes de comunicação • O material percorre uma rede desde uma origem, onde ele é produzido, até um sorvedor, onde ele é consumido

  3. Introdução Cada aresta é um canalpara o material Cada canal tem uma capacidadeestabelecida, dada como uma taxa máxima (ex.: 200 litros/h) Vértices são junções de canais A origem produzo material numa taxa fixa e o sorvedor consomeo material na mesma taxa (não há acúmulo de material nos nós da rede)

  4. Introdução Definição: uma rede (s-t)é um dígrafo conectado que tem um vértice chamado origem (s), com grau de saída não nulo, e um vértice chamado sorvedor (t), com grau de entrada não nulo Definição: uma rede limitadaé um dígrafo conectado tal que a cada arco e é associado um peso não negativo cap(e), chamado capacidade de e

  5. Introdução • Seja v um vértice em um dígrafo N: • Definição: O conjunto de saídade v, denotado por Out(v), é o conjunto de todos os arcos que saem de v • Definição: O conjunto de entradade v, denotado por In(v), é o conjunto de todos os arcos que chegam em v • Para qualquer subconjunto de vértices X e Y, seja X,Y o conjunto de todos os arcos direcionados de um vértice em X para um vértice em Y

  6. Introdução 7 x w 5 4 5 3 s t 7 6 v Exemplo: se X={x,v} e Y={w,t}, então os elementos de X,Y são os arcos xw e vt

  7. Fluxo em Rede • Definição: um fluxo em redeé uma função f: E R+ que associa um número real positivo f(e) para cada arco e tal que: • (Restrições de capacidade)f(e) ≤ cap(e), para cada arco e na rede N • (Restrições de conservação) , para todo vértice v na rede N, com exceção da origem e do sorvedor. Ou seja, a soma dos f(e) que chegam num vértice v é igual a soma dos f(e) que saem de um vértice v.

  8. Fluxo em Rede 7, 2 x w 5, 3 4, 1 5, 1 s 3, 1 t 6, 5 7, 3 v Exemplo: o fluxo total saindo de s é igual a 6, que é o mesmo fluxo que entra no sorvedor t. A conservação do fluxo é respeitada para todos os vértices

  9. Fluxo em Rede Definição: o valor do fluxof em uma rede limitada, denotado por val(f), é o fluxo líquido que deixa a origem s Definição: o fluxo máximonuma rede limitada N é um fluxo em N que tem valor máximo

  10. Corte em Rede {s}, {x,v,w,t} x w s t v Vs Vt Exemplo: um corte s-t igual a Out(s)

  11. Corte em Rede Um fluxo não nulo deve usar pelo menos um arco em Out(s) Se todos os arcos de Out(s) fossem removidosda rede, nenhum fluxo de s para t poderia existir Definição: seja Vs e Vt uma partição dos vértices de N tal que s  Vs e t Vt. O conjunto de arcos direcionados de um vértice em Vs para um vértice em Vt é chamado um corte s-t da rede N e denotado Vs, Vt Ou Um corte em N é o conjunto dos arcos de N com extremidade inicial em Vs e extremidade final em Vt.

  12. Corte em Rede {s,x,v,w},{t} x w s t v Vt Vs Exemplo: um corte s-t igual a In(t)

  13. Corte em Rede {s,x,v},{w,t} x w s t v Vt Vs Exemplo: um corte s-t mais geral

  14. Fluxos e Cortes O conjunto de arcos Out(s) pode ser visto como o corte s-t {s}, VN - {s} O conjunto de arcos In(s) pode ser visto como o corte s-t VN - {s}, {s} A partir dessa observação, o valor de um fluxo pode ser reescrito como:

  15. Fluxos e Cortes 7, 2 x w 5, 3 4, 1 5, 1 Vs Vt s 3, 1 t 7, 3 v 6, 5 A definição do valor do fluxo pode ser generalizada para qualquer corte s-t: val(f) = 7 – 1 = 6

  16. Fluxos e Cortes O corolário abaixo confirma que o fluxo líquido que sai da origem s é igual ao fluxo líquido que entra no sorvedor t Corolário: seja f um fluxo em rede, então:

  17. Fluxo em Rede O modelo matemático que representa o fluxo em uma rede será:

  18. Fluxos e Cortes Definição: a capacidade de um corteVs, Vt, denotado capVs, Vt, é a soma das capacidades dos arcos do corte Definição: um corte mínimode uma rede N é um corte com a capacidade mínima

  19. Fluxo Máximo e Corte Mínimo O problema de achar o fluxo máximoestá intimamente relacionado com o problema de achar o corte mínimonuma rede N Corolário: Seja Vs, Vt um corte s-t em uma rede N, e suponha que f é um fluxo tal que: Então f é um fluxo máximo e Vs, Vt é um corte mínimo.

  20. Exemplo • Considere a rede capacitada abaixo, com vértice inicial 0 e vértice final 5.  A coluna f dá um fluxo que respeita as capacidades. arco cap f s = 0 0-1 2 2 t = 5 0-2 3 2 1-3 3 1 1-4 1 1 2-3 1 1 2-4 1 1 3-5 2 2 4-5 3 2

  21. Exemplo A tabela a seguir lista todos os cortes. Em cada linha temos um corte (com S na primeira coluna e T na segunda), os arcos diretos do corte (terceira coluna), os arcos inversos do corte (quarta coluna) e a capacidade do corte (quinta coluna). 0 1 2 3 4 5 0-1 0-2 5 0 1 2 3 4 5 0-2 1-3 1-4 7 0 2 1 3 4 5 0-1 2-3 2-4 4 0 3 1 2 4 5 0-1 0-2 3-5 1-3 2-3 7 0 4 1 2 3 5 0-1 0-2 4-5 1-4 2-4 8 0 1 2 3 4 5 1-3 1-4 2-3 2-4 6 0 1 3 2 4 5 0-2 1-4 3-5 2-3 6 0 1 4 2 3 5 0-2 1-3 4-5 2-4 9 0 2 3 1 4 5 0-1 2-4 3-5 1-3 5 0 2 4 1 3 5 0-1 2-3 4-5 1-4 6 0 3 4 1 2 5 0-1 0-2 1-3 1-4 2-3 2-4 5 0 1 2 3 4 5 1-4 2-4 3-5 4 0 1 2 4 3 5 1-3 4-5 6 0 2 3 4 1 5 0-1 3-5 4-5 1-3 1-4 7 0 1 2 3 4 5 3-5 4-5 5 Verifique que o fluxo através de cada um dos quinze cortes tem intensidade 4.

  22. Exercício • Mostre, no estilo do exemplo anterior, todos os cortes na rede capacitada abaixo. Para cada corte, liste os arcos diretos e os inversos, bem como a capacidade do corte.  arco cap s = 0 0-1 2 t = 5 0-2 3 0-3 2 1-2 1 1-3 1 1-4 1 2-4 1 2-5 2 3-4 2 3-5 3 4-5 2

  23. Problema do Fluxo Máximo 7, 2 x w 5, 3 4, 1 5, 1 f = 6 s 3, 1 t 6, 5 7, 3 v A idéia básica do algoritmo de Ford e Fulkerson (ou algoritmo dos caminhos de aumento) é aumentar o fluxo iterativamente em uma rede até que ele não possa mais ser aumentado

  24. Problema do Fluxo Máximo 7, 2 x w 5, 3 4, 1 P 5, 1 3, 1 s t 6, 5 7, 3 v Suponha que f é um fluxo em uma rede N, e suponha que existe um caminho P de s para t, P = <s,e1,v1,e2,...,ek,t>, tal que, f(ei) < cap(ei)para i = 1..k

  25. Problema do Fluxo Máximo 7, 2 +2 x w 5, 3 4, 1 P 5, 1 3, 1 s t +2 6, 5 7, 3 v +1 Considerando apenas as capacidades dos arcos, o fluxo em cada arco ei pode ser aumentado em cap(ei)-f(ei)

  26. Problema do Fluxo Máximo 7, 2 +1 x w 5, 3 4, 1 P 5, 1 3, 1 s t +1 6, 5 7, 3 v +1 Mas para manter a propriedade de conservação do fluxo em cada um dos vértices, o aumento em cada um dos arcos do caminho deve ser o mesmo

  27. Problema do Fluxo Máximo 7, 2 x w 5, 4 4, 1 P 5, 1 3, 2 f = 7 s t 6, 6 7, 3 v Então se P denota esse aumento no fluxo, o maior aumento possível para P é min{cap(ei) - f(ei)}

  28. Problema do Fluxo Máximo +2 P 7, 2 +2 +2 x w 5, 3 4, 1 5, 1 s 3, 1 t f = 8 6, 5 7, 3 v Usando o caminho P = <s, x, w, t> o fluxo pode ser aumentado para 8 (com P = 2)

  29. Problema do Fluxo Máximo 7, 4 x w 5, 5 4, 3 5, 1 s 3, 1 t f = 9 6, 5 7, 3 v P +1 +1 Usando o caminho P = <s, v, t> o fluxo pode ser aumentado para 9

  30. Problema do Fluxo Máximo 7, 4 x w 5, 5 4, 3 5, 1 f = 9 s 3, 1 t 6, 6 7, 4 v Neste ponto o fluxo não pode ser mais aumentadopor caminhos s-t, porque qualquer caminho usa os arcos sx ou vt e ambos estão na capacidade máxima

  31. Problema do Fluxo Máximo 7, 4 +1 x w 5, 5 4, 3 -1 5, 1 f = 10 s 3, 1 t 6, 6 7, 4 v +1 Porém o fluxo ainda pode ser maior: aumentando sv (+1), diminuindo wv (-1) e aumentando o fluxo em wt (+1)

  32. Problema do Fluxo Máximo 7, 4 x w 5, 5 4, 4 5, 0 f = 10 s 3, 1 t 6, 6 7, 5 v Os arcos cujo fluxo foi alterado formam um caminho s-t se as direções forem ignoradas É preciso generalizar um caminho direcionado para obter o fluxo máximo

  33. Caminhos Aumentantes Definição: um quase-caminho s-tem uma rede N é uma seqüência alternada de vértices e arcos que formam um caminho s-t, desconsiderando as direções dos arcos Q = <s = v0, e1, v1, ..., vk-1, ek, vk = t>

  34. Caminhos Aumentantes Q = <s, a, v, b, w, c, t > x w c b s t a v Terminologia: para um quase-caminho s-t, o arco ei é chamado de arco de avançose ele é direcionado de vi-1 para vi e é chamado arco de retrocesso se ele é direcionado de vi para vi-1

  35. Caminhos Aumentantes Definição: Um caminho f-aumentanteQ em uma rede N é um quase-caminho s-t em N tal que o fluxo em cada arco de avanço pode ser aumentado, e o fluxo em cada arco de retrocesso pode ser diminuído Para cada arco num caminho f-aumentante Q:

  36. Caminhos Aumentantes Para cada arco e em um caminho f-aumentante, seja e a quantidade dada por A quantidade e é a flexibilidade do arco. Seu valor é o maior aumento de fluxopossível para um arco de avanço, e a maior diminuição de fluxo possível para um arco de retrocesso

  37. Caminhos Aumentantes A conservação do fluxoexige que a mudança no fluxo de cada arco seja de mesma magnitude A maior mudança de fluxopermitida em um quase-caminho Q é Q, onde:

  38. Caminhos Aumentantes Q = <s, v, w, t> 7, 4 e = 1 x w 5, 5 e = 1 4, 3 5, 1 f = 9 s 3, 1 t 6, 6 7, 4 v e = 3 Exemplo: o quase-caminho Q é um caminho f-aumentante, com Q = 1

  39. Fluxo Máximo e Corte Mínimo Teorema (fluxo máximo): seja f um fluxo numa rede N, f é um fluxo máximo se e somente se não existe um caminho f-aumentante em N Teorema (fluxo máximo corte-mínimo): Para uma rede N, o valor do fluxo máximo é igual a capacidade de um corte mínimo

  40. Exemplo • Considere a rede capacitada abaixo.  O fluxo indicado na coluna f respeita as capacidades e tem intensidade 2. arco c f s = 0 0-1 2 2 t = 3 0-2 2 0 1-2 2 2 1-3 2 0 2-3 2 2 A seqüência   0-2-1-3   é um caminho f- aumentante.  Esse caminho tem capacidade residual 2.  Se enviarmos 2 unidades de fluxo ao longo do caminho, teremos um novo fluxo f':

  41. Exemplo arco c f' 0-1 2 2 0-2 2 2 1-2 2 0 1-3 2 2 2-3 2 2 O novo fluxo f' respeita as capacidades e tem intensidade 4.

  42. Algoritmo de Fluxo Máximo Entrada: uma rede s-t N Saída: um fluxo máximo f na rede N Algoritmo: Fluxo Máximo [Inicialização] para cada arco e na rede N f(e) = 0 [Aumento do Fluxo] enquanto existir um caminho f-aumentante na rede N ache um caminho f-aumentante Q seja Q = min{e} para todo e  Q para cada arco e do caminho f-aumentante Q se e é um arco de avanço f(e) = f(e) + Q senão f(e) = f(e) - Q retorne fluxo f

  43. Algoritmo de Fluxo Máximo Entrada: uma rede s-t N Saída: um caminho f-aumentante Q ou um corte mínimo Algoritmo: Achando um Caminho Aumentante Inicialize o conjunto de vértices Vs = {s} Escreva o rótulo 0 no vértice s Inicialize o contador de rótulos i = 1 enquanto o conjunto Vs não contém o sorvedor t se existir um arco de fronteira usável seja e um arco usável cujo vértice rotulado v tem o menor rótulo possível seja w o vértice não rotulado do arco e faça backpoint(w) = v escreva rótulo i no vértice w Vs = Vs U {w} i = i + 1 senão retorne o corte s-t Vs, VN-Vs retorne o caminho f-aumentante reconstruído pelos ponteiros backpoint

  44. Exemplo Considere a rede capacitada abaixo: arco cap s = 0 0-1 2 t = 5 0-2 3 1-3 3 1-4 1 2-3 1 2-4 1 3-5 2 4-5 3 Comece com fluxo nulo. Agora aplique a seqüência de caminhos de aumento 0-1-3-5 0-2-4-5 0-2-3-1-4-5

  45. Exemplo (os arcos inversos estão indicados em negrito).  O primeiro caminho de aumento tem capacidade residual 2. Depois que enviarmos 2 unidades de fluxo ao longo desse caminho, teremos um fluxo f'.  O segundo caminho de aumento é calculado em relação a f' e produz um terceiro fluxo, digamos f". O terceiro caminho de aumento é calculado em relação a f" e tem capacidade residual 1.

  46. Exemplo A seqüência de fluxos produzida pelos caminhos de aumento está indicada abaixo. Todos respeitam as capacidades dos arcos. O último fluxo tem intensidade 4. arco f f' f" f"' 0-1 0 2 2 2 0-2 0 0 1 2 1-3 0 2 3 2 1-4 0 0 0 1 2-3 0 0 0 1 2-4 0 0 1 1 3-5 0 2 2 2 4-5 0 0 1 2

  47. Exemplo 2: encontrar o caminho aumentante 5, 0 3, 0 7, 0 w a b c 2, 0 6, 0 3, 0 4, 0 2, 0 s v t 3, 0 3, 0 x y z 5, 0 4, 0 Exemplo:

  48. Problema de Fluxo de Custo Mínimo • The Minimum Cost Flow Problem Este problema possui papel principal entre os modelos de otimização em redes, uma vez que este engloba uma enorme quantidade de aplicações e pode ser resolvido de maneira extremamente eficiente.

  49. Problema de Fluxo de Custo Mínimo O Problema de Transporte, de Designação, de Caminho Mais Curto e de Fluxo Máximo são casos especiais do Problema de Fluxo de Custo Mínimo. A única exceção é o Problema de Árvore Geradora Mínima.

  50. Problema de Fluxo de Custo Mínimo A exemplo dos problemas acima (com exceção do Problema de Árvore Geradora Mínima), o Problema de Fluxo de Custo Mínimo é um Problema de Programação Linear, logo o Simplex pode ser utilizado para sua resolução.

More Related