A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Algoritmos em Grafos Problemas de fluxo em grafos 1º semestre/2012 Prof. André Renato.

Apresentações semelhantes


Apresentação em tema: "Algoritmos em Grafos Problemas de fluxo em grafos 1º semestre/2012 Prof. André Renato."— Transcrição da apresentação:

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 fluxo f, 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

8 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 s a b c d e t 3(3) 4(3) 3(2) 3(1) 5(3) 5(2) 2(2) 5(4) 2(2)

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 s a b c d e t s a b c d e t s a b c d e t

14 É 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 s a b c d e t bb b b b b

16 É 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 s a b c d e t 3(3) 4(3) 3(2) 3(0) 5(3) 5(2) 2(2) 5(4) 2(0)

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 s a c b t d 4(2) 2(2) 3(0) 3(1) 4(3) 2(1)1(1) 3(2) 5(2)

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 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’(v j,v j+1 ) | 1≤ j < k }  Para j de 1 até k-1  Se (v j,v j+1 ) é aresta direta entao  f(v j,v j+1 ) = f(v j,v j+1 ) + F’  Senão f(v j+1,v j ) = f(v j+1,v j ) – F’  F = F + F’  Construir rede residual D’(f)

32 Problemas de Fluxo em Grafos s a c b t d

33 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’(v j,v j+1 ) | 1≤ j < k }  Para j de 1 até k-1  Se (v j,v j+1 ) é aresta direta entao  f(v j,v j+1 ) = f(v j,v j+1 ) + F’  Senão f(v j+1,v j ) = f(v j+1,v j ) – F’  F = F + F’  Construir rede residual D’(f)

35 Problemas de Fluxo em Grafos s a c b t d

36 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 s a c b t d (3,4) (5,2) (1,3) (3,3) (2,3) (5,4) (4,2)(1,1) (2,3) (2,5) Demanda = 7 (custo, capacidade) Soluções?????

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 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{r ij, (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,4) (2,2) (1,4) (3,3) (1,3) (2,5) 3 3 (custo, capacidade) fluxo (2,3) (2,1) (1,4) (-3,3) (-1,3) (2,4) (custo, residual) (-2,1)

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

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 Fluxo 1 Fluxo 2 Fluxo 3 i j u ij x ij 1 2 3

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);


Carregar ppt "Algoritmos em Grafos Problemas de fluxo em grafos 1º semestre/2012 Prof. André Renato."

Apresentações semelhantes


Anúncios Google