Fluxo&em&Redes& - lucianaassis.pro.br · Algoritmos&em&Grafos& 12...

Preview:

Citation preview

Fluxo  em  Redes  

Luciana  Assis  

Sumário  

•  Árvore  Geradora  Mínima  •  Caminho  Mínimo  •  Fluxo  Máximo  

ÁRVORE  GERADORA  MÍNIMA  

Árvore  Geradora  Mínima  

•  Árvore:  grafo  conexo  sem  ciclo.    •  Árvore  Geradora  de  G(V,A):  é  uma  árvore    contendo  todos  os  vérAces  do  grafo  G  

•  Árvore  Geradora  Mínima  de  G(V,A):  árvore  geradora  de  G,  cuja  soma  dos  pesos  de  suas  arestas  é  mínima.  

•  Aplicação:  problemas  de  comunicação  e  conexão  

Árvore  Geradora  Mínima  

•  Teoremas:  –  T1:  Todo  grafo  conexo  tem  pelo  menos  uma  árvore  geradora.  Um  grafo  desconexo  é  composto  por  uma  floresta  de  árvores  geradoras.  

–  T2:  Dado  o  grafo  G(V,A),  sendo  n  =  |V|.  Seja  a  árvore  geradora  AG(V,A’),  então  |A’|=n-­‐1.  

–  T3:  Dado  o  grafo  G(V,A),  A(V’,A’)  é  uma  árvore  de  G  se  a  remoção  de  qualquer  aresta  torna  o  grafo  desconexo  

–  T4:  Dado  o  grafo  G(V,A),  A(V’,A’)  é  uma  árvore  de  G  se  a  inserção  de  qualquer  aresta  de  A  em  A’  acrescenta  um  único  ciclo  em  A.  

Árvore  Geradora  Mínima  

•  Exemplo:  Fundação  Zoo-­‐Botânica  – Problema:  Criação  de  postos  de  informações  em  todos  os  setores  a  fundação.  Onde  passar  as  linhas  telefônicas  de  forma  que  todos  os  postos  fiquem  conectados?  

Árvore  Geradora  Mínima  

Fig.2  –  Fundação  Zoo-­‐Botânica  Disponível  em:www.pbh.gov.br/zoobotanica  

 

6  

5  

5  

6  

3  

7  

6  4  

4  

3  

3  5  

4  

3  

Árvore  Geradora  Mínima  

9  Algoritmos  em  Grafos  

Árvore  Geradora  de  Peso  Mínimo  

Exemplo:

9  D

A

E  

B

C  

F  3  

4  

8  4  

7  

2  

2  

5  9  

árvore  geradora  peso    =  15  

D

A B

C  

E   F  

árvore  geradora  peso    =  24  

D

A

E  

B

C  

F  

3  

4  

8  4   5  

3  

4  

4  

2  

2  

Árvore  Geradora  Mínima  

•  Sabemos  que  uma  árvore  geradora  mínima  resolve  o  problema  da  fundação  zoo-­‐botânica,  mas  como  encontrar  uma  árvore  geradora  mínima?  

•  Algoritmos:  – Algoritmo  de  Kruskal  – Algoritmo  de  Prim  

11  Algoritmos  em  Grafos  

Árvore  Geradora  de  Peso  Mínimo  

  Dados:      G  =  (V,E)  grafo  não-­‐orientado,  com  |V|=n  e  |E|=m  

   peso  c(e),  ∀e  ∈  E  

  Problema Obter F ⊆ E tal que:

  o grafo G’=(V,F) é acíclico e conexo (G’ é gerador de G)   c(F) = Σe∈Ec(e) é mínimo

12  Algoritmos  em  Grafos  

Árvore  Geradora  de  Peso  Mínimo  

  Princípio: a aresta de menor peso sempre pertence à árvore geradora de peso mínimo.

Algoritmo de Kruskal

  Prova:   Suponha que a aresta de peso mínimo não pertença à solução

ótima.   Inserindo-se a aresta de peso mínimo nesta solução ótima,

obtém-se um ciclo.   Pode-se obter uma nova árvore geradora removendo-se a

aresta de maior peso.   Esta nova árvore geradora teria peso menor do que a anterior,

portanto aquela solução não poderia ser ótima.

13  Algoritmos  em  Grafos  

Árvore  Geradora  de  Peso  Mínimo  

Criar uma lista L com as arestas ordenadas em ordem crescente de pesos. Criar |V| subárvores contendo cada uma um nó isolado. F ← ∅ contador ← 0 Enquanto contador < |V|-1 e L ≠ ∅ faça Seja (u,v) o próximo arco de L. L ← L – {(u,v)} Se u e v não estão na mesma subárvore então F ← F ∪ {(u,v)} Unir as subárvores que contêm u e v. contador ← contador + 1 fim-se fim-enquanto

