• Nenhum resultado encontrado

Seja k a quantidade de fluxo que passa na rede

N/A
N/A
Protected

Academic year: 2019

Share "Seja k a quantidade de fluxo que passa na rede"

Copied!
57
0
0

Texto

(1)
(2)

Definição

● Dado um grafo G(V,E) com arestas capacitadas

encontrar o máximo possível de fluxo que é possível transmitir entre dois nós especiais, chamados origem e destino, sem violar a

(3)

Modelagem matemática

● Seja k a quantidade de fluxo que passa na rede

● Seja u

ij a capacidade da aresta (i,j)

● Seja x

ij a quantidade de fluxo que passa pelo

aresta (i,j)

● Sejam s e t a origem e destino do fluxo

(4)

Modelagem matemática

Maximizar k Sujeito a

j:(s , j)∈E

xsj

j:( j , s)∈E

x js=k

j:(t , j)∈E

xtj

j:( j , t)∈E

x jt=−k

j:(i , j)∈E

xij

j:( j , i)∈E

x ji=0,∀ iV −{s , t }

(5)

Rede Residual

● Normalmente construída para grafos

direcionados, mas também pode ser construída para grafos não direcionados

1

2

4 5

3 2

2

1 3

5

(6)

Rede Residual

● Os vértices são mantidos

1

2

4 5

3 2

2

1 3

5

1

2

4 5

(7)

Rede Residual

● Para cada arco (i,j) com custo e capacidade c

ij

e uij crie um arco (i,j) na rede residual com

custo cij e capacidade rij = uij – xij

1

2

4 5

3 2

2

1 3

5

1

2

4 5

3

Obs: Para o fluxo máximo, os custos não são relevantes 2

2

1 1

1 3

(8)

Rede Residual

● Para cada arco (i,j) com custo e capacidade c

ij

e uij crie um arco (j,i) na rede residual com

custo -cij e capacidade xij

1

2

4 5

3 2

2

1 3

5

1

2

4 5

3 2

2

1 1

1 3

(9)

Rede Residual

● A rede residual muda sempre que x mudar, e a

rede residual final é composta somente pelos arcos com capacidade maior que zero. Para x = 0 tem-se a seguinte rede

3 1

2

4 5

3 2

2

1

(10)

Rede Residual

● Para x

14 =2 e o restante das componentes de x

sendo zero temos

1

2

3 2

2

(11)

Algoritmo de Rótulos

● A ideia é simples. Encontre um caminho entre

os vértices s e t

● Sature este caminho com a maior quantidade

de fluxo possível

● Atualize a rede residual

● Repita os três passos anteriores enquanto

(12)

Exemplo

s t

10

10

2

8

1 10

10 1

(13)

Exemplo

1 2 3 4 5 6

1 0 0 0 0 0 0

2 0 0 0 0 0 0

3 0 0 0 0 0 0

4 0 0 0 0 0 0

5 0 0 0 0 0 0

6 0 0 0 0 0 0

Fluxo Residual

1 2 3 4 5 6

1 0 10 0 10 0 0

2 0 0 2 1 8 0

3 0 0 0 0 0 10

4 0 0 0 0 9 0

5 0 0 1 0 0 10

6 0 0 0 0 0 0

(14)

Exemplo

1 2 3 4 5 6

1 0 2 0 0 0 0

2 0 0 2 0 0 0

3 0 0 0 0 0 2

4 0 0 0 0 0 0

5 0 0 0 0 0 0

6 0 0 0 0 0 0

Fluxo Residual 1 4 2 3 5 6 8,2 10 2 8

1 8,2

10 1

9

1 2 3 4 5 6

1 0 8 0 10 0 0

2 2 0 0 1 8 0

3 0 2 0 0 0 8

4 0 0 0 0 9 0

5 0 0 1 0 0 10

(15)

Exemplo

1 2 3 4 5 6

1 0 3 0 0 0 0

2 0 0 2 0 1 0

3 0 0 0 0 0 3

