fluxo em redes prof. m.sc. fábio francisco da costa fontes maio - 2009

53
FLUXO EM REDES FLUXO EM REDES Prof. M.Sc. Fábio Francisco da Costa Fontes Maio - 2009

Upload: internet

Post on 16-Apr-2015

109 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: FLUXO EM REDES Prof. M.Sc. Fábio Francisco da Costa Fontes Maio - 2009

FLUXO EM REDESFLUXO EM REDES

Prof. M.Sc. Fábio Francisco da Costa Fontes

Maio - 2009

Page 2: FLUXO EM REDES Prof. M.Sc. Fábio Francisco da Costa Fontes Maio - 2009

Introdução

Grafos podem ser usados para modelar o fluxo de materiais numa rede:Líquidos fluindo por tubosPeças por linhas de montagemCorrente por redes elétricas Informações por redes de comunicação

O material percorre uma rede desde uma origem, onde ele é produzido, até um sorvedor, onde ele é consumido

Page 3: FLUXO EM REDES Prof. M.Sc. Fábio Francisco da Costa Fontes Maio - 2009

Introdução

Cada aresta é um canal para o material Cada canal tem uma capacidade

estabelecida, dada como uma taxa máxima (ex.: 200 litros/h)

Vértices são junções de canais A origem produz o material numa taxa

fixa e o sorvedor consome o material na mesma taxa (não há acúmulo de material nos nós da rede)

Page 4: FLUXO EM REDES Prof. M.Sc. Fábio Francisco da Costa Fontes Maio - 2009

Introdução

Definição: uma rede (s-t) é um dígrafo conectado que tem um vértice chamado origem (s), com grau de saída não nulo, e um vértice chamado sorvedor (t), com grau de entrada não nulo

Definição: uma rede limitada é um dígrafo conectado tal que a cada arco e é associado um peso não negativo cap(e), chamado capacidade de e

Page 5: FLUXO EM REDES Prof. M.Sc. Fábio Francisco da Costa Fontes Maio - 2009

Introdução Seja v um vértice em um dígrafo N:

Definição: O conjunto de saída de v, denotado por Out(v), é o conjunto de todos os arcos que saem de v

Definição: O conjunto de entrada de v, denotado por In(v), é o conjunto de todos os arcos que chegam em v

Para qualquer subconjunto de vértices X e Y, seja X,Y o conjunto de todos os arcos direcionados de um vértice em X para um vértice em Y

Page 6: FLUXO EM REDES Prof. M.Sc. Fábio Francisco da Costa Fontes Maio - 2009

Introdução

Exemplo: se X={x,v} e Y={w,t}, então os elementos de X,Y são os arcos xw e vt

s

x

v

w

t

7

4

6

53

5

7

Page 7: FLUXO EM REDES Prof. M.Sc. Fábio Francisco da Costa Fontes Maio - 2009

Fluxo em Rede Definição: um fluxo em rede é uma

função f: E R+ que associa um número real positivo f(e) para cada arco e tal que: (Restrições de capacidade) f(e) ≤ cap(e),

para cada arco e na rede N (Restrições de conservação)

, para todo vértice v na