Algoritmo de Kruskal

14  Algoritmos  em  Grafos  

Exemplo:

Árvore  Geradora  de  Peso  Mínimo  

8  3  

9  D

A

E  

B

C  

F  

4  

4  

7  

2  2  

5  9   e c(e)

(C,F) 2

(E,F) 2

(A,D) 3

(C,E) 3

(A,B) 4

(A,E) 4

(B,F) 5

(D,F) 7

(B,C) 8

(B,E) 9

(C,D) 9

Lista  L  

Subárvores  

{  A  }   {  B  }   {  C  }   {  D  }   {  E  }   {  F  }  {  A  }   {  B  }   {  C,  F  }   {  D  }   {  E  }  

c(F)  =  2  

{  A  }   {  B  }   {  C,  E,  F  }   {  D  }  

c(F)  =  4  

{  A,  D  }   {  B  }   {  C,  E,  F  }  

c(F)  =  7  

{  A,  B,  D  }   {  C,  E,  F  }  

c(F)  =  11  

{  A,  B,  C,  D,  E,  F  }  

c(F)  =  15  

3  

X  

15  Algoritmos  em  Grafos  

Exemplo:

Árvore  Geradora  de  Peso  Mínimo  

H

A

B

J  

C  

e c(e) (D,E) 1

(D,L) 2

(F,J) 2

(G,J) 2

(C,D) 3

(E,F) 3

(H,I) 3

(A,B) 4

(B,C) 4

… …

Lista  L  

Subárvores  c(F)  =  1  

E  

M L  

G

D

I  

F  

4  

7  

4  

3  

7  

5  

6  

2  2  

3  

1  

4  

2  

3  

8  

6  

4  

{  A  }   {  B  }   {  C  }   {  D  }   {  E  }   {  F  }  

{  G  }   {  H  }   {  I  }   {  J  }   {  L  }   {  M  }  

{  A  }   {  B  }   {  C  }   {  D,  E  }   {  F  }  

{  G  }   {  H  }   {  I  }   {  J  }   {  L  }   {  M  }  

c(F)  =  3  

{  A  }   {  B  }   {  C  }   {  D,  E,  L  }   {  F  }  

{  G  }   {  H  }   {  I  }   {  J  }   {  M  }  

{  A  }   {  B  }   {  C  }   {  D,  E,  L  }  

{  F,  J  }   {  G  }   {  H  }   {  I  }   {  M  }  

c(F)  =  5  

{  A  }   {  B  }   {  C  }   {  D,  E,  L  }  

{  F,  G,  J  }   {  H  }   {  I  }   {  M  }  

c(F)  =  7  

{  A  }   {  B  }   {  C,  D,  E,  L  }  

{  F,  G,  J  }   {  H  }   {  I  }   {  M  }  

c(F)  =  10  

{  A  }   {  B  }   {  C,  D,  E,  L,  F,  G,  J  }  

{  H  }   {  I  }   {  M  }  

c(F)  =  13  

{  A  }   {  B  }   {  C,  D,  E,  L,  F,  G,  J  }  

{  H,  I  }   {  M  }  

c(F)  =  16  

{  A,  B  }   {  C,  D,  E,  L,  F,  G,  J  }  

{  H,  I  }   {  M  }  

c(F)  =  20  

{  A,  B,  C,  D,  E,  F,  G,  J,  L  }  

{  H,  I  }   {  M  }  

c(F)  =  24  

16  Algoritmos  em  Grafos  

Exemplo:

Árvore  Geradora  de  Peso  Mínimo  

H

A

B

J  

C   Lista  L  

Subárvores  

E  

M L  

G

D

I  

F  

4  

7  

4  

3  

7  

5  

6  

2  2  

3  

1  

4  

2  

3  

8  

6  

4  

{  A,  B,  C,  D,  E,  F,  G,  J,  L  }  

{  H,  I  }   {  M  }  

c(F)  =  24  

e c(e) ... ...

(A,I) 4

(J,L) 4

(G,M) 5

(C,M) 6

(I,J) 6

(A,M) 7

(G,H) 7

(B,L) 8 {  A,  B,  C,  D,  E,  F,  G,  H,  I,  J,  L  }  

{  M  }  

c(F)  =  28  

X  

{  A,  B,  C,  D,  E,  F,  G,  H,  I,  J,  L,  M  }  

c(F)  =  33  

17  Algoritmos  em  Grafos  

