• Nenhum resultado encontrado

Circuitos de aumento

No documento Curso de Otimização Combinatória (páginas 71-75)

Dado um fluxo viável x numa rede (G, b, u, c), como obter um novo fluxo viável mais barato? Usaremos um mecanismo análogo ao dos caminhos de aumento do algoritmo de Ford-Fulkerson (página37, seção3.5).

Para qualquer circuito C em G, seja ´E(C) o conjunto dos arcos diretos de C e `E(C) o conjunto dos arcos inversos. Em relação a um fluxo viável x, um circuito C é de incrementose xe < uepara cada e em ´E(C)e xe > 0 para cada e em `E(C). A largura

de C é o maior número ε tal que xe− ε ≥ 0 para cada e em `E(C)e xe+ ε ≤ uepara cada

eem ´E(C). A operação de enviar ε unidades de fluxo ao longo do circuito C consiste no seguinte: some ε a xepara cada e em ´E(C)e subtraia ε de xe para cada e em `E(C).

Se ε for menor ou igual à largura de C, o envio ε unidades de fluxo ao longo de C produz um novo fluxo viável x0. O custo de x0 será cx + c(C) ε, sendo

c(C) := c( ´E(C)) − c( `E(C)).

O número c(C) é conhecido como custo de C. Se esse custo for negativo e ε for positivo, o fluxo x0 será mais barato que x. Por isso, qualquer circuito de incremento que tenha

custo negativo é chamado circuito de aumento.5

EXEMPLO 4: No exemplo 1, o circuito (v, w, q, v) é de incremento em relação ao fluxo x e tem largura 1. O custo do circuito é 40−10−90 = −60 e portanto o circuito é de aumento. Se enviarmos 1 unidade de fluxo ao longo desse circuito teremos o fluxo viável x0 do exemplo 1. Observe que cx0 = cx − 60 × 1 = 240 − 60 = 180.

No mesmo exemplo 1, o circuito (p, v, w, p) é de incremento em relação ao fluxo x0e tem largura 2. O custo do circuito é −30 + 40 − 80 = −70 e portanto trata-se de um circuito de aumento. Se enviarmos 2 unidades de fluxo ao longo desse circuito teremos o fluxo viável x00 abaixo. (Esse fluxo é igual ao fluxo x do exemplo 3.) Observe que cx00= cx0− 70 × 2 = 180 − 140 = 40.

pv pw vw vq wq c −30 +80 +40 +90 −10 x00 2 0 3 0 2

O seguinte teorema mostra que circuitos de aumento caracterizam fluxo ótimos: Teorema 5.3 Um fluxo viável x numa rede (G, b, u, c) é ótimo se e somente se não existe circuito de aumento para x.

PROVA: Suponha que o custo de x é mínimo. Se existisse um circuito de aumento poderíamos usar esse circuito, como indicado acima, para obter um novo fluxo viável de custo menor que cx. Portanto, um tal circuito não existe.

Agora considere a parte “se” do teorema, ou seja, suponha que não existe circuito de aumento para x. Gostaríamos de usar os resultados do capítulo2, desenvolvidos para di caminhos e di circuitos, para mostrar que x tem custo mínimo. Para fazer isso, será preciso construir um digrafo auxiliar Gx, conhecido como “digrafo residual”.

Os nós de Gxsão os mesmos de G. Para cada arco vw de G tal que xvw < uvwhá um arco

vwde custo c0

vw = cvwem Gx. Para cada arco vw de G tal que xvw > 0há um arco wv de

custo c0wv = −cvw em Gx. (Se 0 < xvw < uvw então Gx tem arcos vw e wv.) Finalmente,

Gx tem um nó adicional r e arcos rv de custo c0rv = 0 para cada nó v de G. É fácil

entender a relação entre G e Gx: todo circuito de incremento C em G corresponde a um

5 Acho que “circuito de decremento” seria mais apropriado, já que queremos diminuir o custo do

dicircuito C0 em G

x, e vice-versa. Ademais, o custo de C em G é igual ao custo de C0

em Gx.

Submeta a rede (Gx, c0), com nó inicial r, ao algoritmo de Ford dos dicaminhos de

custo mínimo (página16, seção 2.3). Por hipótese, a rede não tem dicircuito de custo negativo. Portanto, de acordo com o teorema2.5, o algoritmo produzirá um potencial viável, ou seja, um potencial y tal que yi+ c0ij ≥ yj para cada arco ij de Gx.

Considere as propriedades do potencial y no digrafo original G. Se xvw < uvwentão vw

é um arco de Gx e c0vw = cvw, donde yv + cvw ≥ yw, e portanto o custo reduzido de vw

não é negativo:

¯

cvw ≥ 0 .

Por outro lado, se xvw > 0então wv é um arco de Gxe c0wv = −cvw, donde yw+c0wv ≥ yv.

Logo yw−cvw ≥ yv, e portanto yv + cwv ≤ yw, ou seja,

¯

cvw ≤ 0 .

Assim, o par (x, y) satisfaz as condições (7). O teorema 5.2 garante agora que x é ótimo.

EXEMPLO5: Seja G o digrafo descrito abaixo por sua matriz de adjacências. À direita da matriz, temos as demandas b. Mais à direita, as capacidades de u, os custos c, e um fluxo viável x. O circuito (c, b, a, c)é de aumento. Envie 1 unidade de fluxo ao longo do circuito. O novo fluxo é ótimo?

a b c d b a − 1 1 1 −3 b − − 1 1 +1 c − − − 1 +1 d − − − − +1 ab ac ad bc bd cd u 9 9 9 9 9 9 c +20 +20 +20 +10 +10 +10 x 3 0 0 1 1 0

É apropriado fazer aqui duas observações, uma sobre a integralidade de x e y e outra sobre redes ilimitadas:

Teorema 5.4 (dual inteiro) Seja (G, b, u, c) uma rede que tem um fluxo ótimo x. Se c é inteiro então as condições (5) são satisfeitas por um vetor y que é inteiro. Portanto, o pl (2) tem uma solução ótima (y, z) que é inteira.

PROVA: Como mostra a prova do teorema5.3e a análise dos algoritmos de dicaminhos mínimos do capítulo2, existe um potencial y tal que, para cada v, yv é o custo de um

dicaminho de custo mínimo de r a v no digrafo residual Gx. Como c é inteiro, todos

esses custos são inteiros.

Dicircuitos de custo negativo podem ser usados para caracterizar redes ilimitadas: Teorema 5.5 (rede ilimitada) Uma rede viável (G, b, u, c) tem um fluxo ótimo se e so- mente se não tem um dicircuito de custo negativo cujos arcos têm capacidade infinita.

PROVA: Se existe um dicircuito de custo negativo cujos arcos têm capacidade infinita, então é claro que não existe fluxo de custo mínimo. Suponha agora que não existe um tal dicircuito. Construa um digrafo auxiliar G0 da seguinte maneira. Remova de Gtodos os arcos de capacidade finita e acrescente um novo nó r e arcos rv de custo 0 para cada v em V . É claro que G0 não tem dicircuito de custo negativo. Portanto, de acordo com o teorema2.5, G0 tem um potencial y0 que é viável, no sentido da seção2.2. A restrição y de y0a G é tal que y

v+ cvw≥ ywpara cada arco vw de capacidade infinita.

Defina z a partir de y como em (6). Teremos zvw = 0para cada arco vw de capacidade

infinita, o que é consistente com a convenção (4). Portanto, (y, z) é solução viável do pl (2). A existência dessa solução viável mostra (via teorema fraco da dualidade) que o pl primal (1) não é ilimitado, e portanto tem uma solução ótima.

Teorema 5.6 (fluxo inteiro) Seja (G, b, u, c) uma rede que tem um fluxo ótimo. Se b e u são inteiros então existe um fluxo ótimo que é inteiro.

ESBOÇO DA PROVA: Dentre os fluxos viáveis inteiros, escolha um fluxo x que mini- mize cx. Se existisse um circuito de aumento para x, poderíamos enviar uma quanti- dade inteira de fluxo ao longo do circuito e assim produzir um novo fluxo viável inteiro de custo menor que cx. Logo, não existe circuito de aumento. Então a prova do teo- rema5.3mostra que existe um potencial y que satisfaz as condições de otimalidade (7). Logo, cx ≤ cx0 para todo fluxo viável x0, inteiro ou não. Portanto, x é ótimo.

Exercícios

5.16 A figura mostra um fluxo viável x numa rede (G, b, u, c). Os número ao lado de cada arco e são ce, ue, xe. O custo do fluxo é cx = 25. Encontre um circuito de aumento. Calcule um fluxo viável

de custo menor que o de x.[CCPS fig.4.1]

5.17 Considere a rede (G, b, u, c) da figura. Ao lado de cada nó v temos a demanda bv. Ao lado de cada

arco e temos os números ce, ue, xe. Verifique que x é um fluxo viável. Prove que existe um fluxo

viável de custo menor que cx ou prove que x é ótimo.[CCPS 4.8]

5.18 Dicaminhos disjuntos. Sejam r e s dois nós de um digrafo G. Queremos encontrar uma coleção de kdicaminhos de r a s, sem arcos em comum, que use o menor número possível de arcos. Formule esse problema como um problema de fluxo de custo mínimo. Repita o problema com dicaminhos sem nós em comum exceto r e s.[AMO 11.8]

5.19 Considere o digrafo G definido pela matriz de adjacências abaixo (faça uma figura). À direita da matriz, uma função-demanda b, as capacidades u e os custos c dos arcos. (Não confunda o nó b com a função-custo b.) Encontre um fluxo ótimo x na rede (G, b, u, c). Encontre um potencial y que satisfaça as condições (5). Calcule os custos reduzidos ¯c. Faça uma tabela de resultados para que seja fácil comparar x com ¯ce assim conferir a validade de (7).[AMO 9.22]

a b c d e b a − 1 − − 1 −25 b − − 1 − 1 0 c − − − 1 − 0 d − − − − − +25 e − − 1 − 1 0 ab ae bc be cd ec ed u 25 20 10 25 20 20 25 c +7 +6 +4 +5 +1 +2 +2

5.20 ? Como obter um potencial ótimo? Suponha que x é uma solução ótima do pl (1). Sugira uma maneira de calcular um potencial y que satisfaça as condições de otimalidade (5). (Sugestão: Veja a prova do teorema5.3.)

5.21 A figura mostra um potencial y numa rede (G, b, u, c). Os números nos nós são pares (bv, yv)e

números nos arcos são pares (ce, ue). Encontre um fluxo viável x que satisfaça as condições de

otimalidade (5).[CCPS 4.9]

No documento Curso de Otimização Combinatória (páginas 71-75)