rede N, com exceção da origem e do sorvedor.Ou seja, a soma dos f(e) que chegam num vértice v é igual a soma dos f(e) que saem de um vértice v.

)()(

)()(vOutevIne

efef

Page 8: FLUXO EM REDES Prof. M.Sc. Fábio Francisco da Costa Fontes Maio - 2009

Fluxo em Rede

Exemplo: o fluxo total saindo de s é igual a 6, que é o mesmo fluxo que entra no sorvedor t. A conservação do fluxo é respeitada para todos os vértices

s

x

v

w

t

7, 2

4, 1

6, 5

5, 13, 1

5, 3

7, 3

Page 9: FLUXO EM REDES Prof. M.Sc. Fábio Francisco da Costa Fontes Maio - 2009

Fluxo em Rede

Definição: o valor do fluxo f em uma rede limitada, denotado por val(f), é o fluxo líquido que deixa a origem s

Definição: o fluxo máximo numa rede limitada N é um fluxo em N que tem valor máximo

)()(

)()()(sInesOute

efeffval

Page 10: FLUXO EM REDES Prof. M.Sc. Fábio Francisco da Costa Fontes Maio - 2009

Corte em Rede

Exemplo: um corte s-t igual a Out(s)

s

x

v

w

t

Vs

Vt

{s}, {x,v,w,t}

Page 11: FLUXO EM REDES Prof. M.Sc. Fábio Francisco da Costa Fontes Maio - 2009

Corte em Rede Um fluxo não nulo deve usar pelo menos

um arco em Out(s) Se todos os arcos de Out(s) fossem

removidos da rede, nenhum fluxo de s para t poderia existir

Definição: seja Vs e Vt uma partição dos vértices de N tal que s Vs e t Vt. O conjunto de arcos direcionados de um vértice em Vs para um vértice em Vt é chamado um corte s-t da rede N e denotado Vs, VtOuUm corte em N é o conjunto dos arcos de N com extremidade inicial em Vs e extremidade final em Vt.

Page 12: FLUXO EM REDES Prof. M.Sc. Fábio Francisco da Costa Fontes Maio - 2009

Corte em Rede

Exemplo: um corte s-t igual a In(t)

s

x

v

w

t

Vs

Vt

{s,x,v,w},{t}

Page 13: FLUXO EM REDES Prof. M.Sc. Fábio Francisco da Costa Fontes Maio - 2009

Corte em Rede

Exemplo: um corte s-t mais geral

s

x

v

w

t

Vs

Vt

{s,x,v},{w,t}

Page 14: FLUXO EM REDES Prof. M.Sc. Fábio Francisco da Costa Fontes Maio - 2009

Fluxos e Cortes

O conjunto de arcos Out(s) pode ser visto como o corte s-t {s}, VN - {s}

O conjunto de arcos In(s) pode ser visto como o corte s-t VN - {s}, {s}

A partir dessa observação, o valor de um fluxo pode ser reescrito como:

}{},{}{},{

)()()(ssVesVse NN

efeffval

Page 15: FLUXO EM REDES Prof. M.Sc. Fábio Francisco da Costa Fontes Maio - 2009

Fluxos e Cortes

A definição do valor do fluxo pode ser generalizada para qualquer corte s-t:

stts VVeVVe

efeffval,,

)()()(

Vs Vts

x

v

w

t

7, 2

4, 1

6, 5

5, 13, 1

5, 3

7, 3

val(f) = 7 – 1 = 6

Page 16: FLUXO EM REDES Prof. M.Sc. Fábio Francisco da Costa Fontes Maio - 2009

Fluxos e Cortes

O corolário abaixo confirma que o fluxo líquido que sai da origem s é igual ao fluxo líquido que entra no sorvedor t

Corolário: seja f um fluxo em rede, então:

)()(

)()()(tOutetIne

efeffval

Page 17: FLUXO EM REDES Prof. M.Sc. Fábio Francisco da Costa Fontes Maio - 2009

Fluxo em Rede

O modelo matemático que representa o fluxo em uma rede será:

)()()(

0)()(

)()()(

)()(

)()(

)()(

fvalefef

efef

fvalefef

SorvedorOuteSorvedorIne

vOutevIne

OrigemIneOrigemOute

Page 18: FLUXO EM REDES Prof. M.Sc. Fábio Francisco da Costa Fontes Maio - 2009

Fluxos e Cortes

Definição: a capacidade de um corte Vs, Vt, denotado capVs, Vt, é a soma das capacidades dos arcos do corte

Definição: um corte mínimo de uma rede N é um corte com a capacidade mínima

ts VVe

ts ecapVVcap,

)(,

Page 19: FLUXO EM REDES Prof. M.Sc. Fábio Francisco da Costa Fontes Maio - 2009

Fluxo Máximo e Corte Mínimo

O problema de achar o fluxo máximo está intimamente relacionado com o problema de achar o corte mínimo numa rede N

Corolário: Seja Vs, Vt um corte s-t em uma rede N, e suponha que f é um fluxo tal que:

Então f é um fluxo máximo e Vs, Vt é um corte mínimo.

st

ts

VVe

VVeecapef

, se 0

, se)()(

Page 20: FLUXO EM REDES Prof. M.Sc. Fábio Francisco da Costa Fontes Maio - 2009

Exemplo Considere a rede capacitada abaixo, com

vértice inicial 0 e vértice final 5.  A coluna f dá um fluxo que respeita as capacidades. arco cap f s = 0 0-1 2 2 t = 5

0-2 3 2 1-3 3 1

1-4 1 1 2-3 1 1 2-4 1 1 3-5 2 2 4-5 3 2

Page 21: FLUXO EM REDES Prof. M.Sc. Fábio Francisco da Costa Fontes Maio - 2009

ExemploA tabela a seguir lista todos os cortes. Em cada linha temos um corte (com S na primeira coluna e T na segunda), os arcos diretos do corte (terceira coluna), os arcos inversos do corte (quarta coluna) e a capacidade do corte (quinta coluna).0 1 2 3 4 5 0-1 0-2 5 0 1 2 3 4 5 0-2 1-3 1-4 7 0 2 1 3 4 5 0-1 2-3 2-4 4 0 3 1 2 4 5 0-1 0-2 3-5 1-3 2-3 7 0 4 1 2 3 5 0-1 0-2 4-5 1-4 2-4 8 0 1 2 3 4 5 1-3 1-4 2-3 2-4 6 0 1 3 2 4 5 0-2 1-4 3-5 2-3 6 0 1 4 2 3 5 0-2 1-3 4-5 2-4 9 0 2 3 1 4 5 0-1 2-4 3-5 1-3 5

0 2 4 1 3 5 0-1 2-3 4-5 1-4 6 0 3 4 1 2 5 0-1 0-2 1-3 1-4 2-3 2-4 5

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

Verifique que o fluxo através de cada um dos quinze cortes tem intensidade 4.

Page 22: FLUXO EM REDES Prof. M.Sc. Fábio Francisco da Costa Fontes Maio - 2009

Exercício Mostre, no estilo do exemplo anterior, todos os cortes na

rede capacitada abaixo. Para cada corte, liste os arcos diretos e os inversos, bem como a capacidade do corte. arco cap s = 0 0-1 2 t = 5 0-2 3 0-3 2 1-2 1 1-3 1 1-4 1 2-4 1 2-5 2 3-4 2 3-5 3 4-5 2

Page 23: FLUXO EM REDES Prof. M.Sc. Fábio Francisco da Costa Fontes Maio - 2009

Problema do Fluxo Máximo

A idéia básica do algoritmo de Ford e Fulkerson (ou algoritmo dos caminhos de aumento) é aumentar o fluxo iterativamente em uma rede até que ele não possa mais ser aumentado

s

x

v

w

t

7, 2

4, 1

6, 5

5, 13, 1

5, 3

7, 3

f = 6

Page 24: FLUXO EM REDES Prof. M.Sc. Fábio Francisco da Costa Fontes Maio - 2009

Problema do Fluxo Máximo

Suponha que f é um fluxo em uma rede N, e suponha que existe um caminho P de s para t, P = <s,e1,v1,e2,...,ek,t>, tal que, f(ei) < cap(ei) para i = 1..k

s

x

v

w

t

7, 2

4, 1

6, 5

5, 13, 1

5, 3

7, 3

P

Page 25: FLUXO EM REDES Prof. M.Sc. Fábio Francisco da Costa Fontes Maio - 2009

Problema do Fluxo Máximo

Considerando apenas as capacidades dos arcos, o fluxo em cada arco ei pode ser aumentado em cap(ei)-f(ei)

s

x

v

w

t

7, 2

4, 1

6, 5

5, 13, 1

5, 3

7, 3

P

+2

+2

+1

Page 26: FLUXO EM REDES Prof. M.Sc. Fábio Francisco da Costa Fontes Maio - 2009

Problema do Fluxo Máximo

Mas para manter a propriedade de conservação do fluxo em cada um dos vértices, o aumento em cada um dos arcos do caminho deve ser o mesmo

s

x

v

w

t

7, 2

4, 1

6, 5

5, 13, 1

5, 3

7, 3

P

+1

+1

+1

Page 27: FLUXO EM REDES Prof. M.Sc. Fábio Francisco da Costa Fontes Maio - 2009

Problema do Fluxo Máximo

Então se P denota esse aumento no fluxo, o maior aumento possível para P

é min{cap(ei) - f(ei)}

s

x

v

w

t

7, 2

4, 1

6, 6

5, 13, 2

5, 4

7, 3

Pf = 7

Page 28: FLUXO EM REDES Prof. M.Sc. Fábio Francisco da Costa Fontes Maio - 2009

Problema do Fluxo Máximo

Usando o caminho P = <s, x, w, t> o fluxo pode ser aumentado para 8 (com P = 2)

s

x

v

w

t

7, 2

4, 1

6, 5

5, 13, 1

5, 3

7, 3

P+2

+2

+2

f = 8

Page 29: FLUXO EM REDES Prof. M.Sc. Fábio Francisco da Costa Fontes Maio - 2009

Problema do Fluxo Máximo

Usando o caminho P = <s, v, t> o fluxo pode ser aumentado para 9

s

x

v

w

t

7, 4

4, 3

6, 5

5, 13, 1

5, 5

7, 3P +1+1

f = 9

Page 30: FLUXO EM REDES Prof. M.Sc. Fábio Francisco da Costa Fontes Maio - 2009

Problema do Fluxo Máximo

Neste ponto o fluxo não pode ser mais aumentado por caminhos s-t, porque qualquer caminho usa os arcos sx ou vt e ambos estão na capacidade máxima

s

x

v

w

t

7, 4

4, 3

6, 6

5, 13, 1

5, 5

7, 4

f = 9

Page 31: FLUXO EM REDES Prof. M.Sc. Fábio Francisco da Costa Fontes Maio - 2009

Problema do Fluxo Máximo

Porém o fluxo ainda pode ser maior: aumentando sv (+1), diminuindo wv (-1) e aumentando o fluxo em wt (+1)

s

x

v

w

t

7, 4

4, 3

6, 6

5, 13, 1

5, 5

7, 4

+1

+1

-1

f = 10

Page 32: FLUXO EM REDES Prof. M.Sc. Fábio Francisco da Costa Fontes Maio - 2009

Problema do Fluxo Máximo

Os arcos cujo fluxo foi alterado formam um caminho s-t se as direções forem ignoradas

É preciso generalizar um caminho direcionado para obter o fluxo máximo

s

x

v

w

t

7, 4

4, 4

6, 6

5, 03, 1

5, 5

7, 5

f = 10

Page 33: FLUXO EM REDES Prof. M.Sc. Fábio Francisco da Costa Fontes Maio - 2009

Caminhos Aumentantes

Definição: um quase-caminho s-t em uma rede N é uma seqüência alternada de vértices e arcos que formam um caminho s-t, desconsiderando as direções dos arcos

Q = <s = v0, e1, v1, ..., vk-1, ek, vk = t>

Page 34: FLUXO EM REDES Prof. M.Sc. Fábio Francisco da Costa Fontes Maio - 2009

Caminhos Aumentantes

Terminologia: para um quase-caminho s-t, o arco ei é chamado de arco de avanço se ele é direcionado de vi-1 para vi e é chamado arco de retrocesso se ele é direcionado de vi para vi-1

s

x

v

w

t

c

a

Q = <s, a, v, b, w, c, t >

b

Page 35: FLUXO EM REDES Prof. M.Sc. Fábio Francisco da Costa Fontes Maio - 2009

Caminhos Aumentantes

Definição: Um caminho f-aumentante Q em uma rede N é um quase-caminho s-t em N tal que o fluxo em cada arco de avanço pode ser aumentado, e o fluxo em cada arco de retrocesso pode ser diminuído

Para cada arco num caminho f-aumentante Q:

retrocesso de arco um é se 0)(

avanço de arco um é se)()(

eef

eecapef

Page 36: FLUXO EM REDES Prof. M.Sc. Fábio Francisco da Costa Fontes Maio - 2009

Caminhos Aumentantes Para cada arco e em um caminho f-

aumentante, seja e a quantidade dada por

A quantidade e é a flexibilidade do arco. Seu valor é o maior aumento de fluxo possível para um arco de avanço, e a maior diminuição de fluxo possível para um arco de retrocesso

retrocesso de arco um é se )(

avanço de arco um é se)()(

eef

eefecape

Page 37: FLUXO EM REDES Prof. M.Sc. Fábio Francisco da Costa Fontes Maio - 2009

Caminhos Aumentantes

A conservação do fluxo exige que a mudança no fluxo de cada arco seja de mesma magnitude

A maior mudança de fluxo permitida em um quase-caminho Q é Q, onde:

eQe

Q

min

Page 38: FLUXO EM REDES Prof. M.Sc. Fábio Francisco da Costa Fontes Maio - 2009

Caminhos Aumentantes

Exemplo: o quase-caminho Q é um caminho f-aumentante, com Q = 1

Q = <s, v, w, t>

s

x

v

w

t

7, 4

4, 3

6, 6

5, 13, 1

5, 5

7, 4e = 3

e = 1

e = 1

f = 9

Page 39: FLUXO EM REDES Prof. M.Sc. Fábio Francisco da Costa Fontes Maio - 2009

Fluxo Máximo e Corte Mínimo

Teorema (fluxo máximo): seja f um fluxo numa rede N, f é um fluxo máximo se e somente se não existe um caminho f-aumentante em N

Teorema (fluxo máximo corte-mínimo): Para uma rede N, o valor do fluxo máximo é igual a capacidade de um corte mínimo

Page 40: FLUXO EM REDES Prof. M.Sc. Fábio Francisco da Costa Fontes Maio - 2009

Exemplo Considere a rede capacitada abaixo.  O fluxo

indicado na coluna f respeita as capacidades e tem intensidade 2. arco c f s = 0 0-1 2 2 t = 3 0-2 2 01-2 2 2 1-3 2 0 2-3 2 2 A seqüência   0-2-1-3   é um caminho f- aumentante.  Esse caminho tem capacidade residual 2.  Se enviarmos 2 unidades de fluxo ao longo do caminho, teremos um novo fluxo f':

Page 41: FLUXO EM REDES Prof. M.Sc. Fábio Francisco da Costa Fontes Maio - 2009

Exemplo

arco c f' 0-1 2 2 0-2 2 2 1-2 2 0 1-3 2 2 2-3 2 2

O novo fluxo f' respeita as capacidades e tem intensidade 4.

Page 42: FLUXO EM REDES Prof. M.Sc. Fábio Francisco da Costa Fontes Maio - 2009

Algoritmo de Fluxo Máximo

Entrada: uma rede s-t N Saída: um fluxo máximo f na rede N

Algoritmo: Fluxo Máximo

[Inicialização] para cada arco e na rede N f(e) = 0

[Aumento do Fluxo] enquanto existir um caminho f-aumentante na rede N ache um caminho f-aumentante Q seja Q = min{e} para todo e Q para cada arco e do caminho f-aumentante Q se e é um arco de avanço f(e) = f(e) + Q

senão f(e) = f(e) - Q

retorne fluxo f

Page 43: FLUXO EM REDES Prof. M.Sc. Fábio Francisco da Costa Fontes Maio - 2009

Algoritmo de Fluxo Máximo

Entrada: uma rede s-t N Saída: um caminho f-aumentante Q ou um corte mínimo

Algoritmo: Achando um Caminho Aumentante

Inicialize o conjunto de vértices Vs = {s} Escreva o rótulo 0 no vértice s Inicialize o contador de rótulos i = 1 enquanto o conjunto Vs não contém o sorvedor t se existir um arco de fronteira usável seja e um arco usável cujo vértice rotulado v tem o menor rótulo possível seja w o vértice não rotulado do arco e faça backpoint(w) = v escreva rótulo i no vértice w Vs = Vs U {w} i = i + 1 senão retorne o corte s-t Vs, VN-Vs retorne o caminho f-aumentante reconstruído pelos ponteiros backpoint

Page 44: FLUXO EM REDES Prof. M.Sc. Fábio Francisco da Costa Fontes Maio - 2009

ExemploConsidere a rede capacitada abaixo:arco cap s = 0 0-1 2 t = 5 0-2 3 1-3 3 1-4 1 2-3 1 2-4 1 3-5 2 4-5 3

Comece com fluxo nulo. Agora aplique a seqüência de caminhos de aumento

0-1-3-50-2-4-50-2-3-1-4-5

Page 45: FLUXO EM REDES Prof. M.Sc. Fábio Francisco da Costa Fontes Maio - 2009

Exemplo

(os arcos inversos estão indicados em negrito).  O primeiro caminho de aumento tem capacidade residual 2. Depois que enviarmos 2 unidades de fluxo ao longo desse caminho, teremos um fluxo f'.  O segundo caminho de aumento é calculado em relação a f' e produz um terceiro fluxo, digamos f". O terceiro caminho de aumento é calculado em relação a f" e tem capacidade residual 1.

Page 46: FLUXO EM REDES Prof. M.Sc. Fábio Francisco da Costa Fontes Maio - 2009

ExemploA seqüência de fluxos produzida pelos caminhos de aumento está indicada abaixo. Todos respeitam as capacidades dos arcos. O último fluxo tem intensidade 4.

arco f f' f" f"' 0-1 0 2 2 2 0-2 0 0 1 2 1-3 0 2 3 2 1-4 0 0 0 1 2-3 0 0 0 1 2-4 0 0 1 1 3-5 0 2 2 2 4-5 0 0 1 2

Page 47: FLUXO EM REDES Prof. M.Sc. Fábio Francisco da Costa Fontes Maio - 2009

Exemplo 2: encontrar o caminho aumentante Exemplo:

s

w

v

a b5, 0 3, 0

4, 03, 0

2, 0

2, 0

3, 0

c

t

7, 0

6, 0

x y z5, 0 4, 0

3, 0

Page 48: FLUXO EM REDES Prof. M.Sc. Fábio Francisco da Costa Fontes Maio - 2009

Problema de Fluxo de Custo Mínimo

The Minimum Cost Flow Problem

Este problema possui papel principal entre os modelos de otimização em redes, uma vez que este engloba uma enorme quantidade de aplicações e pode ser resolvido de maneira extremamente eficiente.

Page 49: FLUXO EM REDES Prof. M.Sc. Fábio Francisco da Costa Fontes Maio - 2009

Problema de Fluxo de Custo Mínimo

O Problema de Transporte, de Designação, de Caminho Mais Curto e de Fluxo Máximo são casos especiais do Problema de Fluxo de Custo Mínimo. A única exceção é o Problema de Árvore Geradora Mínima.

Page 50: FLUXO EM REDES Prof. M.Sc. Fábio Francisco da Costa Fontes Maio - 2009

Problema de Fluxo de Custo Mínimo

A exemplo dos problemas acima (com exceção do Problema de Árvore Geradora Mínima), o Problema de Fluxo de Custo Mínimo é um Problema de Programação Linear, logo o Simplex pode ser utilizado para sua resolução.

Page 51: FLUXO EM REDES Prof. M.Sc. Fábio Francisco da Costa Fontes Maio - 2009

Problema de Fluxo de Custo Mínimo A rede é representada por um Dígrafo; No mínimo um dos nós é a origem; No mínimo um dos nós é um destino; Todos os nós restantes são entreposto

intermediário; A rede possui arcos com capacidade

suficiente para habilitar todos os fluxos gerados nos nós de fornecimento para alcançar os nós de demanda;

O custo do fluxo através de cada arco é proporcional a quantidade daquele fluxo, onde o custo por unidade de fluxo é conhecido.

Page 52: FLUXO EM REDES Prof. M.Sc. Fábio Francisco da Costa Fontes Maio - 2009

Problema de Fluxo de Custo Mínimo

O objetivo é minimizar o custo total da passagem de uma dada quantidade de fluxo através do grafo. (um objetivo alternativo é maximizar o lucro total para realizar a mesma atividade).

Page 53: FLUXO EM REDES Prof. M.Sc. Fábio Francisco da Costa Fontes Maio - 2009

Problema de Fluxo de Custo Mínimo

Pode-se imaginar uma situação na qual se queira trabalhar com o menor fluxo possível (por exemplo, para manter em operação uma rede deficitária sujeita a restrições contratuais). No entanto, a absoluta maioria das situações práticas acarreta o interesse em que se use ao máximo a capacidade disponível, o que nos faz pensar em minimizar o custo dentre os fluxos máximo existentes.