Árvore  Geradora  de  Peso  Mínimo  

  Começar com uma árvore formada apenas por um nó qualquer do grafo, ou pela aresta de peso mínimo.

Algoritmo de Prim

  A cada iteração, adicionar a aresta de menor peso que conecta um nó já conectado a um nó não-conectado.

18  Algoritmos  em  Grafos  

Árvore  Geradora  de  Peso  Mínimo  

Seja (u,v) a aresta de menor peso. F ← {(u,v)} Para i = 1,...,n faça Se c(i,u) < c(i,v) então prox(i) ← u Senão prox(i) ← v fim-para prox(u), prox(v) ← 0, contador ← 0 Enquanto contador < n-2 faça Seja j tal que prox(j)≠0 e c(j,prox(j)) é mínimo. F ← F ∪ {(j,prox(j))} prox(j) ← 0 Para i = 1,...,n faça Se prox(i) ≠ 0 e c(i,prox(i)) > c(i,j) então prox(i) ← j fim-para contador ← contador + 1 fim-enquanto

Algoritmo de Prim

19  Algoritmos  em  Grafos  

Árvore  Geradora  de  Peso  Mínimo  

Exemplo:

9  D

A

E  

B

C  

F  3  

4  

8  4  

7  

2  2  

5  9  

c(F)  =  2  c(F)  =  4  c(F)  =  7  c(F)  =  11  c(F)  =  15  

3  

20  Algoritmos  em  Grafos  

Árvore  Geradora  de  Peso  Mínimo  

Exemplo:

c(F)  =  1  

H

A

B

J  

C  

E  

M L  

G

D

I  

F  

4  

7  

4  

3  

7  

5  

6  

2  2  

3  

1  

4  

2  

3  

8  

6  

4  

c(F)  =  3  c(F)  =  6  c(F)  =  9  c(F)  =  11  c(F)  =  13  c(F)  =  17  c(F)  =  21  c(F)  =  25  c(F)  =  28  c(F)  =  33  

CAMINHO  MÍNIMO  

Caminho  Mínimo  

•  Caminho:  seqüência  de  arcos  (a1,a2,a3,...,an)  tais  que,  cada  arco  ai,  com  exceção  do  primeiro  e  do  úlAmo,  é  ligado  ao  arco  ai-­‐1  por  um  extremidade  e  ai+1  por  outra.  

 •  “Caminho  mínimo  entre  u  e  v  é  uma  seqüência  de  arestas  que,  passando  por  vérAces  disAntos,  liga  u  e  v  de  forma  a  acumular  o  menor  comprimento  .”  (Goldberg,2000)    

Caminho  Mínimo  

•  Exemplo:  Fundação  Zoo-­‐Botânica  – Problema:  Como  idenAficar  o  caminho  mais  curto  entre  as  portarias  da  fundação  zoo-­‐botânica?  

Árvore  Geradora  Mínima  

Fig.3  –  Fundação  Zoo-­‐Botânica  Disponível  em:www.pbh.gov.br/zoobotanica  

 

Caminho  Mínimo  

Origem  

DesAno  

Transbordo  

T  

O  

D  

T  

D  

T   T  

T  

T  

T  

T  

T  

T  

O  T  

T  

T  

T  1  

1  

2  

3  

3  3  

3  

4  4  

4  

4  4  

4  

4  

5  

4  

5  

5  2  

5  

5  

4  5  

6  

5  

6  

7  

7  

2  

1  

T  

Caminho  Mínimo  •  Um   motorista   procura   o   caminho   mais   curto  entre  DiamanAna  e  Ouro  Preto.  Possui  mapa  com  as   distâncias   entre   cada   par   de   interseções  adjacentes.  

•  Modelagem:  – G  =  (V;A):  grafo  direcionado  ponderado,  mapa  rodoviário.  

–  V  :  interseções.  – A:  segmentos  de  estrada  entre  interseções  –  p(u;  v):  peso  de  cada  aresta,  distância  entre  interseções.  

Caminho  Mínimo  •  Caminhos  mais  curtos  a  parAr  de  uma  origem:  

–  dado  um  grafo  ponderado  G  =  (V;A),  desejamos  obter  o  caminho  mais  curto  a  parAr  de  um  dado  vérAce  origem  s  ∈  V  até  cada  v  ∈  V  .  

•   Muitos  problemas  podem  ser  resolvidos  pelo  algoritmo  para  o  problema  origem  única:  –  Caminhos  mais  curtos  com  desXno  único:  reduzido  ao  problema  origem  única  invertendo  a  direção  de  cada  aresta  do  grafo.  

