algoritmos em grafos

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

Upload: linus

Post on 24-Feb-2016

74 views

Category:

Documents


0 download

DESCRIPTION

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; - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Algoritmos em Grafos

Algoritmos em Grafos

Problemas de fluxo em grafos

1º semestre/2012Prof. André Renato

Page 2: Algoritmos em Grafos

Problemas de Fluxo em GrafosO 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;

Page 3: Algoritmos em Grafos

Problemas de Fluxo em GrafosUma 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);

Page 4: Algoritmos em Grafos

Problemas de Fluxo em GrafosUm 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

VwVu

wvfvuf ),(),(

Page 5: Algoritmos em Grafos

Problemas de Fluxo em GrafosO 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);

Page 6: Algoritmos em Grafos

Problemas de Fluxo em Grafos

Page 7: Algoritmos em Grafos

Problemas de Fluxo em Grafos

Page 8: Algoritmos em Grafos

Problemas de Fluxo em GrafosAnalogia:

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

Page 9: Algoritmos em Grafos

Problemas de Fluxo em GrafosNaturalmente, 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;

Page 10: Algoritmos em Grafos

Problemas de Fluxo em GrafosSeja 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.

Page 11: Algoritmos em Grafos

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)

Page 12: Algoritmos em Grafos

Problemas de Fluxo em GrafosA 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.

Page 13: Algoritmos em Grafos

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

Page 14: Algoritmos em Grafos

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;

Page 15: Algoritmos em Grafos

Problemas de Fluxo em Grafos

s

a

b

c

d

et

b b

b

b

b

b

Page 16: Algoritmos em Grafos

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

Page 17: Algoritmos em Grafos

Problemas de Fluxo em GrafosA 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;

Page 18: Algoritmos em Grafos

Problemas de Fluxo em GrafosSeja f um fluxo e (S,S) um corte

em D. Então f(S,S) é o fluxo do corte (S,S), definido como:

),(),(

)()(),(ssesse

efefSSf

Page 19: Algoritmos em Grafos

Problemas de Fluxo em GrafosSeja 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;

Page 20: Algoritmos em Grafos

Problemas de Fluxo em GrafosUma 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;

Page 21: Algoritmos em Grafos

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)

Page 22: Algoritmos em Grafos

Problemas de Fluxo em GrafosDados 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);

Page 23: Algoritmos em Grafos

Problemas de Fluxo em Grafos

Page 24: Algoritmos em Grafos

Problemas de Fluxo em Grafos

s

a

c

bt

d

4(2)

2(2)

3(0)3(1)

3(1)

4(3)

2(1) 1(1)3(2)

5(2)

Page 25: Algoritmos em Grafos

Problemas de Fluxo em GrafosEm 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.

Page 26: Algoritmos em Grafos

Problemas de Fluxo em Grafos

Page 27: Algoritmos em Grafos

Problemas de Fluxo em GrafosSe 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);

Page 28: Algoritmos em Grafos

Problemas de Fluxo em Grafosf(D) = f(S,S) = = ≤

≤ = c(S,S)

Logo, f(D) ≤ c(S,S).

),(),(

)()(ssesse

efef

),(

)(sse

ef

Page 29: Algoritmos em Grafos

Problemas de Fluxo em GrafosTeorema 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.

Page 30: Algoritmos em Grafos

Problemas de Fluxo em GrafosAlgoritmos 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

Page 31: Algoritmos em Grafos

Problemas de Fluxo em GrafosAlgoritmo 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)

Page 32: Algoritmos em Grafos

Problemas de Fluxo em Grafos

s

a

c

bt

d

4

2

33

3

4

2 13

5

Page 33: Algoritmos em Grafos

Problemas de Fluxo em GrafosQual o problema que pode existir

neste algoritmo?

Page 34: Algoritmos em Grafos

Problemas de Fluxo em GrafosAlgoritmo 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)

Page 35: Algoritmos em Grafos

Problemas de Fluxo em Grafos

s

a

c

bt

d

4

2

33

3

4

2 13

5

Page 36: Algoritmos em Grafos

Problemas de Fluxo em GrafosUm 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;

Page 37: Algoritmos em Grafos

Problemas de Fluxo em GrafosO 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;

Page 38: Algoritmos em Grafos

Problemas de Fluxo em GrafosO 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;

Page 39: Algoritmos em Grafos

Problemas de Fluxo em Grafos

s

a

c

bt

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?????

Page 40: Algoritmos em Grafos

Problemas de Fluxo em GrafosAplicaçõ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.

Page 41: Algoritmos em Grafos

Problemas de Fluxo em GrafosAplicaçõ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;

Page 42: Algoritmos em Grafos

Problemas de Fluxo em Grafos

Page 43: Algoritmos em Grafos

Problemas de Fluxo em GrafosAlgoritmo 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;

Page 44: Algoritmos em Grafos

Problemas de Fluxo em GrafosAlgoritmo:

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

Page 45: Algoritmos em Grafos

Problemas de Fluxo em GrafosComo 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)

1 0

1

1 (2,5)

33

(custo, capacidade)fluxo

(2,3)(2,1)

(1,4)

(-3,3)(-1,3)

(2,4)

(custo, residual)

(-2,1)(-2,1)

(-2,1)

Page 46: Algoritmos em Grafos

Problemas de Fluxo em Grafos

s t

a

c

b e

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)

Page 47: Algoritmos em Grafos

Problemas de Fluxo em GrafosProblema 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

Page 48: Algoritmos em Grafos

Problemas de Fluxo em GrafosSe 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;

Page 49: Algoritmos em Grafos

Problemas de Fluxo em Grafos

Fluxo 1Fluxo 2Fluxo 3i j

uijxij

xij

xij

123

Page 50: Algoritmos em Grafos

Problemas de Fluxo em GrafosAlgumas 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);