1 / 50

Algoritmos em Grafos

Algoritmos em Grafos. Problemas de fluxo em grafos 1º semestre/2012 Prof. André Renato. Problemas de Fluxo em Grafos. O estudo de problemas de fluxo em grafos é de fundamental importância, pois uma série de aplicações computacionais podem ser modeladas através de fluxos;

linus
Télécharger la présentation

Algoritmos em Grafos

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. Algoritmos em Grafos Problemas de fluxo em grafos 1º semestre/2012 Prof. André Renato

  2. Problemas de Fluxo em Grafos • O estudo de problemas de fluxo em grafos é de fundamental importância, pois uma série de aplicações computacionais podem ser modeladas através de fluxos; • A sub-área de fluxos demanda um conhecimento prévio de alguns conceitos e definições para que os problemas possam ser melhor compreendidos;

  3. Problemas de Fluxo em Grafos • Uma rede é um digrafo D(V, E), em que cada aresta e  E, está associada a um número real c(e), não-negativo, chamado capacidade da aresta e; • D possui dois vértices especiais e distintos s,t V chamados de origem e destino (fonte e sumidouro);

  4. Problemas de Fluxo em Grafos • Um fluxof, de s a t em D, é uma função que associa a cada aresta e um valor real não-negativo f(e) atendendo às seguintes condições: • 0 ≤ f(e) ≤ c(e) para cada aresta e E; • para todo v ≠ s,t

  5. Problemas de Fluxo em Grafos • O somatório dos fluxos das arestas convergentes a v é igual ao somatório dos fluxos das arestas divergentes de v; • Este somatório é denominado valor do fluxo em v; • O valor do fluxo na origem é denominado valor do fluxo na rede D e é denotado por f(D);

  6. Problemas de Fluxo em Grafos

  7. Problemas de Fluxo em Grafos

  8. Problemas de Fluxo em Grafos • Analogia: • Escoamento de água em uma rede de tubos; • A água é emanada de um ponto (origem) e deve passar pela tubulação até ser recolhida em outro ponto (destino); • As junções dos tubos (demais vértices) não produzem nem consomem água; • O volume de água em cada cano deve ser tal que a capacidade do cano não seja violada;

  9. Problemas de Fluxo em Grafos • Naturalmente, o valor do fluxo em uma rede pode variar de um valor igual a zero até um certo valor máximo; • O problema do fluxo máximo em redes consiste em descobrir qual é este valor e como o fluxo pode se comportar pela rede;

  10. Problemas de Fluxo em Grafos • Seja f um fluxo em uma rede D(V, E). Uma aresta e  E é dita saturada quando f(e) = c(e). • Um vértice v  V é dito saturado se todas as arestas convergentes a v ou divergentes de v forem saturadas.

  11. Problemas de Fluxo em Grafos 3(2) d a 3(3) 2(2) 5(4) 3(1) t s c 2(2) 5(2) 4(3) 5(3) b e

  12. Problemas de Fluxo em Grafos • A noção de corte em uma rede de fluxos é de grande importância para o problema de fluxo máximo e demais problemas de fluxo em grafos; • Seja S  V, um subconjunto de vértices de V tal que s  S e t  S. Um corte (S,S), onde S = V – S, em D é o subconjunto das arestas de D que possuem uma extremidade em S e outra em S.

  13. Problemas de Fluxo em Grafos d a t s c d d a a b t t s c s c e b b e e

  14. Problemas de Fluxo em Grafos • É importante entender que nem sempre os grafos são bem organizados como os exemplos vistos; • Desta forma, podemos ter grafos com ciclos e arcos de mesmas extremidades, mas sentidos diferentes;

  15. Problemas de Fluxo em Grafos d a b c b b t e b s b b b

  16. Problemas de Fluxo em Grafos • É preciso diferenciar as arestas que partem do subconjunto S daquelas que partem do subconjunto S; • (S,S)+ = {(u,v) | u  S e v  S}; • (S,S)- = {(u,v) | u  S e v  S};

  17. Problemas de Fluxo em Grafos • A capacidade c(S,S) de um corte (S,S) é o somatório das capacidades das arestas (S,S)+; • Um corte mínimo é aquele que possui capacidade mínima;

  18. Problemas de Fluxo em Grafos • Seja f um fluxo e (S,S) um corte em D. Então f(S,S) é o fluxo do corte (S,S), definido como:

  19. Problemas de Fluxo em Grafos • Seja f um fluxo em uma rede D. O objetivo do problema de fluxo máximo é aumentar f, se possível. • Cada aresta e pode receber um fluxo adicional ≤ c(e) – f(e); • Talvez este fluxo adicional aumente o valor do fluxo em D;

  20. Problemas de Fluxo em Grafos • Uma aresta e tal que c(e) – f(e) > 0 chama-se aresta direta; • Uma aresta e só pode receber decremento positivo de fluxo se e somente f(e) > 0; estas são chamadas de arestas contrárias; • Uma aresta pode ser somente direta, somente contrária ou direta e contrária;

  21. Problemas de Fluxo em Grafos 3(2) d a 3(3) 2(2) 5(4) 3(0) t s c 2(0) 5(2) 4(3) 5(3) b e

  22. Problemas de Fluxo em Grafos • Dados um fluxo f e uma rede D(V,E), a rede residual D´(f) é aquela cujo conjunto de vértices coincide com os de V e cujas arestas são obtidas assim: • Se uma aresta (u,v) é direta em D, então (u,v) é também aresta direta de D´ e sua capacidade é c(u,v) – f(u,v); • Se uma aresta (u,v) é contrária em D, então (v,u) é também aresta contrária de D´ e sua capacidade c(v,u) = f(u,v);

  23. Problemas de Fluxo em Grafos

  24. Problemas de Fluxo em Grafos a 4(2) 3(2) 2(1) 1(1) 2(2) s b t 3(0) 4(3) 3(1) 5(2) d c 3(1)

  25. Problemas de Fluxo em Grafos • Em outras palavras, as capacidades das arestas na rede residual representam as possíveis variações de fluxo que as arestas de D podem sofrer, com a direção indicando a variação positiva ou negativa; • Um caminho de s a t na rede residual D´(f) é chamado de aumentante para o fluxo f.

  26. Problemas de Fluxo em Grafos

  27. Problemas de Fluxo em Grafos • Se todo caminho entre s e t em uma rede D passar por uma aresta e, o fluxo máximo desta rede não pode ser maior do que c(e) – gargalo; • De forma mais geral, o valor de um fluxo f em D não pode ultrapassar o valor de qualquer corte (S,S);

  28. Problemas de Fluxo em Grafos f(D) = f(S,S) = = ≤ ≤ = c(S,S) Logo, f(D) ≤ c(S,S).

  29. Problemas de Fluxo em Grafos • Teorema do fluxo máximo – corte mínimo: • O valor do fluxo máximo de uma rede D é igual à capacidade do corte mínimo de D.

  30. Problemas de Fluxo em Grafos • Algoritmos para Fluxo máximo: • Dados de entrada: • D(V, E) • Cada aresta e tem capacidade c(e), inteira e positiva • Origem s e destino v de V • Saída: • F: valor do fluxo na rede • f(e): valor do fluxo em cada aresta e

  31. Problemas de Fluxo em Grafos • Algoritmo 1: • F = 0; • Para cada aresta e, f(e) = 0; • Construir a rede residual D’(f) • Enquanto existir caminho de s a t em D’: • F’ = min{ c’(vj,vj+1) | 1≤ j < k } • Para j de 1 até k-1 • Se (vj,vj+1) é aresta direta entao • f(vj,vj+1) = f(vj,vj+1) + F’ • Senão f(vj+1,vj) = f(vj+1,vj) – F’ • F = F + F’ • Construir rede residual D’(f)

  32. Problemas de Fluxo em Grafos a 4 3 2 1 2 s b t 3 4 3 5 d c 3

  33. Problemas de Fluxo em Grafos • Qual o problema que pode existir neste algoritmo?

  34. Problemas de Fluxo em Grafos • Algoritmo 2: • F = 0; • Para cada aresta e, f(e) = 0; • Construir a rede residual D’(f) • Enquanto existir caminho de s a t em D’: • Escolher o menor caminho (via busca em largura) • F’ = min{ c’(vj,vj+1) | 1≤ j < k } • Para j de 1 até k-1 • Se (vj,vj+1) é aresta direta entao • f(vj,vj+1) = f(vj,vj+1) + F’ • Senão f(vj+1,vj) = f(vj+1,vj) – F’ • F = F + F’ • Construir rede residual D’(f)

  35. Problemas de Fluxo em Grafos a 4 3 2 1 2 s b t 3 4 3 5 d c 3

  36. Problemas de Fluxo em Grafos • Um segundo problema muito comum de fluxo em redes consiste em descobrir o fluxo de menor custo (custo mínimo); • Neste caso, não estamos mais preocupados em encontrar o fluxo máximo;

  37. Problemas de Fluxo em Grafos • O vértice de destino t vai possuir agora uma demanda positiva de um fluxo; • Essa demanda será denotada por B; • O vértice s terá uma oferta de fluxo, também com valor B; • Os demais vértices não terão oferta nem demanda;

  38. Problemas de Fluxo em Grafos • O objetivo está em fazer um fluxo de B unidades atravessar o grafo de s a t, passando pelas arestas (com capacidade positiva); • Cada aresta vai possuir também um custo de utilização caso passe fluxo por ela. • Estamos interessados em escolher as arestas que ofereçam os menores custos;

  39. Problemas de Fluxo em Grafos Demanda = 7 (custo, capacidade) Soluções????? a (3,4) (2,3) (4,2) (1,1) (5,2) s b t (1,3) (5,4) (3,3) (2,5) d c (2,3)

  40. Problemas de Fluxo em Grafos • Aplicações • Uma empresa possui p fábricas com produção conhecida e q depósitos com demandas conhecidas. Deseja-se estabelecer um fluxo que atenda às demandas, de forma que o custo de transporte dos produtos das fábricas para os depósitos seja o menor possível.

  41. Problemas de Fluxo em Grafos • Aplicações • Uma generalização deste problema envolve a fabricação de produtos distintos, com produções e demandas também distintos. • Neste caso, pode-se utilizar uma estratégia muito interessante de se criar camadas de nós intermediários para tratar os modelos diferentes de forma distinta;

  42. Problemas de Fluxo em Grafos

  43. Problemas de Fluxo em Grafos • Algoritmo de ciclos negativos (cancelamento de ciclos): • A ideia é encontrar um fluxo inicial factível; • Depois, monta-se a rede residual; • Enquanto houver ciclos de custo negativo, aumenta-se o fluxo através do ciclo; • O algoritmo termina quando não houver mais ciclos;

  44. Problemas de Fluxo em Grafos • Algoritmo: • Estabelecer um fluxo F através do algoritmo de fluxo máximo; • Montar a rede residual W; • Enquanto a rede W tem ciclo negativo: • Determinar x = min{rij, (i,j)  W}; • Aumentar o fluxo F em x unidades; • Montar a rede residual W; • Fim enquanto;

  45. Problemas de Fluxo em Grafos • Como montar a rede residual em um grafo com capacidade, custo e fluxo para cada aresta? (2,1) (2,2) (2,3) (-2,1) 1 (2,4) (-2,1) (1,4) 1 0 (1,4) (-2,1) (2,4) 1 (2,5) (-1,3) (1,3) (-3,3) (3,3) 3 3 (custo, residual) (custo, capacidade) fluxo

  46. Problemas de Fluxo em Grafos (2,5) a f (2,4) (3,7) (4,5) (1,7) (3,1) s (1,5) b e (2,5) t (2,5) (2,6) (1,2) (2,4) (3,3) (3,5) c d

  47. Problemas de Fluxo em Grafos • Problema de múltiplos fluxos: • É uma generalização do problema de luxo de custo mínimo; • Ao invés de um único tipo de fluxo (produtos, mercadorias etc) temos vários fluxos distintos sendo produzidos e consumidos; • Ex: por determinadas redes, passam tráfegos de tipos diferentes • Dados • Voz • Audio ou video on-line

  48. Problemas de Fluxo em Grafos • Se os fluxos não apresentam qualquer tipo de interação entre si, o problema pode ser tratado separadamente como diversos problemas de fluxo; • Entretanto, se os fluxos compartilham determinadas características, será preciso tratar o problema como um todo;

  49. Problemas de Fluxo em Grafos j i Fluxo 1 Fluxo 2 Fluxo 3 1 xij uij 2 xij 3 xij

  50. Problemas de Fluxo em Grafos • Algumas variações: • Homogeneidade: cada unidade de fluxo que passa por uma aresta consume uma unidade de capacidade da aresta; • Custos crescentes: em alguns modelos o custo é definido como uma função não-linear (função degrau); • Integralidade: na maioria dos modelos, o fluxo pode ser transferido em unidades inteiras (não-fracionárias);

More Related