–  Caminhos  mais  curtos  entre  um  par  de  vérXces:  o  algoritmo  para  origem  única  é  a  melhor  opção  conhecida.  

–  Caminhos  mais  curtos  entre  todos  os  pares  de  vérXces:  resolvido  aplicando  o  algoritmo  origem  única  |V  |  vezes,  uma  vez  para  cada  vérAce  origem.  

Caminho  Mínimo  

•  Como  encontrar  um  caminho  mínimo  em  um  grafo?  

 •  Algoritmos:  

– Algoritmo  Dijkstra  

Algoritmo  de  Dijkstra  

•  Mantém  um  conjunto  S  de  vérAces  cujos  caminhos  mais  curtos  até  um  vérAce  origem  já  são  conhecidos.  

•   Produz  uma  árvore  de  caminhos  mais  curtos  de  um  vérAce  origem  s  para  todos  os  vérAces  que  são  alcançáveis  a  parAr  de  s.  

30  

Exemplo  

•  Encontrar  o  caminho  mais  curto  entre  s  e  t  

s  

3  

t  

2  

6  

7  

4  

5  

 24  

 18  

 2  

 9  

 14  

 15    5  

 30  

 20  

 44  

 16  

 11  

 6  

 19  

 6  

31  

Outro  Exemplo  

s  

3  

t  

2  

6  

7  

4  

5  

 24  

 18  

 2  

 9  

 14  

 15    5  

 30  

 20  

 44  

 16  

 11  

 6  

 19  

 6  

 ∞  

 ∞    ∞  

 ∞  

 ∞  

 ∞  

 ∞  

 0  

 distance  label  

S  =  {    }  PQ  =  {  s,  2,  3,  4,  5,  6,  7,  t  }  

32  

Outro  Exemplo  

s  

3  

t  

2  

6  

7  

4  

5  

 24  

 18  

 2  

 9  

 14  

 15    5  

 30  

 20  

 44  

 16  

 11  

 6  

 19  

 6  

 ∞  

 ∞    ∞  

 ∞  

 ∞  

 ∞  

 ∞  

 0  

distancia  

S  =  {    }  PQ  =  {  s,  2,  3,  4,  5,  6,  7,  t  }  

menor  

33  

Outro  Exemplo  

s  

3  

t  

2  

6  

7  

4  

5  

 24  

 18  

 2  

 9  

 14  

 15    5  

 30  

 20  

 44  

 16  

 11  

 6  

 19  

 6  

 15  

 9    ∞  

 ∞  

 ∞  

 14  

 ∞  

 0  

 distance  label  

S  =  {  s  }  PQ  =  {  2,  3,  4,  5,  6,  7,  t  }  

Decrementa    

 ∞  X  

 ∞  

 ∞  X  

X  

34  

Outro  Exemplo  

s  

3  

t  

2  

6  

7  

4  

5  

 24  

 18  

 2  

 9  

 14  

 15    5  

 30  

 20  

 44  

 16  

 11  

 6  

 19  

 6  

 15  

 9    ∞  

 ∞  

 ∞  

 14  

 ∞  

 0  

 distance  label  

S  =  {  s  }  PQ  =  {  2,  3,  4,  5,  6,  7,  t  }  

 ∞  X  

 ∞  

 ∞  X  

X  

menor  

35  

Outro  Exemplo  

s  

3  

t  

2  

6  

7  

4  

5  

 24  

 18  

 2  

 9  

 14  

 15    5  

 30  

 20  

 44  

 16  

 11  

 6  

 19  

 6  

 15  

 9    ∞  

 ∞  

 ∞  

 14  

 ∞  

 0  

S  =  {  s,  2  }  PQ  =  {  3,  4,  5,  6,  7,  t  }  

 ∞  X  

 ∞  

 ∞  X  

X  

36  

Outro  Exemplo  

s  

3  

t  

2  

6  

7  

4  

5  

 24  

 18  

 2  

 9  

 14  

 15    5  

 30  

 20  

 44  

 16  

 11  

 6  

 19  

 6  

 15  

 9    ∞  

 ∞  

 ∞  

 14  

 ∞  

 0  

S  =  {  s,  2  }  PQ  =  {  3,  4,  5,  6,  7,  t  }  

 ∞  X  

 ∞  

 ∞  X  

X  

Decrementa  

X    33  

37  

Outro  Exemplo  

s  

3  

t  

2  

6  

7  

4  

5  

 24  

 18  

 2  

 9  

 14  

 15    5  

 30  

 20  

 44  

 16  

 11  

 6  

 19  

 6  

 15  

 9    ∞  

 ∞  

 ∞  

 14  

 ∞  

 0  

