• Nenhum resultado encontrado

Exercícios adicionais

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

2.48 Suponha dada uma rede (G, c, r) e um nó w que incide em exatamente dois arcos (ou seja, ape- nas dois arcos têm w como ponta inicial ou ponta final). Mostre como reduzir o problema dos dicaminhos mínimos nessa rede a uma rede menor.[CCPS 2.23]

2.49 Suponha que (G, c, r) é uma rede em que todos os arcos têm o mesmo custo. Qual o algoritmo assintoticamente mais rápido para resolver o problema dos dicaminhos mínimos nesse rede? 2.50 Arbitragem cambial. Seja (G, c, r) uma rede com custos positivos. Para cada nó v, queremos encon-

trar um dicaminho de r a v que maximize o produto dos custos dos arcos do dicaminho. Como resolver o problema? (Aplicação: Cada nó é uma moeda, como dólar, real, yen, etc., e o custo de um arco vw é a taxa de câmbio na conversão de v em w.)

2.51 Capacidade mínima. Digamos que a capacidade de um dicaminho é o mínimo dos custos de seus arcos. Problema: Determine um dicaminho de capacidade mínima dentre os que vão de r a s. 2.52 Custos diretos e custos inversos. Suponha que cada arco e de uma rede tem dois custos, c0

e e c00e,

ambos em Q. O custo de um caminho P , não necessariamente dirigido, éP c0

e+P c00e, onde a

primeira soma se estende a todos os arcos diretos de P e a segunda a todos os arcos inversos de P . Problema: Determinar um caminho de custo mínimo dentre os que vão de um nó r a um nó s. Enuncie uma condição de otimalidade apropriada.

2.53 ? Árvores. Seja (T, c) uma rede em que T é uma árvore não-dirigida (veja a seção1.1) e c uma função-custo. Escreva um algoritmo que receba T , c, e um nó r e calcule, para cada nó v, um caminho (não necessariamente dirigido!) de custo mínimo de r a v em T .

2.54 Análise de sensibilidade. Seja (G, c, r) uma rede sem dicircuitos de custo negativo. Para cada nó v, digamos que dv é a distância de r a v, ou seja, o custo de um dicaminho mínimo de r a v. De

Fluxo máximo e corte mínimo

O problema do fluxo máximo entre dois nós de uma rede com restrições de capacidade nos arcos é um modelo fundamental em otimização combinatória.

3.1

Fluxo

Um fluxo em um digrafo G é qualquer função de E(G) em Q+. Em outras palavras,

um fluxo é uma função que atribui um número racional não-negativo a cada arco do digrafo. (Note que um fluxo não precisa ter valores inteiros, ainda que algumas aplicações tenham especial interesse em fluxos inteiros.)

Se x é um fluxo e R é um conjunto de nós do digrafo, denotamos por x+

(R)a soma dos valores de x nos arcos que entram em R:

x+(R) :=P (x

uv: uv ∈ ∂+(R)) .1

(Já usamos essa notação na seção2.6.) Analogamente, x−

(R)é a soma dos valores de x nos arcos que saem de R:2

x−

(R) :=P (xvw : vw ∈ ∂−(R)) .

É claro que x−

(R) = x+(R)

, sendo R := V (G) r R. O excesso, ou acúmulo, ou saldo (= net flow) de x em R é a “quantidade” de fluxo que fica “retida” em R. O excesso é denotado por x+ −(R): x+ −(R) := x + (R) − x− (R) . Para qualquer nó v, escrevemos x+

(v), x− (v) e x+ −(v) no lugar de x + ({v}), x− ({v}) e x+ −({v})respectivamente.

1Eu deveria escrever “x(∂+(R))”, mas a abreviatura “x+(R)” é perfeitamente razoável.

2Para justificar os superscritos “+” e “−”, você pode imaginar que os nós são contas bancárias e os

arcos representam movimentação de dinheiro: tudo que entra numa conta é somado ao saldo e tudo que sai é subtraído.

Proposição 3.1 (soma de excessos) Para qualquer fluxo x em um digrafo G e qualquer subconjunto R de V (G), a soma dos excessos nos nós de R é igual ao excesso em R:

P (x+

−(v) : v ∈ R) = x + −(R) .

PROVA: Queremos mostrar queP

v∈Rx +(v) −P v∈Rx − (v) = x+(R) − x− (R). Para isso, basta verificar que cada arco do digrafo dá a mesma contribuição para o lado esquerdo e o direito dessa igualdade.

Um arco ij que tem ambas as pontas em R contribui xij para o primeiro somatório e

xij para o segundo somatório, e portanto a contribuição total para o lado esquerdo é

nula. A contribuição de ij para o lado direito também é nula. Um raciocínio análogo mostra que é nula a contribuição dos arcos que têm ambas as pontas em R.

