• Nenhum resultado encontrado

Programas lineares

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

O problema do fluxo máximo (problema3.6) para uma rede de fluxo (G, u, r, s) pode ser formulado muito naturalmente como um problema de programação linear: encon- trar um vetor (xe : e ∈ E)que

maximize x+ −(s) sob as restrições x+ −(v) = 0 para cada v em V r {r, s} xe ≤ ue para cada e em E xe ≥ 0 para cada e em E, (1)

sendo V := V (G) e E := E(G). (Note a semelhança entre esse pl e o pl (2) na seção2.5, página22.)

Infelizmente, o dual desse pl é inconveniente, pois trata em separado dos nós r e s. A seguinte formulação alternativa do problema é mais apropriada: dada uma rede ca- pacitada (G, u) e um arco sr de capacidade ∞, encontrar uma circulação x que respeite ue maximize xsr. (Veja o exercício3.12.) Essa forma do problema pode ser apresentada

como um programa linear: encontrar um vetor x que maximize xsr sob as restrições

x+

−(v) = 0 para cada v em V

xe ≤ ue para cada e em E

xe ≥ 0 para cada e em E.

(2)

Para escrever esse pl em notação matricial, introduzimos um vetor (ce : e ∈ E) tal

que csr = 1 e ce = 0 para todos os demais arcos. O pl pode então ser escrito assim:

Ax = b Ix ≤ u x ≥ 0

(3) sendo I a matriz identidade indexada por E × E e b o vetor nulo indexado por V . O dual desse pl consiste em minimizar yb + zu sujeito a

yA + zI ≥ c

z ≥ 0 . (4)

Quando escrito por extenso, esse programa linear fica assim: minimize P(ueze: e ∈ E) sob as restrições

−yv + yw+ zvw ≥ 0 para vw ∈ E r {sr}

−ys+ yr+ zsr ≥ 1

ze ≥ 0 para e ∈ E.

(5)

Esse dual de (2) corresponde exatamente ao problema do corte mínimo. De fato, se ∂−

(R)é um corte que separa r de s então o par de vetores (y, z) definido a seguir é uma solução viável do pl (5):

yv = 1 para cada v em R,

yv = 0 para cada v em R,

ze= 1 para cada e em ∂−(R),

ze= 0 para cada e em E r ∂−(R).

Reciprocamente qualquer solução viável (y, z) de (5) que tem valores em {0, 1} des- creve um corte que separa r de s.

Outro programa linear

Se denotarmos por P o conjunto de todos os dicaminhos simples de r a s no digrafo, o problema do fluxo máximo pode então ser formulado assim: encontrar um vetor (wP : P ∈ P)que

maximize P(wP : P ∈ P) sujeito a

P(wP : e ∈ P ∈ P) ≤ ue para cada e ∈ E

wP ≥ 0 para cada P ∈ P.

(6)

(Veja a decomposição de fluxo em caminhos.) O número de variáveis é enorme, pois |P| pode aumentar exponencialmente com o número de nós. Ainda assim, o pl é conceitualmente muito interessante. O dual do pl consiste em encontrar um vetor (ze: e ∈ E)que

minimize P(zeue : e ∈ E) sujeito a

P(ze: e ∈ P ) ≥ 1 para cada P ∈ P

ze ≥ 0 para cada e ∈ E.

(7) (Em outras palavras, trata-se de atribuir pesos não-negativos z aos arcos de modo que cada dicaminho de r a s esteja “coberto”, isto é, que a soma dos pesos nos arcos do

dicaminho seja pelo menos 1). Se z é o vetor característico de um corte ∂−

(R)entre r e s então é claro que z é solução viável de (7).

Exercícios

3.43 Escreva o dual do pl (1). Prove que sua resposta está correta.

3.44 Verifique que o pl (3) é o dual o pl (4). Reciprocamente, verifique que (4) é dual de (3).

3.45 Mostre que qualquer corte entre r e s corresponde a uma solução viável (y, z) do pl (5) e que o valor uz da solução viável (y, z) é igual à capacidade do corte. Mostre ainda que qualquer corte mínimo entre r e s define uma solução ótima do pl (5). (Sugestão: use o teorema3.8para obter uma solução ótima do pl (2).)

3.46 ? Capacidades infinitas. A rigor, o pl (2) só está correto se ue< ∞para todo arco e. Quando ue= ∞

(em particular, quando e = sr), a restrição xe ≤ uedeveria ser ignorada, fazendo desaparecer a

componente zede z. Reescreva o pl de forma correta. Como fica o dual? Escreva as condições de

folgas complementares para o par dual de programas lineares.

3.47 Prove que o pl (7) é o dual do pl (6). Reciprocamente, prove que (6) é dual de (7).