S  =  {  s,  2  }  PQ  =  {  3,  4,  5,  6,  7,  t  }  

 ∞  X  

 ∞  

 ∞  X  

X  

X    33  

menor  

38  

Outro  Exemplo  

s  

3  

t  

2  

6  

7  

4  

5  

 24  

 18  

 2  

 9  

 14  

 15    5  

 30  

 20  

 44  

 16  

 11  

 6  

 19  

 6  

 15  

 9    ∞  

 ∞  

 ∞  

 14  

 ∞  

 0  

S  =  {  s,  2,  6  }  PQ  =  {  3,  4,  5,  7,  t  }  

 ∞  X  

 ∞  

 ∞  X  

X  

X    33  

 44  X  

X  

 32  

39  

Outro  Exemplo  

s  

3  

t  

2  

6  

7  

4  

5  

 24  

 18  

 2  

 9  

 14  

 15    5  

 30  

 20  

 44  

 16  

 11  

 6  

 19  

 6  

 15  

 9  

 ∞  

 ∞  

 14  

 ∞  

 0  

S  =  {  s,  2,  6  }  PQ  =  {  3,  4,  5,  7,  t  }  

 ∞  X  

 ∞  

 ∞  X  

X  

 44  X  

menor  

 ∞  X    33  X  

 32  

40  

Outro  Exemplo  

s  

3  

t  

2  

6  

7  

4  

5  

 18  

 2  

 9  

 14  

 15    5  

 30  

 20  

 44  

 16  

 11  

 6  

 19  

 6  

 15  

 9  

 ∞  

 ∞  

 14  

 ∞  

 0  

S  =  {  s,  2,  6,  7  }  PQ  =  {  3,  4,  5,  t  }  

 ∞  X  

 ∞  

 ∞  X  

X  

 44  X  

 35  X  

 59   X  

 24  

 ∞  X    33  X  

 32  

41  

Outro  Exemplo  

s  

3  

t  

2  

6  

7  

4  

5  

 24  

 18  

 2  

 9  

 14  

 15    5  

 30  

 20  

 44  

 16  

 11  

 6  

 19  

 6  

 15  

 9  

 ∞  

 ∞  

 14  

 ∞  

 0  

S  =  {  s,  2,  6,  7  }  PQ  =  {  3,  4,  5,  t  }  

 ∞  X  

 ∞  

 ∞  X  

X  

 44  X  

 35  X  

 59   X  

menor  

 ∞  X    33  X  

 32  

42  

Outro  Exemplo  

s  

3  

t  

2  

6  

7  

4  

5  

 24  

 18  

 2  

 9  

 14  

 15    5  

 30  

 20  

 44  

 16  

 11  

 6  

 19  

 6  

 15  

 9  

 ∞  

 ∞  

 14  

 ∞  

 0  

S  =  {  s,  2,  3,  6,  7  }  PQ  =  {  4,  5,  t  }  

 ∞  X  

 ∞  

 ∞  X  

X  

 44  X  

 35  X  

 59   X  X    51  

X    34  

 ∞  X    33  X  

 32  

43  

Outro  Exemplo  

s  

3  

t  

2  

6  

7  

4  

5  

 18  

 2  

 9  

 14  

 15    5  

 30  

 20  

 44  

 16  

 11  

 6  

 19  

 6  

 15  

 9  

 ∞  

 ∞  

 14  

 ∞  

 0  

S  =  {  s,  2,  3,  6,  7  }  PQ  =  {  4,  5,  t  }  

 ∞  X  

 ∞  

 ∞  X  

X  

 44  X  

 35  X  

 59   X  X    51  

X    34  

menor  

 ∞  X    33  X  

 32  

 24  

44  

Outro  Exemplo  

s  

3  

t  

2  

6  

7  

4  

5  

 18  

 2  

 9  

 14  

 15    5  

 30  

 20  

 44  

 16  

 11  

 6  

 19  

 6  

 15  

 9  

 ∞  

 ∞  

 14  

 ∞  

 0  

S  =  {  s,  2,  3,  5,  6,  7  }  PQ  =  {  4,  t  }  

 ∞  X  

 ∞  

 ∞  X  

X  

 44  X  

 35  X  

 59   X  X    51  

X    34  

 24  

X    50  

X    45  

 ∞  X    33  X  

 32  

45  

Outro  Exemplo  

s  

3  

t  

2  

6  

7  

4  

5  

 18  

 2  

 9  

 14  

 15    5  

 30  

 20  

 44  

 16  

 11  

 6  

 19  

 6  

 15  

 9  

 ∞  

 ∞  

 14  

 ∞  

 0  