4 0 0 0 0 0 0

5 0 0 1 0 0 0

6 0 0 0 0 0 0

Fluxo Residual 1 4 2 3 5 6 7,3 10 2 7,1

1 7,3

10

1

9

1 2 3 4 5 6

1 0 7 0 10 0 0

2 3 0 0 1 7 0

3 0 2 0 0 1 7

4 0 0 0 0 9 0

5 0 1 0 0 0 10

6 0 0 3 0 0 0

(16)

Exemplo

1 2 3 4 5 6

1 0 10 0 0 0 0

2 0 0 2 0 8 0

3 0 0 0 0 0 3

4 0 0 0 0 0 0

5 0 0 1 0 0 7

6 0 0 0 0 0 0

Fluxo Residual 1 4 2 3 5 6 10 10 2 8

1 7,3

3,7 1

9

1 2 3 4 5 6

1 0 0 0 10 0 0

2 10 0 0 1 0 0

3 0 2 0 0 1 7

4 0 0 0 0 9 0

5 0 8 0 0 0 3

(17)

Exemplo

1 2 3 4 5 6

1 0 10 0 3 0 0

2 0 0 2 0 8 0

3 0 0 0 0 0 3

4 0 0 0 0 3 0

5 0 0 1 0 0 10

6 0 0 0 0 0 0

Fluxo Residual 1 4 2 3 5 6 10 7,3 2 8

1 7,3

10 1

6,3

1 2 3 4 5 6

1 0 0 0 7 0 0

2 10 0 0 1 0 0

3 0 2 0 0 1 7

4 3 0 0 0 6 0

5 0 8 0 3 0 0

6 0 0 3 0 10 0

(18)

Exemplo

1 2 3 4 5 6

1 0 10 0 3 0 0

2 0 0 2 0 8 0

3 0 0 0 0 0 3

4 0 0 0 0 3 0

5 0 0 1 0 0 10

6 0 0 0 0 0 0

Fluxo Residual 1 4 2 3 5 6 10 7,3 2 8

1 7,3

10 1

6,3

1 2 3 4 5 6

1 0 0 0 7 0 0

2 10 0 0 1 0 0

3 0 2 0 0 1 7

4 3 0 0 0 6 0

5 0 8 0 3 0 0

6 0 0 3 0 10 0

(19)

Algoritmo de Rótulos

● Utiliza os conceitos de marcação de vértices e de

rede residual

● Sejam M e L vetores binários. M representa se

existe um caminho entre a origem e vértice. Assim M[i] contém 1 se o vértice i existe um caminho

entre a origem e i

● L tem comportamento similar mas indica uma

(20)

Algoritmo de Rótulos

● Seja p um vetor que indica quem é o predecessor

de um nó em um caminho. Similar a estratégia utilizada na resolução do caminho mínimo

● Seja X, também chamado fluxo, uma matriz que

(21)

Algoritmo de Rótulos

Procedimento aumentarFluxo(vetor pred,

matriz fluxo, RedeResidual Gr, vertice s, vertice t)

início

Usando pred, encontre a menor capacidade residual

em Gr, que esteja no caminho de s para t

Sendo cr a capacidade encontrada no passo

anterior, aumente fluxo em cr unidades em

todos os arcos do caminho

Atualize a rede residual Gr

(22)

Algoritmo de Rótulos

Algoritmo rotulos(Grafo G, Matriz X, Vértice s, Vértice t)

Início

X[i][j] = 0 para todo i, j em G.V

Seja G1 a rede residual de G e X

M[t]=1

enquanto ( M[t]==1 ) faça

M[i]=0 para todos os i em G.V

(23)

Algoritmo de Rótulos

enquanto (Soma(L)!=0) faça

escolha um i tal que L[i] seja 1

L[i]=0

Para( cada arco (i,j) em G1.E )faça

Se( M[j]==0 )Então

P[j]=i, M[j]=1, L[j]=1

fim se

(24)

Algoritmo de Rótulos