3.8

Exercícios adicionais

3.48 Análise de sensibilidade e arcos vitais. Numa rede (G, u, r, s), um arco a é vital se a redução de uaa 0

causa a maior redução possível na intensidade do fluxo máximo. Prove ou desprove cada uma das afirmação a seguir: A. Se a é vital então uaé máximo. B. Se x é um fluxo máximo e a é vital

então xa é máximo. C. Se x é um fluxo máximo e a é vital então existe um corte de capacidade

mínima tal que xa ≥ xepara todo arco e no corte. D. Se a é vital então a pertence a algum corte

de capacidade mínima. E. A rede pode ter mais de um arco vital.[AMO 7.7]

3.49 Análise de sensibilidade e arcos dispensáveis. Numa rede (G, u, r, s), um arco a é dispensável se a redução de ua a 0 causa a menor redução possível na intensidade do fluxo máximo. Prove ou

desprove cada uma das afirmação a seguir: A. Se x é um fluxo máximo e xa = 0 então a é

dispensável. B. Se x é um fluxo máximo e xaé mínimo então a é dispensável. C. Se a pertence a

um corte de capacidade mínima então a não é dispensável.[AMO 7.8]

3.50 Seja G um digrafo completo e (G, u, r, s) uma rede de fluxo. (Um digrafo é completo se todo par ordenado de nós é um arco.) Seja ϕ a intensidade de um fluxo máximo na rede. Para cada par (i, j)de nós, seja α[i, j] o aumento no valor de ϕ que obteríamos se uij fosse ∞. A. Mostre que

α[i, j] ≤ α[r, j]e α[i, j] ≤ α[i, s]. B. Mostre que α[i, j] = min (α[r, j], α[i, s]). C. Mostre como α[i, j] pode ser calculado para todo par (i, j) mediante resolução de O(n) problemas de fluxo máximo.

[AMO 7.26]

3.51 Re-otimização. Seja x um fluxo máximo numa rede de fluxo (G, u, r, s). Suponha que um número k > 0foi somado à capacidade de um determinado arco e. Mostre como encontrar um novo fluxo máximo em tempo O(km). Agora suponha que um número k > 0 foi subtraído da capaci- dade de um determinado arco e; é possível encontrar um novo fluxo máximo em tempo O(km)?

Aplicações de fluxo máximo e corte

mínimo

Este capítulo mostra algumas aplicações de fluxo máximo e corte mínimo (capítuo3). Várias dessas aplicações são “problemas de viabilidade”, pois não envolvem maxi- mização nem minimização mas apenas procuram um objeto de um certo tipo num digrafo. A parte mais interessante desses problemas são os certificados de inexistência de solução: explicações elementares de por quê a instância dada não tem solução. Um exemplo imediato de problema de viabilidade é o seguinte: dada uma rede de fluxo (G, u, r, s) e um número k, encontrar um fluxo viável de r a s que tenha intensi- dade pelo menos k. O teorema MFMC (teorema3.8) mostra que uma instância desse problema não tem solução somente se houver um impedimento óbvio, na forma de um corte de capacidade menor que k entre r e s.

4.1

Emparelhamentos bipartidos e coberturas por nós

Suponha dado um conjunto de trabalhadores, um conjunto de postos de trabalho, e o conjunto de todos os pares (p, q) tais que o trabalhador p está habilitado a ocupar o posto q e o posto q está disposto a contratar p. Queremos encontrar um “casamento” de k trabalhadores com k postos de trabalho. (É claro que cada trabalhador deve ocupar apenas um posto e cada posto deve ser ocupado por apenas um trabalhador.) Em que condições o problema tem solução?

Um emparelhamento (= matching) num grafo não-dirigido bipartido é um conjunto M de arestas tal que todo nó pertence a no máximo uma das arestas de M .

Nosso problema: Dado um grafo bipartido e um inteiro k, encontrar um emparelha- mento com k ou mais arestas.

Se uma dada instância do problema não tem solução, queremos receber uma prova — um certificado — da inexistência de solução. Para obter um tal certificado, usaremos o seguinte conceito. Uma cobertura por nós (= cover) de um grafo não-dirigido bipartido é um conjunto K de nós tal que toda aresta do grafo tem pelo menos uma ponta em K. Se não houver confusão, diremos “cobertura” no lugar de “cobertura por nós”.

Proposição 4.1 Se um grafo não-dirigido bipartido tem uma cobertura com menos que knós então todo emparelhamento tem menos que k arestas.

Uma cobertura com menos que k nós é portanto um certificado de que o grafo não tem emparelhamento com k ou mais arestas. D. K˝onig descobriu (1931) que a recíproca da proposição é verdadeira:

Teorema 4.2 (K ˝onig) Num grafo não-dirigido bipartido, se toda cobertura tem k ou mais nós então existe um emparelhamento com k ou mais arestas.

ESBOÇO DA PROVA: Suponha que o grafo G tem bipartição {P, Q}. Construa uma rede capacitada (G0, u)da seguinte maneira. O conjunto de nós do digrafo G0é V (G)∪{r, s}, sendo r e s dois novos nós. Para cada aresta pq de G, há um arco pq com capaci- dade upq = ∞em G0; para cada p em P , há um arco rp com capacidade urp = 1em G0;

e para cada q em Q, há um arco qs com capacidade uqs = 1em G0.

Suponha que toda cobertura em G tem k ou mais nós; vamos mostrar que todo corte entre r a s na rede (G0, u)tem capacidade pelo menos k. Seja R um conjunto de nós que separa r de s. Seja A := R r {r} e considere o conjunto

(P r A) ∪ (Q ∩ A) .

Se esse conjunto é uma cobertura de G então nenhuma aresta tem uma ponta em P ∩ A e outra em Q r A e portanto u−

(R) = |P r A| + |Q ∩ A| ≥ k. Se (P r A) ∪ (Q ∩ A) não é um cobertura de G então alguma aresta de G tem uma ponta em P ∩ A e outra em Q r A, donde u−

(R) = ∞ > k.

Como todo corte entre r e s na rede (G0, u) tem capacidade pelo menos k, o teorema MFMC (teorema 3.8) garante que existe um fluxo x de r a s na rede (G0, u) tal que

int(x) ≥ k. De acordo com o teorema MFMC inteiro (teorema 3.10), podemos supor que x é inteiro e portanto xvw ∈ {0, 1} para cada arco vw de G0. Seja M o conjunto das

arestas pq de G tais que xpq = 1. Então M é um emparelhamento em G. Finalmente,

Uma pequena adaptação da prova leva à versão max-min do teorema de K˝onig: Teorema 4.3 (K ˝onig) Em qualquer grafo não-dirigido bipartido, maxM |M | =

minK|K|, sendo maxM tomado sobre todos os emparelhamentos M e minK tomado

sobre todas as coberturas K.

Exercícios

4.1 ? Condições necessárias. Prove a proposição4.1. Mostre que ela vale em qualquer grafo, mesmo que não seja bipartido.

4.2 Mostre que um emparelhamento máximo num grafo pode ser menor que uma cobertura mínima. 4.3 Encontre um emparelhamento máximo e uma cobertura mínima no grafo da figura.

4.4 ? Complete os detalhes da prova do teorema de K˝onig (teorema4.2).

4.5 Na prova do teorema4.2, por que não adotar a função-capacidade u = 1? Por que não definir as capacidades assim: upq= 1para cada aresta pq de G, urp= ∞para cada p em P e uqs = ∞para

cada q em Q?

4.6 Prove o teorema4.3a partir do teorema4.2.

4.7 Emparelhamentos perfeitos. Um emparelhamento é perfeito se incide em cada nó do grafo. Um grafo é k-regular se todos os seus nós têm grau k. Dado um inteiro k ≥ 1, prove que todo grafo bipartido k-regular tem um emparelhamento perfeito. Deduza daí que todo grafo bipartido k- regular tem k emparelhamentos perfeitos disjuntos entre si.[CCPS 3.23]

4.8 Mostre que as conclusões do exercício4.7são falsas se “grau k” for trocado por “grau pelo me- nos k”.[CCPS 3.24]

4.9 Cobertura por caminhos curtos. Um conjunto X de nós de um grafo é independente se nenhum arco tem ambas as pontas em X. Uma cobertura de um grafo por caminhos curtos é uma coleção de caminhos de comprimento ≤ 1 tal que todo nó do grafo está em pelo menos um dos caminhos da coleção. Prove que num grafo bipartido qualquer conjunto independente máximo tem o mesmo tamanho que uma cobertura mínima por caminhos curtos. (Dica: Use o teorema de K˝onig.) 4.10 Teorema de Menger. Dois dicaminhos em um digrafo são internamente disjuntos se os únicos

nós que eles têm em comum são o primeiro e o último. Dados nós r e s de um digrafo G, um subconjunto S de V (G) r {r, s} separa r de s se não existe dicaminho de r a s em G r S. Prove o seguinte teorema de Menger: o número máximo de dicaminhos de r a s que são internamente disjuntos é igual ao tamanho de um conjunto de nós que separa r de s.[CCPS 3.42]

4.11 Teorema de Menger. Use o exercício4.10para enunciar e provar um resultado análogo ao teorema de Menger para grafos não-dirigidos.[CCPS 3.43]

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