S  =  {  s,  2,  3,  5,  6,  7  }  PQ  =  {  4,  t  }  

 ∞  X  

 ∞  

 ∞  X  

X  

 44  X  

 35  X  

 59   X  X    51  

X    34  

 24  

X    50  

X    45  

menor  

 ∞  X    33  X  

 32  

46  

Outro  Exemplo  

s  

3  

t  

2  

6  

7  

4  

5  

 18  

 2  

 9  

 14  

 15    5  

 30  

 20  

 44  

 16  

 11  

 6  

 19  

 6  

 15  

 9  

 ∞  

 ∞  

 14  

 ∞  

 0  

S  =  {  s,  2,  3,  4,  5,  6,  7  }  PQ  =  {  t  }  

 ∞  X  

 ∞  

 ∞  X  

X  

 44  X  

 35  X  

 59   X  X    51  

X    34  

 24  

X    50  

X    45  

 ∞  X    33  X  

 32  

47  

Outro  Exemplo  

s  

3  

t  

2  

6  

7  

4  

5  

 18  

 2  

 9  

 14  

 15    5  

 30  

 20  

 44  

 16  

 11  

 6  

 19  

 6  

 15  

 9  

 ∞  

 ∞  

 14  

 ∞  

 0  

S  =  {  s,  2,  3,  4,  5,  6,  7  }  PQ  =  {  t  }  

 ∞  X  

 ∞  

 ∞  X  

X  

 44  X  

 35  X  

 59   X  X    51  

X    34  

X    50  

X    45  

menor  

 ∞  X    33  X  

 32  

 24  

48  

Outro  Exemplo  

s  

3  

t  

2  

6  

7  

4  

5  

 24  

 18  

 2  

 9  

 14  

 15    5  

 30  

 20  

 44  

 16  

 11  

 6  

 19  

 6  

 15  

 9  

 ∞  

 ∞  

 14  

 ∞  

 0  

S  =  {  s,  2,  3,  4,  5,  6,  7,  t  }  PQ  =  {  }  

 ∞  X  

 ∞  

 ∞  X  

X  

 44  X  

 35  X  

 59   X  X    51  

X    34  

X    50  

X    45  

 ∞  X    33  X  

 32  

49  

Outro  Exemplo  

s  

3  

t  

2  

6  

7  

4  

5  

 24  

 18  

 2  

 9  

 14  

 15    5  

 30  

 20  

 44  

 16  

 11  

 6  

 19  

 6  

 15  

 9  

 ∞  

 ∞  

 14  

 ∞  

 0  

S  =  {  s,  2,  3,  4,  5,  6,  7,  t  }  PQ  =  {  }  

 ∞  X  

 ∞  

 ∞  X  

X  

 44  X  

 35  X  

 59   X  X    51  

X    34  

X    50  

X    45  

 ∞  X    33  X  

 32  

Exemplo  

Exemplo  

FLUXO  MÁXIMO  

Introdução  

•  Mapa  rodoviário  à  grafo  orientado  à  encontrar  o  menor  caminho  de  um  ponto  a  outro.  

•  Grafo  orientado  pode  representar  também  um  “fluxo  em  rede”  à  fluxo  de  materiais.  

•  Ex:  Material  percorrendo  um  sistema  desde  uma  origem,  onde  o  material  é  produzido,  até  um  sorvedor,  onde  ele  é  consumido.  – Origem  produz  material  em  alguma  taxa  fixa  e  o  sorvedor  consome  o  material  na  mesma  taxa.  

17/04/18   Luciana  Assis  –  Algoritmos  e  Estrutura  de  Dados  III  -­‐  UFVJM   53  

Aplicações  

•  O  fluxo  em  redes  pode  ser  usado  para  modelar  líquidos  fluindo  por  tubos,  peças  de  linha  de  montagem,  corrente  por  redes  elétricas,  informações  por  redes  de  comunicação  e  assim  por  diante.  

17/04/18   Luciana  Assis  –  Algoritmos  e  Estrutura  de  Dados  III  -­‐  UFVJM   54  

Exemplo  

Exemplo  

Solução  ÓAma  

Modelagem  •  Cada  aresta  orientada  em  um  fluxo  de  rede  representa  um  canal  para  o  material.  

•  Cada  canal  tem  uma  capacidade  estabelecida.  •  VérAces  são  junções  de  canais  e,  exceto  origem  e  sorvedor,  a  taxa  na  qual  o  material  entra  no  vérAce  deve  ser  igual  a  taxa  em  que  ele  deixa  o  vérAce  à  Conservação  de  Fluxo  

