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

Preview:

Citation preview

FLUXO EM REDESFLUXO 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

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)

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

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

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

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

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

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

Corte em Rede

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

s

x

v

w

t

Vs

Vt

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

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.

Corte em Rede

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

s

x

v

w

t

Vs

Vt

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

Corte em Rede

Exemplo: um corte s-t mais geral

s

x

v

w

t

Vs

Vt

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

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

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

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

Fluxo em Rede

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

)()()(

0)()(

)()()(

)()(

)()(

)()(

fvalefef

efef

fvalefef

SorvedorOuteSorvedorIne

vOutevIne

OrigemIneOrigemOute

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,

)(,

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)()(

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

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.

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

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

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

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

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

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

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

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

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

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

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

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>

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

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

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

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

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

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

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':

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.

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

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

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

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.

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

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

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.

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.

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.

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.

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).

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.

Recommended