Se( M[T]==1 )então

aumentarFluxo(P, X, G1, s, t)

fim se

(25)

Algoritmo Escala de Capacidades

● O algoritmo de correção de rótulos não é

eficiente em termos do uso de fluxo

● O AEC tenta otimizar isso, levando maiores

(26)

Algoritmo Escala de Capacidades

● criar uma rede residual que atende um certo

patamar

● Saturar os caminhos desta rede

● Reduz o patamar

● Repetir os três passos anteriores enquanto o

(27)

Algoritmo Escala de Capacidades

Algoritmo escalaCapacidades(Fluxo x, Grafo G, Vértice s, Vértice t)

Início

x[i][j]=0 para todo i,j em G.V

delta= 2^piso(log(max(uij:(i,j) pertence a G.E))

defina Gr(G,x,delta)

Enquanto (delta >= 1)

(28)

Algoritmo Escala de Capacidades

Seja P o vetor de predecessores que

indicam o caminho de s à t em Gr

aumentarFluxo(P, x, Gr, s, t)

Fim enquanto

delta=delta/2, Atualize Gr(G,x,delta)

(29)

Exemplo

s t

10

10

2

8

1 10

10 1

(30)

Exemplo

1 4 2 3 5 6 10 10 8 10 10 9

Delta= 2^ln10= 2^2 = 4 1 2 3 4 5 6

1 0 0 0 0 0 0

2 0 0 0 0 0 0

3 0 0 0 0 0 0

4 0 0 0 0 0 0

5 0 0 0 0 0 0

6 0 0 0 0 0 0

Fluxo Residual Delta

1 2 3 4 5 6

1 0 10 0 10 0 0

2 0 0 0 0 8 0

3 0 0 0 0 0 10

4 0 0 0 0 9 0

5 0 0 0 0 0 10

(31)

Exemplo

1 4 2 3 5 6 10 9 8 10 9 9

Delta= 4 1 2 3 4 5 6

1 0 0 0 9 0 0

2 0 0 0 0 0 0

3 0 0 0 0 0 0

4 0 0 0 0 9 0

5 0 0 0 0 0 9

6 0 0 0 0 0 0

Fluxo

1 2 3 4 5 6

1 0 10 0 0 0 0

2 0 0 0 0 8 0

3 0 0 0 0 0 10

4 9 0 0 0 0 0

5 0 0 0 9 0 0

6 0 0 0 0 9 0

(32)

Exemplo

1 4 2 3 5 6 10 9 8 10 9 9

Delta= 4/2=2

Fluxo

2

1 2 3 4 5 6

1 0 10 0 0 0 0

2 0 0 2 0 8 0

3 0 0 0 0 0 10

4 9 0 0 0 0 0

5 0 0 0 9 0 0

6 0 0 0 0 9 0

1 2 3 4 5 6

1 0 0 0 9 0 0

2 0 0 0 0 0 0

3 0 0 0 0 0 0

4 0 0 0 0 9 0

5 0 0 0 0 0 9

6 0 0 0 0 0 0

(33)

Exemplo

1 4 2 3 5 6 8,2 9 8 8,2 9 9

Delta= 2

Fluxo

2

1 2 3 4 5 6

1 0 8 0 0 0 0

2 2 0 0 0 8 0

3 0 2 0 0 0 8

4 9 0 0 0 0 0

5 0 0 0 9 0 0

6 0 0 2 0 9 0

1 2 3 4 5 6

1 0 2 0 9 0 0

2 0 0 2 0 0 0

3 0 0 0 0 0 2

4 0 0 0 0 9 0

5 0 0 0 0 0 9

6 0 0 0 0 0 0

(34)

Exemplo

1 4 2 3 5 6 8,2 1,9 8 8,2 1,9 9

Delta= 2/1=1

Fluxo

2

1 1

Residual Delta

1 2 3 4 5 6

1 0 2 0 9 0 0

2 0 0 2 0 0 0

3 0 0 0 0 0 2

4 0 0 0 0 9 0

5 0 0 0 0 0 9

6 0 0 0 0 0 0

1 2 3 4 5 6

1 0 8 0 1 0 0

2 2 0 0 1 8 0

3 0 2 0 0 0 8

4 9 0 0 0 0 0

5 0 0 1 9 0 1

(35)

Exemplo

1 4 2 3 5 6 7,3 1,9 7,1 7,3 1,9 9

Delta= 1

Fluxo

2

1 1

Residual Delta

1 2 3 4 5 6

1 0 3 0 9 0 0

2 0 0 2 0 1 0

3 0 0 0 0 0 3

4 0 0 0 0 9 0

5 0 0 1 0 0 9

6 0 0 0 0 0 0

1 2 3 4 5 6

1 0 7 0 1 0 0

2 3 0 0 1 7 0

3 0 2 0 0 1 7

4 9 0 0 0 0 0

5 0 1 0 9 0 1

(36)

Exemplo

1 4 2 3 5 6 6,4 1,9 6,2 7,3 10 9

Delta= 1

Fluxo

2

1 1

Residual Delta

1 2 3 4 5 6

1 0 4 0 9 0 0

2 0 0 2 0 4 0

3 0 0 0 0 0 3

4 0 0 0 0 9 0

5 0 0 1 0 0 10

6 0 0 0 0 0 0

1 2 3 4 5 6

1 0 6 0 1 0 0

2 4 0 0 1 6 0

3 0 2 0 0 1 7

4 9 0 0 0 0 0

5 0 2 0 9 0 0

(37)

Algoritmo Escala de Capacidades

Algoritmo escalaCapacidades(Fluxo x, Grafo G, Vértice s, Vértice t)

Início

x[i][j]=0 para todo i,j em G.V

delta= 2^piso(ln(max(uij:(i,j) pertence a G.E))

defina Gr(G,x,delta)

Enquanto (delta >= 1)

(38)

Algoritmo Escala de Capacidades

Seja P o vetor de predecessores que

indicam o caminho de s à t em Gr

aumentarFluxo(P, x, Gr, s, t)

Fim enquanto

delta=delta/2, Atualize Gr(G,x,delta)

(39)

Problema do Corte Mínimo

● Dado um grafo, encontrar o conjunto de

arestas de menor peso de forma que, se

(40)

Problema do Corte Mínimo

● Este é o problema dual do problema de fluxo

máximo

● Resolvendo o problema de fluxo máximo,

(41)

Problema do Corte Mínimo

● Usando a rede residual do fluxo máximo em

um grafo, separa-se os vértices em dois

conjuntos: Marcados (M) e não marcados (nM)

● O conjunto M começa com a origem do fluxo, o

nM com todos os outros

● Acrescenta-se iterativamente em M vértices de

(42)

Problema do Corte Mínimo

● A cada iteração, acrescenta-se um vértice de

nM em M

● A partir de algum vértice v de M, escolhe-se um

vértice adjacente a v que esteja em nM.

(43)

Problema do Corte Mínimo

● O processo continua até que nenhum vértice

em M possua um vértice adjacente em nM (usando arcos de capacidade não nula)

● No final do procedimento o grafo estará

bipartido

● O corte mínimo é o conjunto de arcos que

(44)

Problema do Corte Mínimo

Exemplo: Grafo, fluxo de 0 para 6

0

1

2

3

4

5

6 7

5

4

1

3

2

4 5

4

1

(45)

Problema do Corte Mínimo

Exemplo: Fluxo Máximo 14 unidades

0

1

2

3

4

5

6 7,7

5,4

4,3

1,1

3,3

2,0

4,3

5,4

4,4

1,1

6,6

(46)

Problema do Corte Mínimo

Exemplo: Rede residual

0

1

2

3

4

5

6 7

1

1

1

3

2

1

4

1 6

1 8

3

1 4

4

(47)

Problema do Corte Mínimo

Exemplo: Marcado={} 0 1 2 3 4 5 6 7 1 1 1 3 2 1 4 1 6 1 8 3 1 4 4 3

(48)

Problema do Corte Mínimo

Exemplo: Marcados em vermelho

0

1

2

3

4

5

6 7

1

1

1

3

2

1

4

1 6

1 8

3

1 4

4

(49)

Problema do Corte Mínimo

Exemplo: Marcados em vermelho

0 1 2 3 4 5 6 7 1 1 1 3 2 1 4 1 6 1 8 3 1 4 4 3

(50)

Problema do Corte Mínimo

Exemplo: Marcados em vermelho

0

1

2

3

4

5

6 7

1

1

1

3

2

1

4

1 6

1 8

3

1 4

4

(51)

Problema do Corte Mínimo

Exemplo: Marcados em vermelho

0 1 2 3 4 5 6 7 1 1 1 3 2 1 4 1 6 1 8 3 1 4 4 3

(52)

Problema do Corte Mínimo

Exemplo: Marcados em vermelho

0

1

2

3

4

5

6 7

1

1

1

3

2

1

4

1 6

1 8

3

1 4

4

(53)

Problema do Corte Mínimo

Exemplo: Vértices marcados no grafo original

O corte mínimo é dado pelos arcos que ligam os vértices marcados aos vértices não marcados. Neste caso {(1,4), (2,4), (5,4), (5,6)}. Ao somar a 0

1

2

3

4

5

6 7

5

4

1

3

2

4 5

4

1

(54)

Problema do Corte Mínimo

Exemplo: Vértices marcados no grafo original

0

1

2

3

4

5

6 7

5

4

1

3

2

4 5

4

1

(55)

Problema do Corte Mínimo

Procedimento marcar(Grafo G, Vértice s, Lógico[] Marcado)

Início

Marcado[s]= verdadeiro

Para( todo Vértice i em G )Faça

Se(exitem um arco (s,i) em G com capacidade não nula & !Marcado[i]) Então

marcar(G,i,Marcado)

Fim Se

(56)

Problema do Corte Mínimo

Procedimento corteMínimo(Grafo G, Vértice s, Vértice t)

Início

Encontre o fluxo máximo X em G

Seja gr a rede residual de G e X

(57)

Problema do Corte Mínimo

Para( todo vértice i em V ) Faça

Para(todo vértice j em V) Faça

Se (marcado[i] & !marcado[j] & existe um arco (i,j) em G.E )Então

Imprimir “Arco ”+ i +“ ”+ j

Fim Se

Fim Para

Referências

Documentos relacionados

• Def: Um grafo que possua a propriedade de ser possível dividir os vértices em dois conjuntos tais que todas as arestas apenas ligam vértices de um conjunto

A verdade é que não adianta o produtor e o benefi- ciador se modernizarem, investirem em novas embalagens, capacitação da mão-de-obra e máquinas de classificação se o restante

Transformar los espacios es también transformar la dinámica de las relaciones dentro del ambiente de trabajo, la glo- balización alteró el mundo corporativo, en ese sentido es

Mesmo com a limitac¸˜ao de ter uma perna de pau (a esquerda), ele ganhou seis medalhas na gin´astica: trˆes de ouro, duas de prata e uma de bronze.. O gerente de uma loja de

Além disso, iremos generalizar nossas ob- servações para cubos de dimensões maiores, isto é, vamos contar o número de vértices, arestas, faces e outros elementos que existem em um

Jair Vieira Silva Júnior MATEMÁTICA E SUAS TECNOLOGIAS.. www.professorjuniorvieira.wordpress.com Lista de Exercícios: Geometria

Em 1935, Philip Hall apresenta um teorema (conhecido como o teorema de Hall ou dos casamentos) onde estabelece uma condição necessária e suficiente para a existência de um

Os motins na América Portuguesa tanto quanto na Espanhola derivam do colapso das formas acomodativas - como será melhor explicado à frente -, ou melhor dizendo, do rompimento