•  ObjeAvo:  Calcular  a  maior  taxa  na  qual  o  material  pode  ser  enviado  desde  a  origem  até  o  sorvedor  sem  violar  quaisquer  restrições  de  capacidade  dos  canais  (arestas).  

17/04/18   Luciana  Assis  –  Algoritmos  e  Estrutura  de  Dados  III  -­‐  UFVJM   57  

Fluxo  em  Redes  

•  Grafo  orientado  em  que  cada  aresta  tem  uma  capacidade  não  negaAva.  

•  DisAnguimos  dois  vérAces  em  um  fluxo  em  rede:    – Origem  (s)  – Sorvedor  (t)  

•  Consideramos  que  existe  um  caminho  s  àvà  t.  

17/04/18   Luciana  Assis  –  Algoritmos  e  Estrutura  de  Dados  III  -­‐  UFVJM   58  

Fluxo  •  Fluxo  em  G  saAsfaz  às  três  propriedades  seguintes:  –  Restrição  de  capacidade:  Nenhuma  aresta  pode  transportar  mais  que  sua  capacidade  à  f(u,v)  ≤  c(u,v)  

– AnA-­‐simetria  oblíqua:  Se  existe  um  fluxo  de  u  até  v,  então  existe  um  fluxo  inverso  de  v  até  u  à  f(u,v)=-­‐  f(v,u)  

–  Conservação  de  fluxo:    Fluxo  de  entrada  =  Fluxo  de  saída  à  Σu∈V  f(u,v)  =  0.  

•  Isso  garante  que:  –  não  existe  acumulo  nos  nós  interiores;  –  os  nós  interiores  não  produzem  o  item  transportado;  –  Eles  apenas  repassam...  (roteamento)  

17/04/18   Luciana  Assis  –  Algoritmos  e  Estrutura  de  Dados  III  -­‐  UFVJM   59  

Redes  Residuais  

•  A  rede  residual  Gf  consiste  em  arestas  que  podem  admiAr  mais  fluxo.  

•  Seja  f  um  fluxo  em  G,  e  considere  um  par  de  vérAces  u,v  ∈  V:  – A  quanAdade  de  fluxo  adicional  que  podemos  “empurrar”  de  u  para  v  antes  de  exceder  a  capacidade  c(u,v)  é  a  capacidade  residual.  

17/04/18   Luciana  Assis  –  Algoritmos  e  Estrutura  de  Dados  III  -­‐  UFVJM   60  

Capacidade  residual  

•  Capacidade  Residual  (cf):  – cf  (u,  v)  =  c(u,v)  -­‐  f  (u,  v)  

•  Exemplo:  – Capacidade  de  a  para  b  é  de  10Kbps;  – Estamos  uAlizando  2Kbps;  – Então,  a  capacidade  residual  é  8Kbps...  

17/04/18   Luciana  Assis  –  Algoritmos  e  Estrutura  de  Dados  III  -­‐  UFVJM   61  

Aresta  Residual  •  Aresta  da  rede  residual,  ou  seja,  pode  admiAr  ainda  algum  fluxo  maior  que  0.    

•  Aresta  de  Gf  

17/04/18   Luciana  Assis  –  Algoritmos  e  Estrutura  de  Dados  III  -­‐  UFVJM   62  

Fluxo  

Capacidade  

Caminhos  Aumentantes  •  Caminho  aumentante  p  é  um  caminho  simples  desde  s  até  t  na  rede  residual  Gf.  

•  Pela  definição  de  rede  residual,  cada  aresta  (u,v)  em  um  caminho  aumentante  admite  algum  fluxo  posiAvo  adicional  de  u  até  v  sem  violar  a  restrição  de  capacidade  sobre  a  aresta.  

•  A  quanAdade  máxima  pela  qual  podemos  aumentar  o  fluxo  em  cada  aresta  de  um  caminho  aumentante  p  de  capacidade  residual  de  p,  dada  por:  –  cf(p)  =  min{cf(u,v)  |  (u,v)  ∈p}  

17/04/18   Luciana  Assis  –  Algoritmos  e  Estrutura  de  Dados  III  -­‐  UFVJM   63  

Problema  de  Fluxo  Máximo  

•  fonte  s  e  depósito  t.  •  c(u,v)  =  capacidade  máxima  do  arco  

•  f(u,v)  =  fluxo  entre  vérAces  u  e  v.  

Rede G(V,E)

17/04/18   Luciana  Assis  –  Algoritmos  e  Estrutura  de  Dados  III  -­‐  UFVJM   64  

Problema  de  Fluxo  Máximo  