Um arco que entra em R contribui apenas para o primeiro somatório do lado esquerdo e para o primeiro termo do lado direito. Analogamente, um arco que sai de R contribui apenas para o segundo somatório do lado esquerdo e o segundo termo do lado direito. Cada arco com uma ponta em R e outra em R dá a mesma contribuição para os dois lados da igualdade.

Circulação

Uma circulação (= circulation) em uma digrafo é qualquer fluxo que tenha excesso nulo em cada nó. Mais precisamente, uma circulação é qualquer fluxo x tal que x+

−(v) = 0

para cada nó v. (Essa igualdade é conhecida como “conservação de fluxo em v”.) Segue da proposição3.1que a “quantidade” de circulação atravessa um corte da “es- querda” para a “direita” é igual à “quantidade” que atravessa o corte da “direita” para a “esquerda”:

Proposição 3.2 Para qualquer circulação x e qualquer conjunto R de nós, x−(R) =

x+(R)

.

Qualquer família de dicircuitos define uma circulação. Se C1, . . . , Cj é uma família

de dicircuitos e xe é o número desses dicircuitos que contêm o arco e então x é uma

circulação. Reciprocamente, toda circulação pode ser representada por uma família de dicircuitos:

Proposição 3.3 (decomposição em dicicuitos) Para toda circulação x em um digrafo, existem dicircuitos C1, . . . , Cj e números positivos α1, . . . , αj tais queP(αi : Ci 3 e) =

xepara cada arco e. Podemos supor que j não passa do número de arcos do digrafo.

PROVA: A prova da proposição é algorítmica. Em cada iteração, escolha um dicircuito C tal que xe > 0para cada arco e de C. Calcule α := min (xe: e ∈ C). Para cada arco

e de C, subtraia α de xe. Depois dessa operação, x continua sendo uma circulação.

Fluxo de um nó a outro

Dados dois nós r e s de um digrafo, um fluxo de r a s é qualquer fluxo que tenha excesso nulo em todos os nós distintos de r e s e excesso não-negativo em s. Mais precisamente, x é um fluxo de r a s se

x+

−(v) = 0 para todo nó v exceto r e s

e x+

−(s) ≥ 0. O excesso de x em s é o intensidade, ou valor, de x. É conveniente ter

uma notação especial para a intensidade do fluxo x:3 int(x) := x+

−(s) .

(É preciso ficar atento para não confundir “int” como “inteiro”!) Dizemos que um conjunto R de nós separa r de s se r ∈ R e s ∈ R. Nas mesmas condições, dizemos que ∂−

(R)separa rde s. Às vezes é mais cômodo dizer que o corte ∂−

(R)está entre r e s. Qualquer fluxo de r a s atravessa todos os cortes entre r e s e a intensidade do fluxo pode ser medida em qualquer desses cortes, em virtude da proposição3.1:

Proposição 3.4 Para qualquer fluxo x de r a s e qualquer corte ∂−

(R)entre r e s, tem-se int(x) = x+

−(R), ou seja, a intensidade de x é igual à diferença x

(R) − x+(R)

.

Em particular, a intensidade do fluxo x é igual ao excesso de x em r com sinal trocado: int(x) = −x+

−(r).

Qualquer família de dicaminhos simples de r a s define um fluxo. Se P1, . . . , Pké uma

família de dicaminhos simples de r a s e xeé o número desses dicaminhos que contêm

o arco e então x é um fluxo de r a s de intensidade k. Reciprocamente, todo fluxo de r a s pode ser representado por uma família de dicaminhos simples:

Proposição 3.5 Para todo fluxo x de r a s em um digrafo, existem dicircuitos C1, . . . , Cj,

dicaminhos simples P1, . . . , Pk de r a s, e números positivos α1, . . . , αj, β1, . . . , βk tais

que β1 + · · · + βk = int(x) e P(αi : Ci 3 e) +P(βi : Pi 3 e) = xe para cada arco e.

Podemos supor que j + k não passa do número de arcos do digrafo.

PROVA: A prova da proposição é um algoritmo semelhante ao da prova da proposi- ção3.3.

Exercícios

3.1 Se x é um fluxo e R um conjunto de nós, é verdade queP(x+(v) : v ∈ R) = x+(R)?

3.2 Complete os detalhes da prova da proposição3.3.

3.3 Seja x um fluxo de r a s e x0uma circulação. Mostre que x+x0é um fluxo de r a s e que int(x+x0) = int(x).

3CCPS escreve “f

3.4 Seja x um fluxo em um digrafo. Seja T o conjunto dos nós t para os quais x+

−(t) 6= 0. Mostre que

se |T | ≤ 2 então x é um fluxo de r a s para algum par (r, s) de nós. 3.5 Prove as proposições3.4e3.5.

3.6 Por que podemos supor que j ≤ m na proposição3.3? Por que podemos supor que j + k ≤ m na proposição3.5?

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