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

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

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

Apresentações semelhantes


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

1 Problemas de fluxo em grafos 1º semestre/2012 Prof. André Renato
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 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
c d e t d d a a s c t s c t 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
c b 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
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
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
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; 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 (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);


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

Apresentações semelhantes


Anúncios Google