550 likes | 730 Views
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 tubos Peças por linhas de montagem Corrente por redes elétricas Informações por redes de comunicação
E N D
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 materiaisnuma rede: • Líquidos fluindo por tubos • Peças por linhas de montagem • Corrente 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 canalpara o material Cada canal tem uma capacidadeestabelecida, dada como uma taxa máxima (ex.: 200 litros/h) Vértices são junções de canais A origem produzo material numa taxa fixa e o sorvedor consomeo 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ídade v, denotado por Out(v), é o conjunto de todos os arcos que saem de v • Definição: O conjunto de entradade 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 7 x w 5 4 5 3 s t 7 6 v Exemplo: se X={x,v} e Y={w,t}, então os elementos de X,Y são os arcos xw e vt
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.
Fluxo em Rede 7, 2 x w 5, 3 4, 1 5, 1 s 3, 1 t 6, 5 7, 3 v 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
Fluxo em Rede Definição: o valor do fluxof em uma rede limitada, denotado por val(f), é o fluxo líquido que deixa a origem s Definição: o fluxo máximonuma rede limitada N é um fluxo em N que tem valor máximo
Corte em Rede {s}, {x,v,w,t} x w s t v Vs Vt Exemplo: um corte s-t igual a Out(s)
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 removidosda 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, Vt Ou Um corte em N é o conjunto dos arcos de N com extremidade inicial em Vs e extremidade final em Vt.
Corte em Rede {s,x,v,w},{t} x w s t v Vt Vs Exemplo: um corte s-t igual a In(t)
Corte em Rede {s,x,v},{w,t} x w s t v Vt Vs Exemplo: um corte s-t mais geral
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:
Fluxos e Cortes 7, 2 x w 5, 3 4, 1 5, 1 Vs Vt s 3, 1 t 7, 3 v 6, 5 A definição do valor do fluxo pode ser generalizada para qualquer corte s-t: 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:
Fluxo em Rede O modelo matemático que representa o fluxo em uma rede será:
Fluxos e Cortes Definição: a capacidade de um corteVs, Vt, denotado capVs, Vt, é a soma das capacidades dos arcos do corte Definição: um corte mínimode uma rede N é um corte com a capacidade mínima
Fluxo Máximo e Corte Mínimo O problema de achar o fluxo máximoestá intimamente relacionado com o problema de achar o corte mínimonuma 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.
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
Exemplo A 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 7, 2 x w 5, 3 4, 1 5, 1 f = 6 s 3, 1 t 6, 5 7, 3 v 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
Problema do Fluxo Máximo 7, 2 x w 5, 3 4, 1 P 5, 1 3, 1 s t 6, 5 7, 3 v 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
Problema do Fluxo Máximo 7, 2 +2 x w 5, 3 4, 1 P 5, 1 3, 1 s t +2 6, 5 7, 3 v +1 Considerando apenas as capacidades dos arcos, o fluxo em cada arco ei pode ser aumentado em cap(ei)-f(ei)
Problema do Fluxo Máximo 7, 2 +1 x w 5, 3 4, 1 P 5, 1 3, 1 s t +1 6, 5 7, 3 v +1 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
Problema do Fluxo Máximo 7, 2 x w 5, 4 4, 1 P 5, 1 3, 2 f = 7 s t 6, 6 7, 3 v Então se P denota esse aumento no fluxo, o maior aumento possível para P é min{cap(ei) - f(ei)}
Problema do Fluxo Máximo +2 P 7, 2 +2 +2 x w 5, 3 4, 1 5, 1 s 3, 1 t f = 8 6, 5 7, 3 v Usando o caminho P = <s, x, w, t> o fluxo pode ser aumentado para 8 (com P = 2)
Problema do Fluxo Máximo 7, 4 x w 5, 5 4, 3 5, 1 s 3, 1 t f = 9 6, 5 7, 3 v P +1 +1 Usando o caminho P = <s, v, t> o fluxo pode ser aumentado para 9
Problema do Fluxo Máximo 7, 4 x w 5, 5 4, 3 5, 1 f = 9 s 3, 1 t 6, 6 7, 4 v Neste ponto o fluxo não pode ser mais aumentadopor caminhos s-t, porque qualquer caminho usa os arcos sx ou vt e ambos estão na capacidade máxima
Problema do Fluxo Máximo 7, 4 +1 x w 5, 5 4, 3 -1 5, 1 f = 10 s 3, 1 t 6, 6 7, 4 v +1 Porém o fluxo ainda pode ser maior: aumentando sv (+1), diminuindo wv (-1) e aumentando o fluxo em wt (+1)
Problema do Fluxo Máximo 7, 4 x w 5, 5 4, 4 5, 0 f = 10 s 3, 1 t 6, 6 7, 5 v 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
Caminhos Aumentantes Definição: um quase-caminho s-tem 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 Q = <s, a, v, b, w, c, t > x w c b s t a v Terminologia: para um quase-caminho s-t, o arco ei é chamado de arco de avançose ele é direcionado de vi-1 para vi e é chamado arco de retrocesso se ele é direcionado de vi para vi-1
Caminhos Aumentantes Definição: Um caminho f-aumentanteQ 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:
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 fluxopossível para um arco de avanço, e a maior diminuição de fluxo possível para um arco de retrocesso
Caminhos Aumentantes A conservação do fluxoexige que a mudança no fluxo de cada arco seja de mesma magnitude A maior mudança de fluxopermitida em um quase-caminho Q é Q, onde:
Caminhos Aumentantes Q = <s, v, w, t> 7, 4 e = 1 x w 5, 5 e = 1 4, 3 5, 1 f = 9 s 3, 1 t 6, 6 7, 4 v e = 3 Exemplo: o quase-caminho Q é um caminho f-aumentante, com Q = 1
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 0 1-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
Exemplo Considere 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-5 0-2-4-5 0-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.
Exemplo A 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 5, 0 3, 0 7, 0 w a b c 2, 0 6, 0 3, 0 4, 0 2, 0 s v t 3, 0 3, 0 x y z 5, 0 4, 0 Exemplo:
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.