•  cf:Capacidade  residual  •  Rf:  Rede  residual  •  Caminhos  Aumentantes  

2    

2    

3    

1    

1    

1    

0    

0    

cf(d,t)  =  2  

Rede G(V,E)

17/04/18   Luciana  Assis  –  Algoritmos  e  Estrutura  de  Dados  III  -­‐  UFVJM   65  

Corte  de  Fluxo  em  Redes  

•  Corte  (S,T)  de  um  fluxo  em  rede  G=(V,E)  é  uma  parAção  de  V  em  S  e  T,  tal  que  s  ∈  S  e  t  ∈  T.  

•  Se  f  é  um  fluxo,  então  o  fluxo  líquido  pelo  corte  (S,T)  é  definido  como  f(S,T).  – Somatório  do  fluxo  (posiAvo  e  negaAvo)  do  corte  

•  Capacidade  do  corte  (S,T)  é  c(S,T)  – somatório  das  capacidades  posiAvas  do  corte.  

•  Corte  Mínimo:  Capacidade  mínima  dentre  todos  os  cortes  possíveis.  

17/04/18   Luciana  Assis  –  Algoritmos  e  Estrutura  de  Dados  III  -­‐  UFVJM   66  

Problema  de  Fluxo  Máximo  

•  Corte  •  Fluxo  Líquido  •  Capacidade  do  Corte  •  Teorema  de  Fluxo  Máximo  e  Corte  Mínimo  

Rede G(V,E) 17/04/18   Luciana  Assis  –  Algoritmos  e  Estrutura  de  Dados  III  -­‐  UFVJM   67  

2    

2    

3    

1    

1    

1    

0    

0    

f(S,T)  =  3  –  1  –0  +  1  =  3  c(S,T)  =  3  +  3  =  6  c(S,T)  =  2  +  3  =  5  

Teorema  de  Fluxo  Máximo  e  Corte  Mínimo  

•  Em  qualquer  grafo  direcionado  (digrafo)  capacitado  com  vérAce  inicial  e  vérAce  final,  a  intensidade  de  um  fluxo  máximo  que  respeita  as  capacidades  é  igual  à  capacidade  de  um  corte  mínimo  que  separa  o  vérAce  inicial  do  final.    

Problema  de  Fluxo  Máximo  

•  Esse  problema  consiste  em  calcular  o  maior  volume  de  itens  que  podem  ser  transportados  entre  duas  localizações  sem  violar  as  restrições  de  capacidades  dos  canais  de  comunicação  da  rede.  

 

17/04/18   Luciana  Assis  –  Algoritmos  e  Estrutura  de  Dados  III  -­‐  UFVJM   69  

Algoritmo  Corte  Mínimo  

•  Enumerar  todos  os  cortes  possíveis.  •  O  corte  com  menor  capacidade  indica  o  maior  fluxo  possível  na  rede.  

•  Problema:  A  enumeração  de  todos  os  cortes  é  inviável  para  problemas  de  grande  magnitude.  

Problema  de  Fluxo  Máximo  

•  Algoritmo  Ford  e  Fulkerson  (1962):    Enquanto  exisAr  caminho  aumentante  s-­‐>t                Encontra  caminho  aumentante  “p”                Encontra  capacidade  residual  mínima  de  p                Cf(p)  =  Min{Cf(u,v),  ∀  (u,v)  ∈  p}                f(u,v)  +=  Cf  (p),  ∀  (u,v)  ∈  p  Fim.    

17/04/18   Luciana  Assis  –  Algoritmos  e  Estrutura  de  Dados  III  -­‐  UFVJM   71  

Exemplo  

2  

2  

2  

2  2  

2  

2  

3  

2  

2  

2  

2  

3  

1

2  

2  

1

0

0

0

1

1

1

0

1  

2  

2  

0

3

0

Referências  •  [1] CORMEN T.H., LEISERSON C.E., RIVEST R.L., STEIN C., Algoritmos:

Teoria e Prática, Campus, 2002. •  [2] MALHOTRA V.M., PRAMODTH M., MAHESHWARI S.N., “An o(v3)

algorithm for finding maximum flows in networks,” Information Processing Latters, vol. 7, no. 6, Outubro 1978.

•  [3] GOLDBARG Marco Cesar LUNA Henrique Pacca, Otimização Combinatória e Programação Linear, Campus, 2000.

•  [4] BAZARAA Mokhtar S., JARVIS John J., SHERALI Hanif D., Linear Programming and Network Flows, Wiley.

17/04/18   Luciana  Assis  –  Algoritmos  e  Estrutura  de  Dados  III  -­‐  UFVJM   73