curso de otimização combinatória - ime-usppf/otimizacao-combinatoria/mynotes/... · esses...

155
Curso de Otimização Combinatória www.ime.usp.br/~pf/otimizacao-combinatoria/ Paulo Feofiloff Departamento de Ciência da Computação Instituto de Matemática e Estatística Universidade de São Paulo 2018-09-13

Upload: vuongtuong

Post on 11-Oct-2018

223 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

Curso deOtimização Combinatória

www.ime.usp.br/~pf/otimizacao-combinatoria/

Paulo FeofiloffDepartamento de Ciência da Computação

Instituto de Matemática e Estatística

Universidade de São Paulo

2018-09-13

Page 2: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

2 FEOFILOFF

Page 3: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

Prefácio

Estas notas de aula foram escritas para as disciplinas de Otimização Combinatória doInstituto de Matemática e Estatística da Universidade de São Paulo. Uma versão antigadas notas pode ser vista no meu sítio Fluxo em Redes (https://www.ime.usp.br/~pf/flows/).

As notas discutem algoritmos para alguns problemas de otimização combinatória,como o problema do caminho mínimo, o do fluxo máximo, o do fluxo viável de customínimo, o do corte não-dirigido mínimo, o do emparelhamento máximo, e o do empa-relhamento perfeito de custo mínimo.

Supõe-se que o leitor tem algum conhecimento prévio de teoria dos grafos, de progra-mação linear, de análise de algoritmos, e de estruturas de dados básicas.

As notas foram baseadas, em boa parte, no livro de Cook, Cunningham, Pulleyblank eSchrijver [CCPS98], que apelidei de CCPS. A maior parte das figuras foi copiada (sempermissão) desse livro.

Os livros de Schrijver [Sch03], e Ahuja, Magnanti e Orlin [AMO93] também serviramde referência e fonte de material. A maneira de escrever pseudocódigo foi copiadade Cormen, Leiserson, Rivest e Stein [CLRS01]. Apelidei esses livros de Sch, AMO eCLRS, respectivamente.

Os exercícios marcados com “?” complementam pontos que o texto indicou mas nãodesenvolveu. Exercícios particularmente interessantes ou importantes também sãomarcados com “?”. Mas essas indicações não são sistemáticas nem consistentes.

—P.F.

i

Page 4: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

ii FEOFILOFF

Page 5: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

Sumário

1 Preliminares 1

1.1 Digrafos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

1.2 Grafos não-dirigidos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

1.3 Programação linear . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

1.4 Complexidade de algoritmos . . . . . . . . . . . . . . . . . . . . . . . . . 9

1.5 Comparação assintótica de funções . . . . . . . . . . . . . . . . . . . . . . 10

1.6 Convenções gerais de notação e terminologia . . . . . . . . . . . . . . . . 10

2 Caminhos dirigidos de custo mínimo 13

2.1 O problema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

2.2 Potencial viável . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

2.3 Algoritmo de Ford . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

2.4 Algoritmo de Ford-Bellman . . . . . . . . . . . . . . . . . . . . . . . . . . 19

2.5 Dicircuitos negativos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

2.6 Programas lineares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

2.7 Algoritmo especial para redes acíclicas . . . . . . . . . . . . . . . . . . . . 23

2.8 Algoritmo especial para custos não-negativos . . . . . . . . . . . . . . . . 25

2.9 Custos unitários e busca em largura . . . . . . . . . . . . . . . . . . . . . 26

2.10 Exercícios adicionais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

3 Fluxo máximo e corte mínimo 29

3.1 Fluxo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

3.2 O problema do fluxo máximo . . . . . . . . . . . . . . . . . . . . . . . . . 32

3.3 Condições de otimalidade . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

3.4 Teorema do fluxo máximo e corte mínimo . . . . . . . . . . . . . . . . . . 34

3.5 Algoritmo de Ford e Fulkerson . . . . . . . . . . . . . . . . . . . . . . . . 37

iii

Page 6: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

iv SUMÁRIO FEOFILOFF

3.6 Versão Edmonds-Karp do algoritmo . . . . . . . . . . . . . . . . . . . . . 38

3.7 Programas lineares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

3.8 Exercícios adicionais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

4 Aplicações de fluxo máximo e corte mínimo 43

4.1 Emparelhamentos bipartidos e coberturas por nós . . . . . . . . . . . . . 43

4.2 O problema do transporte . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

4.3 O problema de Gale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47

4.4 O problema de Hoffman . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

4.5 Fluxo mínimo entre dois nós . . . . . . . . . . . . . . . . . . . . . . . . . . 53

4.6 Teorema de Dilworth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55

5 Fluxo viável de custo mínimo 59

5.1 O problema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59

5.2 Programas lineares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

5.3 Condições de otimalidade . . . . . . . . . . . . . . . . . . . . . . . . . . . 62

5.4 Circuitos de aumento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

5.5 Algoritmo dos circuitos de aumento . . . . . . . . . . . . . . . . . . . . . 67

5.6 Algoritmo Simplex Para Redes de Transbordo . . . . . . . . . . . . . . . 68

5.7 Algoritmo Simplex Para Redes arbitrárias . . . . . . . . . . . . . . . . . . 76

6 Cortes não-dirigidos mínimos 81

6.1 Submodularidade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81

6.2 Corte mínimo entre dois nós . . . . . . . . . . . . . . . . . . . . . . . . . . 82

6.3 Contrações e laminaridade . . . . . . . . . . . . . . . . . . . . . . . . . . . 84

6.4 Corte globalmente mínimo . . . . . . . . . . . . . . . . . . . . . . . . . . . 85

6.5 Árvores Gomory-Hu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89

6.6 Algoritmo para árvore Gomory-Hu . . . . . . . . . . . . . . . . . . . . . . 91

6.7 Construção iterativa da árvore Gomory-Hu . . . . . . . . . . . . . . . . . 94

7 Emparelhamentos máximos 97

7.1 O problema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97

7.2 Caminhos alternantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98

7.3 Componentes ímpares e a fórmula de Tutte-Berge . . . . . . . . . . . . . 100

7.4 Algoritmo do emparelhamento perfeito . . . . . . . . . . . . . . . . . . . 106

Page 7: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

FEOFILOFF SUMÁRIO v

7.5 Algoritmo do emparelhamento máximo . . . . . . . . . . . . . . . . . . . 113

8 Emparelhamento de custo mínimo 117

8.1 Emparelhamento perfeito mínimo . . . . . . . . . . . . . . . . . . . . . . 117

8.2 Programa linear . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118

8.3 Algoritmo para grafos bipartidos . . . . . . . . . . . . . . . . . . . . . . . 120

8.4 Um programa linear mais poderoso . . . . . . . . . . . . . . . . . . . . . 124

8.5 Algoritmo para grafos arbitrários . . . . . . . . . . . . . . . . . . . . . . . 127

8.6 Emparelhamentos de custo máximo . . . . . . . . . . . . . . . . . . . . . 129

9 Poliedros inteiros 131

9.1 Casco convexo e separação . . . . . . . . . . . . . . . . . . . . . . . . . . . 131

9.2 Poliedro dos emparelhamentos perfeitos . . . . . . . . . . . . . . . . . . . 133

9.3 Poliedros, politopos, e seus vértices . . . . . . . . . . . . . . . . . . . . . . 134

9.4 Politopos de programas lineares . . . . . . . . . . . . . . . . . . . . . . . 138

Bibliografia 141

Índice Remissivo 142

Page 8: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

vi SUMÁRIO FEOFILOFF

Page 9: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

Capítulo 1

Preliminares

Este primeiro capítulo faz uma rápida revisão dos conceitos e da terminologia básicada teoria dos grafos, da programação linear e da complexidade de algoritmos. Tambémestabelece as convenções de notação que serão usadas no restante das notas. A termi-nologia e a notação adotados são essencialmente os de CCPS.

Muitos problemas de otimização combinatória são formuladas sobre grafos. Examinaresses problemas sob o prisma da programação linear é muito revelador. Para estudara eficiência dos algoritmos que resolvem os problemas é preciso conhecer um mínimodas técnicas de análise de algoritmos.

1.1 Digrafos

Um digrafo (= digraph) é um par (V,E) de conjuntos, sendo V qualquer conjunto finitoe E um conjunto de pares ordenados de elementos de V . Os elementos de V sãochamados nós e os elementos de E são chamados arcos.1

Digrafos também são conhecidos como grafos dirigidos (= directed graphs). O neolo-gismo “digrafo” é fácil de escrever, mas difícil de pronunciar. Em discussões orais,prefiro usar o sinônimo “grafo dirigido”. Quando o contexto permite, podemos deixaro prefixo “di” e o adjetivo “dirigido” subentendidos e dizer “grafo”.

Podemos dar um nome — como G, por exemplo — a um digrafo. O conjunto de nósde um digrafo G é denotado por V (G) e o conjunto de arcos por E(G).

Um arco (v, w) pode ser denotado simplesmente por vw. O nó v é a ponta inicial (= tail)e o nó w é a ponta final (= head) do arco. Dizemos que um tal arco sai de v e entra em w.A ponta inicial de um arco também poderia ser chamada ponta negativa e a ponta finalpoderia ser chamada ponta positiva.

Digrafos não têm “arcos paralelos”: dois arcos diferentes não podem ter a mesmaponta inicial e a mesma ponta final. Além disso, as pontas inicial e final de cada arco

1 As letras “V ” e “E” são as iniciais de “vertex” e “edge”, respectivamente. Teria sido mais coerenteusar as iniciais “N” e “A” de “node” e “arc”.

1

Page 10: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

2 PRELIMINARES FEOFILOFF

são distintas; portanto, digrafos não têm “laços” (= loops).

Dois arcos vw e v′w′ são antiparalelos, ou mutuamente inversos, se v′ = w e w′ = v.Um digrafo é simétrico se a presença de um arco implica na presença do arco inverso.Em outras palavras, um digrafo é simétrico se tem um arco wv para cada arco vw.

O número de nós de um digrafo é denotado por n e o número de arcos porm. Portanto,se G é o digrafo em discussão então n := |V (G)| e m := |E(G)|. É claro que m ≤n(n− 1) < n2.

Um subdigrafo de um digrafoG é qualquer digrafoG′ tal que V (G′) ⊆ V (G) eE(G′) ⊆E(G). Se V (G′) = V (G), dizemos que G′ é um subdigrafo gerador (= spanning). Dadoum subconjunto V ′ de V (G), se E ′ é o conjunto de todos os arcos de G que têm ambasas pontas em V ′, dizemos que o subdigrafo (V ′, E ′) é induzido por V ′. Dado umsubconjunto E ′ de E(G), se V ′ é o conjunto de todos os nós de G que incidem emarcos de E ′, dizemos que subdigrafo (V ′, E ′) é induzido por E ′.

Para qualquer nó v de G, denotamos por G− v o subdigrafo induzido por V (G)r v.Para qualquer arco e, denotamos por G−e o subdigrafo que tem conjunto de nós V (G)e conjunto de arcos E(G) r e. Para qualquer par (i, j) de nós, denotamos por G+ ijo digrafo que tem conjunto de nós V (G) e conjunto de arcos E(G) ∪ ij.

Matrizes. A matriz de adjacências de um digrafo tem linhas e colunas indexadaspelos nós. A componente da matriz na posição (v, w) vale 1 se vw é um arco e vale 0em caso contrário.

A matriz de incidências tem linhas indexadas pelos nós e colunas indexadas pelosarcos. A coluna que corresponde a um arco vw tem um −1 na posição v e um +1na posição w, sendo o resto da coluna igual a 0. Portanto, a linha da matriz quecorresponde ao nó v tem um +1 na coluna correspondente a cada arco que entra em v,um −1 na posição correspondente a cada arco que sai de v, e 0 em todas as demaisposições.

EXEMPLO 1: O digrafo com nós u v w z e arcos uw vw zu uz zw tem a matriz de adjacênciasrepresentada à esquerda (com “−” no lugar de “0”) e a matriz de incidências representada à direita:

u v w z

u − − 1 1v − − 1 −w − − − −z 1 − 1 −

uw vw zu uz zw

u −1 0 +1 −1 0v 0 −1 0 0 0w +1 +1 0 0 +1z 0 0 −1 +1 −1

Caminhos. Um caminho (= path) num digrafo é qualquer sequência alternante (v0, e1,v1, e2, . . . , ep, vp) de nós e arcos tal que cada arco ek tem pontas vk−1 e vk. Se ek = vk−1vk,o arco ek é direto; se ek = vkvk−1, o arco ek é inverso. O nó v0 é a origem do caminhoe vp é o término. Dizemos que o caminho vai de v0 a vp. O conjunto de nós de umcaminho P é denotado por V (P ) e o conjunto de arcos por E(P ).

O comprimento de um caminho (v0, e1, v1, . . . , ep, vp) é o número p, ou seja, o númerode termos da sequência que são arcos. O comprimento de um caminho P é pelo menos|E(P )|, valendo a igualdade somente se P não tem arcos repetidos.

Page 11: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

FEOFILOFF PRELIMINARES 3

Um caminho (v0, e1, v1, e2, . . . , ep, vp) pode ser indicado pela sequência (v0, v1, . . . , vp) deseus nós, embora essa abreviatura seja ambígua quando o digrafo tem arcos antipara-lelos.

Se o término de um caminho (v0, v1, . . . , vp) é igual à origem de um caminho (w0,w1, . . . , wq), os dois caminhos podem ser concatenados. O resultado da concatenaçãoé o caminho (v0, v1, . . . , vp, w1, w2, . . . , wq). A concatenação de dois caminhos P e Q édenotada por P ·Q.

Um caminho é simples se não tem nós repetidos (e portanto não tem arcos repetidos).Se um caminho P é simples, seu comprimento é |E(P )|. Se Q é um caminho comorigem r e término s então alguma subsequência2 de Q é um caminho simples de r a s.Por exemplo, se (u, v, w, x, v, w, z) é um caminho então (u, v, w, z) é o correspondentecaminho simples.

Dicaminhos. Um caminho é dirigido se todos os seus arcos são diretos. Caminhosdirigidos também são chamados dicaminhos (= dipaths). (O neologismo “dicaminho”é feio, mas cômodo em texto escrito.)

Dizemos que um nó v de um digrafo está ao alcance de um nó r se existe um dicaminhode r a v.

Componentes conexas. Um digrafo é conexo se, para cada par (r, s) de nós, existeum caminho (não necessariamente dirigido) de r a s (e portanto também um caminhode s a r). Uma componente conexa de um digrafo G é um subdigrafo conexo maximalde G.

Um digrafo é fortemente conexo se, para cada par (r, s) de nós, existe um dicaminhode r a s e um dicaminho de s a r.

Circuitos e DAGs. Um circuito (= circuit) é um caminho (v0, e1, v1, . . . , ep−1, vp−1,ep, vp) que satisfaz quatro condições: p ≥ 2, o caminho (v0, e1, v1, . . . , ep−1, vp−1) é sim-ples, vp = v0 e ep 6= ep−1. (A última condição é redundante se p > 2.)

Um circuito é dirigido se todos os seus arcos são diretos. Um circuito dirigido tambémpode ser chamado de dicircuito (= dicircuit).

Um digrafo é acíclico se não tem dicircuitos. Digrafos acíclicos também são conhecidospela abreviatura DAG de directed acyclic graph.

Florestas e árvores. Uma floresta (= forest) é um digrafo sem circuitos (em particular,sem dicircuitos). Toda floresta é um DAG, mas nem todo DAG é uma floresta. Umaárvore3 (= tree) é uma floresta conexa. Para quaisquer dois nós r e s de uma árvore,

2 Da mesma forma, por exemplo, que (b, c, e, h) é subsequência de (a, b, c, d, e, f, g, h) mas (c, a) não ésubsequência de (a, b, c, d).

3 Há quem diga “árvore dirigida”.

Page 12: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

4 PRELIMINARES FEOFILOFF

existe um e um só caminho simples de r a s. Para todo arco e de uma árvore T , odigrafo T − e é uma floresta com exatamente duas componentes conexas.

Uma arborescência, ou árvore divergente, é uma árvore T dotada de um nó r que tema seguinte propriedade: para cada nó v, o único caminho simples de r a v é dirigido.O nó r é a raiz da arborescência.

EXEMPLO 2: Veja à esquerda a matriz de adjacências de uma árvore com nós a b c d e f . À direita,uma árvore divergente com o mesmo conjunto de nós e raiz c. (Faça figuras.)

a b c d e f

a − − − − − −b − − 1 − − −c 1 − − 1 − −d − − − − 1 −e − − − − − −f − − − 1 − −

a b c d e f

a − − − − − −b − − − − − −c 1 1 − 1 − −d − − − − 1 1e − − − − − −f − − − − − −

Digrafos bipartidos. Um digrafo G é bipartido se estiver acompanhado de uma bi-partição4 P,Q de V (G) tal que todo arco tem uma ponta (a inicial ou a final) em P eoutra em Q.

Um digrafo é bipartido se e somente se não tem circuito de comprimento ímpar.

Arcos que entram e arcos que saem. Dado um digrafo G := (V,E) e um subconjuntoR de V , denotamos por R o conjunto V r R. Dizemos que um arco vw entra em R sev ∈ R e w ∈ R. Dizemos que vw sai de R se v ∈ R e w ∈ R. O conjunto de todos osarcos que entram em R é denotado por

∂+(R) .

Analogamente, ∂−(R) é o conjunto de todos os arcos que saem de R.5 É claro que∂+(R) = ∂−(R). É claro também que ∂+(∅) = ∂+(V ) = ∂−(∅) = ∂−(V ) = ∅.

Se v é um nó, usamos a abreviatura ∂+(v) para ∂+(v). Um nó v é fonte (= source) se∂+(v) = ∅ e sorvedouro (= sink) se ∂−(v) = ∅. O número |∂+(v)| é o grau de entrada(= indegree) de v e o número |∂−(v)| é o grau de saída (= outdegree) de v. É claro que|∂+(v)| ≤ n − 1 e |∂−(v)| ≤ n − 1. É claro também que

∑(|∂+(v)| : v ∈ V ) = m e∑

(|∂−(v)| : v ∈ V ) = m.

Cortes. Um corte (= cut) em um digrafo G é o conjunto de todos os arcos que saemde algum conjunto de nós. Em outras palavras, um corte é qualquer conjunto da forma

4 Uma bipartição de um conjunto V é um par P,Q de subconjuntos de V tal que P ∪ Q = V eP ∩Q = ∅. A expressão “P é uma das partições” está errada; diga “P é um dos blocos da partição”.

5 CCPS escreve “δ(R)” e “δ(R)” no lugar dos meus “∂+(R)” e “∂−(R)” respectivamente. Acho queminha notação é mais sugestiva. Para justificar os superscritos “+” e “−”, você pode imaginar que osnós são contas bancárias e os arcos representam movimentação de dinheiro. Tudo que entra em umaconta é somado ao saldo e tudo que sai é subtraído.

Page 13: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

FEOFILOFF PRELIMINARES 5

∂−(R), com R ⊆ V (G). (À primeira vista pode parecer que um corte deveria ser defi-nido como ∂+(R) ∪ ∂−(R), mas a definição que adotamos é mais útil.) O conjunto R éa margem negativa do corte e R é a margem positiva. (No lugar de margem do cortepoderíamos também dizer argumento do corte.)

Redes. O conceito de rede (= network) é propositalmente vago e informal. Uma redeé um digrafo juntamente com uma ou mais funções que atribuem números aos arcose/ou aos nós do digrafo. Às vezes, a especificação de uma rede também inclui um oudois nós “especiais” do digrafo.

Por exemplo, se G é um digrafo e c é uma função de E(G) em Q, podemos dizer que(G, c) é uma rede. Da mesma forma, se b é uma função de V (G) em Q, podemos dizerque (G, b, c) é uma rede.

Exercícios

1.1 Seja v um nó de um digrafo. Mostre que∑

(|∂+(v)| : v ∈ V ) = m e∑

(|∂−(v)| : v ∈ V ) = m.

1.2 Seja R um conjunto de nós de um digrafo G. Mostre que não existe dicaminho em G− ∂−(R) quecomeça em R e termina em R.

1.2 Grafos não-dirigidos

Um grafo não-dirigido6 (= undirected graph) é um par (V,E) em que V é um conjuntofinito e E é um conjunto de pares não ordenados de elementos de V . Os elementos deE são chamados arestas (= edges). Uma aresta v, w pode ser denotada por vw oupor wv. Os nós v e w são as pontas da aresta.

Quando o contexto permite, podemos dizer simplesmente “grafo”, deixando o “não-dirigido” subentendido.

Um grafo é essencialmente o mesmo que um digrafo simétrico: basta trocar cada arestapor dois arcos antiparalelos com as mesmas pontas. Assim, as definições de caminho,circuito, grau de nó, subgrafo, bipartição, etc. em grafos são análogas às corresponden-tes definições para digrafos. É claro que não há distinção entre caminhos e dicaminhos,circuitos e dicircuitos, grau de entrada e grau de saída, etc. Tipos de grafos — comoárvores não-dirigidas, por exemplo — também são definidos por analogia com os cor-respondentes tipos de digrafos.

A matriz de incidências de um grafo é binária, ou seja, suas componentes estãoem 0, 1. As linhas da matriz são indexadas pelos nós e as colunas são indexadaspelas arestas; a coluna que corresponde a uma aresta vw tem um 1 na linha v e um 1 nalinha w, sendo o resto da coluna igual a 0. Portanto, a linha da matriz que correspondeao nó v tem um 1 na coluna correspondente a cada aresta que incide em v e 0 em todasas demais colunas.

6 Estou contrariando a regra de ortografia que manda escrever “não dirigido” sem hífen.

Page 14: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

6 PRELIMINARES FEOFILOFF

EXEMPLO 3: O grafo que tem nós u v w z e arestas uw vw zu uz zw tem a seguinte matriz deincidências:

uw vw zu uz zw

u 1 − 1 1 −v − 1 − − −w 1 1 − − 1z − − 1 1 1

1.3 Programação linear

Programação linear é uma importante ferramenta em otimização combinatória. Consi-dere o seguinte exemplo de programa linear: encontrar números x1, x2, x3, x4, x5 quemaximizem o valor da combinação linear

51x1 + 52x2 + 53x3 + 54x4 + 55x5

enquanto satisfazem as restrições lineares

11x1 + 12x2 + 13x3 + 14x4 + 15x5 = 1621x1 + 22x2 + 23x3 + 24x4 + 25x5 = 2631x1 + 32x2 + 33x3 + 34x4 + 35x5 = 3641x1 + 42x2 + 43x3 + 44x4 + 45x5 = 46

e as restrições de sinal x1 ≥ 0, x2 ≥ 0, x3 ≥ 0, x4 ≥ 0 e x5 ≥ 0. O valor ótimo desseprograma linear é o valor máximo de 51x1 + 52x2 + 53x3 + 54x4 + 55x5 respeitadas asrestrições.

Os valores dos coeficientes nesse exemplo nada têm de especial: os coeficientes po-deriam ser quaisquer números racionais, positivos, negativos, ou nulos. O númerode variáveis poderia ser diferente de 5, o número de restrições poderia ser maior oumenor, e as restrições poderiam ter “≥” ou “≤” no lugar de um ou mais dos “=”.Também poderíamos ter “minimize” no lugar de “maximize”.

O problema que exibimos acima pode ser reescrito em notação matricial: encontrar umvetor x que

maximize cx

sob as restriçõesAx = b e x ≥ 0 .

(1)

Nesse exemplo, A é a matriz representada abaixo, b é o vetor representado na verticalà direita de A e c é o vetor representado na horizontal abaixo de A:

11 12 13 14 15 1621 22 23 24 25 2631 32 33 34 35 3641 42 43 44 45 46

51 52 53 54 55

A expressão cx representa a soma c1x1 + . . .+ c5x5. Muita gente escreve “cTx” no lugardo meu “cx”, mas eu prefiro a notação mais simples!

Page 15: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

FEOFILOFF PRELIMINARES 7

Ocasionalmente usamos a expressão “pl” como abreviatura de “programa linear” (ou“problema de programação linear”). Uma solução viável do pl (1) é qualquer vetor xque satisfaça as restrições Ax = b e x ≥ 0. Uma solução ótima do pl (1) é qualquersolução viável x que maximize cx.7

O pl (1) é viável se tem uma solução viável e inviável no caso contrário. O pl é ilimi-tado se for viável mas não tiver solução ótima, ou seja, se existirem soluções viáveis xpara as quais cx é tão grande quanto se queira.

Dualidade

O dual do programa linear (1) consiste em encontrar um vetor y que

minimize yb

sob as restriçõesyA ≥ c .

(2)

A expressão yA representa a combinação linear das linhas de A com coeficientesy1, y2, . . . , da mesma forma que a expressão Ax representa a combinação linear dascolunas deA com coeficientes x1, x2, . . . Muita gente escreve “yTA” ou “ATy” no lugardo meu “yA”, mas eu prefiro a expressão mais simples! Na minha notação, o produtode vetor por matriz não é comutativo: yA não é o mesmo que Ay (em geral, um delesnem faz sentido).

Os conceitos de solução viável, solução ótima, viável e ilimitado para o pl dual (2)são análogos aos do pl “primal” (1).

A relação básica entre os pl’s (1) e (2) é conhecida como teorema fraco da dualidade.Esse teorema dá uma delimitação superior para a expressão que queremos maximizare, ao mesmo tempo, uma delimitação inferior para expressão que queremos minimizar:para qualquer solução viável x do problema primal e qualquer solução viável y dodual, tem-se

cx ≤ yb . (3)

A prova dessa desigualdade tem apenas uma linha, mas é muito instrutiva. Ela en-volve todas as restrições dos dois pl’s (e a associatividade do produto de vetor pormatriz):

cx ≤ (yA)x = y(Ax) = yb . (4)

Se cx = yb então, em virtude de (3), x é solução ótima do pl primal e y é solução ótimado pl dual.

Portanto, para mostrar que uma solução viável x do primal é ótima, basta exibir umasolução viável y do dual tal que cx = yb. A recíproca dessa observação é garantida peloteorema forte da dualidade:

7 Essa terminologia tradicional é um tanto ilógica, pois a definição do pl (1) inclui a maximizaçãode cx e portanto o “ótima” da expressão “solução ótima” é redundante. Por outro lado, uma “soluçãoviável” não é, a rigor, uma solução pois não maximiza cx.

Page 16: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

8 PRELIMINARES FEOFILOFF

Teorema 1.1 Se os programas lineares (1) e (2) são viáveis então existe uma soluçãoviável x do primeiro e uma solução viável y do segundo tais que cx = yb.

A prova do teorema é algorítmica: o algoritmo Simplex recebe A, b e c, decide se osdois pl’s são viáveis e, em caso afirmativo, devolve x e y tais que cx = yb. (Veja o livrode Chvátal [Chv83].)

Folgas complementares

Suponha que x é uma solução viável de (1) e y é uma solução viável de (2). Para cadaíndice j, dizemos que x é justo em j se xj = 0 e folgado em j se xj > 0. Analogamente,y é justo em j se (yA)j = cj e folgado em j se (yA)j > cj . (Nesse par dual de pl’s, asfolgas envolvem apenas os índices das colunas de A. Em outros pl’s, as folgas podemenvolver também os índices das linhas de A.)

Se x é justo sempre que y é folgado (ou, equivalentemente, y é justo sempre que x éfolgado), dizemos que as folgas de x e y são complementares. No caso dos pl’s (1)e (2), as folgas de x e y são complementares se, para cada índice j,

(yA)j > cj implica em xj = 0 . (5)

Para apresentar essas condições de forma mais simétrica, você pode dizer “(yA)j = cjou xj = 0”. (Aqui, o “ou” não é exclusivo, pois podemos ter (yA)j = cj e xj = 0 paraalgum j.) É fácil deduzir de (4) que, para qualquer x viável em (1) e qualquer y viávelem (2),

cx = yb se e somente se as folgas de x e y são complementares (6)

(veja o exercício 1.5). Esse é o teorema das folgas complementares.

Um exemplo importante

Considere novamente o programa linear que consiste em maximizar cx sob as restri-çõesAx = b e x ≥ 0. Suponha que cada coluna deA tem exatamente uma componenteigual a −1, exatamente uma componente igual a +1, e todas as demais componentesnulas, como no exemplo a seguir.

−1 0 +1 −1 00 −1 0 0 0

+1 +1 0 0 +10 0 −1 +1 −1

Então A é a matriz de incidências de um digrafo, digamos G. As linhas de A e o vetorb são indexados por V (G); as colunas de A e o vetor c são indexados por E(G). Asrestrições Ax = b podem ser entendidas assim: para cada nó v,∑

(xuv : uv ∈ E(G)) −∑

(xvw : vw ∈ E(G)) = bv ,

ou seja, a soma das componentes de x que correspondem aos arcos que entram em vmenos a soma das componentes que correspondem aos arcos que saem de v deve serigual a bv.

Page 17: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

FEOFILOFF PRELIMINARES 9

Programas lineares inteiros

Um programa linear é inteiro se, além das restrições usuais de um pl, tiver restriçõesde integralidade, ou seja, se exigir que os valores das variáveis sejam números inteiros.Por exemplo, se acrescentarmos as restrições

xi ∈ Z para cada i

ao pl (1), teremos um programa linear inteiro.

A relaxação linear de um programa linear inteiro é o pl que se obtém quando as restri-ções de integralidade são removidas.

Exercícios

1.3 Seja A a matriz representada abaixo, b o vetor representado à direita de A e c o vetor representadosob A. Escreva por extenso o seguinte pl: maximize cx sujeito às restrições Ax ≤ b. Escreva porextenso o seguinte pl: maximize yb sujeito às restrições yA ≤ c.

11 12 13 14 1521 22 23 24 2531 32 33 34 35

41 42 43 44

1.4 Encontrar x que maximize x1 + 2x2 + 3x3 sob as restrições x1 ≥ 0, x2 ≥ 0, x3 ≥ 0,

x1 + x2 + x3 = −10 ex1 + 4x3 = −20 .

Esse pl é viável? inviável? ilimitado? O dual desse pl é viável? inviável? ilimitado?

1.5 Suponha que a1b1 + a2b2 + · · · + ambm = 0 sendo a1, a2, . . . , am e b1, b2, . . . , bm números não-negativos. Mostre que, para cada j, aj = 0 ou bj = 0.

1.6 O enunciado do teorema 1.1 tem como hipótese a viabilidade dos pl’s primal e dual. Complete oenunciado de modo a cuidar dos pl’s inviáveis e dos ilimitados.

1.7 Considere o seguinte pl: minimizar cx sob as restriçõesAx = b e x ≥ 0. Enuncie o pl dual. Prove oteorema fraco da dualidade para esse par de pl’s. Enuncie as condições de folgas complementares.Enuncie o teorema forte da dualidade.

1.8 Considere o seguinte pl: maximizar cx sujeito às restrições Ax ≤ b e x ≥ 0. Enuncie o pldual. Prove o teorema fraco da dualidade para esse par de pl’s. Enuncie as condições de folgascomplementares. Enuncie o teorema forte da dualidade.

1.4 Complexidade de algoritmos

Adotaremos um modelo de computação em que o consumo de tempo de cada operaçãoaritmética entre dois números consome apenas O(1) unidades de tempo, ou seja, nãodepende do tamanho dos números.8

8 Para problemas que precisam lidar com números muito grandes é mais apropriado supor que aoperação a+ b, por exemplo, consome O(log a+ log b) unidades de tempo.

Page 18: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

10 PRELIMINARES FEOFILOFF

Suponha queA é um algoritmo que opera sobre uma rede (G, c) em que c é uma funçãode E(G) em Q. A delimitação superior do consumo de tempo deA depende, em geral,do número C := max (|ce| : e ∈ E(G)). O número de iterações queA executa pode, porexemplo, ser proporcional a C ou talvez a logC.

Dizemos que A é pseudopolinomial se consome O(npmq C) unidades de tempo paraalgum p em Z+ e algum q em Z+.

Dizemos que A é polinomial se consome O(npmq logC) unidades de tempo. (Noteque logC é, essencialmente, o número de dígitos decimais de C.)

Dizemos queA é fortemente polinomial se consome O(npmq) unidades de tempo paraalgum p em Z+ e algum q em Z+. O consumo de tempo não depende de c nesse caso.

1.5 Comparação assintótica de funções

Suponha que T e f são funções reais de uma variável inteira n. Dizemos que T é O(f)se existe uma constante k e um número n0 tais que 0 ≤ T (n) ≤ k f(n) para todo n ≥ n0.Assim, a expressão “T é O(f)” tem o sabor de “T ≤ f”.

Dizemos que T é Ω(f) se existe uma constante k e um número n0 tais que 0 ≤ k f(n) ≤T (n) para todo n ≥ n0. Assim, a expressão “T é Ω(f)” tem o sabor de “T ≥ f”.

Dizemos que T é Θ(f) se T é O(f) e Ω(f). Portanto, a expressão “T é Θ(f)” tem o saborde “T = f”.

Exercícios

1.9 Um grafo bipartido G é completo se existe uma bipartição (P,Q) de V (G) tal que pq ∈ E(G) paracada p em P e q em Q. Escreva um algoritmo que receba um grafo bipartido completo G e calculea bipartição (P,Q). O algoritmo deve consumir O(n) unidades de tempo, sendo n o número denós de G.

1.6 Convenções gerais de notação e terminologia

Dizemos que um número r é positivo se r > 0 e negativo se r < 0.9 Portanto, a expres-são “estritamente positivo” tem o mesmo significado que “positivo” e “estritamentenegativo” tem o mesmo significado que “negativo”. Um número r é não-negativo ser ≥ 0 e não-positivo10 se r ≤ 0.

O conjunto dos números reais é denotado por R e o conjunto dos reais não-negativospor R+.11 O conjunto dos números racionais é denotado por Q e o conjunto dos

9 Alguns livros preferem dizer que r é positivo se r ≥ 0 e negativo se r ≤ 0.10 Estou contrariando a regra de ortografia que manda escrever “não negativo” sem hífen.11 Essa notação é um tanto inconsistente com nossa definição de positivo.

Page 19: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

FEOFILOFF PRELIMINARES 11

racionais não-negativos por Q+. O conjunto dos inteiros e o conjunto dos in-teiros não-negativos são denotados por Z e Z+ respectivamente. Portanto, Z =. . . ,−2,−1, 0,+1,+2, . . . e Z+ = 0, 1, 2, . . ..

Convém lembrar que computadores não sabem o que são números irracionas (como√2, por exemplo); eles conhecem apenas um pequeno conjunto de racionais. Os núme-

ros conhecidos como reais no mundo da computação são do tipo float ou double, etodos esses números são racionais.

Um vetor é o mesmo que uma função. Um vetor indexado por um conjunto (finito) Vé o mesmo que uma função com domínio V . O conjunto de tais funções e vetores comvalores racionais pode ser denotado por QV . Um vetor c indexado por V pode serdenotado por (cv : v ∈ V ).

Um vetor é inteiro se todos as suas componentes pertencem a Z. Um vetor é binário,ou booleano, se todas as suas componentes estão em 0, 1. Da mesma forma, umamatriz é binária, ou booleana, se todas as suas componentes estão em 0, 1.

O vetor característico de um subconjunto S de um conjunto V é o vetor binário (xv :v ∈ V ) tal que xv = 1 se v ∈ S e xv = 0 se v ∈ V r S. Reciprocamente, todo vetorbinário x indexado por V representa o subconjunto v : xv = 1 de V .

Para qualquer vetor (ci : i ∈ V ) e qualquer subconjunto S de V , denotamos por c(S) asoma de todos os ci em S:12

c(S) :=∑

(ci : i ∈ S) .

Essa soma também pode ser representada por∑

i∈S ci. Para quaisquer vetores c e xindexados por um mesmo conjunto V , denotamos por cx a soma de todos os produtoscixi para i em S:

cx :=∑

(cixi : i ∈ V ) .

Se x é um vetor binário e S é o conjunto representado por x então cx = c(S).

12 No jargão de linguagens de programação, essa notação é um overload do símbolo c.

Page 20: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

12 PRELIMINARES FEOFILOFF

Page 21: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

Capítulo 2

Caminhos dirigidos de custo mínimo

Este capítulo discute o problema dos dicaminhos de custo mínimo numa rede. Al-goritmos para esse problema são usados como ferramenta na resolução de muitosproblemas de otimização combinatória.

A rede consiste em um digrafo G e uma função c que atribui um número racional —positivo, negativo,ou nulo — a cada arco de G. Dizemos que c é uma função-custo.Para cada arco e, o número ce é o custo do arco.

2.1 O problema

O custo de um dicaminho P = (v0, e1, v1, e2, . . . , ep, vp) na rede (G, c) é o número c(P ) :=ce1 + ce2 + · · · + cep . Cada arco contribui para essa soma tantas vezes quantas apareceem P . Por exemplo, se todos os arcos têm custo 1 e P é um dicaminho simples entãoc(P ) é número de arcos do dicaminho.

Um dicaminho P tem custo mínimo se c(P ) ≤ c(P ′) para todo dicaminho P ′ que tenhaa mesma origem e o mesmo término que P .

Problema 2.1 (dos dicaminhos mínimos) Dada uma rede (G, c) com função-custo c eum nó r em V (G), encontrar, para cada nó v, um dicaminho de r a v que tenha customínimo.

O nó r pode ser chamado nó inicial da rede. Podemos incorporar r à definição da redee dizer “rede (G, c, r)”. Além disso, adotaremos a abreviatura “dicaminho mínimo”para a expressão “dicaminho de custo mínimo”.

Convém lembrar que dicaminhos não são necessariamente simples. Entretanto, tododicaminho mínimo é essencialmente simples, conforme o exercício 2.3.

Para que uma instância1 do problema tenha solução, é necessário que todos os nós darede estejam ao alcance do nó inicial r. É fácil de verificar algoritmicamente se essacondição está satisfeita.

1 Uma instância de um problema é um exemplo do problema, com dados específicos.

13

Page 22: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

14 CAMINHOS DIRIGIDOS DE CUSTO MíNIMO FEOFILOFF

Uma segunda condição necessária para a existência de solução é mais difícil de ve-rificar: é preciso que todos os dicircuitos tenham custo não-negativo. (Lembre-se deque dicircuitos são um tipo especial de dicaminhos.) Se uma instância do problematem um dicircuito de custo negativo então não há dicaminho mínimo de r até algumnó v pois, dado qualquer número (negativo) α, algum dicaminho de r até v tem customenor que α. (Poderíamos dizer, talvez, que o custo mínimo é −∞, ou que “o poçonão tem fundo.”)

Cabe perguntar: é verdade que toda instância do problema 2.1 que satisfaz as duascondições necessárias que acabamos de apontar tem solução? Mostraremos adianteque a resposta é afirmativa.

EXEMPLO 1: Considere o digrafo representado pela matriz de adjacências abaixo. (Use o gabaritode posição dos nós para fazer uma figura.) Um dicaminho mínimo de r a u tem sequência denós (r, v, w, u). É um bom exercício encontrar os demais dicaminhos mínimos. Há mais de umdicaminho mínimo de r a w, mas esse fato é irrelevante.

r s u v w

r − 1 − 1 1s − − 1 − −u − − − − −v − − − − 1w − − 1 − −

rs su rw wu rv vw

c 2 −2 4 −3 3 −1

r s

v

w u

EXEMPLO 2: No digrafo descrito abaixo não há dicaminho algum de r a s. Qualquer que seja afunção-custo, essa instância do problema 2.1 não tem solução.

r s tr − − 1s − − 1t − − −

EXEMPLO 3: Considere o digrafo com custos representado pela matriz abaixo. Essa instância doproblema 2.1 não tem solução porque não existe dicaminho mínimo de r a w. (É um bom exercícioexibir todos os dicaminhos simples de custo mínimo com origem r.)

r s u v w

r − 1 − − −s − − 1 − 1u − − − 1 −v − 1 − − −w − − − − −

rs su uv vs sw

c 1 1 −3 1 1

r s w

v u

Exercícios

2.1 Esboce um algoritmo que decida se todos os nós de um digrafo estão ao alcance de um dado nó r.

2.2 ? Subcaminhos de dicaminhos mínimos. Prove que qualquer subcaminho de um dicaminho mínimoé mínimo. Mostre que essa propriedade deixa de valer se nos restringirmos a dicaminhos simples.[CCPS 2.19]

2.3 ? Dicaminhos mínimos são essencialmente simples. Seja P um dicaminho mínimo. Mostre que existeum dicaminho mínimo P ′ que é subcaminho de P , tem a mesma origem e o mesmo término de P ,e é simples.

Page 23: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

FEOFILOFF CAMINHOS DIRIGIDOS DE CUSTO MíNIMO 15

2.4 Árvores. Calcule um dicaminho mínimo de r a v numa rede (G, c) em que G é uma árvoredivergente (veja seção 1.1). Calcule um caminho mínimo de r a v numa rede (G, c) em que Gé uma árvore não-dirigida.

2.5 No enunciado do problema 2.1, por que não restringir a atenção aos dicaminhos simples? Sefizermos isso, dicircuitos de custo negativo deixarão de ser um empecilho para a existência desolução.

2.6 Dada uma rede (G, c) e subconjuntos disjuntosR e S de V (G) queremos encontrar um dicaminhomínimo dentre os que vão de algum nó de R a algum nó de S. Mostre como esse problema podeser reduzido ao problema 2.1. [CCPS 2.22]

2.7 No problema 2.1, podemos supor que o grau de entrada de r é 0?

2.2 Potencial viável

Como certificar a minimalidade de um dicaminho? Dados nós r e v, como provar quenenhum dicaminho de r a v tem custo menor que um dado número, digamos 99?

Um potencial numa rede (G, c) é qualquer função que atribui um número racional acada nó da rede.2 (Você também pode dizer que um potencial é um vetor indexadopelos nós da rede.) Usamos a seguinte terminologia para descrever a relação entre umpotencial y e um arco vw:

se yv + cvw ≥ yw então vw está relaxado,se yv + cvw = yw então vw é justo,se yv + cvw < yw então vw está tenso.3

Um potencial y é viável (= feasible) se deixa todos os arcos relaxados, ou seja, seyv + cvw ≥ yw para cada arco vw.

EXEMPLO 4: Se c ≥ 0 e y tem o mesmo valor em todos os nós então y é um potencial viável.

EXEMPLO 5: Suponha que uma instância do problema 2.1 (dos dicaminhos mínimos) tem solução.Para cada nó v, seja dv o custo de um dicaminho mínimo de r a v. Então d é um potencial viável.Com efeito, se tivéssemos dv + cvw < dw para algum arco vw, um dicaminho de r a w passandopor v teria custo menor que dw, o que é contraditório.

Potenciais viáveis têm a seguinte propriedade básica: o custo de qualquer dicaminhoé limitado inferiormente pela diferença de potencial entre seu término e sua origem:

Proposição 2.2 (delimitação inferior) Se y é um potencial viável e P é um dicaminhocom origem v e término w então c(P ) ≥ yw − yv.

PROVA: Seja v0, v1, . . . , vk−1, vk a sequência de nós de P . Adote as abreviaturas c(i, j) :=cvivj e y(i) := yvi . Então c(P ) = c(0, 1) + c(1, 2) + · · ·+ c(k − 1, k) ≥ y(1)− y(0) + y(2)−y(1)+ · · ·+y(k)−y(k−1) = y(k)−y(k−1)+ · · ·+y(2)−y(1)+y(1)−y(0) = y(k)−y(0).

2 O conceito de potencial não depende de um nó inicial.3 Para justificar as palavras “tenso” e “relaxado”, você pode imaginar que cada nó v é o ponto de

ordenada yv de uma reta e cada arco vw é um barbante de comprimento cvw. Ignore as direções dosarcos e suponha cvw ≥ 0.

Page 24: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

16 CAMINHOS DIRIGIDOS DE CUSTO MíNIMO FEOFILOFF

A proposição é elementar, ou seja, segue imediatamente das definições, sem qualquerraciocínio sofisticado. Observe que a conclusão da proposição tem a mesma forma quea desigualdade yv + cvw ≥ yw: basta trocar “cvw” por “c(P )”.

A proposição tem a seguinte consequência imediata: para qualquer dicaminho P de va w, se c(P ) = yw− yv então P é mínimo! Portanto, temos a seguinte caracterização dassoluções do problema 2.1:

Teorema 2.3 Dada uma coleção (Ps : s ∈ V (G)) de dicaminhos em que cada Ps temorigem r e término s, se existe um potencial viável y tal que yv+cvw = yw para cadaarco vw de cada Ps, então cada Ps é um dicaminho de custo mínimo.

É claro que se y é um potencial com as propriedades descritas no teorema então adiferença ys − yr é o custo de um dicaminho mínimo de r a s.

Exercícios

2.8 Árvores. Calcule um potencial viável numa rede (G, c) em que G é uma árvore divergente (vejaseção 1.1). Calcule um potencial viável numa rede (G, c) em que G é uma árvore não-dirigida.

2.9 Seja y um potencial viável e α um número. Mostre que y − α é um potencial viável.

2.10 ? Potencial versus dicircuito negativo. Suponha que y é um potencial viável numa rede. Deduza daproposição 2.2 que a rede não tem dicircuitos de custo negativo.

2.3 Algoritmo de Ford

Um algoritmo ideal para o problema 2.1 deveria receber uma instância arbitrária doproblema e devolver uma solução da instância ou explicar por que ela não tem solução.Nosso primeiro algoritmo fica aquém do ideal pois só se aplica a digrafos sem dicir-cuitos de custo negativo. (Se o digrafo tiver um circuito de custo negativo, o algoritmopode não parar.)

O algoritmo recebe uma rede (G, c, r) sem dicircuitos de custo negativo e produz umacoleção de dicaminhos mínimos com origem r: um dicaminho Pw, com término w,para cada w que esteja ao alcance de r. Para certificar a minimalidade dos dicaminhos,o algoritmo também produz um potencial viável y tal que c(Pw) = yw− yr para cada w.O algoritmo foi proposto por L.R. Ford (em 1956).

FORD (G, c, r) (G, c) não tem dicircuitos de custo negativo1 para cada w em V (G) faça yw ←∞2 yr ← 0

3 enquanto o potencial y não é viável faça4 escolha vw em E(G) tal que yv + cvw < yw vw está tenso5 yw ← yv + cvw relaxação de vw6 p(w)← v

7 devolva y e p

Page 25: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

FEOFILOFF CAMINHOS DIRIGIDOS DE CUSTO MíNIMO 17

O vetor p representa caminhos com origem r: para cada w diferente de r, p(w) é o nóanterior a w em um dicaminho de r a w. Portanto, a sequência (w, p(w), p(p(w)), . . . , r)é o inverso de um dicaminho de r até w. Dizemos que p é um vetor de predecessores.O subdigrafo de G induzido pelo conjunto de arcos da forma (p(w), w) é uma árvoredivergente com raiz r (veja a seção 1.1).

A ideia do algoritmo é simples: relaxar os arcos tensos, em qualquer ordem, até quetodos fiquem relaxados. A operação de relaxação de um arco tenso (linha 5 do código)consiste em baixar o potencial da ponta final do arco. (Ao decidir se um arco está tenso,a linha 4 do código adota a convenção∞+ λ =∞ qualquer que seja λ.)

A relaxação de um arco tenso vw pode tornar tenso outro arco wz que estava relaxado.Com isso, pode ser necessário relaxar um mesmo arco várias vezes. Não é claro, por-tanto, que a execução do algoritmo termina depois de um número finito de iterações.

EXEMPLO 6: Aplique o algoritmo de Ford à rede que tem nós r s u v w e os arcos e custos indicadosna tabela. (Use o gabarito de posição dos nós para fazer uma figura.)

rs su rw wu rv vw2 −2 4 −3 3 −1

r s

v w u

Veja os valores de y e p no início de sucessivas iterações. A terceira coluna registra o arco que érelaxado no fim da iteração:

r s u v w

0 ∞ ∞ ∞ ∞0 2 ∞ ∞ ∞0 2 ∞ 3 ∞0 2 ∞ 3 40 2 1 3 40 2 0 3 40 2 0 3 20 2 −1 3 2

r s u v w

− − − − −− r − − −− r − r −− r − r r− r w r r− r s r r− r s r v− r w r v

rsrvrwwusuvwwu

No fim da última iteração, y é um potencial viável e p descreve dicaminhos mínimos a partir de r.

O primeiro passo da análise do algoritmo de Ford estabelece os invariantes do processoiterativo descrito nas linhas 3 a 6:

Proposição 2.4 Se a rede (G, c, r) não tem dicircuito de custo negativo então, no iníciode cada iteração,

(i1) cada arco do digrafo Gp está justo ou tenso,(i2) se ij é arco de G e existe dicaminho de j a i em Gp então ij não está tenso,(i3) para cada i em V ∗, existe um dicaminho de r a i em Gp,(i4) yi ≤ |V ∗|C para cada i em V ∗,

sendo Gp o subdigrafo de G induzido pelo conjunto de arcos da forma (p(j), j), V ∗ oconjunto dos nós i para os quais yi <∞, e C := max (|cij| : ij ∈ E(G)).

ESBOÇO DE PROVA: A relaxação de um arco tenso vw na linha 5 do código pode fazercom que outro arco iw, que era justo ou tenso, perca essa propriedade. Como a linha 6retira iw de Gp, o invariante (i1) é preservado.

Page 26: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

18 CAMINHOS DIRIGIDOS DE CUSTO MíNIMO FEOFILOFF

Para provar o invariante (i2), suponha que P é um dicaminho simples de j a i em Gp.Um raciocício análogo ao da prova da proposição 2.2, combinado com (i1), mostraentão que yj + c(P ) ≤ yi. Como P · (i, j) é um dicircuito e e c(P ) + cij ≥ 0, o arco ij nãoé tenso.

Para provar o invariante (i3), considere o arco vw que será relaxado durante a iteração.No início da iteração, seja P um dicaminho de r a v em Gp. Em virtude de (i2), w nãopertence a P . Logo, no fim da iteração, P · (v, w) será um caminho de r a w em Gp.

A proposição 2.4 é a base da prova da correção do algoritmo de Ford:

Teorema 2.5 Se a rede (G, c, r) não tem dicircuito de custo negativo, o algoritmo deFord termina depois de um número finito de iterações. Se, além disso, todos os nósestão ao alcance de r, o algoritmo produz um potencial viável y e um vetor de pre-decessores p tais que, para cada nó w, o dicaminho de r a w definido por p tem custoyw − yr.

ESBOÇO DA PROVA: Considere os invariantes (i1) a (i4) discutidos na proposição 2.4.No início de cada iteração temos yi ≤ nC para cada i em V ∗. Por outro lado, se Pi éo dicaminho simples de r a i em Gp então yr + c(Pi) ≤ yi por um raciocínio análogoao da prova da proposição 2.2. Como yr = 0 e Pi tem menos que n arcos, temosyi ≥ c(Pi) ≥ −nC. Em suma, −nC ≤ yi ≤ nC para cada i em V ∗.

Estamos supondo que ce ∈ Q para cada arco e. Portanto, existe ζ em Z+ tal que ζce ∈ Zpara cada e. Podemos supor então que todo número ce tem a forma α/ζ para algum αem Z. Assim, ao longo da execução do algoritmo, cada componente de y tem a formaβ/ζ , com β em Z, e cada iteração subtrai pelo menos 1/ζ de yw. Como−nC ≤ yw ≤ nC,cada nó da rede pode fazer o papel dew na linha 6 no máximo 2Cnζ vezes. Como y temn componentes, o número de iterações não passa de 2Cn2ζ . Isso mostra, em particular,que a execução do algoritmo termina depois de um número finito de iterações.

Quando a execução do algoritmo termina, todos os arcos estão relaxados, ou seja, opotencial y é viável. Em particular, não existe arco vw tal que yv < ∞ mas yw = ∞.Como todos os nós estão ao alcance de r por hipótese, temos yw < ∞ para todo w, ouseja, V ∗ = V (G). O invariante (i3) garante que, para cada w, há um dicaminho Pw de raw emGp. O invariante (i1) garante que c(Pw) ≤ yw−yr. Por outro lado, c(Pw) ≥ yw−yrpela proposição 2.2, pois o potencial y é viável. Assim, c(Pw) = yw − yr.

A prova do teorema mostra que o algoritmo executa no máximo 2Cnζ iterações e por-tanto é pseudopolinomial. A próxima seção introduz uma variante do algoritmo queorganiza a ordem em que os arcos são relaxados, o que torna o algoritmo fortementepolinomial.

Exercícios

2.11 Complete a prova da proposição 2.4. Deduza de (i2) e (i3) que yr = 0 no início de cada iteração.

2.12 Complete a prova do teorema 2.5.

Page 27: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

FEOFILOFF CAMINHOS DIRIGIDOS DE CUSTO MíNIMO 19

2.13 Considere uma instância do problema 2.1 em que os custos são não-negativos e todos os nós estãoao alcance de r. Deduza do teorema 2.5 que essa instância tem solução.

2.14 Considere uma instância do problema 2.1 em que o digrafo é acíclico e todos os nós estão aoalcance de r. Deduza do teorema 2.5 que essa instância tem solução.

2.15 Árvores. Aplique o algoritmo de Ford a uma rede (G, c, r) em queG é uma árvore divergente (vejaa seção 1.1). Aplique o algoritmo de Ford a uma rede (G, c, r) em queG é uma árvore não-dirigida.

2.16 Dicircuitos negativos versus potencial. Conforme o exercício 2.10, se uma rede tem um potencialviável então não tem dicircuito de custo negativo. Use o teorema 2.5 para provar a recíproca.

2.17 Submeta ao algoritmo de Ford uma rede sem dicircuitos de custo negativo em que nem todos osnós estão ao alcance de r. Como interpretar o resultado do algoritmo?

2.18 Potencial finito. Mostre que na linha 1 do algoritmo FORD o ∞ pode ser substituído pelo nú-mero nC, onde C := 1 + max (|ce| : e ∈ E(G)). (Dica: Qualquer dicaminho simples na rede temcusto≤ (n−1)C < nC. Se essa substituição for feita, será preciso adotar a convenção nC+λ = nCqualquer que seja λ.)

2.19 Número de iterações sob custos inteiros. Seja (G, c, r) uma rede sem dicircuitos de custo negativoem que todas as componentes de c são inteiras. Seja C := max (|ce| : e ∈ E(G)). Mostre que aexecução o algoritmo de Ford termina em no máximo 2Cn2 iterações. [CCPS 2.27]

2.4 Algoritmo de Ford-Bellman

Seja S := (a1, a2, a3, . . . , aL) uma sequência de arcos em que cada arco do digrafoaparece pelo menos uma vez. Imagine executar a parte central do algoritmo de Fordexaminando os arcos na ordem dada por S:

para j = 1, . . . , L façase aj está tenso

então relaxe aj

Dizemos então que S é a sequência de varredura usada pelo algoritmo. Que condiçõesuma sequência de varredura deve satisfazer para que esse processo relaxe todos osarcos do digrafo?

Para discutir essa questão, é preciso introduzir o seguinte conceito: um dicaminhoestá imerso na sequência de varredura S se tiver origem r e a sequência de seus arcosfor uma subsequência de S. (Suponha, por exemplo, que S = (a, c, d, a, b, d, e, c, b, a,d, b). Um dicaminho com origem r e sequência de arcos (c, a, d, e, b) está imerso em S.Já um dicaminho com origem r e sequência de arcos (c, e, d, a) não está imerso em S.)

Proposição 2.6 Depois que a sequência S tiver sido processada, tem-se yv ≤ c(P ) paracada nó v e para todo dicaminho P imerso em S que termina em v.

PROVA: Seja (v0, e1, v1, e2, v2, . . . , ek, vk) o dicaminho em discussão. Imediatamentedepois da primeira ocorrência de e1 em S temos yv1 ≤ yr + ce1 = ce1 pois yr = 0.Desse momento em diante, a desigualdade yv1 ≤ ce1 continua valendo pois o valor deyv1 não aumenta. Depois da primeira ocorrência de e2 em S subsequente à primeiraocorrência de e1, temos yv2 ≤ yv1 + ce2 ≤ ce1 + ce2 . E assim por diante. Depois da

Page 28: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

20 CAMINHOS DIRIGIDOS DE CUSTO MíNIMO FEOFILOFF

primeira ocorrência de ek em S subsequente às ocorrências de e1, e2, . . . , ek−1, temosyvk ≤ ce1 + · · ·+ cek = c(P ).

Digamos que uma sequência de varredura S é boa se todo dicaminho simples comorigem r estiver imerso em S. Como todo dicaminho mínimo é simples, ao final doprocessamento de uma sequência boa teremos yv ≤ c(P ) para todo dicaminho mí-nimo P de r a v. Por outro lado, existe um dicaminho de r a v de custo yv (veja aproposição 2.4). Logo, o vetor y representa os custos de todos os dicaminhos mínimoscom origem r (a menos, é claro, que a rede tenha um dicircuito de custo negativo).Segue daí que a execução do algoritmo termina assim que uma sequência boa de arcosfor examinada.

Um tipo natural de sequência de varredura boa para uma rede com n nós é o queresulta da concatenação de sequências S1, S2, . . . , Sn−1 sendo cada Si uma permutação4

do conjunto de arcos da rede. Essa ideia leva ao algoritmo proposto por R.E. Bellmanem 1958:

FORDBELLMAN (G, c, r)

1 para cada w em V (G) faça yw ←∞2 yr ← 0

3 repita |V (G)| − 1 vezes4 para cada arco vw em E(G) faça5 se yv + cvw < yw vw está tenso6 então yw ← yv + cvw relaxação de vw7 p(w)← v

8 devolva y e p

No fim da execução do algoritmo, se o potencial y é viável então p define dicaminhosmínimos de r a cada um dos demais nós e yw é o custo do dicaminho que termina emw;senão, a rede tem um dicircuito de custo negativo.

Consumo de tempo. O algoritmo de Ford-Bellman5 executa no máximo nm iterações.Como cada iteração consome tempo O(1), o algoritmo todo consome

O(nm)

unidades de tempo. Portanto, o algoritmo de Ford-Bellman é fortemente polinomial.Não se conhece uma versão do algoritmo de Ford que seja assintoticamente mais rá-pida. Para redes com certas propriedade favoráveis, entretanto, há versões bem maisrápidas do algoritmo. Discutiremos isso nas próximas seções.

Exercícios

4 Uma permutação de um conjunto é uma sequência em que cada elemento do conjunto aparece umae uma só vez.

5 Teria sido mais correto escrever “algoritmo de Ford e Bellman”.

Page 29: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

FEOFILOFF CAMINHOS DIRIGIDOS DE CUSTO MíNIMO 21

2.20 Aplique o algoritmo de Ford-Bellman ao digrafo com nós r s t u v w e arcos rs st tu uv vw .Todos os arcos têm custo 1 e o nó inicial é r. Examine o conjunto de arcos sempre na ordem(vw, uv, tu, st, rs).

2.21 Prove a afirmação feita depois da prova da proposição 2.6: se a rede não tem dicircuitos de custonegativo e a sequência de varredura S é boa então o potencial y torna-se viável assim que oalgoritmo de Ford tiver examinado S.

2.22 No algoritmo de Ford-Bellman, não basta repetir o bloco de linha 4–7 até que y se “estabilize”?Discuta essa ideia.

2.23 Como interpretar o resultado (y, p) do algoritmo de Ford-Bellman no caso em que nem todos osnós da rede estão ao alcance de r?

2.24 Árvores. Escreva uma versão especializada de FORDBELLMAN para redes (G, c) em que G é umaárvore divergente. Escreva uma versão especializada de FORDBELLMAN para redes (G, c) em queG é uma árvore não-dirigida.

2.25 Aplique o algoritmo de Ford-Bellman à rede cujos nós são r a b f g h j k e cujos arcos e custossão dados pela tabela. [CCPS 2.21]

ra rk rb ad af bk bf dh fg fj gh gj jh kd kh kg kf2 7 5 8 4 3 2 5 3 7 4 3 3 2 9 6 1

2.5 Dicircuitos negativos

O algoritmo de Ford-Bellman pode ser adaptado para procurar dicircuitos negativos.Se a execução do algoritmo terminar com um potencial y não-viável, o vetor de prede-cessores p registra um dicircuito de custo negativo a partir de qualquer arco que nãoesteja relaxado.

Exercícios

2.26 Acrescente código ao algoritmo de Ford-Bellman para que ele devolva um dicircuito de custonegativo se tal existir.

2.6 Programas lineares

O teorema 2.5, que prova a finitude e correção do algoritmo de Ford, tem a seguinteconsequência:

Teorema 2.7 (min-max) Dados dois nós r e s de uma rede (G, c), se existe um dicami-nho mínimo de r a s então

minP

c(P ) = maxy

(ys − yr) ,

sendo minP tomado sobre todos os dicaminhos P de r a s e maxy tomado sobre todosos potenciais viáveis y.

Page 30: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

22 CAMINHOS DIRIGIDOS DE CUSTO MíNIMO FEOFILOFF

A determinação de um potencial viável y que maximize ys− yr é facilmente formuladacomo um programa linear: encontrar um vetor (yv : v ∈ V (G)) que

maximize ys − yrsob as restrições

yw − yv ≤ cvw para cada vw em E(G) .(1)

Esse programa linear pode ser escrito em termos da matriz de incidências A do digrafoe de um vetor (bv : v ∈ V (G)). A coluna vw de A tem um −1 na linha v, um +1 nalinha w, e 0 em todas as demais linhas. O vetor b é definido assim: br = −1, bs = +1, ebv = 0 para todo v diferente de r e de s. O pl (1) pode ser escrito assim:

maximize yb

sob as restriçõesyA ≤ c .

O dual desse programa linear consiste em encontrar um vetor (xe : e ∈ E(G)) que

minimize cx

sob as restriçõesAx = b e x ≥ 0 .

(Para verificar que esse é de fato o dual, tome qualquer solução viável y do primal,qualquer solução viável x do dual, e observe que a dedução yb = y(Ax) = (yA)x ≤ cxdo teorema fraco da dualidade envolve todas restrições dos dois pl’s.)

A linha de A que corresponde ao nó v tem um +1 na coluna de cada arco que entraem v, um −1 na coluna de cada arco que sai de v, e 0 em todas as demais colunas.Portanto, o pl pode ser reescrito assim: encontrar um vetor x que

minimize∑

(cexe : e ∈ E(G))

sob as restriçõesx+(r)− x−(r) = −1

x+(v)− x−(v) = 0 para cada v em V (G) r r, sx+(s)− x−(s) = +1

xe ≥ 0 para cada e em E(G)

(2)

sendo x+(v) a soma do que entra em v e x−(v) a soma do que sai de v, isto é, x+(v) :=∑(xuv : uv ∈ E(G)) e x−(v) :=

∑(xvw : vw ∈ E(G)). Esse pl é o dual de (1).

Que interessante! O pl (2) descreve o problema do dicaminho mínimo de r a s! Paratodo dicaminho simples P de r a s, o vetor característico x do conjunto de arcos de Pé uma solução viável do pl. Reciprocamente, toda solução viável x do pl que tenhacomponentes em 0, 1 representa um dicaminho simples de r a s.

As condições de folgas complementares para o par dual de programas lineares sãoas seguintes: para cada arco vw, xvw > 0 implica yw − yv = cvw. Essas condições

Page 31: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

FEOFILOFF CAMINHOS DIRIGIDOS DE CUSTO MíNIMO 23

equivalem à minimalidade de cx e à maximalidade de ys− yr. Em termos do problemados dicaminhos mínimos, isso corresponde à seguinte afirmação: todos os arcos dequalquer dicaminho mínimo de r a s são justos.

Exercícios

2.27 Prove o teorema min-max 2.7 a partir do teorema 2.5 e da proposição 2.2.

2.28 Mostre que a hipótese “existe um dicaminho mínimo de r a s” no teorema min-max 2.7 é equiva-lente à seguinte: “existe um dicaminho de r a s e existe um potencial viável”. Também é equiva-lente à seguinte: “existe um dicaminho de r a s mas não existe dicircuito de custo negativo.”

2.29 Dê um exemplo para mostrar que o pl (2) pode ter uma solução ótima x que não é vetor caracte-rístico de um dicaminho de r a s.

2.30 ? Prove que todo dicaminho mínimo de r a s descreve uma solução ótima do pl (2). (Dica:Para cada arco e, seja xe o número de ocorrências do arco e no dicaminho. Use o teorema min-max 2.7 para obter uma solução ótima do pl (1). Depois, aplique o teorema forte da dualidade daprogramação linear ao par de pl’s.)

2.31 Dual inviável ou ilimitado. Mostre que o pl (1) pode ser inviável. Mostre que o pl (1) pode serilimitado.

2.32 Primal inviável ou ilimitado. Mostre que o pl (2) pode ser inviável. Mostre que o pl (2) pode serilimitado.

2.7 Algoritmo especial para redes acíclicas

Um digrafo é acíclico se não tem dicircuitos dirigidos. Como se sabe, um digrafo é ací-clico se e somente se tem uma permutação topológica. Uma permutação v1, v2, . . . , vndos nós de um digrafo é topológica se i < j para cada arco vivj , isto é, se todos os arcosapontam da esquerda para a direita.

Quando restrito a redes acíclicas, o algoritmo de Ford-Bellman pode ser organizadode modo a examinar cada arco uma só vez: partindo de uma permutação topológicav1, v2, . . . , vn dos nós, examine os arcos que saem de v1, depois os que saem de v2, eassim por diante.

Como não tem dicircuitos, uma rede acíclica satisfaz uma das condições necessáriaspara que o problema 2.1 (dos dicaminhos mínimos) tenha solução. Para que a outracondição — todos os nós ao alcance do nó inicial r — esteja satisfeita é necessário (masnão suficiente) que tenhamos r = v1.

Digrafos acíclicos são conhecidos pela abreviatura DAG de directed acyclic graph. A ver-são do algoritmo de Ford-Bellman especializado em DAGs recebe uma permutaçãotopológica v1, v2, . . . , vn dos nós de uma rede acíclica e procura resolver o problemados dicaminhos mínimos a partir do nó inicial v1:

FORDBELLMANDAG (G, c, (v1, . . . , vn))

1 para cada w em V (G) faça yw ←∞2 yv1 ← 0

Page 32: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

24 CAMINHOS DIRIGIDOS DE CUSTO MíNIMO FEOFILOFF

3 para i← 1 até n− 1 faça4 para cada vw em ∂−(vi) faça5 se yv + cvw < yw6 então yw ← yv + cvw7 p(w)← v

8 devolva y e p

(Na linha 4, ∂−(vi) é o conjunto de todos os arcos que saem de vi.) A análise doalgoritmo usa a ideia de sequências de varredura boas da seção 2.4. Seja S a sequênciaem que o algoritmo examina os arcos. Essa sequência tem a seguinte propriedade: sei < j então todos os arcos em ∂−(vi) aparecem em S antes de todos os arcos em ∂−(vj).Portanto, todo dicaminho com origem r está imerso em S. De acordo com a proposi-ção 2.6, o potencial y fica viável tão logo o algoritmo termina de percorrer S.

Consumo de tempo. Como cada arco aparece apenas uma vez em S, o algoritmoconsome apenas O(m) unidades de tempo.

No fim da execução do algoritmo, p define dicaminhos mínimos de v1 a cada nó queesteja ao alcance de v1. Portanto, essa instância do problema 2.1 está resolvida se esomente se o algoritmo terminar com yw <∞ para todo w.

Exercícios

2.33 Permutação topológica. Prove que todo digrafo acíclico tem uma permutação topológica. Escrevaum algoritmo que receba um digrafo e devolva uma permutação topológica ou um dicircuito.O consumo de tempo do seu algorimo deve ser O(m). [CCPS 2.33]

2.34 Árvores divergentes. Escreva uma versão especial do algoritmo FORDBELLMANDAG para tratarde árvores divergentes.

2.35 Aplique o algoritmo FORDBELLMANDAG à rede acíclica (G, c, r) com V (G) = r, s, t, u, v eE(G)e c definidos abaixo. Adote a permutação topológica (r, s, t, u, v).

rs rt su st tv uv2 2 4 3 1 −4

2.36 Suponha que uma rede tem uma permutação topológica v1, v2, . . . , vn dos nós. Quero encontrardicaminhos mínimos a partir de um nó vh, com h > 1. Modifique o algoritmo FORDBELLMAN-DAG para resolver o problema.

2.37 Aplique o algoritmo FORDBELLMANDAG à rede do exercício 2.25. [CCPS 2.21]

2.38 ? Segmento de soma mínima. Dados números a1, . . . , an, queremos encontrar i e j, 1 ≤ i ≤ j ≤ n+1,tais que ai + · · ·+ aj−1 seja mínimo. Dê um algoritmo que resolva o problema em O(n) unidadesde tempo. [CCPS 2.34]

2.39 ? Escalonamento de tarefas. Suponha dadas tarefas t1, . . . , tk. A execução de cada tarefa ti exige umtempo pi. Para certos pares (i, j), a execução de ti deve preceder a execução de tj (ou seja, o pro-cessamento de tj só pode começar depois que o processamento de ti tiver terminado). Queremosplanejar a execução das tarefas de modo que as restrições de precedência sejam respeitadas e cadatarefa seja concluída tão cedo quanto possível (note que várias tarefas podem ser executadas aomesmo tempo). Reduza esse problema ao cálculo de um potencial viável máximo em um DAG.[CCPS 2.35]

Page 33: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

FEOFILOFF CAMINHOS DIRIGIDOS DE CUSTO MíNIMO 25

2.8 Algoritmo especial para custos não-negativos

Para redes sem arcos de custo negativo (e portanto sem dicircuitos de custo negativo)é possível acelerar o algoritmo de Ford-Bellman. Para fazer isso, é preciso examinar osnós numa determinada ordem, à maneira do que fizemos com redes acíclicas. Masa permutação dos nós não pode ser estabelecida de antemão nesse caso, devendoser calculada à medida que o algoritmo é executado: no começo de cada iteração, opróximo nó da permutação é um nó v que tem potencial mínimo dentre os nós queainda não foram examinados. Essa é a ideia do algoritmo que E.W. Dijkstra descobriuem 1959.

O algoritmo de Dijkstra recebe uma rede (G, c, r) com c ≥ 0 e produz uma função-predecessor p e um potencial viável y. Se todos os nós estiverem ao alcance de r, afunção p define um dicaminho Pv de r a v tal que c(Pv) = yv − yr.

DIJKSTRA (G, c, r) c ≥ 0

01 para cada w em V (G) faça yw ←∞02 yr ← 0

03 Q← V (G) r r04 enquanto Q 6= ∅ faça05 escolha v em Q tal que yv é mínimo06 Q← Qr v07 para cada vw em ∂−(v) faça08 se yv + cvw < yw vw está tenso09 então yw ← yv + cvw relaxação de vw10 p(w)← v

11 devolva p e y

Para provar que o algoritmo está correto, basta verificar que no início de cada iteraçãotemos (i1) yu ≤ yq para cada u em V (G) r Q e cada q em Q e (i2) para cada u emV (G) r Q, todos os arcos em ∂−(u) estão relaxados. Assim, no fim da execução doalgoritmo, todos os arcos estarão relaxados e portanto o potencial y terá a propriedadedesejada.

O algoritmo consome tempo O(m) + O(n2). O termo O(m) reflete o fato de que cadaarco é processado no máximo uma só vez. O termo O(n2) é uma delimitação do tempototal dispendido em todas as execuções de linha 05 (que escolhe v em Q). Portanto, oalgoritmo consome O(n2) unidades de tempo.

Exercícios

2.40 Mostre que o algoritmo de Dijkstra pode dar resultados errados se a rede tiver dicircuitos de custonegativo. [CCPS 2.36]

2.41 Prove os invariantes (i1) e (i2) do algoritmo de Dijkstra.

2.42 Prove que w ∈ Q sempre que o arco vw está tenso na linha 08.

2.43 Seja v0 = r e, para i = 1, 2, . . . , vn−1, seja vi o nó que o algoritmo de Dijkstra escolha na linha 05

Page 34: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

26 CAMINHOS DIRIGIDOS DE CUSTO MíNIMO FEOFILOFF

na i-ésima iteração. Agora considere a sequência S = (a1, a2, . . . , am) de arcos que o algoritmoexamina nas sucessivas passagens pela linha 07: primeiro todos os arcos que saem de v0, depoistodos os arcos que saem de v1, e assim por diante. Mostre que no fim da execução do algoritmotodos os dicaminhos mínimos que começam em r estão imersos em S.

2.44 Aplique o algoritmo de Dijkstra à rede do exercício 2.25. [CCPS 2.21]

2.45 Translação de custos. Suponha que a função-custo c de uma rede tem valores negativos. Eis umaideia simples para eliminar os custos negativos. Seja µ := min(ce : e ∈ E(G)) e subtraia µ docusto de cada arco. Agora todos os custos são não-negativos. Aplique o algoritmo de Dijkstrausando os novos custos. Os dicaminhos mínimos produzidos pelo algoritmo têm custo mínimoem relação à função c original? [AMO 5.21]

2.46 Redes não-dirigidas. Considere a variante do problema 2.1 que procura por caminhos não-dirigidosmínimos em grafos não-dirigidos com custos não-negativos nas arestas. Mostre como reduziresse problema ao problema 2.1. Qual a dificuldade de fazer a mesma coisa no caso de custosarbitrários? [CCPS 2.37]

2.9 Custos unitários e busca em largura

A versão especializada do algoritmo de Dijkstra para os caso em que c = 1 é particular-mente simples. O conjunto Q do algoritmo de Dijkstra pode ser inicializado com r etratado como uma fila.

BUSCAEMLARGURA (G, r)

01 para cada w em V (G) faça yw ←∞02 yr ← 0

03 Q← INICIALIZAFILA (r)

04 enquanto FILANÃOVAZIA (Q) faça05 v ← TIRADAFILA (Q)

06 para cada vw em ∂−(v) faça07 se yv + cvw < yw vw está tenso08 então yw ← yv + cvw relaxação de vw09 p(w)← v

10 PÕENAFILA (Q,w)

11 devolva p e y

Essa versão do algoritmo de Dijkstra é conhecida como busca em largura. Ela consomeO(m) unidades de tempo.

Exercícios

2.47 Árvores. Escreva uma versão especial de BUSCAEMLARGURA para árvores divergentes Escrevauma versão especial de BUSCAEMLARGURA para árvores não-dirigidas.

Page 35: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

FEOFILOFF CAMINHOS DIRIGIDOS DE CUSTO MíNIMO 27

2.10 Exercícios adicionais

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 dosdicaminhos 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 algoritmoassintoticamente 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. Comoresolver o problema? (Aplicação: Cada nó é uma moeda, como dólar, real, yen, etc., e o custo deum 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 seusarcos. 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, c′e e c′′e ,ambos em Q. O custo de um caminho P , não necessariamente dirigido, é

∑c′e +

∑c′′e , 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ção 1.1) e c umafunção-custo. Escreva um algoritmo que receba T , c, e um nó r e calcule, para cada nó v, umcaminho (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. Dequanto podemos diminuir o custo de um certo arco ij sem que os valores da função d se alterem?

Page 36: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

28 CAMINHOS DIRIGIDOS DE CUSTO MíNIMO FEOFILOFF

Page 37: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

Capítulo 3

Fluxo máximo e corte mínimo

O problema do fluxo máximo entre dois nós de uma rede com restrições de capacidadenos 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 arcodo digrafo. (Note que um fluxo não precisa ter valores inteiros, ainda que algumasaplicaçõ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 dosvalores de x nos arcos que entram em R:

x+(R) :=∑

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

(Já usamos essa notação na seção 2.6.) Analogamente, x−(R) é a soma dos valores de xnos arcos que saem de R:2

x−(R) :=∑

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

1 Eu deveria escrever “x(∂+(R))”, mas a abreviatura “x+(R)” é perfeitamente razoável.2 Para 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 tudoque sai é subtraído.

29

Page 38: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

30 FLUXO MÁXIMO E CORTE MíNIMO FEOFILOFF

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

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

−(R) .

PROVA: Queremos mostrar que∑

v∈R x+(v)−

∑v∈R x

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

Um arco ij que tem ambas as pontas em R contribui xij para o primeiro somatório exij 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álogomostra 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 esquerdoe para o primeiro termo do lado direito. Analogamente, um arco que sai deR contribuiapenas 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 doislados da igualdade.

Circulação

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

−(v) = 0para cada nó v. (Essa igualdade é conhecida como “conservação de fluxo em v”.)

Segue da proposição 3.1 que a “quantidade” de circulação atravessa um corte da “es-querda” para a “direita” é igual à “quantidade” que atravessa o corte da “direita” paraa “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íliade dicircuitos e xe é o número desses dicircuitos que contêm o arco e então x é umacirculação. Reciprocamente, toda circulação pode ser representada por uma família dedicircuitos:

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 que

∑(αi : Ci 3 e) =

xe para 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 dicircuitoC tal que xe > 0 para cada arco e de C. Calcule α := min (xe : e ∈ C). Para cada arcoe de C, subtraia α de xe. Depois dessa operação, x continua sendo uma circulação.Repita o processo até que x seja nulo.

Page 39: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

FEOFILOFF FLUXO MÁXIMO E CORTE MíNIMO 31

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 tenhaexcesso nulo em todos os nós distintos de r e s e excesso não-negativo em s. Maisprecisamente, 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 umconjunto R de nós separa r de s se r ∈ R e s ∈ R. Nas mesmas condições, dizemos que∂−(R) separa r de 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 fluxopode ser medida em qualquer desses cortes, em virtude da proposição 3.1:

Proposição 3.4 Para qualquer fluxo x de r a s e qualquer corte ∂−(R) entre r e s, tem-seint(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 é umafamília de dicaminhos simples de r a s e xe é o número desses dicaminhos que contêmo arco e então x é um fluxo de r a s de intensidade k. Reciprocamente, todo fluxo de ra 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 dicircuitosC1, . . . , Cj ,dicaminhos simples P1, . . . , Pk de r a s, e números positivos α1, . . . , αj, β1, . . . , βk taisque β1 + · · · + βk = int(x) e

∑(αi : Ci 3 e) +

∑(β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-ção 3.3.

Exercícios

3.1 Se x é um fluxo e R um conjunto de nós, é verdade que∑

(x+(v) : v ∈ R) = x+(R)?

3.2 Complete os detalhes da prova da proposição 3.3.

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

3 CCPS escreve “fx(s)” no lugar do meu “x+−(s)”. Eu acho minha notação melhor.

Page 40: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

32 FLUXO MÁXIMO E CORTE MíNIMO FEOFILOFF

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ções 3.4 e 3.5.

3.6 Por que podemos supor que j ≤ m na proposição 3.3? Por que podemos supor que j + k ≤ m naproposição 3.5?

3.2 O problema do fluxo máximo

Seja G um digrafo e u uma função que leva E(G) em Q+∪∞.4 Dizemos que u é umafunção-capacidade5 e a rede (G, u) é capacitada. O valor que a função-capacidadeatribui a um arco é a capacidade do arco.

Dizemos que um fluxo x numa rede capacitada (G, u) respeita as capacidades dos arcosse x ≤ u, ou seja, se xe ≤ ue para cada arco e.

Problema 3.6 (fluxo máximo) Dados nós r e s de uma rede capacitada (G, u), encon-trar um fluxo de r a s que respeite u e tenha intensidade máxima.

Dizemos que r é o nó inicial da rede e s é o nó final. Podemos incorporar esses nósà definição da rede e dizer que (G, u, r, s) é uma rede de fluxo. Para simplificar adiscussão do problema, adotamos algumas abreviaturas. Dizemos que um fluxo éviável se vai de r a s e respeita u. Dizemos também “fluxo viável máximo” no lugarde “fluxo viável de intensidade máxima”. Podemos até mesmo dizer “fluxo máximo”,subentendendo o “viável”.

Todas as instâncias do problema têm um fluxo viável (pois o fluxo nulo é viável). Masalgumas instâncias do problema têm fluxos viáveis de intensidade arbitrariamentegrande e portanto não têm fluxo máximo.

Exercícios

3.7 Seja x um fluxo máximo numa rede (G, u, r, s). É verdade que x+(r) e x−(s) são nulos?

3.8 Mostre que toda instância do problema 3.6 em que as capacidades são finitas tem um fluxo má-ximo.

3.9 Fluxo ilimitado. Mostre que uma instância do problema do fluxo máximo não tem solução se esomente se todos os arcos de algum dicaminho de r a s têm capacidade∞. [CCPS 3.3]

3.10 ? Árvores divergentes. Calcule um fluxo máximo numa rede de fluxo (G, u, r, s) em que G é umaárvore divergente (veja a seção 1.1).

3.11 Capacidades infinitas. Digamos que I é o conjunto de arcos com capacidade infinita em uma redede fluxo (G, u, r, s). Suponha que não existe dicaminho de r a s cujos arcos estão todos em I .Mostre que, do ponto de vista do problema do fluxo máximo, podemos substituir a capacidadede cada arco em I pelo número

∑(ue : e ∈ E(G)− I). [AMO 6.23]

4 Não haveria grande prejuízo se disséssemos que u leva E(G) em Q+.5 A letra “u” é a inicial de upper bound.

Page 41: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

FEOFILOFF FLUXO MÁXIMO E CORTE MíNIMO 33

3.12 ? Circulação máxima. Mostre que o problema do fluxo máximo equivale ao seguinte: Dada umarede capacitada (G, u, r, s) e um arco sr de capacidade∞, encontrar uma circulação x que respeiteu e maximize xsr.

3.13 No problema do fluxo máximo, suponha que um nó v distinto de r e de s tem grau de entradanulo. Podemos remover esse nó sem afetar a intensidade de um fluxo máximo? E se v tem graude saída nulo? [AMO 6.26]

3.14 Dicaminhos disjuntos. Sejam r e s dois nós de um digrafo. Uma coleção de dicaminhos de r a sé disjunta nos arcos se cada arco do digrafo pertence a no máximo um dos dicaminhos. Mostreque o problema de encontrar uma coleção disjunta máxima de dicaminhos simples de r a s é umainstância do problema 3.6.

3.3 Condições de otimalidade

Seja G um digrafo e (G, u, r, s) uma rede de fluxo. Para qualquer conjunto R de nós,denotamos por u−(R) a soma das capacidades dos arcos que saem de R:

u−(R) :=∑

(ue : e ∈ ∂−(R)) .

Esse número é a capacidade do corte ∂−(R). É conveniente ter uma notação especialpara a capacidade de um corte: se C := ∂−(R) então

cap(C) := u−(R) .

EXEMPLO 1: Seja G o digrafo com nós r v w s descrito abaixo por sua matriz de adjacências. (Façauma figura.) À direita, uma função-capacidade u.

r v w s

r − 1 1 −v − − 1 1w − − − 1s − − − −

rv rw vw vs ws

7 9 4 9 7

Os conjuntos R1 = r, v, R2 = r, w e R3 = r, v, w separam r de s e têm capacidades 22, 14 e16 respectivamente.

Segue imediatamente da proposição 3.4 que a capacidade de qualquer corte entre r e slimita a intensidade de qualquer fluxo viável:

Corolário 3.7 (fluxo versus corte) Se x é um fluxo viável e C é um corte que separa rde s então int(x) ≤ cap(C).

Portanto, para mostrar que um fluxo viável é máximo, basta exibir um corte que se-para r e s e tem capacidade igual à intensidade do fluxo. (É importante observar queo corolário é elementar, ou seja, segue imediatamente das definições, sem qualquerargumentação sofisticada.)

Page 42: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

34 FLUXO MÁXIMO E CORTE MíNIMO FEOFILOFF

Corte mínimo

Um corte C entre r e s tem capacidade mínima se cap(C) ≤ cap(C ′) para qualqueroutro corte C ′ entre r e s. Para abreviar, dizemos “corte (r, s)-mínimo” no lugar de“corte de capacidade mínima entre r e s”.

O problema do corte mínimo consiste em encontrar um corte (r, s)-mínimo numa rede(G, u, r, s). Para mostrar que um corte entre r e s é mínimo, basta exibir um fluxo viávelque tem intensidade igual à capacidade do corte.

Exercícios

3.15 ? Prove o corolário 3.7.

3.16 Suponha dada uma rede capacitada e um número positivo α. Se multiplicarmos a capacidade decada arco por α, é verdade que todo corte mínimo continua sendo mínimo? Se somarmos α àcapacidade de cada arco, é verdade que todo corte mínimo continua sendo mínimo? [AMO 6.34]

3.17 Árvores divergentes. Calcule um corte mínimo numa rede de fluxo (G, u, r, s) em que G é umaárvore divergente (veja a seção 1.1).

3.18 Submodularidade. SejamA eB dois conjuntos de nós numa rede capacitada (G, u). Prove a seguintepropriedade submodular: u−(A ∪ B) + u−(A ∩ B) ≤ u−(A) + u−(B). (Dica: Mostre antes que∂−(A ∪B) ∪ ∂−(A ∩B) ⊆ ∂−(A) ∪ ∂−(B) e ∂−(A ∪B) ∩ ∂−(A ∩B) = ∂−(A) ∩ ∂−(B).)

3.19 Sejam ∂−(A) e ∂−(B) dois cortes mínimos entre r de s numa rede de fluxo. Prove que ∂−(A ∩ B)e ∂−(A ∪B) também são cortes mínimos entre r de s. (Dica: Veja o exercício 3.18.) [CCPS 3.7]

3.4 Teorema do fluxo máximo e corte mínimo

A recíproca da observação que fizemos depois do corolário 3.7 é, surpreendentemente,verdadeira. Esse fato foi descoberto por Ford e Fulkerson [FF56] e por Kotzig [Kot56].

Teorema 3.8 (MFMC) Em qualquer rede de fluxo (G, u, r, s), se existe um fluxo viávelmáximo então

maxx

int(x) = minC

cap(C) ,

sendo maxx tomado sobre todos os fluxos viáveis x e minC tomado sobre todos os cortesC que separam r de s.

Esse teorema é conhecido pelas iniciais MFMC de “Max-Flow Min-Cut”. A essência doteorema pode ser resumida assim: a menos que não exista fluxo viável máximo, existeum fluxo viável cuja intensidade é igual à capacidade de algum corte entre r e s.

A prova do teorema depende da ferramenta que passamos a descrever. Dado um fluxoviável x um caminho de incremento é qualquer caminho (simples ou não) cujos arcosdiretos não estão cheios de fluxo e cujos arcos inversos não estão vazios de fluxo, ouseja, qualquer caminho P tal que

xe < ue para cada arco direto e de P exe > 0 para cada inverso e de P .

Page 43: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

FEOFILOFF FLUXO MÁXIMO E CORTE MíNIMO 35

Um caminho de incremento que vai r a s é um caminho de aumento (= augmentingpath). A largura (= width) de um caminho de aumento P é o maior número ε tal quexe − ε ≥ 0 para cada arco inverso e de P e xe + ε ≤ ue para cada arco direto e de P .

Calculada a largura ε de um caminho de aumento P , podemos executar a seguinteoperação de envio de ε unidades de fluxo ao longo de P :

para cada arco direto e de P , some ε a xe;para cada arco inverso e de P , subtraia ε de xe.

Essa operação produz um novo fluxo viável que tem intensidade int(x) + ε. Comoε > 0, a intensidade do novo fluxo é maior que a de x. Estamos preparados agora paraempreender a prova do teorema MFMC.

PROVA DO TEOREMA: Seja x um fluxo máximo. Queremos encontrar um corte entre re s que tenha capacidade igual a int(x).

Seja R o conjunto de todos os nós que são término de algum caminho de incrementoque começa em r. Suponha por um instante que s ∈ R e seja P um caminho deincremento que começa em r e termina em s. Seja ε a largura de P . O envio de εunidades de fluxo ao longo de P produz um novo fluxo viável que tem intensidademaior que a de x. Mas isso é contraditório, pois x tem intensidade máxima por hipó-tese. Concluímos assim que s /∈ R e portanto R separa r de s.

A definição de R garante que xe = ue para cada e em ∂−(R) e xe = 0 para cada e em∂+(R), donde

x−(R) = u−(R) e x+(R) = 0 .

A proposição 3.4 permite dizer então que int(x) ≡ x−(R) − x+(R) = u−(R) ≡cap(∂−(R)), como queríamos demonstrar.

EXEMPLO 2: A tabela abaixo descreve uma fluxo viável x na rede (G, u, r, s) do exemplo 1.

rv rw vw vs ws

u 7 9 4 9 7x 7 5 2 5 7

A sequência de nós (r, w, v, s) define um caminho de aumento. A largura desse caminho é 2.Calcule o fluxo x′ que resulta do envio de 2 unidades de fluxo ao longo do caminho de aumento.Em seguida, calcule um corte mínimo entre r e s.

A prova do teorema MFMC (teorema 3.8), combinada com o corolário 3.7, produz aseguinte manifestação da condição de folgas complementares da programação linear:

Corolário 3.9 (folgas complementares) Seja x um fluxo viável e R a margem negativade um corte entre r e s. O fluxo x é máximo e o corte ∂−(R) é mínimo se e somente sexe = ue para cada e em ∂−(R) e xe = 0 para cada e em ∂+(R).

EXEMPLO 3: A tabela abaixo descreve uma fluxo viável x na rede (G, u, r, s) do exemplo 1.

rv rw vw vs ws

u 7 9 4 9 7x 7 7 0 7 7

Page 44: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

36 FLUXO MÁXIMO E CORTE MíNIMO FEOFILOFF

O conjunto R = r, w é a margem negativa de um corte de capacidade 14. Temos int(x) =cap(∂−(R)). Observe que x−(R) = u−(R) e x+(R) = 0.

Fluxos inteiros. Um fluxo x é inteiro se xe ∈ Z+ ∪ ∞ para todo arco e. Analo-gamente, uma função-capacidade u é inteira se ue ∈ Z+ para todo e. Surpreendente-mente, basta que a função-capacidade seja inteira para que exista um fluxo máximointeiro:

Teorema 3.10 (MFMC inteiro) Em qualquer rede de fluxo (G, u, r, s), se a função-capacidade u é inteira e existe um fluxo viável máximo então existe um fluxo viávelmáximo inteiro.

PROVA: Refaça a prova do teorema MFMC (teorema 3.8) começando com algum fluxoviável inteiro. (por exemplo, o fluxo nulo). A largura ε de qualquer caminho de au-mento será inteira. Portanto, o envio de ε unidades de fluxo ao longo de um caminhode aumento produzirá um novo fluxo inteiro.

Exercícios

3.20 Seja ε a largura de um caminho de aumento P para um fluxo viável x numa rede (G, u, r, s).Prove que o envio de ε unidades de fluxo ao longo de P produz um fluxo viável de intensidadeint(x) + ε.

3.21 ? A figura mostra uma rede de fluxo (G, u, r, s). Os rótulos “u, x” representam a função-capacidade e um fluxo viável. Encontre um fluxo máximo e um corte mínimo entre r e s.[CCPS fig.3.1]

3.22 Curiosidade. Sejam r e s dois nós de uma rede de fluxo (G, u, r, s). Problema: encontrar umconjunto R de nós que separe r de s e minimize u−(R)− u+(R). [CCPS 3.9]

3.23 Seja x um fluxo viável e P um caminho de aumento de largura máxima. Seja ε a largura de P . Sejax′ o fluxo resultante do envio de ε unidades de fluxo ao longo de P . Um caminho de aumentopara x′ pode ter largura maior que ε? [CCPS 3.10]

3.24 Prove condições necessárias para que uma rede (G, u, r, s, k) tenha um fluxo viável x de intensi-dade ≥ k.

3.25 Dicaminhos disjuntos. Considere o problema de encontrar uma coleção disjunta máxima de dica-minhos simples de r a s num digrafo (veja o exercício 3.14). Mostre que uma tal coleção máximatem o mesmo tamanho que um corte ∂−(R) entre r a s com número mínimo de arcos. [AMO 6.45]

3.26 Discuta o seguinte problema: dada uma rede de fluxo (G, u, r, s) e um número inteiro f , encontrarum fluxo viável que tenha intensidade f .

3.27 Fluxo não inteiro. Seja x um fluxo viável máximo numa rede de fluxo com capacidades inteiras.Sugira um algoritmo que converta x em um fluxo viável x′ que tenha a mesma intensidade que xe seja inteiro. (Sugestão: Envie fluxo ao longo de dicircuitos.) Qual o consumo de tempo do seualgoritmo? [AMO 6.40]

Page 45: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

FEOFILOFF FLUXO MÁXIMO E CORTE MíNIMO 37

3.28 Seja x um fluxo máximo numa rede capacitada (G, u, r, s). Quais das seguinte afirmações sãoverdadeiras? A. Se a capacidade de cada arco é um múltiplo de α, então xe é múltiplo de α paracada arco e. B. Se somarmos α à capacidade de cada arco, estaremos somando um múltiplo de αà intensidade do fluxo máximo. [AMO 7.9]

3.5 Algoritmo de Ford e Fulkerson

A prova do teorema MFMC (teorema 3.8) sugere o seguinte algoritmo iterativo paracalcular um fluxo máximo e um corte mínimo. Esse é o algoritmo de Ford-Fulkerson,6

ou algoritmo dos caminhos de aumento:

FORDFULKERSON (G, u, r, s)

01 x← 0

02 repita03 R← CAMINHOSINCR (G, u, r, x)

04 se s /∈ R05 então devolva x e R e pare problema resolvido06 P ← CAMINHOAUM (G, u, r, x)

07 ε1 ← min (ue − xe : e ∈ E(P ))

08 ε2 ← min (xe : e ∈ E(P ))

09 ε← min (ε1, ε2)

10 se ε =∞11 então pare problema ilimitado12 x← ENVIAFLUXO (G, x, P, ε)

A rotina CAMINHOSINCR (G, u, r, x) devolve o conjunto dos términos de todos os cami-nhos de incremento para x que começam em r. A rotina CAMINHOAUM (G, u, r, x) pro-duz um caminho de aumento para x (supondo que um tal caminho existe). A expressãoE(P ) denota o conjunto dos arcos diretos do caminho P e E(P ) denota o conjunto dosarcos inversos de P .

Na linha 11, o algoritmo constata que o problema é ilimitado, conforme o exercício 3.9.Na linha 12, a rotina ENVIAFLUXO (G, x, P, ε) envia ε unidades de fluxo ao longo docaminho P e devolve o fluxo resultante.

Número de iterações. Se ue < ∞ para todo arco e, e portanto ue ∈ Q+ para todo e,é possível mostrar (veja o exercício 3.35) que a execução do algoritmo termina depoisde um número finito de iterações. O número de iterações pode depender dos valoresde u, e portanto algoritmo é pseudopolinomial. (Se u tivesse valores irracionais, onúmero de iterações poderia ser infinito ou o algoritmo poderia produzir resultadoserrados.)

6 Teria sido mais correto escrever “algoritmo de Ford e Fulkerson”.

Page 46: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

38 FLUXO MÁXIMO E CORTE MíNIMO FEOFILOFF

Exercícios

3.29 Descreva a rotina ENVIAFLUXO em código.

3.30 Árvores divergentes. Aplique o algoritmo de Ford-Fulkerson a uma rede de fluxo (G, u, r, s) em queG é uma árvore divergente (veja a seção 1.1).

3.31 Encontre um fluxo máximo e um corte mínimo entre r e s na rede da figura. [CCPS 3.2]

3.32 A matriz abaixo dá as capacidades dos arcos de uma rede de fluxo. (Faça uma boa figura). En-contre, iterativamente, um fluxo viável máximo. Exiba o fluxo no início de cada iteração. Mostreum corte entre r e s que tenha capacidade mínima. [AMO 6.14]

r a b c d e sr − 4 3 − − − −a 4 − − 2 3 − −b 3 − − 2 − − −c − 2 2 − − 5 −d − 3 − − − 4 −e − − − 5 4 − 8s − − − − − 8 −

3.33 Seja G o digrafo definido pela matriz de adjacências abaixo. (Faça uma boa figura). Encontre umacoleção disjunta máxima de dicaminhos simples de r a s. Faça uma lista de todos os cortes entrer e s. [AMO 6.15]

r t u v w s

r − 1 1 1 − −t − − 1 − − −u − − − 1 − 1v − − − − 1 1w − − − − − 1s − − − − − −

3.34 Considere a variante do algoritmo de Ford-Fulkerson que usa apenas caminhos de aumento semarcos inversos. Essa variante do algoritmo é capaz de encontrar um fluxo máximo?

3.35 ? Capacidades inteiras. Aplique o algoritmo de Ford-Fulkerson a uma rede (G, u, r, s) em que afunção-capacidade u é inteira. Supondo que um fluxo máximo tem intensidade K < ∞, mostreque o algoritmo executa no máximoK iterações. Deduza daí que se u for racional então o númerode iterações é finito.

3.6 Versão Edmonds-Karp do algoritmo

O algoritmo de Ford-Fulkerson não estabelece um critério para escolher um caminhode aumento quando há mais de um. Com isso, o algoritmo pode vir a executar um nú-

Page 47: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

FEOFILOFF FLUXO MÁXIMO E CORTE MíNIMO 39

mero muito grande de iterações. Uma ideia natural e intuitiva é usar apenas caminhosde aumento de comprimento (número de arcos) mínimo. Dinits [Din70] e Edmondse Karp [EK72] mostraram (1972) que esse aperfeiçoamento faz com que o algoritmoexecute no máximo nm iterações, sendo n o número de nós e m o número de arcos dodigrafo.

Teorema 3.11 (Edmonds-Karp) Se cada iteração do algoritmo de Ford-Fulkerson usarum caminho de aumento de comprimento mínimo, o algoritmo não fará mais que nmiterações.

ESBOÇO DA PROVA: No início de cada iteração temos um fluxo viável x. Digamosque um caminho na rede é bom se for um caminho de aumento de comprimentomínimo. Digamos que um arco é bom se pertence a algum caminho bom. Digamosque o comprimento da rede é o comprimento de um caminho bom.

Se o comprimento da rede não muda de uma iteração para a seguinte, o conjunto dosarcos bons encolhe, ou seja, torna-se um subconjunto próprio do anterior. Segue daíque no máximo m iterações consecutivas podem ocorrer enquanto o comprimento darede permanecer constante.

Por outro lado, o comprimento da rede nunca diminui de uma iteração para a seguinte.Como o comprimento da rede não pode aumentar mais que n vezes e há no máximom iterações entre dois aumentos consecutivos do comprimento, o número total deiterações não passa de nm.

Para procurar caminhos de aumento de comprimento mínimo, basta implementaras rotinas CAMINHOSINCR e CAMINHOAUM conjuntamente usando uma adaptaçãoda busca em largura (seção 2.9, página 26). Essa adaptação exige atenção pois deveprocurar por caminhos não-dirigidos, enquanto a versão original procura dicaminhos.Podemos usar um digrafo auxiliar (V (G), E ′) definido assim: vw ∈ E ′ se e somente sevw ∈ E(G) e xvw < uvw ou wv ∈ E(G) e xwv > 0. Os dicaminhos nesse digrafo auxiliarcorrespondem aos caminhos de incremento no digrafo original.

Cada iteração desse algoritmo consome tempo O(m). Como o número de iterações nãopassa de nm, o algoritmo todo consome

O(nm2)

unidades de tempo. Como essa delimitação não depende das capacidades u, podemosdizer que o algoritmo é fortemente polinomial.

Exercícios

3.36 Complete a prova do teorema 3.11.

3.37 Escreva, em código, a versão Edmonds-Karp do algoritmo de Ford-Fulkerson.

3.38 Fluxo máximo em grafos. Discuta a especialização do algoritmo de Ford-Fulkerson, versãoEdmonds-Karp, para grafos não-dirigidos.

Page 48: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

40 FLUXO MÁXIMO E CORTE MíNIMO FEOFILOFF

3.39 Caminho de aumento com número mínimo de arcos inversos. Suponha que algoritmo de Ford-Fulkerson sempre escolhe um caminho de aumento que tem o menor número possível de ar-cos inversos. Prove que o número de aumentações de fluxo (e portanto o número de iterações)será O(m). Dê um algoritmo que encontre um caminho de aumento desse tipo em O(m) unidadede tempo. [CCPS 3.15]

3.40 Suponha dado um fluxo máximo em uma rede de fluxo. Mostre como é possível encontrar umcorte mínimo entre r e s em tempo O(m). Agora suponha dado um corte mínimo entre r e s. Essecorte pode ser usado para obter um fluxo máximo rapidamente (ou seja, em tempo menor que onecessário para resolver o problema sem qualquer informação adicional)? [AMO 6.28]

3.41 Corte mínimo com número mínimo de arcos. Queremos determinar um corte mínimo que tenha omenor número possível de arcos em uma rede de fluxo (G, u, r, s). Para cada arco vw, seja u′e :=mue + 1. Mostre que um corte mínimo na rede (G, u′, r, s) resolve o problema. [AMO 7.27]

3.42 Capacidades nos nós. Suponha que em nossa rede (G, u, r, s) cada nó v distinto de r e de s temuma capacidade não-negativa av que limita a quantidade de fluxo que pode passar por v. Comoresolver o problema de determinar um fluxo máximo que respeite as capacidades dos nós e ascapacidades dos arcos? Transforme esse problema em um problema padrão de fluxo máximo(que só tem capacidades nos arcos). Do ponto de vista da complexidade de pior caso, o problemacom capacidades nos nós é mais difícil que o problema padrão? [AMO 6.25]

3.7 Programas lineares

O problema do fluxo máximo (problema 3.6) para uma rede de fluxo (G, u, r, s) podeser 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, sxe ≤ 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ção 2.5,página 22.)

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 respeiteu e maximize xsr. (Veja o exercício 3.12.) Essa forma do problema pode ser apresentadacomo um programa linear: encontrar um vetor x que

maximize xsr sob as restriçõesx+

−(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) talque csr = 1 e ce = 0 para todos os demais arcos. O pl pode então ser escrito assim:maximize cx sujeito a

Page 49: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

FEOFILOFF FLUXO MÁXIMO E CORTE MíNIMO 41

Ax = bIx ≤ ux ≥ 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 ≥ cz ≥ 0 .

(4)

Quando escrito por extenso, esse programa linear fica assim:

minimize∑

(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 é umasoluçã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∑

(wP : P ∈ P) sujeito a∑(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∑

(zeue : e ∈ E) sujeito a∑(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 quecada dicaminho de r a s esteja “coberto”, isto é, que a soma dos pesos nos arcos do

Page 50: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

42 FLUXO MÁXIMO E CORTE MíNIMO FEOFILOFF

dicaminho seja pelo menos 1). Se z é o vetor característico de um corte ∂−(R) entre re 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 ovalor uz da solução viável (y, z) é igual à capacidade do corte. Mostre ainda que qualquer cortemínimo entre r e s define uma solução ótima do pl (5). (Sugestão: use o teorema 3.8 para obteruma 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 ≤ ue deveria ser ignorada, fazendo desaparecer acomponente ze de z. Reescreva o pl de forma correta. Como fica o dual? Escreva as condições defolgas 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 ua a 0causa a maior redução possível na intensidade do fluxo máximo. Prove ou desprove cada umadas afirmação a seguir: A. Se a é vital então ua é máximo. B. Se x é um fluxo máximo e a é vitalentão xa é máximo. C. Se x é um fluxo máximo e a é vital então existe um corte de capacidademínima tal que xa ≥ xe para todo arco e no corte. D. Se a é vital então a pertence a algum cortede 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 aredução de ua a 0 causa a menor redução possível na intensidade do fluxo máximo. Prove oudesprove 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 aum 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 parordenado 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úmerok > 0 foi somado à capacidade de um determinado arco e. Mostre como encontrar um novofluxo 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)?[AMO 6.35]

Page 51: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

Capítulo 4

Aplicações de fluxo máximo e cortemínimo

Este capítulo mostra algumas aplicações de fluxo máximo e corte mínimo (capítuo 3).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 numdigrafo. A parte mais interessante desses problemas são os certificados de inexistênciade 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 defluxo (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 (teorema 3.8) mostra que uma instância desseproblema não tem solução somente se houver um impedimento óbvio, na forma deum 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, eo conjunto de todos os pares (p, q) tais que o trabalhador p está habilitado a ocupar oposto q e o posto q está disposto a contratar p. Queremos encontrar um “casamento” dek trabalhadores com k postos de trabalho. (É claro que cada trabalhador deve ocuparapenas um posto e cada posto deve ser ocupado por apenas um trabalhador.) Em quecondições o problema tem solução?

Um emparelhamento (= matching) num grafo não-dirigido bipartido é um conjunto Mde 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.

43

Page 52: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

44 APLICAÇÕES DE FLUXO MÁXIMO E CORTE MíNIMO FEOFILOFF

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 oseguinte 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 quek nó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 tememparelhamento com k ou mais arestas. D. Konig descobriu (1931) que a recíproca daproposição é verdadeira:

Teorema 4.2 (Konig) Num grafo não-dirigido bipartido, se toda cobertura tem k oumais 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 redecapacitada (G′, u) da seguinte maneira. O conjunto de nós do digrafoG′ é 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 G′; para cada p em P , há um arco rp com capacidade urp = 1 em G′;e para cada q em Q, há um arco qs com capacidade uqs = 1 em G′.

Suponha que toda cobertura em G tem k ou mais nós; vamos mostrar que todo corteentre r a s na rede (G′, u) tem capacidade pelo menos k. SejaR um conjunto de nós quesepara r de s. Seja A := Rr 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 ∩Ae outra em Qr 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 emQr A, donde u−(R) =∞ > k.

Como todo corte entre r e s na rede (G′, u) tem capacidade pelo menos k, o teoremaMFMC (teorema 3.8) garante que existe um fluxo x de r a s na rede (G′, u) tal queint(x) ≥ k. De acordo com o teorema MFMC inteiro (teorema 3.10), podemos suporque x é inteiro e portanto xvw ∈ 0, 1 para cada arco vw de G′. Seja M o conjunto dasarestas pq de G tais que xpq = 1. Então M é um emparelhamento em G. Finalmente,|M | = int(x) ≥ k.

Page 53: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

FEOFILOFF APLICAÇÕES DE FLUXO MÁXIMO E CORTE MíNIMO 45

Uma pequena adaptação da prova leva à versão max-min do teorema de Konig:

Teorema 4.3 (Konig) Em qualquer grafo não-dirigido bipartido, maxM |M | =minK |K|, sendo maxM tomado sobre todos os emparelhamentos M e minK tomadosobre todas as coberturas K.

Exercícios

4.1 ? Condições necessárias. Prove a proposição 4.1. Mostre que ela vale em qualquer grafo, mesmoque 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 Konig (teorema 4.2).

4.5 Na prova do teorema 4.2, por que não adotar a função-capacidade u = 1? Por que não definir ascapacidades assim: upq = 1 para cada aresta pq de G, urp = ∞ para cada p em P e uqs = ∞ paracada q em Q?

4.6 Prove o teorema 4.3 a partir do teorema 4.2.

4.7 Emparelhamentos perfeitos. Um emparelhamento é perfeito se incide em cada nó do grafo. Umgrafo é k-regular se todos os seus nós têm grau k. Dado um inteiro k ≥ 1, prove que todo grafobipartido 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ício 4.7 são falsas se “grau k” for trocado por “grau pelo me-nos k”. [CCPS 3.24]

4.9 Cobertura por caminhos curtos. Um conjuntoX de nós de um grafo é independente se nenhum arcotem ambas as pontas em X . Uma cobertura de um grafo por caminhos curtos é uma coleção decaminhos de comprimento ≤ 1 tal que todo nó do grafo está em pelo menos um dos caminhos dacoleção. Prove que num grafo bipartido qualquer conjunto independente máximo tem o mesmotamanho que uma cobertura mínima por caminhos curtos. (Dica: Use o teorema de Konig.)

4.10 Teorema de Menger. Dois dicaminhos em um digrafo são internamente disjuntos se os únicosnós que eles têm em comum são o primeiro e o último. Dados nós r e s de um digrafo G, umsubconjunto S de V (G) r r, s separa r de s se não existe dicaminho de r a s em G r S. Proveo seguinte teorema de Menger: o número máximo de dicaminhos de r a s que são internamentedisjuntos é 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ício 4.10 para enunciar e provar um resultado análogo ao teoremade Menger para grafos não-dirigidos. [CCPS 3.43]

4.2 O problema do transporte

Uma empresa tem um conjunto de fábricas de produzem pneus e um conjunto de lojasque vendem esses pneus. Cada loja q vende bq pneus por mês e cada fábrica p é capaz

Page 54: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

46 APLICAÇÕES DE FLUXO MÁXIMO E CORTE MíNIMO FEOFILOFF

de produzir no máximo ap pneus por mês. Pneus podem ser levados da fábrica p paraa loja q apenas se houver uma estrada de p para q. Queremos saber se o conjunto deestradas pode atender as demandas das lojas respeitando as capacidades das fábricas.

O problema pode ser modelado por um digrafo bipartido G, com bipartição (P,Q),e vetores a de P em Z+ e b de Q em Z+. Diremos que (G,P,Q, a, b) é uma rede detransporte.

Nosso problema: encontrar um vetor (xe : e ∈ E(G)), com componentes em Z+, talque x−(p) ≤ ap para cada p em P e x+(q) = bq para cada q em Q.

Diremos que um vetor x é viável se satisfaz essas restrições. Para discutir as condi-ções de existência de um vetor viável, precisamos da seguinte notação: para qualquerC ⊆ Q, a vizinhança de C é o conjunto de todos os nós p para os quais existe um arcopq com q em C. A vizinhança de C será denotada por N(C).1

Proposição 4.4 Se uma rede de transporte (G,P,Q, a, b) tem um vetor viável entãoa(N(C)) ≥ b(C) para todo subconjunto C de Q.

(Como de hábito, b(C) é a soma∑

(bq : q ∈ C).) Portanto, para provar que não existevetor viável basta exibir C ⊆ Q tal que a(N(C)) < b(Q). O seguinte teorema mostraque as condições necessárias dadas na proposição 4.4 são também suficientes:

Teorema 4.5 Em qualquer rede de transporte (G,P,Q, a, b), se a(N(C)) ≥ b(C) paratodo subconjunto C de Q então existe um vetor viável.

PROVA: Construa uma rede de fluxo (G′, u, r, s) da seguinte maneira. O conjunto denós de G′ é P ∪Q∪r, s, sendo r e s dois novos nós. Para cada arco pq de G, com p emP e q em Q, há um arco pq em G′ com capacidade∞; para cada p em P , há um arco rpem G′ com capacidade ap; para cada q em Q, há um arco qs em G′ com capacidade bq.

Suponha que a(N(C)) ≥ b(C) para todo subconjunto C de Q no digrafo original G; va-mos mostrar que todo corte entre r e s no digrafo G′ tem capacidade pelo menos b(Q).Seja R um conjunto de nós de G′ que separa r de s. Seja A := Rrr. Se algum arco de

1 A letra “N” é a inicial de neighborhood (= vizinhança).

Page 55: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

FEOFILOFF APLICAÇÕES DE FLUXO MÁXIMO E CORTE MíNIMO 47

G vai de P ∩A para QrA então u−(R) =∞ ≥ b(Q). Caso contrário, N(QrA) ⊆ P rAe portanto

u−(R) = a(P r A) + b(Q ∩ A)≥ a(N(Qr A)) + b(Q ∩ A)≥ b(Qr A) + b(Q ∩ A)= b(Q).

(Na primeira igualdade, o termo a(P r A) é devido aos arcos do tipo rp e o termob(Q ∩ A) é devido aos arcos do tipo qs.) Assim, em qualquer dos dois casos, temosu−(R) ≥ b(Q).

O teorema MFMC inteiro (teorema 3.10) garante que existe um fluxo viável inteiro x′

de intensidade b(Q) na rede (G′, u, r, s). Esse fluxo x′ induz um vetor viável x.

Exercícios

4.12 ? Condições necessárias. Prove a proposição 4.4.

4.3 O problema de Gale

Suponha que (G, u) é uma rede capacitada. Dado um número bv para cada nó v,queremos encontrar um fluxo que respeite as capacidades dos arcos e tenha excessoexatamente bv em cada v. Em que condições o problema tem solução?

Uma função-demanda em um digrafo G é qualquer função que associa um númerobv ∈ Q a cada nó v. Um fluxo x satisfaz uma função-demanda b se x+

−(v) = bv paracada nó v. (Portanto, os nós v que têm bv negativo são “produtores de fluxo” e os nós vque têm bv positivo são “consumidores de fluxo”.)

Nosso problema: Dada uma rede (G, b, u) em que u é uma função-capacidade e b umafunção-demanda, encontrar um fluxo que satisfaça b e respeite u.

EXEMPLO 1: Seja G o digrafo com nós p i j q descrito abaixo por sua matriz de adjacências.(Faça uma figura.) À direita da matriz, temos uma função-demanda b. Mais à direita, uma função-capacidade u.

p i j q b

p − 1 1 − +2i − − − 1 −2j − 1 − 1 +1q 1 − − − −1

pi pj iq ji jq qp

u 6 4 3 1 2 3x 0 1 2 0 0 3

Abaixo de u na tabela temos um fluxo viável x na rede (G, b, u).

Para simplificar o palavreado, podemos dizer que um fluxo é viável se satisfaz b erespeita u. É fácil verificar que as seguintes condições são necessárias para a existênciade um fluxo viável:

Proposição 4.6 Se existe um fluxo viável então b(V ) = 0 e b(A) ≤ u+(A) para todosubconjunto A do conjunto V de nós da rede.

Page 56: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

48 APLICAÇÕES DE FLUXO MÁXIMO E CORTE MíNIMO FEOFILOFF

Assim, para tornar evidente que não existe fluxo viável basta mostrar que b(V ) 6= 0ou exibir um conjunto A tal que b(A) > u+(A). As condições necessárias descritasna proposição são conhecidas como condições de Gale, em referência a D. Gale, quemostrou (1957) que as condições são também suficientes:

Teorema 4.7 (Gale) Em qualquer rede (G, b, u), se b(V ) = 0 e b(A) ≤ u+(A) paratodo subconjunto A de V := V (G) então existe um fluxo viável. Ademais, se b e u sãointeiros, essas mesmas condições garantem a existência de um fluxo viável inteiro.

PROVA: Suponha que a rede (G, b, u) satisfaz as condições de Gale; vamos mostrar queexiste um fluxo viável. Seja P o conjunto dos nós para os quais b é negativo e Q oconjunto dos nós para os quais b é positivo. Seja (G′, u′, r, s) a rede de fluxo definidada seguinte maneira. O conjunto de nós de G′ é V ∪ r, s, sendo r e s dois novos nós.Para cada p em P , há um arco rp com capacidade u′rp = −bp em G′; para cada q em Q,há um arco qs com capacidade u′qs = bq em G′; para cada arco vw de G, há um arco vwem G′ com capacidade u′vw = uvw.

Seja R um conjunto que separa r de s em G′. Seja B := R r r. Considere o corte emG′ cuja margem negativa é R. A capacidade desse corte na rede (G′, u′, r, s) é a somade três parcelas: as capacidades dos arcos que vão de r a P r B, as capacidades dosarcos que vão de Q ∩B a s, e as capacidades dos arcos de G que saem de B. Logo,

u′−(R) = −b(P rB) + b(Q ∩B) + u−(B)= −b(P rB) + b(Q ∩B) + u+(V rB)≥ −b(P rB) + b(Q ∩B) + b(V rB)= −b(P rB) + b(Q ∩B) + b(P rB) + b(QrB)= b(Q ∩B) + b(QrB)= b(Q) .

Concluímos assim que todo corte entre r e s na rede (G′, u′, r, s) tem capacidade nãoinferior a b(Q). Segue daí, pelo teorema MFMC (teorema 3.8), que existe um fluxoviável x′ tal que int(x) ≥ b(Q). Logo, x′qs = u′qs para todo q em Q, ou seja, x′ saturatodos os arcos que entram em s. Como b(P ) = b(V )− b(Q) = −b(Q), o fluxo x′ tambémsatura todos os arcos que saem de r. Portanto a restrição x de x′ à rede original é umfluxo que satisfaz b e respeita u.

A segunda parte da prova segue do teorema MFMC inteiro (teorema 3.10).

É útil observar que as condições de Gale são equivalentes às seguintes: b(V ) = 0 eb(A) ≥ −u−(A) para todo subconjunto A de V .

EXEMPLO 2: Para a rede (G, b, u) do exemplo 1, veja a rede (G′, u′, r, s) construída na prova doteorema 4.7:

r p i j q s

r − − 1 − 1 −p − − 1 1 − 1i − − − − 1 −j − − 1 − 1 1q − 1 − − − −s − − − − − −

ri rq pi pj iq ji jq qp ps js

u′ 2 1 6 4 3 1 2 3 2 1x′ 2 1 0 1 2 0 0 3 2 1

Page 57: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

FEOFILOFF APLICAÇÕES DE FLUXO MÁXIMO E CORTE MíNIMO 49

A tabela à direita também mostra um fluxo viável x′ de r a s na rede (G′, u′, r, s).

EXEMPLO 3: Seja (G, b, u) a rede definida abaixo (igual à do exemplo 1 exceto pelo valor de uqp).

p i j q b

p − 1 1 − +2i − − − 1 −2j − 1 − 1 +1q 1 − − − −1

pi pj iq ji jq qp

u 6 4 3 1 2 2

Essa rede não tem fluxo viável porque o conjuntoA := p, j não satisfaz a condição b(A) ≤ u+(A).

Exercícios

4.13 ? Condições necessárias. Prove a proposição 4.6.

4.14 Encontre um fluxo viável na rede (G, b, u) descrita a seguir. Os nós são r a b c d s e as tabelasdefinem as funções b e u:

r a b c d s

b +3 +2 +2 −1 −3 −3

ra rb ac bd cs ds sr

u 8 7 6 5 7 8 6

4.15 ? Árvores. Seja (T, b) uma rede em que T é uma árvore (veja a seção 1.1) e b uma função-demanda.Dê condições necessárias e suficientes para que (T, b) tenha um fluxo que satisfaz b. Estabeleça arelação entre essas condições e as condições de Gale. Descreva informalmente um algoritmo quereceba T e b e calcule um fluxo em T que satisfaça b ou decida que um tal fluxo não existe.

4.16 Seja r um nó de um digrafo G com n nós. Seja b uma função-demanda tal que br = −n + 1 ebv = +1 para cada v 6= r. Seja u a função-capacidade que atribui ∞ a cada arco. Dê condiçõesnecessárias e suficientes para que a rede (G, b, u) tenha um fluxo viável. Se x é um fluxo viável etodas as componentes de x estão em 0, 1, que aparência tem o conjunto de arcos e : xe = 1?

4.17 Formule o problema de Gale como um programa linear inteiro. Maximize a função-objetivo 0x.Escreva o dual da relaxação linear do pl. Repita com função-objetivo 1x. Repita com “minimize”no lugar de “maximize”.

4.18 Versão simétrica das condições de Gale. Mostre que as condições de Gale são equivalentes às seguin-tes: −u−(A) ≤ b(A) ≤ u+(A) para todo A ⊆ V .

4.19 ? Teorema de Gale no caso de capacidades infinitas. Seja b uma função-capacidade em um digrafoG :=(V,E). Mostre que a rede (G, b) tem um fluxo que satisfaz b se e somente se b(V ) = 0 e b(A) ≤ 0para todo A ⊆ V tal que ∂+(A) = ∅.

4.20 Deduza o teorema MFMC (teorema 3.8) do teorema de Gale (teorema 4.7).

4.21 É dado um grafo bipartido e um custo ce para cada aresta do grafo. Queremos encontrar um em-parelhamento de custo máximo. Formule o problema como um pl e calcule o seu dual. Descrevao dual como um problema sobre redes.

4.22 É dado um grafo bipartido e um peso bv para cada nó do grafo. Queremos encontrar uma co-bertura de peso mínimo. Formule o problema como um pl e calcule o seu dual. Descreva o dualcomo um problema sobre um rede. [CCPS 3.17]

4.23 Subgrafo bipartido com prescrição de graus. É dado um inteiro não-negativo dv para cada nó v de umgrafo não-dirigido bipartido G. Queremos encontrar E′ ⊆ E(G) tal que tal que o grau de cada nóv em (V (G), E′) seja dv . Descreva um bom algoritmo para o problema. Dê condições necessáriase suficientes para que o problema tenha solução. Discuta o caso particular do problema em quedv = k para cada v. [CCPS 3.18]

Page 58: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

50 APLICAÇÕES DE FLUXO MÁXIMO E CORTE MíNIMO FEOFILOFF

4.24 Síntese de digrafo bipartido. Suponha dados números inteiros não-negativos a1, . . , an e b1, . . , bn.Queremos construir um digrafo bipartido com bipartição (v1, . . , vn, w1, . . , wn) tal que cadanó vi tem grau de saída ai e cada nó wi tem grau de entrada bi. Mostre como resolver o problema.[AMO 8.13]

4.25 Digrafo euleriano.2 Dado um digrafo G, encontrar um conjunto de arcos cuja inversão (isto é, trocade vw por wv) resulte em um digrafo G′ = (V (G), E′) tal que |∂′+(v)| = |∂′−(v)| para cada nó v.Dê condições necessárias e suficientes para que o problema tenha solução. [CCPS 4.5]

4.26 Orientação de grafo não-dirigido. Seja H := (V,E) um grafo e a uma função de V em Z+. Queremosuma orientaçãoG deH tal que o grau de entrada de todo nó v seja av . Mostre que o problema temsolução se e somente se iH(X) ≤ a(X) ≤ eH(X) para todo X ⊆ V . Aqui, eH(X) é o número dearestas de H com pelo menos uma ponta em X e iH(X) o número de arestas de H com ambas aspontas em X . (A letra “i” sugere “internas” e a letra “e” sugere “externas”.) Mostre também queas condições para existência de solução podem ser formuladas assim: a(V ) = |E| e iH(X) ≤ a(X)para todo X ⊆ V . [CCPS 3.34]

4.27 Torneio viável. Imagine um torneio de tênis com n participantes. Suponha que cada participantejoga exatamente uma partida com cada um dos outros e suponha que não há empates. Seja di onúmero de derrotas do tenista i. Como é possível saber se um dado vetor (d1, . . . , dn) representaum torneio? Dê uma boa caracterização e um bom algoritmo. [CCPS 3.35]

4.4 O problema de Hoffman

Algumas aplicações exigem que o fluxo tenha um certo valor mínimo em cada arco.Essas restrições “por baixo” nos arcos podem ser convertidas em demandas nos nós,transformando a aplicação em uma instância do problema de Gale (seção 4.3).

Uma demanda nos arcos de um digrafo é uma função3 l que associa um número em Q+

a cada arco de um digrafo. Dizemos que um fluxo x no digrafo satisfaz uma demanda lse xe ≥ le para cada arco e.

Nosso problema: Dada uma rede (G, l, u) em que l é uma demanda nos arcos e u éuma função-capacidade, encontrar uma circulação que satisfaça l e respeite u, ou seja,uma circulação x tal que l ≤ x ≤ u.

Para simplificar a conversa, diremos que uma circulação x é viável se l ≤ x ≤ u.

EXEMPLO 4: Seja G o digrafo com nós p i j q descrito abaixo por sua matriz de adjacências. (Façauma figura.) As funções l e u e uma circulação viável x são dados à direita da matriz:

p i j q

p − 1 1 −i − − − 1j − 1 − 1q 1 − − −

pi pj iq ji jq qp

u 7 5 3 2 3 3x 1 2 2 1 1 3l 1 1 0 1 1 0

Algumas condições necessárias para a existência de uma circulação viável são intuiti-vas:

2 Referência a L. Euler (1707–1783).3 A letra l é a inicial de lower bound.

Page 59: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

FEOFILOFF APLICAÇÕES DE FLUXO MÁXIMO E CORTE MíNIMO 51

Proposição 4.8 Se uma rede (G, l, u) tem uma circulação viável então l ≤ u e l−(A) ≤u+(A) para cada conjunto A de nós.

Assim, para tornar evidente que não existe circulação viável basta exibir um arco e talque le > ue ou exibir um conjunto A de nós tal que l−(A) > u+(A). A.J. Hoffman4

mostrou (1960) que as condições necessárias listadas na proposição 4.8 também sãosuficientes:

Teorema 4.9 (Hoffman) Para qualquer rede (G, l, u), se l ≤ u e l−(A) ≤ u+(A) paratodo subconjunto A de V (G) então existe uma circulação viável. Ademais, se l e usão inteiros, essas mesmas condições garantem a existência de uma circulação viávelinteira.

PROVA: Suponha que a rede (G, l, u) satisfaz as condições de Hoffman. Para mostrarque existe uma circulação viável x, usaremos o teorema de Gale (teorema 4.7) com −l+−fazendo o papel da função-demanda e u− l fazendo o papel da função-capacidade.

Comece por observar que l é um fluxo em G e considere o excesso l+−(v) de l em cadanó v. Em virtude da proposição 3.1, página 30,

− l+−(V ) = 0. (1)

Agora considere a hipótese l−(A) ≤ u+(A). Se subtrairmos l+(A) dos dois lados dadesigualdade teremos

− l+−(A) ≤ (u− l)+(A). (2)

Nossa rede (G, l, u) pode ser vista como uma rede (G, b, u′) do problema de Gale com be u′ definidos assim:

b := −l+− e u′ := u− l .O parâmetro b é uma função-demanda. Como l ≤ u, o parâmetro u′ é uma função-capacidade. Graças a (1) e (2), a rede (G, b, u′) satisfaz as condições de Gale:

b(V ) = 0 e b(A) ≤ u′+

−(A).

O teorema de Gale garante então que existe um fluxo x′ tal que x′+− = b e x′ ≤ u′. Pararetornar à rede original (G, l, u), considere o fluxo x := x′ + l (trata-se de um fluxo poisx′ ≥ 0 e l ≥ 0). É claro que l ≤ x ≤ u′ + l = u. Ademais, x é uma circulação pois

x+

−(v) = x′+− (v) + l+−(v) = bv + l+−(v) = −l+−(v) + l+−(v) = 0

para cada nó v. Em suma, x é uma circulação viável, como queríamos provar.

EXEMPLO 5: Veja a rede (G, b, u′) construída na prova do teorema 4.9 a partir da rede (G, l, u) doexemplo 4:

b

p +2i −2j +1q −1

pi pj iq ji jq qp

u′ 6 4 3 1 2 3x′ 0 1 2 0 0 3

4 Não confunda com D.A. Huffman, inventor do código de Huffman.

Page 60: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

52 APLICAÇÕES DE FLUXO MÁXIMO E CORTE MíNIMO FEOFILOFF

A tabela à direita também mostra um fluxo x′ que satisfaz b e respeita u′. Essa rede (G, b, u′) é igualà rede (G, b, u) do exemplo 3 (seção 4.3).

EXEMPLO 6: Seja (G, l, u) a rede descrita abaixo (igual à rede do exemplo 4 exceto por uqp). Essarede não tem circulação viável pois o conjunto A := p, j não satisfaz a condição l−(A) ≤ u+(A).

p i j q

p − 1 1 −i − − − 1j − 1 − 1q 1 − − −

pi pj iq ji jq qp

l 1 1 0 1 1 0u 7 5 3 2 3 2

Vale a seguinte generalização comum dos teoremas de Gale e Hoffman (teoremas 4.7e 4.9):

Teorema 4.10 Seja G := (V,E) um digrafo, b uma função de V em Q, l uma função deE em Q+, e u uma função de E em Q+ ∪∞. A rede (G, b, l, u) tem um fluxo x tal quex+

− = b e l ≤ x ≤ u se e somente se

l ≤ u e b(A) + l−(A) ≤ u+(A)

para todo subconjunto A de V . Ademais, se b, l e u são inteiros, as mesmas condiçõesgarantem a existência de um fluxo x inteiro com as propriedades enunciadas.

Exercícios

4.28 Mostre que as duas partes das condições de Hoffman (a parte “l ≤ u” e a parte “l−(A) ≤ u+(A)”)são independentes.

4.29 ? Condições necessárias. Prove a proposição 4.8.

4.30 Encontre uma circulação viável na rede (G, l, u) descrita a seguir. Os nós são r a b c d s e a tabeladá os arcos e as funções l e u:

ra rb ac bd cs ds sr

l 1 2 3 4 2 1 0u ∞ ∞ ∞ ∞ ∞ ∞ 6

4.31 Encontre uma circulação viável na rede (G, l, u) descrita a seguir. Os nós são r a b c d s e a tabeladá os arcos e as funções l e u:

ra rc ab dc bs ds sr

l 1 1 1 1 1 1 0u 9 9 9 9 9 9 8

4.32 Seja (G, l, u) uma rede acíclica em que l 6= 0 e l ≤ u. Deduza das condições de Hoffman que nãoexiste circulação viável em (G, l, u).

4.33 Seja (G, l, u) uma rede em que l ≤ u. Use as condições de Hoffman para provar que se l+(A) ≤u−(A) para todo conjunto A de nós então existe circulação viável.

Page 61: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

FEOFILOFF APLICAÇÕES DE FLUXO MÁXIMO E CORTE MíNIMO 53

4.34 Seja G := (V,E) um digrafo que consiste em um dicircuito e nada mais. Sejam l e u duas funçõesde E em Q+. Parte 1: Supondo que existe uma circulação x tal que l ≤ x ≤ u, mostre quemax (le : e ∈ E) ≤ min (ue : e ∈ E). Parte 2: Supondo que max (le : e ∈ E) > min (ue : e ∈ E),mostre que a rede (G, l, u) viola alguma das condições de Hoffman.

4.35 Um ciclo5 euleriano dirigido em um digrafo G é um dicaminho fechado (ou seja, o término coin-cide com a origem) que passa por cada nó pelo menos uma vez e passa por cada arco exatamenteuma vez. (Um ciclo euleriano dirigido é o trajeto ideal de um caminhão de coleta de lixo.) Mostreque G tem um ciclo euleriano dirigido se e somente se G é conexo e |∂+(v)| = |∂−(v)| para cadanó v. [CCPS 4.4]

4.36 Seja (G, l, u) uma rede em que le > 0 e ue = ∞ para cada arco e. Mostre que a rede tem umacirculação viável se e somente se G é fortemente conexo (ou seja, para cada par (r, s) de nós existeum dicaminho de r a s e um dicaminho de s a r.) [AMO 3.53]

4.37 Prove o teorema 4.10 (generalização comum dos teoremas de Gale e Hoffman).

4.5 Fluxo mínimo entre dois nós

Considere o problema básico do fluxo máximo (problema 3.6, página 32). Que acontecese trocarmos o objetivo de intensidade máxima (sujeita a uma delimitação superior u)pelo o objetivo de intensidade mínima (sujeita a uma delimitação inferior l)?

Problema do fluxo mínimo: Dado um digrafo G, nós r e s de G, uma função l de E(G)em Q+, e um número k ≥ 0, encontrar um fluxo x de r a s tal que x ≥ l e int(x) ≤ k.

(A expressão “fluxo x de r a s” significa, como de hábito, que x+−(s) ≥ 0 e x+

−(v) = 0para cada v diferente de r e de s.) Para simplificar o palavreado, diremos que um fluxox é k-viável se vai de r a s e satisfaz as condições x ≥ l e int(x) ≤ k.

Para fugir de situações degeneradas, vamos nos limitar às instâncias bem-comporta-das. Uma instância do problema é bem-comportada se (1) todo arco e tal que le > 0pertence a algum dicaminho de r a s e (2) ∂+(R) = ∅ para algum conjuntoR que separar de s. Graças a (1), existe um fluxo x de r a s tal que x ≥ l. Graças a (2), não existedicaminho de s a r e portanto todo fluxo de r a s tem x+

−(s) ≥ 0, como se espera de umtal fluxo. Nosso problema consiste, então, em encontrar um fluxo k-viável numa redebem-comportada (G, l, r, s).

EXEMPLO 7: Seja G o digrafo com nós p i j q descrito abaixo por uma matriz de adjacências. O nóinicial é p e o nó final é q. (Faça uma figura e verifique que a rede é bem-comportada.) A função l eum fluxo x ≥ l são dados à direita da matriz. O fluxo x é 3-viável.

p i j q

r = p − 1 1 −i − − − 1j − 1 − 1

s = q − − − −

pi pj iq ji jq

l 1 1 0 1 1x 1 2 2 1 1

A seguinte proposição dá condições obviamente necessárias para a existência de umfluxo k-viável:

5 Não confunda ciclo com circuito.

Page 62: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

54 APLICAÇÕES DE FLUXO MÁXIMO E CORTE MíNIMO FEOFILOFF

Proposição 4.11 Se uma rede bem-comportada (G, l, r, s) tem um fluxo k-viável entãol−(R) ≤ k para cada conjunto R que separa r de s e tem ∂+(R) = ∅.

Portanto, para mostrar que uma rede bem-comportada não tem fluxo k-viável bastaexibir um conjunto R tal que r ∈ R, s /∈ R, ∂+(R) = ∅ e l−(R) > k. A condiçãonecessária enunciada na proposição é também suficiente:

Teorema 4.12 (fluxo mínimo) Dada uma rede bem-comportada (G, l, r, s) e um nú-mero k ≥ 0, se

l−(R) ≤ k

para cada conjunto R tal que r ∈ R, s /∈ R e ∂+(R) = ∅ então existe um fluxo k-viávelna rede. Ademais, se l é inteira e as condições enunciadas estiverem satisfeitas entãoexiste um fluxo k-viável inteiro.

PROVA: Seja V o conjunto de nós e E o conjunto de arcos de G. Suponha que ascondições enunciadas estão satisfeitas. Construa um digrafo G′ acrescentando umnovo arco sr a G. Seja E ′ o conjunto de arcos de G′. Seja l′ a função de E ′ em Q+

definida por l′sr = 0 e l′e = le para cada e em E. Seja u′ a função de E ′ em k,∞definida por u′sr = k e u′e =∞ para cada e em E.

Mostraremos a seguir que a rede (G′, l′, u′) satisfaz as condições de Hoffman. Seja Rum subconjunto de V (G). Há três casos a considerar, dependendo das propriedadesque R tem em G. Se ∂+(R) 6= ∅ então u′+(R) = ∞ e portanto l′−(R) < u′+(R). Sel−(R) = 0 então l′−(R) ≤ u′+(R). Finalmente, suponha que ∂+(R) = ∅ e l−(R) > 0.Então le > 0 para algum arco e em ∂−(R), donde e pertence a um dicaminho de r a s(pois a rede é bem-comportada). Portanto r ∈ R e s /∈ R, donde l′−(R) ≤ k = u′+(R).

Como l′−(R) ≤ u′+(R) para todo conjunto R de nós, o teorema de Gale (teorema 4.7)garante que (G′, l′, u′) tem uma circulação viável x′. A restrição de x′ ao conjunto E(G)é um fluxo de r a s tal que x ≥ l e int(x) ≤ usr = k.

EXEMPLO 8: Para a rede (G, l, r, s) do exemplo 7, eis a rede (G′, l′, u′) construída na prova doteorema 4.12:

p i j q

r = p − 1 1 −i − − − 1j − 1 − 1

s = q 1 − − −

pi pj iq ji jq qp

l′ 1 1 0 1 1 0u′ ∞ ∞ ∞ ∞ ∞ 3x′ 1 2 2 1 1 3

(Essa rede (G′, l′, u′) é quase igual à rede (G, l, u) do exemplo 4 (seção 4.4); apenas u é diferente.)A última linha da tabela dá uma circulação x′ tal que l′ ≤ x′ ≤ u′.

EXEMPLO 9: Para verificar que não existe fluxo 2-viável na rede do exemplo 7, tome o conjuntoR := p, j e observe que R separa r de s, que ∂+(R) é vazio, e que l−(R) > 2.

Exercícios

4.38 ? Condições necessárias. Prove a proposição 4.11.

Page 63: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

FEOFILOFF APLICAÇÕES DE FLUXO MÁXIMO E CORTE MíNIMO 55

4.39 Mostre que (G, l, r, s) pode ter um fluxo k-viável mesmo que algum arco e com le > 0 não pertençaa um dicaminho de r a s. [Vinícius Bitencourt Matos]

4.40 Suponha que le = 0 para todo arco e que não pertence a um dicaminho de r a s. Mostre que existeum fluxo x ≥ l de r a s.

4.41 Suponha que um digrafo G não tem dicaminho de s a r. Mostre que existe um conjunto R de nóstal que r ∈ R, s /∈ R e ∂+(R) = ∅.

4.42 Fluxo vs. corte dirigido. Seja x ≥ l um fluxo de r a s numa rede (G, l). Seja R um conjunto de nósque separa r de s e tem ∂+(R) = ∅. Prove que int(x) ≥ l−(R).

4.43 Encontre um fluxo 9-viável de r a s na rede (G, l) que tem nós r a b s e os arcos com demandasdados abaixo:

ra as sb br

l 1 1 1 1

4.44 Considere a rede (G, l) que tem nós r a b c d s e os arcos dados abaixo. Encontre um fluxo7-viável. Encontre um fluxo 6-viável.

ra rb ac bd cs dsl 1 2 3 4 2 1

4.45 Considere a rede (G, l) que tem nós r a b c d s e os arcos dados abaixo. Encontre um fluxo viávelde intensidade ≤ 9.

ra rc ab dc bs dsl 1 1 1 1 1 1

4.46 Considere a rede (G, l) com nós r a b s e os arcos e demandas dados na tabela. Existe fluxo2-viável de r a s? Existe fluxo 1-viável de r a s?

ra ar ab bs sbl 2 0 1 3 0

4.47 Fluxo mínimo vs. corte máximo. Formule e prove um teorema de fluxo mínimo e corte máximo apartir do teorema 4.12. Dê os pl’s que representam o problema do fluxo mínimo e o do cortemáximo.

4.6 Teorema de Dilworth

Uma cobertura de um digrafoG por dicaminhos (= dipath cover) é uma coleção de dica-minhos tal que todo nó de G está em pelo menos um dos dicaminhos da coleção. (Nãoconfunda com o conceito de cobertura da seção 4.1.) Uma cobertura por dicaminhos émínima se usa o menor número possível de dicaminhos.

Nosso problema: Dado um digrafo G, encontrar uma cobertura mínima de G pordicaminhos.

O seguinte conceito pode ajudar a provar a minimalidade de uma cobertura por dica-minhos. Um conjunto A de nós de um digrafo G é uma anticadeia se não existe dica-minho com origem e término em dois nós distintos de A. Para qualquer cobertura Ppor dicaminhos e qualquer anticadeia A,

|P| ≥ |A| ,

Page 64: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

56 APLICAÇÕES DE FLUXO MÁXIMO E CORTE MíNIMO FEOFILOFF

uma vez que todo dicaminho contém no máximo um dos nós de A.

Segue daí imediatamente que se |P| = |A| então P uma cobertura mínima (e A é umaanticadeia máxima). R.P. Dilworth mostrou (1950) que a recíproca dessa afirmação valese G for um DAG:

Teorema 4.13 (Dilworth) Em qualquer DAG, uma cobertura mínima por dicaminhostem o mesmo tamanho que uma anticadeia máxima:

minP|P| = max

A|A| ,

sendo maxP tomado sobre todas as coberturas P por dicaminhos e minA tomado sobretodas as anticadeias A.

ESBOÇO DA PROVA: Já observamos acima que toda cobertura por dicaminhos é pelomenos tão grande quanto uma anticadeia. Suponha agora que A é uma anticadeiamáxima; mostraremos que existe uma cobertura por dicaminhos P tal que |P| ≤ |A|.(Como “<” é impossível, teremos “=”.) Faremos isso por uma redução ao teorema defluxo mínimo (teorema 4.12).

Seja G o DAG em discussão. Seja G′ o digrafo construído a partir de G da seguintemaneira. Para cada v em V (G), há dois nós, v1 e v2, em V (G′) e um arco v1v2 em E(G′);diremos que esses arcos são especiais. Para cada vw em E(G), há um arco v2w1

em E(G′). Além disso, há dois novos nós, r e s, em V (G′) e, para cada v em V (G),os arcos rv1 e v2s estão em E(G′).

Defina uma função l de E(G′) em 0, 1: se e é especial então le = 1 senão le = 0.Mostraremos em seguida que a rede (G′, l) satisfaz as condições do teorema 4.12. SejaR um subconjunto de V (G′) que separa r de s e tem ∂′+(R) = ∅. Seja B o conjunto denós v de G tais que R separa v1 de v2 em G′. É claro que l−(R) = |B|. O conjunto B éuma anticadeia de G e portanto |B| ≤ |A|, donde l−(R) ≤ |A|. O teorema 4.12 garanteagora que G′ tem um fluxo inteiro x de r a s tal que x ≥ l e int(x) ≤ |A|.O fluxo x pode ser decomposto em dicaminhos simples P ′1, . . . , P ′j , sendo j = int(x),todos de r a s. Como G′ é um DAG, podemos supor que |i : P ′i 3 e| = xe paracada arco e. Todo arco especial pertence a pelo menos algum P ′i . Cada P ′i induz umdicaminho Pi no digrafo original G. O conjunto P1, . . . , Pj cobre todos os nós de G.Ademais, j ≤ |A|.

Exercícios

4.48 Dê condições necessárias para que um digrafo tenha uma cobertura por dicaminhos com ≤ kdicaminhos. Em que tipo de digrafo essas condições valem?

4.49 Seja P uma cobertura mínima de um digrafo por dicaminhos. Podemos supor que todos osdicaminhos são simples? Podemos supor que P é disjunta, ou seja, que cada nó de G pertence aapenas um dos dicaminhos de P?

4.50 Mostre que num digrafo com dicircuitos uma anticadeia máxima pode ser menor que uma cober-tura mínima por dicaminhos.

Page 65: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

FEOFILOFF APLICAÇÕES DE FLUXO MÁXIMO E CORTE MíNIMO 57

4.51 Seja G um digrafo bipartido com bipartição (P,Q) (todos os arcos vão de P para Q). Mostre queum subconjuntoA de V (G) é uma anticadeia se e somente se V (G)rA é uma cobertura no sentidoda seção 4.1. Que aparência tem uma cobertura mínima de G por dicaminhos?

4.52 Mostre uma anticadeia máxima e um cobertura mínima por dicaminhos no DAG da figura.[CCPS fig 2.5]

4.53 ? Complete os detalhes da prova do teorema de Dilworth.

4.54 ? Escalonamento de aviões. Uma companhia de aviação quer servir p rotas (= flight legs) com o menornúmero possível de aviões. Para isso, ela precisa combinar essas rotas da maneira mais eficientepossível. O voo da rota i deve começar na hora ai e terminar na hora bi. Um avião precisa derij horas para retornar do destino da rota i à origem da rota j. Sugira uma maneira de resolver oproblema. [AMO 6.32, CCPS 3.39]

4.55 Seja D a coleção de todos os dicaminhos de um digrafo G. Seja (Av,P : v ∈ V (G), P ∈ D) a matrizbinária tal que Av,P = 1 se e somente se v está em P . Use A para formular o pl que correspondeao problema da cobertura mínima por dicaminhos. Qual o dual do pl? Qual a relação do dualcom anticadeias máximas?

4.56 Deduza o teorema de Dilworth (teorema 4.13) do teorema de Konig (teorema 4.3).

Exercícios adicionais

4.57 ? Escalonamento em máquinas paralelas uniformes. Suponha dadas n tarefas (= jobs) J1, J2, . . . , Jn e kprocessadores idênticos. Cada tarefa Jj precisa ser processada durante pj dias em qualquer dosprocessadores. O processamento permite preemption, ou seja, o processamento de Jj num certoprocessador pode ser interrompido e depois retomado em outro (ou o mesmo) processador. Emcada instante, cada processador só pode cuidar de uma tarefa e cada tarefa só pode estar sendocuidada por um processador. Cada tarefa Jj está disponível para processamento a partir de umacerta data (= release date) rj e deve estar concluída até uma certa data (= due date) dj . (Suponhaque dj ≥ rj + pj .) Exemplo:

j 1 2 3 4

pj 25 31 50 18rj 10 50 0 20dj 30 70 60 50

Formule um problema de fluxo máximo que resolva o escalonamento. (Dica: Coloque o conjuntor1, d1, r2, d2, . . . , rn, dn de datas em ordem crescente. Seja t1 < t2 < · · · < tm+1, comm+1 ≤ 2n,o conjunto ordenado de datas. Agora, basta decidir que parte do processamento de cada tarefa Jjserá feita durante o intervalo (ti, ti+1).) [CCPS 3.41, AMO 6.17]

4.58 É dado um digrafo G, um nó r, e, para cada arco e, um número não-negativo ce que mede o custode destruir o arco. Se um atacante destrói um conjuntoA de arcos, recebe um prêmio bv para cadanó v que não pode mais ser alcançado por um dicaminho a partir de r. O atacante quer escolherA de modo a minimizar custos menos prêmios. Sugira um algoritmo. [CCPS 3.44]

Page 66: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

58 APLICAÇÕES DE FLUXO MÁXIMO E CORTE MíNIMO FEOFILOFF

Page 67: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

Capítulo 5

Fluxo viável de custo mínimo

Este capítulo generaliza o problema de Gale da seção 4.3 e procura um fluxo quesatisfaz demandas dos nós, respeita capacidades dos arcos, e faz tudo isso ao menorcusto possível.

Para resolver o problema, o capítulo usa as duas ferramentas discutidas nos capítulosanteriores: dicaminhos de custo mínimo (capitulo 2) e fluxos de intensidade máxima(capitulo 3).

Os ingredientes do problema são os mesmos dos capítulos anteriores: um digrafoG :=(V,E), uma função-demanda (bv : v ∈ V ) com valores em Q, uma função-capacidade(ue : e ∈ E) com valores em Q+ ∪ ∞, e uma função-custo (ce : e ∈ E) com valoresem Q. Note que u ≥ 0 mas b e c não têm restrição de sinal.

5.1 O problema

Como nos capítulos anteriores, um fluxo é qualquer vetor (xe : e ∈ E) com valoresem Q+. Numa rede (G, b, u), um fluxo x é viável se satisfaz b (ou seja, se x+

− = b) erespeita u (ou seja, se x ≤ u). A rede (G, b, u) é viável se tem um fluxo viável. Como jávimos na seção 4.3, a rede é viável se e somente se b(V ) = 0 e b(A) ≤ u+(A) para todosubconjunto A de V .

Numa rede (G, b, u, c), o custo de um fluxo x é o número cx. O problema do fluxoviável de custo mínimo (= minimum-cost flow problem) consiste no seguinte:

Problema 5.1 (fluxo de custo mínimo) Encontrar um fluxo viável de custo mínimonuma rede (G, b, u, c).

Muitas vezes, dizemos simplesmente “fluxo de custo mínimo”, deixando o “viável”subentendido. (Mas não é uma boa ideia omitir “de custo” e dizer “fluxo mínimo”pois isso pode ser confundido com fluxo de intensidade mínima, como na seção 4.5,página 53.) Dizemos também que um fluxo é ótimo se for viável e tiver custo mínimo.Dizemos ainda que uma rede (G, b, u, c) é ilimitada se for viável mas não tiver umfluxo ótimo.

59

Page 68: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

60 FLUXO VIÁVEL DE CUSTO MíNIMO FEOFILOFF

EXEMPLO 1: Seja G o digrafo com nós p v w q descrito abaixo por sua matriz de adjacências. Àdireita da matriz temos as demandas b. Mais à direita, as capacidades e os custos dos arcos e doisdiferentes fluxos viáveis, x e x′. Verifique que cx = 240 e cx′ = 180. Observe como é fácil conferira viabilidade e o custo de um fluxo percorrendo as linhas da tabela à direita.

p v w q b

p − 1 1 − −2v − − 1 1 −1w − − − 1 +1q − − − − +2

pv pw vw vq wq

u 3 3 3 3 3x 0 2 0 1 1x′ 0 2 1 0 2c −30 +80 +40 +90 −10

EXEMPLO 2: Seja G o digrafo descrito abaixo por sua matriz de adjacências. À direita da matriztemos as demandas b. Mais à direita, as capacidades, os custos, e um fluxo viável x. Não existefluxo ótimo pois, para qualquer número α, existe um fluxo viável de custo menor que α. Logo, arede é ilimitada.

p v w q b

p − 1 − − 0v − − 1 1 0w 1 − − 1 0q − − − − 0

pv wp vw vq wq

u ∞ ∞ ∞ 3 3c −10 −10 −10 −10 −10x 1 1 1 0 0

Exercícios

5.1 Mostre que o problema do fluxo de intensidade máxima de r a s numa rede capacitada (veja ocapitulo 3) é um caso particular do problema do fluxo de custo mínimo. [CCPS 4.7]

5.2 Seja (G, b, u, c) uma rede viável tal que ue <∞ para todo arco e. Mostre que a rede não é ilimitada,ou seja, tem um fluxo ótimo.

5.3 Considere o problema de encontrar um emparelhamento perfeito de custo mínimo em um grafobipartido. (Um emparelhamento é perfeito se incide em todos os nós.) Formule esse problemacomo um problema de fluxo de custo mínimo. [CCPS 4.2]

5.4 Seja G um digrafo tal que |∂+(v)| + |∂−(v)| é par para cada nó v. Para cada arco vw, seja cvw ocusto de inverter vw (isto é, trocar vw porwv). Queremos encontrar um conjunto de arcos de customínimo cuja inversão faz com que G tenha um ciclo euleriano dirigido. Formule esse problemacomo um problema de fluxo de custo mínimo. [CCPS 4.5]

5.5 Atribuição de terminais a concentradores. Uma rede de teleprocessamento tem um grande númerode terminais geograficamente dispersos e uma CPU. É dado um conjunto de concentradores,instalados em certos lugares, sendo cada um ligado à CPU por uma linha de grande capacidadee velocidade. Cada terminal precisa ser ligado à CPU. A ligação pode ser direta ou pode passarpor um concentrador. Cada concentrador pode cuidar de no máximo K terminais. Para cadaterminal i, o custo de uma ligação direta com a CPU é cio e o custo de uma ligação com um con-centrador j é cij . (O custo da ligação de cada concentrador à CPU é nulo.) Queremos determinara maneira mais barata de ligar os terminais à CPU. Formule esse problema como um problemade fluxo de custo mínimo. [AMO 9.7]

5.2 Programas lineares

No jargão da programação linear, o problema do fluxo de custo mínimo pode ser for-mulado assim: encontrar um vetor (xv : v ∈ V ) que

Page 69: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

FEOFILOFF FLUXO VIÁVEL DE CUSTO MíNIMO 61

minimize cx sob as restriçõesx+

−(v) = bv para cada v ∈ Vxe ≤ ue para cada e ∈ Exe ≥ 0 para cada e ∈ E.

(1)

O dual desse programa linear consiste em encontrar vetores (yv : v ∈ V ) e (ze : e ∈ E)que

maximizem yb+ zu sob as restrições−yv + yw + zvw ≤ cvw para cada vw ∈ E

zvw ≤ 0 para cada vw ∈ E.(2)

O teorema fraco da dualidade garante que cx ≥ yb + zu para qualquer solução viávelx de (1) e qualquer solução viável (y, z) de (2). Se cx = yb + zu então as soluções xe (y, z) são ótimas. O teorema forte da dualidade garante a recíproca: se os dois pl’sforem viáveis então existe x viável no primal e existe (y, z) viável no dual tais quecx = yb + zu. A igualdade cx = yb + zu equivale às seguintes condições de folgascomplementares: para cada arco vw,

xvw > 0 implica −yv+yw+zvw = cvw e xvw < uvw implica zvw = 0.1 (3)

(Essas condições poderiam ser escritas de maneira mais simétrica: para cada arco vw,xvw = 0 ou −yv+yw+zvw = cvw e xvw = uvw ou zvw = 0.2)

Capacidades infinitas. A rigor, o programa linear (1) só representa o problema 5.1 setodos os arcos têm capacidade finita. Para os arcos e de capacidade infinita, a restriçãoxe ≤ ue deveria ser ignorada. Com isso, desapareceria a componente ze de z no dual.Feito isso, as condições de folgas complementares para os arcos vw de capacidadeinfinita seriam apenas

xvw > 0 implica −yv + yw = cvw.

Podemos dizer que as condições (3) também se aplicam aos arcos de capacidade infi-nita se convencionarmos que

zvw = 0 e zvwuvw = 0 quando uvw =∞. (4)

Segue daí que, para qualquer solução viável (y, z) do pl dual (2), temos yv + cvw ≥ ywquando uvw = ∞. Assim, do ponto de vista dos arcos de capacidade infinita, y é umpotencial viável no sentido da seção 2.2.

Feitas essas convenções e considerações, podemos supor que o pl (1) representa corre-tamente o problema 5.1. Em outras palavras, podemos nos comportar como se todosos arcos tivessem capacidade finita.

1 Nessa expressão, o “implica” tem precedência sobre o “e”.2 Nessa expressão, ao contrário da convenção usual, o “ou” tem precedência sobre o “e”.

Page 70: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

62 FLUXO VIÁVEL DE CUSTO MíNIMO FEOFILOFF

Exercícios

5.6 Verifique que o pl (2) é dual do pl (1).

5.7 ? Capacidades infinitas. Escreva as versões dos pl’s (1) e (2) que representam corretamente osarcos de capacidade infinita. Verifique que um é dual do outro. Escreva as condições de folgascomplementares (tratando em separado dos arcos de capacidade finita e infinita). Mostre quecx = yb+ zu se e somente se valem as condições de folgas complementares.

5.8 Suponha que uma rede (G, b, u, c) tem um fluxo ótimo. Para cada arco de capacidade infinita,queremos impor uma capacidade finita U tal que qualquer fluxo ótimo na nova rede seja ótimona rede original. Mostre que U =

∑(ue : e ∈ E, ue < ∞) +

∑(bv : v ∈ V, bv > 0) tem a

propriedade desejada. [CCPS 4.11]

5.9 Se b(V ) 6= 0, o pl (1) é inviável. Mostre que o pl dual (2) é ilimitado nesse caso.

5.10 Se b(A) > u+(A) para algum A ⊆ V , o pl (1) é inviável. Mostre que o pl dual (2) é ilimitado nessecaso.

5.3 Condições de otimalidade

Obtida uma solução x do problema 5.1, que certificado podemos apresentar para com-provar a minimalidade de cx?

Em vista da convenção (4), o problema 5.1 é equivalente ao programa linear (1) e por-tanto qualquer solução viável (y, z) do pl dual (2) que satisfaça a igualdade yb+zu = cxé um excelente certificado. Mas é possível apresentar esse certificado na forma defolgas complementares que não envolvem z mas apenas um potencial3 y:

Teorema 5.2 (condições de otimalidade) Um fluxo viável x numa rede (G, b, u, c) éótimo se existe um potencial y tal que

xvw > 0 implica yv+cvw ≤ yw e xvw < uvw implica yv+cvw ≥ yw (5)

para cada arco vw.

PROVA DO TEOREMA: Seja y um potencial com as propriedades (5). Seja z o vetordefinido por

zvw := min (0, yv + cvw − yw) (6)

para cada arco vw. (Essa definição é consistente com a convenção (4).) Então o par(y, z) é solução viável do pl (2). Além disso, (5) garante que

xvw > 0 implica zvw = yv+cvw−yw e xvw < uvw implica zvw = 0

para cada arco vw. Mas essas são, sem tirar nem por, as condições (3) de folgas comple-mentares do par dual (1, 2) de pl’s. Como (y, z) é solução viável do dual e as condiçõesde folgas complementares estão satisfeitas, temos cx = yb + zu. Portanto, x é soluçãoótima de (1), como queríamos provar.

3 Convém lembrar que um potencial é qualquer vetor (yv : v ∈ V ).

Page 71: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

FEOFILOFF FLUXO VIÁVEL DE CUSTO MíNIMO 63

O número yv + cvw − yw que aparece na prova do teorema é conhecido como custoreduzido do arco vw. Se adotarmos a notação4

cvw := yv + cvw − yw,

podemos apresentar as condições de otimalidade (5) de forma mais memorável:

xe > 0 implica ce ≤ 0 e xe < ue implica ce ≥ 0 (7)

para cada arco e.

EXEMPLO 3: Considere a rede (G, b, u, c) do exemplo 1. Veja novamente a matriz de adjacênciasdeG e o vetor de demandas b. À direita de b temos um potencial y. Mais à direita, um fluxo viável x(diferente dos fluxos do exemplo 1), o custo c dos arcos, e o custo reduzido c associado a y.

p v w q b y

p − 1 1 − −2 −10v − − 1 1 −1 −40w − − − 1 +1 0q − − − − +2 −10

pv pw vw vq wq

u 3 3 3 3 3x 2 0 3 0 2c −30 +80 +40 +90 −10c 0 +70 0 +60 0

O fluxo x e o potencial y satisfazem as condições de otimalidade (7). (Observe como é fácil conferiras condições percorrendo as linhas x e c da tabela.) Portanto, x é um fluxo ótimo e y é um certificadode otimalidade, conforme o teorema 5.2. (Embora isso seja supérfluo, verifique que cx = +40 =yb+ zu, supondo que z é definido por (6).)

Exercícios

5.11 Recíproca do teorema 5.2. Seja x uma solução ótima do pl (1). Prove que existe um vetor y quesatisfaz (5) para cada arco vw.

5.12 Seja x um fluxo viável numa rede (G, b, u, c) e y um potencial que satisfaz (5). Para um arvo vwtal que uvw = 0, quais são os possíveis valores da diferença yw − yw?

5.13 Custo vs. custo reduzido. Seja x um fluxo que satisfaz b e y é um potencial arbitrário. Seja c o custoreduzido associado a y. Mostre que cx = cx− yb.

5.14 Seja r um nó de um digrafo G com n nós. Suponha que br = −n + 1 e bv = +1 para cada v 6= r.Suponha que ue =∞ para cada arco e e c ≥ 0. Dê um algoritmo para resolver o problema do fluxode custo mínimo na rede (G, b, u, c). Como calcular um vetor y que tenha as propriedades (5)?

5.15 ? Enuncie a versão do teorema 5.2 apropriado para redes em que as capacidades de todos osarcos são infinitas. Mostre que o vetor y dessa versão do teorema é tal que cx = yb. Mostre que,para qualquer constante β, o vetor y + β tem as mesmas propriedades de y. Explique por que(y + β)b = yb.

5.4 Circuitos de aumento

Dado um fluxo viável x numa rede (G, b, u, c), como obter um novo fluxo viável maisbarato? Usaremos um mecanismo análogo ao dos caminhos de aumento do algoritmode Ford-Fulkerson (página 37, seção 3.5).

4 Acho que cy seria uma notação melhor.

Page 72: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

64 FLUXO VIÁVEL DE CUSTO MíNIMO FEOFILOFF

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 é deincremento se xe < ue para cada e em E(C) e xe > 0 para cada e em E(C). A largurade C é o maior número ε tal que xe− ε ≥ 0 para cada e em E(C) e xe + ε ≤ ue para cadae em E(C). A operação de enviar ε unidades de fluxo ao longo do circuito C consisteno seguinte: some ε a xe para 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 Cproduz um novo fluxo viável x′. O custo de x′ será cx+ c(C) ε, sendo

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

O número c(C) é conhecido como custo deC. Se esse custo for negativo e ε for positivo,o fluxo x′ será mais barato que x. Por isso, qualquer circuito de incremento que tenhacusto 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 temlargura 1. O custo do circuito é 40−10−90 = −60 e portanto o circuito é de aumento. Se enviarmos1 unidade de fluxo ao longo desse circuito teremos o fluxo viável x′ do exemplo 1. Observe quecx′ = cx− 60× 1 = 240− 60 = 180.

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

pv pw vw vq wq

c −30 +80 +40 +90 −10x′′ 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ãoexiste circuito de aumento para x.

PROVA: Suponha que o custo de x é mínimo. Se existisse um circuito de aumentopoderíamos usar esse circuito, como indicado acima, para obter um novo fluxo viávelde 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 deaumento para x. Gostaríamos de usar os resultados do capítulo 2, desenvolvidos paradicaminhos e dicircuitos, 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 deGx são os mesmos deG. Para cada arco vw deG tal que xvw < uvw há um arcovw de custo c′vw = cvw em Gx. Para cada arco vw de G tal que xvw > 0 há um arco wv decusto c′wv = −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 c′rv = 0 para cada nó v de G. É fácilentender a relação entreG eGx: todo circuito de incremento C emG corresponde a um

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

Page 73: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

FEOFILOFF FLUXO VIÁVEL DE CUSTO MíNIMO 65

dicircuito C ′ em Gx, e vice-versa. Ademais, o custo de C em G é igual ao custo de C ′

em Gx.

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

custo mínimo (página 16, seção 2.3). Por hipótese, a rede não tem dicircuito de custonegativo. Portanto, de acordo com o teorema 2.5, o algoritmo produzirá um potencialviável, ou seja, um potencial y tal que yi + c′ij ≥ yj para cada arco ij de Gx.

Considere as propriedades do potencial y no digrafo original G. Se xvw < uvw então vwé um arco de Gx e c′vw = cvw, donde yv + cvw ≥ yw, e portanto o custo reduzido de vwnão é negativo:

cvw ≥ 0 .

Por outro lado, se xvw > 0 então wv é um arco de Gx e c′wv = −cvw, donde yw+c′wv ≥ 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.

EXEMPLO 5: 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 −3b − − 1 1 +1c − − − 1 +1d − − − − +1

ab ac ad bc bd cd

u 9 9 9 9 9 9c +20 +20 +20 +10 +10 +10x 3 0 0 1 1 0

É apropriado fazer aqui duas observações, uma sobre a integralidade de x e y e outrasobre 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, opl (2) tem uma solução ótima (y, z) que é inteira.

PROVA: Como mostra a prova do teorema 5.3 e a análise dos algoritmos de dicaminhosmínimos do capítulo 2, existe um potencial y tal que, para cada v, yv é o custo de umdicaminho de custo mínimo de r a v no digrafo residual Gx. Como c é inteiro, todosesses 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.

Page 74: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

66 FLUXO VIÁVEL DE CUSTO MíNIMO FEOFILOFF

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 existeum tal dicircuito. Construa um digrafo auxiliar G′ da seguinte maneira. Remova deG todos os arcos de capacidade finita e acrescente um novo nó r e arcos rv de custo 0para cada v em V . É claro que G′ não tem dicircuito de custo negativo. Portanto, deacordo com o teorema 2.5, G′ tem um potencial y′ que é viável, no sentido da seção 2.2.A restrição y de y′ a G é tal que yv + cvw ≥ yw para cada arco vw de capacidade infinita.Defina z a partir de y como em (6). Teremos zvw = 0 para cada arco vw de capacidadeinfinita, o que é consistente com a convenção (4). Portanto, (y, z) é solução viável dopl (2). A existência dessa solução viável mostra (via teorema fraco da dualidade) que opl 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 usã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 inteirode custo menor que cx. Logo, não existe circuito de aumento. Então a prova do teo-rema 5.3 mostra que existe um potencial y que satisfaz as condições de otimalidade (7).Logo, cx ≤ cx′ para todo fluxo viável x′, 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ãoce, ue, xe. O custo do fluxo é cx = 25. Encontre um circuito de aumento. Calcule um fluxo viávelde 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 cadaarco e temos os números ce, ue, xe. Verifique que x é um fluxo viável. Prove que existe um fluxoviá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 dek dicaminhos de r a s, sem arcos em comum, que use o menor número possível de arcos. Formuleesse problema como um problema de fluxo de custo mínimo. Repita o problema com dicaminhossem nós em comum exceto r e s. [AMO 11.8]

Page 75: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

FEOFILOFF FLUXO VIÁVEL DE CUSTO MíNIMO 67

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

a b c d e b

a − 1 − − 1 −25b − − 1 − 1 0c − − − 1 − 0d − − − − − +25e − − 1 − 1 0

ab ae bc be cd ec ed

u 25 20 10 25 20 20 25c +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 umamaneira de calcular um potencial y que satisfaça as condições de otimalidade (5). (Sugestão: Vejaa prova do teorema 5.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) enúmeros nos arcos são pares (ce, ue). Encontre um fluxo viável x que satisfaça as condições deotimalidade (5). [CCPS 4.9]

5.5 Algoritmo dos circuitos de aumento

O algoritmo abaixo usa circuitos de aumento, como sugerido na seção 5.4, para resolvero problema do fluxo de custo mínimo (problema 5.1). O algoritmo obtém um primeirofluxo viável resolvendo a instância apropriada do problema de Gale (seção 4.3). A par-tir daí, cada iteração começa com um fluxo viável x e tenta transformar x num fluxoviável x′ de custo menor que cx.

FLUXODECUSTOMÍNIMO (G, b, u, c)

01 x← GALE (G, b, u)

02 se x indefinido03 então pare rede inviável04 repita05 C ← CIRCUITOAUMENTO (G, u, c, x)

06 se C indefinido07 então y ← POTENCIAL (G, u, c, x)

08 devolva x e y e pare fluxo ótimo

09 ε1 ← min(ue − xe : e ∈ E(C))

10 ε2 ← min(xe : e ∈ E(C))

11 ε← min(ε1, ε2)

12 se ε =∞

Page 76: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

68 FLUXO VIÁVEL DE CUSTO MíNIMO FEOFILOFF

13 então pare rede ilimitada14 x← ENVIAFLUXO (G, x, C, ε)

A rotina GALE (G, b, u) devolve um fluxo x que satisfaz b e respeita u. Se tal fluxo nãoexiste, x fica indefinido. (Na linha 03, o algoritmo poderia devolver um conjunto denós que viola as condições de Gale.)

A rotina CIRCUITOAUMENTO (G, u, c, x) devolve um circuito de aumento, conforme aprova do teorema 5.3. Se tal circuito não existe, C fica indefinido. Se C é dirigido etodos os seus arcos têm capacidade infinita, a rede é ilimitada, conforme o teorema 5.5.(Na linha 13, o algoritmo poderia devolver C como certificado do caráter ilimitado darede.)

A rotina POTENCIAL (G, u, c, x) recebe um fluxo ótimo x e calcula um potencial y quesatisfaz as condições (5). (Veja o exercício 5.20.)

A rotina ENVIAFLUXO (G, x, C, ε) atualiza x enviando ε unidades de fluxo ao longo docircuito C conforme o início da seção 5.4.

Número de iterações. O algoritmo FLUXODECUSTOMÍNIMO é muito útil para redespequenas, quando pode ser executado com lápis e papel. Para redes grandes, entre-tanto, o algoritmo é ineficiente pois cada iteração consome muito tempo e o númerode iterações pode aumentar exponencialmente com o número de nós da rede. Issoacontece pelos mesmos motivos que tornam ineficiente o algoritmo de Ford-Fulkerson(seção 3.5) para o problema do fluxo máximo.

Se b, u e c são inteiros e a rede (G, b, u, c) tem um fluxo ótimo x, o número de iteraçõesé finito. Segue daí que se b, u e c são racionais o número de iterações é finito. (Veja oexercício 3.35.)

Exercícios

5.22 Faça um esboço da implementação da rotina CIRCUITOAUMENTO. Escreva em código a rotinaPOTENCIAL.

5.23 Mostre que na linha 13 do algoritmo FLUXODECUSTOMÍNIMO tem-se E(C) = ∅ e ue = ∞ paratodo e em E(C).

5.24 Escreva em código a rotina ENVIAFLUXO.

5.6 Algoritmo Simplex Para Redes de Transbordo

Poderíamos resolver o problema do fluxo de custo mínimo (problema 5.1) submetendoo programa linear (1) ao algoritmo Simplex de programação linear (veja o livro deChvátal [Chv83]). Mas isso é ineficiente, pois o Simplex genérico não leva em contao caráter peculiar do pl (1). Para tirar proveito da estrutura especial de (1) é precisodesenvolver uma versão especializada do Simplex. Essa versão, conhecida como Sim-plex Para Redes (= Network Simplex), é o algoritmo mais usado na prática para resolver

Page 77: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

FEOFILOFF FLUXO VIÁVEL DE CUSTO MíNIMO 69

o problema.

Nessa primeira versão do Simplex Para Redes, tratamos apenas das redes que não têmrestrições de capacidade, isto é, das redes (G, b, u, c) em que ue = ∞ para todo cadaarco e. O correspondente conjunto de instâncias do problema do fluxo de custo mínimoé conhecido como problema do transbordo (= transshipment), ou da baldeação. Comoas capacidades são todas infinitas, um fluxo só preciso satisfazer b para ser consideradoviável.

Fluxos induzidos por árvores

O Simplex Para Redes substitui fluxos por árvores. Uma árvore de um digrafo G éuma árvore T tal que V (T ) = V (G) e E(T ) ⊆ E(G). (Num outro contexto, diríamosque T é uma árvore geradora de G.) Podemos confundir uma árvore com seu conjuntode arcos: se E ′ ⊆ E(G) e (V (G), E ′) é uma árvore, podemos dizer que E ′ uma árvorede G.

Para garantir que as redes em estudo tenham árvores, restringimos a atenção, daquiem diante, a digrafos conexos. Para digrafos não conexos, o problema do fluxo decusto mínimo pode ser resolvido separadamente em cada componente conexa.

Uma bipartição (T, L) do conjunto de arcos de uma rede (G, b) é arbórea se T é umaárvore. Uma bipartição arbórea (T, L) é viável se algum fluxo viável (ou seja, algumfluxo que satisfaz b) deixa vazios todos os arco que pertencem a L. Dizemos que umarco e é vazio em relação a um fluxo x se xe = 0.

Um fluxo x é induzido por uma bipartição arbórea (T, L) se x é viável e deixa vaziostodos os arcos de L. Como a palavra “induzido” sugere, existe um só fluxo com essapropriedade:

Proposição 5.7 Toda bipartição viável de uma rede (G, b) induz um único fluxo.

ESBOÇO DA PROVA: Para cada arco ij de T , xij é igual a b(Aj), sendo Aj a componenteconexa de T − ij que contém j.

Dizemos que uma bipartição viável (T, L) é degenerada se o fluxo induzido pela bi-partição deixa vazio algum arco de T .

Podemos nos dar ao luxo de tratar apenas de fluxos que são induzidos por bipartiçõesarbóreas porque se uma rede tem um fluxo viável então também tem um fluxo indu-zido (por uma bipartição arbórea). Além disso, se a rede tem um fluxo ótimo entãotambém tem um fluxo ótimo que é induzido.

A propósito, um fluxo é induzido (por uma bipartição arbórea) se e somente se todocircuito do digrafo tem um arco vazio. Isso é assim porque estamos supondo que odigrafo é conexo.

Page 78: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

70 FLUXO VIÁVEL DE CUSTO MíNIMO FEOFILOFF

Exercícios

5.25 Seja x um fluxo num digrafo conexo G. Suponha que todo circuito (dirigido ou não) em G temum arco vazio. Mostre que x é induzido por alguma bipartição arbórea.

5.26 ? Prove a proposição 5.7. Dê um algoritmo que receba uma bipartição arbórea (T, L) de uma rede(G, b), decida se a bipartição é viável, e em caso afirmativo calcule o fluxo induzido por (T, L).

5.27 Fluxo viável implica fluxo induzido. Prove a seguinte afirmação: se uma rede (G, b) tem um fluxoviável então também tem um fluxo viável induzido por alguma bipartição arbórea. Prove a se-guinte afirmação: se uma rede (G, b, c) tem um fluxo ótimo então também tem um fluxo ótimoque é induzido por alguma bipartição arbórea.

Potenciais induzidos por árvores

Para toda bipartição arbórea (T, L) de uma rede (G, c), existe um potencial y tal queyv + cvw = yw para cada arco vw de T . Dizemos que um tal potencial é induzidopor (T, L). Um potencial induzido por uma bipartição arbórea é quase único: se y ey′ são potenciais induzidos então a diferença yv − y′v é constante, ou seja, não dependede v.

Como mostra a seguinte proposição, qualquer potencial induzido por uma bipartiçãoarbórea “mede” os custos de caminhos na árvore. O custo de um caminho P numarede (G, c) é definido da mesma forma que o custo de um circuito na seção 5.4: c(P ) :=

c(E(P )) − c(E(P )), sendo E(P ) o conjunto dos arcos diretos de P e E(P ) o conjuntodos arcos inversos.

Proposição 5.8 Se y é um potencial induzido por uma bipartição arbórea (T, L) e r e ssão dois nós quaisquer então ys − yr = c(P ), sendo P o único caminho simples de ra s em T .

Dada uma bipartição arbórea (T, L) de G e um arco vw em L, o digrafo T + vw tem umúnico circuito no qual vw é um arco direto. (O circuito tem a forma P + vw, sendo Po único caminho simples de w a v em T .) Diremos que esse é o circuito fundamentalde T + vw. O custo desse circuito fundamental é igual ao custo reduzido yv + cvw − ywde vw:

Proposição 5.9 Seja y um potencial induzido por uma bipartição arbórea (T, L) e c ocusto reduzido associado a y. Para todo arco e de G, se e ∈ T então ce = 0 e se e ∈ Lentão ce = c(C), sendo C o circuito fundamental de T + e.

Exercícios

5.28 ? Dê um algoritmo que receba uma bipartição arbórea (T, L) de uma rede (G, c) e calcule umpotencial y induzido pela bipartição.

5.29 ? Prove a proposição 5.8 e a proposição 5.9.

Page 79: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

FEOFILOFF FLUXO VIÁVEL DE CUSTO MíNIMO 71

Simplex Para Transbordo

Ao receber uma rede de transbordo (G, b, c), o algoritmo Simplex Para Redes produzuma bipartição arbórea (T, L) e um potencial y tais que

ce = 0 para todo e em T e ce ≥ 0 para todo e em L, (8)

sendo c o custo reduzido associado a y. Portanto, o fluxo x induzido por (T, L) é ótimo,de acordo com teorema 5.2.

TRANSSHIPMENTSIMPLEX (G, b, c) G conexo01 (T, L)← BIPARTIÇÃOVIÁVEL (G, b)

02 se (T, L) é indefinido03 então pare rede inviável04 repita05 seja x o fluxo induzido por (T, L)

06 seja y um potencial induzido por (T, L)

07 seja c o custo reduzido associado a y08 se c ≥ 0

09 então devolva (T, L) e y e pare fluxo ótimo10 escolha um arco e tal que ce < 0

11 seja C o circuito fundamental de T + e

12 ε← min(xh : h ∈ E(C)

)13 se ε =∞14 então pare rede ilimitada

15 escolha h em E(C) tal que xh = ε

16 T ← T + e− h17 L← L+ h− e

A rotina BIPARTIÇÃOVIÁVEL (G, b) produz uma bipartição arbórea viável (T, L). Seuma tal bipartição não existe, a rede é inviável e (T, L) fica indefinido. A rotina podeser implementada da seguinte maneira: calcule um fluxo viável x (veja o problema deGale na seção 4.3); em seguida, aplique o algoritmo sugerido no exercício 5.27 paraobter uma bipartição viável.

No fim da linha 07, ce = 0 para todo arco e de T . No fim da linha 08, as condições deotimalidade (8) estão satisfeitas e portanto temos um fluxo ótimo. Na linha 14, a redeé ilimitada conforme o teorema 5.5.

Nas linhas 16–17, o arco e é transferido de L para T e o arco h é transferido de T para L.No fim da linha 17, (T, L) é uma bipartição viável e o fluxo induzido pela bipartiçãodeixará o arco h vazio.

Não é eficiente calcular x, y e c diretamente a partir de (T, L), como sugerem as li-nhas 05–07. É mais eficiente atualizar essas variáveis a partir de seus valores na iteraçãoanterior. (No caso de x, por exemplo, basta enviar ε unidades de fluxo ao longo docircuito C.) Uma implementação séria do algoritmo deve fazer isso.

EXEMPLO 6: Considere a rede de transbordo (G, b, c) descrita a seguir. (Faça uma figura.) O grafo

Page 80: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

72 FLUXO VIÁVEL DE CUSTO MíNIMO FEOFILOFF

G é dado por sua matriz de adjacências. A função-demanda b e os custos c dos arcos são dadas nastabelas.

p v w q b

p − 1 1 − −3v − − 1 1 +2w − − − 1 −1q − − − − +2

pv pw vw vq wq

c +10 +30 +10 +10 +10

Suponha que a primeira iteração começa a bipartição viável (T, L) cuja árvore T está indicada emnegrito na tabela abaixo. A tabela também registra o fluxo x e o potencial y induzidos por (T, L),bem como os custos reduzidos c. O custo do fluxo é cx = 70.

pv pw vw vq wq

x 2 1 0 0 2c 0 0 −10 −20 0

y

p 0v +10w +30q +40

O algoritmo escolhe o arco vw e envia 1 unidade de fluxo ao longo do circuito (v, w, p, v). O novofluxo terá custo cx = 70−10×1 = 60. O arco vw é transferido de L para T e o arco pw é transferidode T para L.

A segunda iteração começa com a bipartição arbórea (T, L) indicada abaixo em negrito. A tabeladá o fluxo induzido x, o potencial induzido y, e o custo reduzido c. O fluxo tem custo cx = 60.

pv pw vw vq wq

x 3 0 1 0 2c 0 +10 0 −10 0

y

p 0v +10w +20q +30

O algoritmo escolhe o arco vq e envia 1 unidade de fluxo ao longo do circuito (v, q, w, v). O novofluxo terá custo cx = 60− 10× 1 = 50.

A terceira iteração começa a bipartição arbórea (T, L), o fluxo x, e o potencial y indicados a seguir:

pv pw vw vq wq

x 3 0 0 1 1c 0 0 +10 0 0

y

p 0v +10w +10q +20

Como c ≥ 0, a execução do algoritmo termina. Para detetar eventuais erros aritméticos cometidodurante a execução do algoritmo, convém verificar que cx = yb.

No fim da linha 17, o custo do fluxo induzido por (T, L) é cx + ceε (veja a seção 5.4 ea proposição 5.9). Se ε não for nulo, o novo fluxo será mais barato que o anterior. Seε for nulo, o fluxo não se altera, embora a bipartição (T, L) seja modificada. Se issoacontece, a iteração é considerada degenerada. É claro que uma iteração degeneradasó acontece se a bipartição arbórea (T, L) no início da iteração for degenerada. Ite-rações degeneradas merecem atenção pois podem levar o algoritmo a ser executadoad æternum.

EXEMPLO 7: Considere a rede de transbordo (G, b, c) descrita a seguir. (Faça uma figura.) O grafoG é dado por sua matriz de adjacências. A função-demanda b e os custos c dos arcos são dados nas

Page 81: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

FEOFILOFF FLUXO VIÁVEL DE CUSTO MíNIMO 73

tabelas.

a b c d e f b

a − 1 1 − − − −4b − − − − 1 − 0c − − − 1 1 − −1d − 1 − − − 1 0e − − − − − 1 +1f − − − − − − +4

ab ac be cd ce db df ef

c +20 +50 +60 +30 +30 +30 +20 +30

A primeira iteração começa com a bipartição arbórea (T, L) indicada abaixo em negrito. A tabeladá o fluxo induzido x, o potencial induzido y, e o correspondente custo reduzido c. O custo dofluxo é cx = 560.

ab ac be cd ce db df ef

x 4 0 5 1 0 1 0 4c 0 +90 0 0 −90 0 −100 0

y

a +10b +30c −30d 0e +90f +120

O algoritmo escolhe o arco ce e envia 1 unidade de fluxo ao longo do circuito (c, e, b, d, c). Os arcoscd e db ficam vazios. O primeiro sai da árvore mas o segundo continua na árvore. O novo fluxotem custo cx = 560− 90× 1 = 470.

A segunda iteração começa com os dados a seguir. A bipartição arbórea é degenerada.

ab ac be cd ce db df ef

x 4 0 4 0 1 0 0 4c 0 0 0 +90 0 0 −100 0

y

a +10b +30c +60d 0e +90f +120

O algoritmo escolhe o arco df e portanto o circuito (d, f, e, b, d). Apenas 0 unidades de fluxo podemser enviadas ao longo do circuito. A iteração é degenerada. O fluxo x não se altera mas os arcos dfe db são transferidos entre T e L. A terceira iteração começa com os dados indicados a seguir:

ab ac be cd ce db df ef

x 4 0 4 0 1 0 0 4c 0 0 0 −10 0 +100 0 0

y

a −90b −70c −40d 0e −10f +20

O algoritmo escolhe o arco cd e envia 1 unidade de fluxo ao longo do circuito (c, d, f, e, c). O novofluxo tem custo cx = 470− 10× 1 = 460. A quarta iteração começa com os seguintes dados:

ab ac be cd ce db df ef

x 4 0 4 1 0 0 1 3c 0 −10 0 0 +10 +100 0 0

y

a −90b −70c −30d 0e −10f +20

Page 82: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

74 FLUXO VIÁVEL DE CUSTO MíNIMO FEOFILOFF

O algoritmo escolhe o arco ac e envia 3 unidades de fluxo ao longo do circuito (a, c, d, f, e, b, a).O novo fluxo tem custo cx = 460−10×3 = 430. A quinta iteração começa com os seguintes dados:

ab ac be cd ce db df ef

x 1 3 1 4 0 0 4 0c 0 0 0 0 0 +90 0 +10

y

a −80b −60c −30d 0e 0f +20

Como c ≥ 0, a execução do algoritmo termina.

Exercícios

5.30 Resolva a instância do problema do transbordo indicada na figura. Use o algoritmo Simplex ParaTransbordo. Os números junto aos nós são as demandas b. Os números nos arcos são os custos c.Comece com o fluxo x induzido pela bipartição arbórea (T, L) representada pelas linhas maisgrossas. [CCPS 4.22]

5.31 Escreva uma implementação da rotina BIPARTIÇÃOVIÁVEL.

5.32 Implementação eficiente. Mostre como representar T de maneira eficiente no algoritmo TRANS-SHIPMENTSIMPLEX. Mostre como os valores x, y e c podem ser calculados, a cada iteração, apartir dos valores de x, y e c na iteração anterior (evitando assim que os valores sejam calculadasdiretamente a partir de (T, L)).

Número de iterações

O algoritmo TRANSSHIPMENTSIMPLEX, tal como descrito acima, é infinito no pior caso,embora o pior caso seja muito raro na prática.

Cada iteração não-degenerada diminui o custo do fluxo. Como os fluxos são induzidospor bipartições arbóreas e o número de árvores G é finito, o número de iterações não-degeneradas também é finito. Já o número de iterações degeneradas pode ser infinito,pois uma mesma bipartição arbórea degenerada (T, L) pode aparecer no início de duas(e portanto infinitas) iterações.

Para evitar esse desastre, basta que no início de cada iteração a bipartição arbórea (T, L)seja mais que viável, no sentido que passamos a definir.

Antes de começar a execução do algoritmo, escolha um nó r (arbitrário mas fixo) parafazer o papel de raiz. No início de cada iteração, para cada nó j, seja Pj o único caminhode r a j em T . A bipartição arbórea viável (T, L) é considerada fortemente viável seo fluxo induzido pela bipartição tem a seguinte propriedade: cada arco vazio de T

Page 83: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

FEOFILOFF FLUXO VIÁVEL DE CUSTO MíNIMO 75

“aponta para longe de r”, ou seja, se ij é um arco vazio de T então ij é um arco (direto)de Pj .

Suponha que (T, L) é fortemente viável no início de uma iteração. Para que a bipartição(T−e+h, L−h+e) no início da linha 16 do código também seja fortemente viável, épreciso escolher o arco h na linha 15 do código como passamos a explicar. Seja s o nóde C que está mais próximo de r em T , isto é, o último nó comum aos caminhos Pv

e Pw. Percorra o circuito fundamental C a partir de s e

escolha para h o primeiro arco em E(C) que tenha xh = ε. (9)

Com isso, a bipartição (T+e−h, L−h+e) será fortemente viável.

Se (T, L) é fortemente viável no início de todas as iterações, a execução de TRANS-SHIPMENTSIMPLEX termina depois de um número finito de iterações. Resta apenasencontrar uma maneira de fazer com que a primeira bipartição arbórea (linha 01 docódigo) seja fortemente viável. Isso é um bom exercício.

EXEMPLO 8: Considere a rede de transbordo (G, b, c) descrita a seguir. (Faça uma figura.) O grafoG é dado por sua matriz de adjacências. Os custos c, o potencial y, e o custos reduzidos c foramomitidos. Adote o nó r com raiz e suponha que cij < 0.

r i j k l p q b

r − − − − 1 − − −2i − − 1 − − − 1 −1j − − − − − − − +1k − − 1 − − − − +1l − − − 1 − 1 − 0p − − − − − − − +1q − − − − − 1 − 0

rl ij kj lk lp qp iq

x 2 0 1 2 0 1 1

Execute uma iteração do Simplex Para Transbordo começando com a bipartição arbórea (T, L) quetem T = rl, kj, lk, lp, qp, iq. Note que (T, L) é fortemente viável. O algoritmo escolhe o arco ijpois cij < 0. O circuito fundamental de T + ij é (i, j, k, l, p, q, i). A largura do circuito é 1. Qualquerum dos arcos kj, qp, iq poderia ser removido de T para dar lugar a ij. Para garantir que a novabipartição arbórea seja fortemente viável, o algoritmo remove o arco qp.

EXEMPLO 9: Considere a rede de transbordo (G, b, c) descrita a seguir. (Faça uma figura.) O grafoG é dado por sua matriz de adjacências. A função-demanda b e os custos c dos arcos são dadas nastabelas. Adote o nó p como raiz. [CCPS fig.4.10]

p v w q b

p − − − − +10v 1 − 1 1 −10w 1 − − 1 −10q − − − − +10

vp wp vw vq wq

c +10 +10 +10 +10 +20

A primeira iteração começa com a bipartição arbórea (T, L) indicada a seguir (os arcos de T estãodestacados em negrito). A bipartição é degenerada mas fortemente viável. O fluxo induzido temcusto cx = 30.

vp wp vw vq wq

x 1 0 0 0 1c 0 +10 0 −20 0

y

p 0v −10w 0q +20

Page 84: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

76 FLUXO VIÁVEL DE CUSTO MíNIMO FEOFILOFF

O algoritmo escolhe o arco vq. O correspondente circuito fundamental, escrito a partir do nó maispróximo da raiz, é (v, q, w, v). Como ε = 0, a iteração é degenerada. O envio de 0 unidades de fluxoao longo do circuito não altera o fluxo mas altera a bipartição arbórea.

A segunda iteração começa com uma bipartição arbórea degenerada mas fortemente viável.O fluxo induzido tem custo cx = 30.

vp wp vw vq wq

x 1 0 0 0 1c 0 −10 +20 0 0

y

p 0v −10w −20q 0

O algoritmo escolhe o arco wp. O correspondente circuito fundamental, a partir do nó mais pró-ximo da raiz, é (p, v, q, w, p). Temos ε = 1 e o arco vp faz o papel de h. O envio de 1 unidade defluxo ao longo do circuito produz um novo fluxo de custo cx = 30− 10× 1 = 20.

A terceira iteração começa com uma bipartição arbórea degenerada mas fortemente viável. (Se aiteração anterior tivesse escolhido h = wq, a bipartição não seria fortemente viável.)

vp wp vw vq wq

x 0 10 0 10 0c +10 0 0 0 0

y

p 0v 0w −10q +10

Como c ≥ 0, a execução do algoritmo termina.

Exercícios

5.33 Suponha que (T, L) é fortemente viável no início de uma iteração em que ε = 0. Mostre que hestará em Pw (e não em Pv). Mostre que h será o último arco direto vazio de Pw.

5.34 Bipartição arbórea inicial. Encontre uma maneira de construir a bipartição viável (T, L) na linha 01do código de modo que ela seja fortemente viável.

5.35 Exemplo 7. Estude o exemplo 7. Adote o nó d como raiz e verifique que no início de cada iteraçãodo algoritmo a bipartição arbórea (T, L) é fortemente viável.

5.36 De fortemente viável a fortemente viável. Suponha que (T, L) é fortemente viável e h é escolhido deacordo com a regra (9). Mostre que no início da linha 16 a bipartição arbórea (T+e−h, L+h−e) éfortemente viável.

5.37 O número de iterações é finito. Seja r a raiz deG e defina y na linha 06 de modo que yr = 0 (e portantoyv = c(Pv) para cada v). Suponha que (T, L) é fortemente viável no início de uma iteração e sejaY o valor da soma

∑(yv : v ∈ V ) no fim da linha 06. Suponha que ε é nulo nessa iteração. Prove

que na próxima iteração, no fim da linha 06, a soma∑

(yv : v ∈ V ) será menor que Y . Deduza daíque o número de iterações degeneradas é finito. (Sugestão: Veja o teorema 4.12 de CCPS.)

5.7 Algoritmo Simplex Para Redes arbitrárias

O algoritmo Simplex Para Redes (= Network Simplex), resolve qualquer instância doproblema do fluxo de custo mínimo (problema 5.1), sem impor qualquer restriçãosobre as capacidades dos arcos. Esse algoritmo é uma generalização previsível doalgoritmo Simplex Para Transbordo discutido na seção anterior. É como se tivéssemos

Page 85: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

FEOFILOFF FLUXO VIÁVEL DE CUSTO MíNIMO 77

duas cópias do Simplex Para Transbordo trabalhando simultâneamente: uma cópia“normal”, idêntica à discutida na seção anterior, que cuida da restrição x ≥ 0, e umacópia “invertida”, que cuida de x ≤ u.

Como no início do capítulo, um fluxo numa rede (G, b, u) é viável se satisfaz b e res-peita u. Em relação a um fluxo viável x, diremos que um arco e está vazio se xe = 0 eestá cheio se xe = ue.

Começamos por estender algumas das definições da seção anterior. Como lá, vamossupor que os digrafos em estudo são conexos.

Tripartições viáveis

Uma tripartição (T, L, U) do conjunto de arcos de uma rede (G, b, u) é arbórea se Té uma árvore de G. Uma tripartição arbórea (T, L, U) é viável se algum fluxo viáveldeixa todos os arcos de L vazios e todos os arcos de U cheios.

A seguinte proposição mostra porquê podemos nos dar ao luxo de trocar fluxos viáveispor tripartições viáveis:

Proposição 5.10 Para qualquer tripartição viável (T, L, U), existe apenas um fluxo viá-vel x que deixa vazios os arcos de L e cheios os arcos de U .

Dizemos que o único fluxo viável a que se refere a proposição é induzido por (T, L, U).Se o fluxo induzido deixa algum arco de T vazio ou cheio, dizemos que a tripartição(T, L, U) é degenerada.

Como estamos supondo que G é conexo, podemos dizer que um fluxo é induzido poruma tripartição arbórea se e somente se todo circuito de G tem um arco vazio ou umarco cheio.

Exercícios

5.38 Prove a proposição 5.10. Dê um algoritmo que receba uma tripartição arbórea (T, L, U) de umarede (G, b, u), decida se a tripartição é viável, e em caso afirmativo calcule o fluxo induzido. Dêcondições necessárias e suficientes para que uma tripartição arbórea (T, L, U) seja viável.

5.39 Seja x um fluxo viável numa rede (G, b, u). Suponha que todo circuito (dirigido ou não) em G temum arco vazio ou um arco cheio. Mostre que x é induzido por alguma tripartição arbórea.

Page 86: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

78 FLUXO VIÁVEL DE CUSTO MíNIMO FEOFILOFF

5.40 Fluxo viável implica fluxo induzido. Prove as seguintes proposições: Se uma rede (G, b, u) tem umfluxo viável então também tem um fluxo viável que é induzido por uma tripartição arbórea. Seuma rede (G, b, u, c) tem um fluxo ótimo então também tem um fluxo ótimo que é induzido.(Sugestão: Dê um algoritmo que converta qualquer fluxo viável num fluxo induzido equivalente.)

Circuitos fundamentais e seus custos

Seja (T, L, U) uma tripartição arbórea do conjunto de arcos de uma rede (G, b, u). Paracada e em L, o circuito fundamental de T + e é o único circuito em T + e no qual e éum arco direto. Para cada e em U , o circuito fundamental de T + e é o único circuitoem T + e no qual e é um arco inverso.

Numa rede (G, c), um potencial y é induzido por uma tripartição arbórea (T, L, U) seyv + cvw = yw para cada arco vw de T . Esse potencial está intimamente relacionadocom o custo dos circuitos fundamentais:

Proposição 5.11 Seja (T, L, U) uma tripartição arbórea de uma rede (G, b, u, c). Seja yum potencial induzido pela tripartição e c o custo reduzido associado a y. Para todo eem T , ce = 0. Para todo e em L, ce = c(C), sendo C o circuito fundamental de T + e.Para todo e em U , ce = −c(C), sendo C o circuito fundamental de T + e.

Exercícios

5.41 ? Prove a proposição 5.11.

Simplex Para Redes arbitrárias

Ao receber uma rede (G, b, u, c), o algoritmo Simplex Para Redes produz uma triparti-ção viável (T, L, U) e um potencial y que satisfazem as condições de otimalidade:

ce = 0 para e em T e ce ≥ 0 para e em L e ce ≤ 0 para e em U,

sendo c o custo reduzido associado a y. Portanto, o fluxo x induzido por (T, L, U) éótimo, de acordo com teorema 5.2.

NETWORKSIMPLEX (G, b, u, c) G conexo01 (T, L, U)← TRIPARTIÇÃOVIÁVEL (G, b, u)

02 se (T, L, U) é indefinida03 então pare rede inviável04 repita05 seja x o fluxo induzido por (T, L, U)

06 seja y um potencial induzido por (T, L, U)

07 seja c o custo reduzido associado a y

Page 87: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

FEOFILOFF FLUXO VIÁVEL DE CUSTO MíNIMO 79

08 se ce ≥ 0 para todo e ∈ L e ce ≤ 0 para todo e ∈ U09 então devolva (T, L, U) e y e pare fluxo ótimo10 escolha e em L tal que ce < 0 ou e em U tal que ce > 0

11 seja C o circuito fundamental de T + e

12 ε1 ← min(xh : h ∈ E(C)

)13 ε2 ← min

(uh − xh : h ∈ E(C)

)14 ε← min (ε1, ε2)

15 se ε =∞16 então pare rede ilimitada

17 escolha h em E(C) tal que xh = ε ou h em E(C) tal que uh − xh = ε

18 T ← T + e− h19 se e ∈ L então L← L− e senão U ← U − e20 se h ∈ E(C) então L← L+ h senão U ← U + h

A rotina TRIPARTIÇÃOVIÁVEL (G, b, u) produz uma tripartição viável (T, L, U) e o fluxox induzido pela tripartição. Se tal tripartição não existe, x fica indefinido. Nessecaso, a rede é inviável (conforme o exercício 5.40). A rotina pode ser implementadada seguinte maneira: calcule um fluxo viável x; aplique o algoritmo sugerido peloexercício 5.40; escolha uma tripartição viável (T, L, U) (veja exercício 5.39).

No fim da linha 20, (T, L, U) é uma tripartição viável.

EXEMPLO 10. Considere a rede (G, b, u, c) descrita a seguir. (Faça uma figura.) O grafo G é dadopor sua matriz de adjacências. A função-demanda b e os custos c dos arcos são dadas nas tabelas.

p v w q b

p − 1 1 − −4v − − 1 1 0w − − − 1 +2q − − − − +2

pv pw vw vq wq

u ∞ ∞ 1 ∞ ∞c +10 +20 +8 +20 +20

Suponha que a primeira iteração começa com a tripartição viável (T, L, U) indicada abaixo. Osarcos de T estão indicados em negrito, os arcos de L estão sublinhados, e U é vazio. Veja na tabelao fluxo x e o potencial y induzidos pela tripartição.

pv pw vw vq wq

x 2 2 0 2 0c 0 0 −2 0 +10

y

p 0v +10w +20q +30

O algoritmo escolhe o arco vw e envia 1 unidades de fluxo ao longo do circuito (v, w, p, v). O arcovw fica cheio e é transferido de L para U . A tripartição (T, L, U) não se altera. O novo fluxo terácusto cx = 100− 2× 1 = 98.

A segunda iteração começa com a tripartição arbórea (T, L, U) indicada abaixo com uma barraacima dos arcos de U . O fluxo tem custo cx = 98.

pv pw vw vq wq

x 3 1 1 2 0c 0 0 −2 0 +10

y

p 0v +10w +20q +30

Page 88: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

80 FLUXO VIÁVEL DE CUSTO MíNIMO FEOFILOFF

Como ce ≥ 0 para todo e em L e ce ≤ 0 para todo e em U , o fluxo x é ótimo e a execução doalgoritmo termina.

Por via dúvidas, convém verificar que cx = yb+ zu. (Essa é uma boa maneira de detetar eventuaiserros aritméticos cometido durante a execução do algoritmo.) O vetor ze = min(0, ce) está indicadoabaixo:

pv pw vw vq wq

z 0 0 −2 0 0

Portanto, cx = 98 = 100− 2 = yb+ zu, como deveria ser.

Número de iterações. Tal como o TRANSSHIPMENTSIMPLEX, o algoritmo NETWORK-SIMPLEX pode executar um número infinito de iterações (embora esse evento sejamuito raro na prática). Para evitar isso, basta fazer o seguinte: (1) antes de iniciar aexecução do algoritmo, escolha um nó r como raiz; (2) adote yr = 0 em todas as itera-ções, (3) tome providências para que no início de cada iteração a tripartição (T, L, U)seja fortemente viável no início de cada iteração. Uma tripartição viável (T, L, U) éfortemente viável se o fluxo induzido pela tripartição tem a seguinte propriedade:cada arco ij de T que está vazio “aponta para longe da raiz” (ou seja, ij é um arcode Pj), e cada arco ij de T que está cheio “aponta na direção da raiz” (ou seja, ij é umarco de Pi).

Exercícios

5.42 ? É possível ter h = e na linha 17 do NETWORKSIMPLEX? Como o algoritmo se comporta nessecaso?

5.43 Suponha que numa certa iteração do NETWORKSIMPLEX escolhemos (na linha 10) um arco e emU .Seja C o circuito fundamental de T + e. Prove que c(C) < 0.

5.44 Mostre que ε = ∞ na linha 15 do NETWORKSIMPLEX se e somente se E(C) = ∅ e uh = ∞ paratodo h ∈ E(C). É verdade que isso só acontece se e ∈ L?

5.45 Tripartição arbórea inicial. Eis uma maneira feia mas efetiva de calcular a tripartição (T, L, U) inicialna linha 01. Antes de invocar o algoritmo, acrescente um novo nó r e novos arcos: para cada vtal que bv < 0, acrescente um arco vr com custo M e capacidade∞; para cada v tal que bv > 0,acrescente um arco rv com custo M e capacidade∞. Esses arcos todos são chamados artificiais.O primeiro grupo é A+ e o segundo é A−. A constante M deve ser positiva e muito grande. SejaT a árvore cujos são todos os arcos novos da forma vr, cada um com fluxo xvr = −bv , e todosos arcos novos da forma rv, cada um com fluxo xrv = bv . Faça L igual ao conjunto dos arcosoriginais e U = ∅. A tripartição é fortemente viável se tomarmos r como raiz. Como o custo M émuito alto, nenhum dos arcos artificiais estará na árvore final produzida pelo algoritmo.

Page 89: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

Capítulo 6

Cortes não-dirigidos mínimos

Este capítulo trata de cortes em grafos não-dirigidos. Um corte mínimo entre doisdados nós de um grafo pode ser calculado por qualquer algoritmo de fluxo máximoe corte mínimo, como o algoritmo de Ford-Fulkerson e Edmonds-Karp da seção 3.6,página 38. Portanto, para encontrar uma coleção “completa” de cortes mínimos —um corte para cada par de nós — num grafo com n nós basta invocar o algoritmon(n− 1)/2 vezes. R.E. Gomory e T.C. Hu descobriram (em 1961) que n− 1 invocaçõesdo algoritmo são suficientes, pois uma coleção “completa” de cortes mínimos tem aestrutura de uma árvore.

6.1 Submodularidade

Os capítulos anteriores trataram de digrafos; este trata apenas de grafos. Embora umgrafo seja essencialmente um tipo especial de digrafo, é apropriado adaptar algumasconvenções de notação e terminologia. As adaptações consistem, essencialmente, emsubstituir “arco” por “aresta” e ignorar a distinção entre ∂+ e ∂−. Assim, se R é umconjunto de nós de um grafo, denotamos por ∂(R) o conjunto de todas as arestasque têm uma das pontas em R e a outra em R. É claro que ∂(R) = ∂(R); essa é apropriedade que distingue cortes em grafos de cortes em digrafos.

Um corte num grafo é qualquer conjunto da forma ∂(R). Os conjuntos R e R são asduas margens do corte. Um conjunto R de nós separa dois nós se um está em R e ooutro em R. Se R separa r de s, dizemos também que ∂(R) separa r de s. Por vezes, émais cômodo dizer que ∂(R) está entre r de s.

Uma função-capacidade para um grafo G é qualquer função u que atribui um númeroue ≥ 0 a cada aresta e do grafo. Um grafo é capacitado se for dotado de uma função-capacidade. A capacidade de um corte C é o número u(C) :=

∑(ue : e ∈ C). Se R é

uma margem do corte, ou seja, se C = ∂(R), usaremos a abreviatura u(R) := u(C).

Em qualquer grafo capacitado, as capacidades dos cortes satisfazem a seguinte desi-gualdade:

81

Page 90: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

82 CORTES NÃO-DIRIGIDOS MíNIMOS FEOFILOFF

Proposição 6.1 (desigualdade submodular) Para quaisquer conjuntosA eB de nós deum grafo capacitado (G, u) tem-se

u(A ∩B) + u(A ∪B) ≤ u(A) + u(B) . (1)

PROVA: Como u ≥ 0, basta examinar a contribuição que cada aresta dá para cada ladoda desigualdade. Uma aresta e que tem uma ponta emA∩B e outra emA∩B contribuiue tanto para o lado esquerdo quanto para o lado direito da desigualdade.

A A

• •B

B• •

Uma aresta e de A ∩ B para A ∩ B contribui ue para o lado esquerdo e ue para o ladodireito. Uma aresta e de A ∩ B para A ∩ B contribui ue para cada lado. Uma aresta ede A ∩ B para A ∩ B contribui ue para cada lado. Uma aresta e de A ∩ B para A ∩ Bcontribui 2ue para cada lado. Finalmente, uma aresta e de A∩B para A∩B contribui 0para o lado esquerdo e 2ue para o lado direito da desigualdade.

Como u(R) = u(R) para qualquer R, a desigualdade submodular (1) pode ser reescritaem termos de interseções apenas: u(A ∩B) + u(A ∩B) ≤ u(A) + u(B).

6.2 Corte mínimo entre dois nós

Ao longo deste capítulo, usaremos duas definições da expressão corte mínimo. Emambas, a minimalidade se refere à capacidade do corte. A diferença entre as defini-ções está no conjunto de cortes onde o mínimo é tomado. A primeira definição usa oconjunto de todos os cortes que separam dois dados nós. A segunda não se prende adois nós fixos.

Começamos com a primeira definição. Para quaisquer dois nós r e s de um grafocapacitado (G, u), um corte C entre r e s é (r, s)-mínimo se u(C) ≤ u(C ′) para todocorte C ′ entre r e s. A desigualdade submodular (1) garante a seguinte propriedadefundamental:

Lema 6.2 Sejam r e s dois nós de um grafo capacitado (G, u) e A uma das margensde um corte (r, s)-mínimo. Para quaisquer dois nós p e q de A, existe um corte (p, q)-mínimo ∂(X) tal que X ⊆ A.

PROVA: Ajuste a notação (intercambiando r e s se necessário) de modo que r estejaem A e s esteja em A. Seja ∂(B) um corte (p, q)-mínimo. Ajuste a notação (intercambi-ando B e B se necessário) de modo que r esteja em B.

Page 91: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

FEOFILOFF CORTES NÃO-DIRIGIDOS MíNIMOS 83

A A

r • • s?

p •B

Bq •

• s?

Caso 1: s ∈ B. Nesse caso, A∩B separa p de q e A∩B separa s de r, donde u(A∩B) ≥u(B) e u(A ∩ B) ≥ u(A). De acordo com a desigualdade submodular (1), u(A ∩ B) +u(A ∩ B) ≤ u(A) + u(B). Segue daí que u(A ∩ B) = u(B), e portanto A ∩ B é margemde um corte (p, q)-mínimo. Ademais, A ∩B ⊆ A.

Caso 2: s ∈ B. Nesse caso, A∩B separa s de r e A∩B separa q de p, donde u(A∩B) ≥u(A) e u(A ∩ B) ≥ u(B). De acordo com a desigualdade submodular (1), u(A ∩ B) +u(A ∩ B) ≤ u(A) + u(B). Segue daí que u(A ∩ B) = u(B), e portanto A ∩ B é margemde um corte (p, q)-mínimo. Ademais, A ∩B ⊆ A.

Um argumento semelhante prova a seguinte variante do lema 6.2:

Lema 6.3 Sejam r e s dois nós de um grafo capacitado (G, u) e seja A uma das margensde um corte (r, s)-mínimo. Para qualquer p em A e qualquer q em A, existe um corte(p, q)-mínimo ∂(X) tal que X ⊆ A ou X ⊆ A.

EXEMPLO 1: Seja (G, u) um grafo capacitado em que G é uma árvore não-dirigida. Como u ≥ 0,um corte (r, s)-mínimo tem capacidade ue, sendo e uma aresta de capacidade mínima no únicocaminho simples de r a s na árvore. (Faça figuras!) As conclusões dos lemas 6.2 e 6.3 são óbvias enaturais nesse caso.

EXEMPLO 2: Seja (G, u) um grafo capacitado em que G consiste em um circuito. Para quaisquerdois nós r e s existem exatamente dois caminhos simples de r a s em G. (Faça figuras!) Digamosque os caminhos são P e Q. Como u ≥ 0, a capacidade de um corte (r, s)-mínimo é ua + ub,sendo a uma aresta de capacidade mínima em P e b uma aresta de capacidade mínima em Q. Façailustrações dos lemas 6.2 e 6.3 no contexto deste exemplo.

Exercícios

6.1 Prove o lema 6.3.

6.2 Dê um exemplo de uma árvore não-dirigida G, uma função u de E(G) em Q, e dois nós r e s taisque um corte (r, s)-mínimo tem mais de uma aresta. (Contrariando a convenção deste capítulo,u pode ter valores negativos.) Compare com o exemplo 1.

6.3 Complete a discussão do exemplo 2.

Page 92: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

84 CORTES NÃO-DIRIGIDOS MíNIMOS FEOFILOFF

6.3 Contrações e laminaridade

A contração (= shrinking) de um conjunto A de nós de um grafo G é a operação queproduz um novo grafo em que A é tratado como um nó. Mais precisamente, se V éo conjunto de nós de G, então o novo grafo G′ tem conjunto de nós (V r A) ∪ A econjunto de arestas definido da seguinte maneira: para cada aresta vw de G tal quev ∈ V r A, se w ∈ V r A então vw é aresta de G′ e se w ∈ A então vA é aresta de G′.1

(As arestas de G que têm ambas as pontas em A não estão representadas em G′.)

O novo grafo G′ não tem arestas paralelas. Ainda que G tenha arestas vw e vz comv ∈ V r A e w, z ∈ A, o grafo G′ terá uma só aresta vA.

Se G for dotada de uma função-capacidade u, a função-capacidade u′ no grafo G′ édefinida assim: u′vw := uvw para cada aresta vw de G′ com v e w em V r A e u′vA :=∑

(uvw : w ∈ A) para cada aresta vA de G′. Observe que

u′(X) = u(X) para qualquer subconjunto X de V r A. (2)

De modo mais geral, u′(X) = u(X) para qualquer subconjunto X de V (G′), desdeque o lado direito dessa igualdade seja tacitamente traduzido para o contexto de G: seX 6⊆ V r A, e portanto X 3 A, então o “X” na expressão “u(X)” deve ser entendidocomo (X r A) ∪ A.

Diremos que o grafo capacitado (G′, u′) que acabamos de definir é o resultado dacontração de A, ou que (G′, u′) é (G, u) com A contraído.

Em geral, a operação de contração é aplicada recursivamente: um conjunto A de nósde G é contraído produzindo um grafo G′; em seguida, um conjunto A′ de nós de G′

é contraído produzindo um grafo G′′; e assim sucessivamente. Em termos do grafooriginal G, os conjuntos A, A′, A′′, . . . constituem uma coleção laminar, conforme aseguinte definição: uma coleçãoR de subconjuntos de um conjunto V é laminar se

R ∩ S = ∅ ou R ⊆ S ou R ⊇ S

para cada par (R, S) de elementos da coleção.

EXEMPLO 3: A coleção a, b, c, d, a, b, c, e, f, f é laminar. Ela pode ser representada, demaneira muito compacta, pela expressão ((a b) (c) d) (e (f)), em que cada elemento do “universo”aparece no máximo uma vez.

Podemos dizer que o grafo obtido a partir de G por uma sequência de contrações temnós de dois tipos: os nós originais do grafo G e os pseudonós, que resultaram de con-trações. Os pseudonós são recursivos: cada um pode “conter” pseudonós, produzidospor contrações anteriores.

Exercícios

1 Há quem use a notação G×A para denotar o grafo G′.

Page 93: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

FEOFILOFF CORTES NÃO-DIRIGIDOS MíNIMOS 85

6.4 Árvores e coleções laminares. Seja T uma árvore não-dirigida e z um nó da árvore. Para cada arestaa de T , seja Aa o conjunto de nós da componente conexa de T − a que não contém z. Mostre quea coleção Aa : a ∈ E(T ) é laminar.

6.5 Tamanho de coleção laminar. Mostre que |A| ≤ 2|V | para toda coleção laminar A de subconjuntosde V .

6.4 Corte globalmente mínimo

Dados conjuntos W e R de nós de um grafo G, dizemos que R divide W se R separadois nós de W . Em outras palavras, R divide W se W ∩ R 6= ∅ e W ∩ R 6= ∅. Se Rdivide W , diremos também que ∂(R) divide W .

Um corte ∂(R) éW -mínimo se tiver capacidade mínima no conjunto de todos os cortesque dividem W . (Esta é a segunda definição da expressão “corte mínimo” .) É claroque a capacidade de um corte W -mínimo é o mínimo das capacidades dos cortes (r, s)-mínimos para todos os pares (r, s) de nós de W . Um corte V (G)-mínimo também échamado globalmente mínimo.

EXEMPLO 4: Seja (T, u) um grafo capacitado em que T é uma árvore não-dirigida. Seja a umaaresta de capacidade mínima. Então a é um corte globalmente mínimo de (T, u).

EXEMPLO 5: Seja (C, u) um grafo capacitado em que C consiste em um circuito. Seja a uma arestade capacidade mínima de C e b uma aresta de capacidade mínima de C−a. Então a, b é um corteglobalmente mínimo de (C, u).

Problema 6.4 (corte mínimo) Dado um grafo capacitado (G, u) e um subconjunto Wde V (G), encontrar um corte W -mínimo.

Diremos que W é um conjunto de terminais e que os elementos de W são nós ter-minais do grafo. Uma instância do problema tem solução se e somente se há dois oumais nós terminais. Se há exatamente dois nós terminais, o problema 6.4 é um casoparticular do problema do (fluxo máximo e) corte mínimo discutido na seção 3.5.

As instâncias do problema 6.4 que têm k nós terminais podem ser resolvidas mediantek(k − 1)/2 invocações de um algoritmo de fluxo máximo e corte mínimo. (Veja oexercício 3.38, página 39.) Gomory e Hu propuseram um algoritmo que faz apenask − 1 cálculos de fluxo máximo e corte mínimo para resolver o problema. O seguinteteorema resume a ideia:

Teorema 6.5 (Gomory e Hu) Seja W um conjunto de dois ou mais nós de um grafocapacitado (G, u). Para quaisquer dois nós r e s de W e qualquer corte (r, s)-mínimo∂(R) tem-se

cap(G, u,W ) = min(cap(G′, u′,W ∩R), u(R), cap(G′′, u′′,W ∩R)

),

sendo (G′, u′) o grafo capacitado que resulta da contração de R e (G′′, u′′) o grafo capa-citado que resulta da contração de R.

Page 94: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

86 CORTES NÃO-DIRIGIDOS MíNIMOS FEOFILOFF

Nesse enunciado, cap(G, u,W ) denota a capacidade de um corteW -mínimo em (G, u).Se |W | < 2, adotamos a convenção cap(G, u,W ) :=∞.

ESBOÇO DA PROVA: Seja ∂(Z) um corte W -mínimo em (G, u). É claro que u(Z) =cap(G, u,W ). Começamos por mostrar que

u(Z) ≤ min (α′, u(R), α′′) ,

sendo α′ := cap(G′, u′,W ∩ R) e α′′ := cap(G′′, u′′,W ∩ R). Se α′ = ∞, é evidenteque u(Z) < α′. Suponha agora que α′ < ∞. Pode-se dizer que qualquer corte (W ∩R)-mínimo em G′ divide W em G e, em virtude de (2) na seção 6.3, tem a mesmacapacidade em (G′, u′) e (G, u). Portanto, u(Z) ≤ α′. Um argumento análogo mostraque u(Z) ≤ α′′. Finalmente, u(Z) ≤ u(R) pois ∂(R) divide W .

Resta mostrar que u(Z) ≥ α′ ou u(Z) ≥ α′′ ou u(Z) ≥ u(R). Há três casos a considerar:

Caso 1: ∂(Z) divideW ∩R. Seja p um nó emW ∩R∩Z e q um nó emW ∩R∩Z. O corte∂(Z) é (p, q)-mínimo. Como p e q estão emR, o lema 6.2 garante queX ⊆ R para algumcorte (p, q)-mínimo ∂(X). É claro que u(X) = u(Z). Como X é subconjunto de V (G′)e divide W ∩ R, temos u′(X) ≥ α′. De acordo com (2) na seção 6.3, u′(X) = u(X).Portanto, u(Z) ≥ α′.

Caso 2: ∂(Z) divideW ∩R. Um argumento análogo ao do caso 1 mostra que u(Z) ≥ α′′.

Caso 3: ∂(Z) não divide W ∩ R nem W ∩ R. Como ∂(Z) divide W , temos Z = R ouZ = R. Portanto, u(Z) = u(R).

O teorema leva imediatamente ao seguite algoritmo, que recebe um grafo capacitado(G, u) e um conjunto W com 2 ou mais nós e devolve uma margem de um corte W -mínimo:

CORTEMÍNIMO (G, u,W ) |W | ≥ 2

01 sejam r e s dois nós de W02 R← MAXFLOWMINCUT (G, u, r, s)

03 se |W ∩R| ≥ 2

04 então (G′, u′)← CONTRAÇÃO(G, u,R

)05 R′ ← CORTEMÍNIMO (G′, u′,W ∩R)

06 se u(R′) < u(R) então R← R′ u(R′) = u′(R′)

07 se |W ∩R| ≥ 2

08 então (G′′, u′′)← CONTRAÇÃO (G, u,R)

09 R′′ ← CORTEMÍNIMO(G′′, u′′,W ∩R

)10 se u(R′′) < u(R) então R← R′′ u(R′′) = u′′(R′′)

11 devolva R

Na linha 02, a rotina MAXFLOWMINCUT implementa um algoritmo de fluxo máximoe corte mínimo, como o da seção 3.6, na página 38. A rotina recebe dois nós r e se devolve uma das margens de um corte (r, s)-mínimo. (Também devolve um fluxomáximo, mas esse é ignorado.)

Na linha 04, a rotina CONTRAÇÃO recebe G, u e R e devolve o grafo capacitado (G′, u′)

Page 95: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

FEOFILOFF CORTES NÃO-DIRIGIDOS MíNIMOS 87

que resulta da contração de R. O propósito da contração de R na linha 04 é garantirque os cortes calculados por CORTEMÍNIMO na linha 05 não dividam R.

O terceiro argumento das várias invocações recursivas de CORTEMÍNIMO é sempreum subconjunto do conjunto original de terminais, ou seja, o terceiro argumento nuncainclui nós contraídos. Por outro lado, cada nó contraído contém, em geral, nós criadospor contrações anteriores.

EXEMPLO 6 (ÁRVORE): Seja G o grafo capacitado representado pela matriz de adjacências-e-capacidades abaixo. Faça uma figura e observe que G é uma árvore não-dirigida.

a b c d e f

a − 1 − − − −b 1 − 2 − 3 −c − 2 − − − −d − − − − 4 −e − 3 − 4 − 5f − − − − 5 −

Aplique o algoritmo CORTEMÍNIMO ao grafo capacitado (G, u) com W = V (G). Suponha quer = b e s = e na linha 01 e R = a, b, c na linha 02. O grafo G′ tem conjunto de nós a, b, c, Rmasapenas os nós a, b e c são considerados terminais. Depois da linha 05, podemos ter R′ = a (ouR′ = b, c, R). O grafoG′′ tem conjunto de nós R, d, e, fmas apenas os nós d, e e f são terminais.Depois da linha 09, podemos ter R′′ = d. (Observe que a coleção R,R′, R′′ é laminar, podendoser representada pela expressão ((a) b c) (d).) Como u(R) = 3, u(R′) = 1 e u(R′′) = 4 o algoritmodevolve R′ na linha 11.

EXEMPLO 7 (CIRCUITO): Seja G o grafo representado pela matriz de adjacências-e-capacidadesabaixo. Faça uma figura e observe que G consiste em um circuito com 4 nós.

a b c d

a − 7 − 5b 7 − 3 −c − 3 − 2d 5 − 2 −

Submeta (G, u,W ) ao algoritmo CORTEMÍNIMO com W = V (G). Suponha que r = a e s = bna linha 01. No fim da linha 02 teremos R = a, d e u(R) = 9. No fim da linha 05 teremosR′ = d e u(R′) = 7. No fim da linha 09 teremos R′′ = c e u(R′′) = 5. Portanto, cap(G, u,W ) =min (7, 9, 5) = 5. (Ao longo de todas as invocações recursivas de CORTEMÍNIMO, a variável Rassume os valores a, d, d e c. Essa coleção de conjuntos é laminar, podendo ser representadapela expressão ((d) a) (c).)

EXEMPLO 8: Aplique o algoritmo CORTEMÍNIMO ao grafo capacitado (G, u) da figura com W =V (G). (A figura foi copiada de cseweb.ucsd.edu/classes/fa06/cse202/Gomory-Hu%20Tree.pdf.)A tabela à direita da figura mostra os sucessivos valores das variáveis r, s eR. O algoritmo devolveo conjunto de nós h, i. (A coleção de todos os valores que R assume é laminar, podendo serrepresentada pela expressão (g (j)) (h (i)).)

r s R u(R)

e j g j 5g j j 5e h h i 2h i i 4

Page 96: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

88 CORTES NÃO-DIRIGIDOS MíNIMOS FEOFILOFF

EXEMPLO 9: Podemos repetir o exemplo 8 fazendo escolhas diferentes de r, s e R. Veja o resultadona tabela abaixo. O algoritmo devolve e, g, j. (A coleção de todos os conjuntos R pode serrepresentada pela expressão (e (g (j))) (h).)

r s R u(R)

e h e g j 2e j g j 5g j j 5h i h 4

Se o grafo G estiver representado por uma figura numa folha de papel, o algoritmoCORTEMÍNIMO pode ser executado de maneira informal e iterativa. As contraçõesnão precisam ser feitas explicitamente. No início de cada iteração, teremos um coleçãolaminar R de subconjuntos de V . Cada elemento de R é indicado na figura por uma“bola”, como num diagrama de Venn. Em cada iteração, escolha dois nós terminais pe q que não estejam separados por nenhum elemento de R e encontre um conjunto Rque tenha as seguintes propriedades: separe p de q, minimize u(R), e seja laminar comrelação aR. Feito isso, acrescente R aR e comece nova iteração.

Consumo de tempo. O consumo de tempo do algoritmo CORTEMÍNIMO é proporci-onal ao número de invocações do algoritmo MAXFLOWMINCUT. Se denotarmos porf(k) o número máximo de invocações ao processar um grafo com k terminais, teremosf(1) = 0 e f(k) = 1 + max (f(k′) + f(k′′)) para k ≥ 2, sendo max tomado sobre todos ospares (k′, k′′) de inteiros positivos tais que k′ + k′′ = k. Portanto,

f(k) = k − 1

para todo k ≥ 1. Assim, o consumo de tempo do algoritmo é O(k F (n,m)), sendoF (n,m) o consumo de MAXFLOWMINCUT para um grafo com n nós em arestas. Comok ≤ n e F (n,m) = O(nm), podemos dizer que o algoritmo consome O(n2m) unidadesde tempo.

O algoritmo CORTEMÍNIMO não é muito rápido. Outros algoritmos para o pro-blema 6.4 têm o mesmo consumo assintótico mas são mais rápidos porque a constanteescondida na notação O() é menor. (Surpreendentemente, alguns desses algoritmosnão usam qualquer algoritmo de fluxo máximo e corte mínimo.) Apesar disso, é im-portante discutir o algoritmo CORTEMÍNIMO porque ele é a porta de entrada para oalgoritmo mais abrangente a ser estudado em seguida.

Exercícios

6.6 Complete a prova do teorema 6.5.

6.7 Cortes mínimos em árvores. Descreva um algoritmo especializado que resolva as instâncias doproblema 6.4 em que G é uma árvore não-dirigida.

6.8 Cortes mínimos em circuitos. Descreva um algoritmo especializado que resolva as instâncias pro-blema 6.4 em que G consiste em um circuito e nada mais.

6.9 Grafo teta. SejaH um grafo conexo cada um de cujos nós tem grau 2 ou 3. Suponha que exatamentedois dos nós têm grau 3. Seja u uma função-capacidade para H . Qual a capacidade de um corteglobamente mínimo em (H,u)?

Page 97: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

FEOFILOFF CORTES NÃO-DIRIGIDOS MíNIMOS 89

6.10 Reescreva o código do algoritmo CORTEMÍNIMO de modo que ele também aceite grafos comapenas um nó terminal. (Será preciso inventar uma convenção apropriada para representar umasolução nesse caso extremo.)

6.5 Árvores Gomory-Hu

O problema central deste capítulo é uma generalização do problema 6.4. Trata-se deencontrar uma coleção R de apenas n − 1 cortes com a seguinte propriedade: paraqualquer par (r, s) de nós distintos, algum dos cortes emR é (r, s)-mínimo. O seguinteconceito, introduzido por Gomory e Hu, contém a semente da solução do problema.2

Uma árvore de cortes, ou árvore Gomory-Hu, de um grafo capacitado (G, u) é qual-quer árvore não-dirigida T tal que V (T ) = V (G) e, para cada aresta ij de T , os con-juntos de nós das duas componentes conexas de T − ij são as margens de um corte(i, j)-mínimo de (G, u). (Note que ij pode não ser aresta de G.)

EXEMPLO 10: Seja (T, u) um grafo capacitado em que T é uma árvore não-dirigida. É fácil verificarque T é uma árvore Gomory-Hu de (T, u).

EXEMPLO 11: Seja (C, u) um grafo capacitado em que C consiste em um circuito. Seja e uma arestade capacidade mínima. Então C − e é uma árvore Gomory-Hu de (C, u).

A definição de árvore Gomory-Hu exige apenas a minimalidade dos cortes que sepa-ram as duas pontas de cada aresta de T . Mas essa exigência implica na minimalidadedos cortes que separam quaisquer pares de nós de G, como veremos a seguir. Adote aseguinte notação:3 para cada par (r, s) de nós, seja u(r, s) a capacidade de um corte(r, s)-mínimo em (G, u).

Proposição 6.6 Seja T uma árvore Gomory-Hu de um grafo capacitado (G, u). Sejamr e s dois nós de G e P o único caminho simples de r a s em T . Então u(r, s) = u(i, j),sendo ij uma aresta de P que minimiza u(i, j).

PROVA: Seja I o conjunto de nós de uma das duas componentes conexas de T − ij.Logo, u(I) = u(i, j). Como I separa r de s, temos u(r, s) ≤ u(I). Resta mostrarque u(r, s) ≥ u(i, j). Seja p1, p2, . . . , pk a sequência de nós de P . De acordo com olema 6.7 abaixo, u(p1, pk) ≥ min (u(p1, p2), u(p2, p3), . . . , u(pk−1, pk)). O lado esquerdodessa desigualdade é u(r, s) e o lado direito é u(i, j). Logo, u(r, s) ≥ u(i, j).

Lema 6.7 Em qualquer grafo capacitado (G, u), para qualquer sequência p1, p2, . . . , pkde nós diferentes entre si, tem-se u(p1, pk) ≥ min (u(p1, p2), . . . , u(pk−1, pk)).

PROVA: A prova é uma indução no comprimento da sequência. Se k = 2, a desigual-dade é trivialmente verdadeira. Suponha então que k = 3. Seja C1 um corte mínimoentre p1 e p2, seja C2 um corte mínimo entre p2 e p3, e seja D um corte mínimo entre p1

2 A apresentação é baseada na seção 15.4 de Sch03.3 No jargão das linguagens de programação, essa notação é um overload do símbolo u.

Page 98: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

90 CORTES NÃO-DIRIGIDOS MíNIMOS FEOFILOFF

e p3. Se D separa p2 de p3 então u(p2, p3) = u(C2) ≤ u(D) = u(p1, p3). Caso contrário,D separa p2 de p1 e portanto u(p1, p2) = u(C1) ≤ u(D) = u(p1, p3). Qualquer que seja ocaso, u(p1, p3) não é menor que u(p1, p2) ou não é menor que u(p2, p3). Portanto,

u(p1, p3) ≥ min (u(p1, p2), u(p2, p3)) . (3)

Isso estabelece a base da indução. Se k ≥ 4, a hipótese de indução aplicada à sequênciap1, p3, . . . , pk−1, pk permite concluir que u(p1, pk) ≥ min (u(p1, p3), . . . , u(pk−1, pk)). Essadesigualdade, combinada com (3), leva à desigualdade desejada.

Para qualquer árvore Gomory-Hu T de um grafo capacitado (G, u), é natural definir aseguinte função-capacidade u em T : para cada aresta ij da árvore, uij := u(I), sendo Io conjunto de nós de uma das componentes conexas de T−ij. Podemos dizer que (T, u)é uma árvore Gomory-Hu capacitada. Para qualquer par (r, s) de nós, a capacidade deum corte (r, s)-mínimo em (G, u) é igual à capacidade de uma aresta de capacidademínima no único caminho simples de r a s em (T, u).

EXEMPLO 12: A matriz de adjacências-e-capacidades abaixo define uma árvore Gomory-Hu capa-citada do grafo capacitado da figura.

e g h i j

e − 5 − − −g 5 − − 2 5h − − − 4 −i − 2 4 − −j − 5 − − −

Exercícios

6.11 Sejam r, s e t três nós de um grafo capacitado (G, u). Seja B um corte mínimo entre r e s, seja Cum corte mínimo entre s e t, e seja D um corte mínimo entre r e t. Mostre que dois desses cortestêm a mesma capacidade e o terceiro tem capacidade não menor que a dos outros dois.

6.12 Circuito. Seja G o grafo que consiste no circuito (a, b, c, d, e, f, g, h, a). Suponha que as arestasde e ha têm capacidade 10 e todas as demais têm capacidade maior que 10. (Faça uma figura.)Verifique que (G − de − ha) + dh é uma árvore Gomory-Hu do grafo capacitado. (A árvore éinduzida pelo caminho (a, b, c, d, h, g, f, e). Note que a aresta dh da árvore não pertence a G.)

6.13 Seja G o grafo que consiste no circuito (a, b, c, d, e) e nada mais. Suponha que todas arestas têmcapacidade 1. Desenhe a árvore Gomory-Hu sugerida pela expressão (c) (((e) d) a) b. Calculeuma árvore Gomory-Hu de G diferente da anterior. Calcule uma terceira árvore, diferente dasanteriores.

6.14 ? Grafo teta. Seja H um grafo conexo cada um de cujos nós tem grau 2 ou 3. Suponha queexatamente dois dos nós têm grau 3. Seja u uma função-capacidade paraH . Descreva uma árvoreGomory-Hu de (H,u).

6.15 É verdade que a definição de árvore Gomory-Hu só faz sentido para grafos capacitados conexos?

6.16 Seja (T, u) uma árvore Gomory-Hu capacitada de um grafo capacitado (G, u). Seja ij uma arestade T , seja r um nó em uma das componentes conexas de T−ij, e seja s um nó na outra componenteconexa de T − ij. É verdade que o corte mínimo entre r e s em G tem capacidade uij?

6.17 ? [A. Frank.] SejaG um grafo com a seguinte propriedade: para cada par (r, s) de nós, há um corteentre r e s com menos que k arestas. Mostre que G tem um nó de grau menor que k. [CCPS 3.72]

Page 99: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

FEOFILOFF CORTES NÃO-DIRIGIDOS MíNIMOS 91

6.6 Algoritmo para árvore Gomory-Hu

Esta seção mostra que todo grafo capacitado tem uma árvore Gomory-Hu. Portantotoda instância do seguinte problema tem solução.

Problema 6.8 Dado um grafo capacitado (G, u), encontrar uma árvore Gomory-Hude (G, u).

Para resolver o problema, será necessário generalizar a definição de árvore Gomory-Hu. Dado um subconjunto não vazio W de V (G), diremos que uma árvore Gomory-Hu de (G, u,W ) é um par (T,A) em que T uma árvore não-dirigida eA é uma partiçãode V (G) tais que

(1) V (T ) = W ,(2) cada elemento de A contém exatamente um nó de W ,(3) para cada aresta ij de T , se I é o conjunto de nós de uma das componentes

conexas de T − ij então⋃

(A ∈ A : A ∩ I 6= ∅) é uma das margens de um corte(i, j)-mínimo de (G, u).

Se (T,A) é uma árvore Gomory-Hu de (G, u, V (G)) então T é uma árvore Gomory-Hude (G, u) no sentido da seção 6.5; ademais, cada elemento de A contém um único nóde G. No outro extremo, se |W | = 1 e (T,A) é uma árvore Gomory-Hu de (G, u,W )então T = (W, ∅) e V (G) é o único elemento de A.

Teorema 6.9 (Gomory e Hu) Para qualquer conjunto W de nós de um grafo capaci-tado (G, u), o terno (G, u,W ) tem uma árvore Gomory-Hu.

PROVA: A prova é um algoritmo de divisão e conquista que pode ser assim resumido:faça uma bipartição (W ′,W ′′) de W , encontre uma árvore Gomory-Hu de (G, u,W ′),encontre uma árvore Gomory-Hu de (G, u,W ′′), e ligue as duas árvores por uma arestaapropriada. Essa ideia é apresentada a seguir na forma de uma indução em |W |.A base da indução é o caso em que |W | = 1. Nesse caso, a árvore Gomory-Hu é o partrivial ((W, ∅), V (G)).

Suponha agora que |W | ≥ 2. Seja V o conjunto de nós e E o conjunto de arestas de G.Sejam r e s dois nós em W e seja ∂(R) um corte (r, s)-mínimo de (G, u). Seja (G′, u′) ografo capacitado que resulta da contração deR e (G′′, u′′) o grafo capacitado que resultada contração de R.

Podemos supor, por hipótese de indução, que (G′, u′,W ∩R) tem uma árvore Gomory-Hu (T ′,A′). Seja A′ o elemento de A′ que contém o nó R de G′. Seja w′ o único nó deA′ ∩ (W ∩ R). Seja A′0 a partição de R que se obtém a partir de A quando o nó R éremovido de A′.

Podemos supor, por hipótese de indução, que (G′′, u′′,W∩R) tem uma árvore Gomory-Hu (T ′′,A′′). Defina A′′, w′′ e A′′0 por analogia com A′, w′ e A′0. A coleção de conjuntos

A := A′0 ∪ A′′0

Page 100: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

92 CORTES NÃO-DIRIGIDOS MíNIMOS FEOFILOFF

é uma partição de V . É claro que cada elemento deA contém exatamente um nó de W .Seja T a árvore (T ′ + T ′′) + w′w′′. É claro que V (T ) = W . Para mostrar que o par(T,A) é uma árvore Gomory-Hu de (G, u,W ), resta apenas provar que a condição (3)da definição está satisfeita. Seja, pois, ij uma aresta de T e considere, em separado, oscasos ij = w′w′′, ij ∈ E(T ′), e ij ∈ E(T ′′).

Caso 1: ij = w′w′′. Seja I o conjunto de nós de uma componente conexa de T − w′w′′.Então I = V (T ′) ou I = V (T ′′). Suponha que vale a primeira alternativa; o tratamentoda segunda é análogo. Então I = W ∩ R. Seja I∗ :=

⋃(A ∈ A : A ∩ I 6= ∅). Como

A ∩ I 6= ∅ somente quando A ∈ A′0, temos I∗ = R, uma vez que (T ′,A′) é uma árvoreGomory-Hu. Basta, portanto, mostrar que R é margem de um corte (w′, w′′)-mínimoem (G, u).

Seja ∂(X) um corte (w′, w′′)-mínimo de (G, u). De acordo com o lema 6.3, podemossupor que X ⊆ R ou X ⊆ R. Ajuste a notação (intercambinado R e R se necessário)de modo que valha a primeira alternativa. Ajuste a notação (intercambiando r e s senecessário) de modo que tenhamos r ∈ R e s ∈ R.

Suponha inicialmente que r ∈ X . Então X separa r de s e portanto u(X) ≥ u(R) umavez que ∂(R) é (r, s)-mínimo. Por outro lado, u(R) ≥ u(X) pois R separa w′ de w′′.Logo, u(X) = u(R) e portanto R é margem de um corte (w′, w′′)-mínimo em (G, u).

Suponha agora que r /∈ X . Então X separa r de w′ e portanto o corte ∂(X) contémalguma aresta e do único caminho simples de r a w′ em T ′. Seja J o conjunto de nós dacomponente conexa de T ′ − e que contém r. Seja J∗ :=

⋃(A ∈ A′ : A ∩ J 6= ∅). Como

(T ′,A′) é uma árvore Gomory-Hu, temos u′(J∗) ≤ u′(X) pois X separa w′ de w′′ em G′.Por outro lado, como r ∈ J e J∗ separa r de s em G, temos u(J∗) ≥ u(R). Finalmente,em virtude de (2) na seção 6.3, u(R) = u(J∗). Segue daí que R é margem de um corte(w′, w′′)-mínimo em (G, u).

Caso 2: ij ∈ T ′. Seja I o conjunto de nós de uma componente conexa de T ′− ij. Ajustea notação (trocando I por V (T ′) r I se necessário) de modo que I não contenha w′.Seja I∗ :=

⋃(A ∈ A′ : A ∩ I 6= ∅). Por hipótese, I∗ é margem de um corte (i, j)-mínimo

de (G′, u′). Mostraremos a seguir que I é o conjunto de nós de uma componente conexade T − ij e que I∗ é margem de um corte (i, j)-mínimo de (G, u).

O lema 6.2 garante que X ⊆ R para algum corte (i, j)-mínimo ∂(X) em (G, u). ComoX separa i de j em G′, temos u′(X) ≥ u′(I∗).

Observe agora que I é o conjunto de nós de uma das componentes conexas de T − ij,uma vez que w′ /∈ I . Ademais, I∗ ⊆ R. Como I∗ separa i de j em G, temos u(I∗) ≥u(X). Em virtude da desigualdade anterior e de (2) na seção 6.3, temos u(I∗) = u(X).Portanto, I∗ é margem de um corte (i, j)-mínimo de (G, u).

Caso 3: ij ∈ T ′′. Seja I o conjunto de nós da componente conexa de T ′′ − ij que nãocontém w′′. Seja I∗ :=

⋃(A ∈ A′′ : A ∩ I 6= ∅). Um raciocínio análogo ao do caso 2

mostra que I é o conjunto de nós de uma das componentes conexas de T − ij e I∗ émargem de um corte (i, j)-mínimo de (G, u).

A prova do teorema leva imediatamente ao seguinte algoritmo, que calcula uma árvoreGomory-Hu de (G, u,W ):

Page 101: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

FEOFILOFF CORTES NÃO-DIRIGIDOS MíNIMOS 93

GOMORYHU (G, u,W ) |W | ≥ 1

01 se |W | = 1

02 então T ← (W, ∅)03 A ← V (G)04 devolva (T,A)

05 senão sejam r e s dois nós de W06 R← MAXFLOWMINCUT (G, u, r, s)

07 (G′, u′)← CONTRAÇÃO(G, u,R

)08 (T ′,A′)← GOMORYHU (G′, u′,W ∩R)

09 seja A o elemento de A′ que contém o nó R10 seja w′ o único nó de A ∩W ∩R11 A′0 ← (A′ r A) ∪ Ar R12 (G′′, u′′)← CONTRAÇÃO (G, u,R)

13 (T ′′,A′′)← GOMORYHU(G′′, u′′,W ∩R

)14 seja A o elemento de A′′ que contém o nó R15 seja w′′ o único nó de A ∩W ∩R16 A′′0 ← (A′′ r A) ∪ Ar R17 T ← T ′ + T ′′ + w′w′′

18 A ← A′0 ∪ A′′019 devolva (T,A)

Consumo de tempo. Tal como CORTEMÍNIMO, o algoritmo GOMORYHU consomeO(k F (n,m)) unidades de tempo, sendo k := |W |, n := |V (G)|, m := |E(G)| e F (n,m)o consumo de MAXFLOWMINCUT. Como k ≤ n e F (n,m) = O(nm), o consumo detempo de GOMORYHU é O(n2m).

EXEMPLO 13: Aplique o algoritmo GOMORYHU ao grafo capacitado G da figura abaixo com W =V (G). A tabela à direita da figura mostra a sequência de valores das variáveis r, s e R. A coleção(laminar) de valores de R pode ser representada pela expressão (((b) a) c) (e) ((h) x) d. À direitada tabela temos a árvore Gomory-Hu capacitada, representada por uma matriz de adjacências-e-capacidades. [CCPS 3.71]

r s R u(R)

h e h x 7c b a b 8a b b 8c d a b c 9d e e 8h x h 8

a b c d e h x

a − 8 8 − − − −b 8 − − − − − −c 8 − − 9 − − −d − − 9 − 8 − 7e − − − 8 − − −h − − − − − − 8x − − − 7 − 8 −

Exercícios

6.18 Calcule uma árvore Gomory-Hu para cada um dos grafos capacitados representados nas figurasabaixo (copiadas de cseweb.ucsd.edu/classes/fa06/cse202/Gomory-Hu%20Tree.pdf).

Page 102: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

94 CORTES NÃO-DIRIGIDOS MíNIMOS FEOFILOFF

6.19 A matriz de adjacências abaixo define um grafo G. (Faça uma figura.) Suponha que todas asarestas têm capacidade 1. Calcule uma árvore Gomory-Hu de G.

a b c d e f g h i

a − 1 1 − − − − − −b 1 − 1 − − 1 − − −c 1 1 − − − − − 1 −d − − − − 1 1 − − −e − − − 1 − 1 − − 1f − 1 − 1 1 − − − −g − − − − − − − 1 1h − − 1 − − − 1 − 1i − − − − 1 − 1 1 −

6.7 Construção iterativa da árvore Gomory-Hu

Segue uma versão não-recursiva da construção de uma árvore Gomory-Hu de (G, u).Cada iteração do algoritmo começa com uma árvore não-dirigida T = (A, E), sendoA uma partição do conjunto V de nós de G. Os nós de T , ou seja, os elementos de A,serão chamados vértices e as arestas de T , ou seja, os elementos de E , serão chamadosligações.

A primeira iteração começa com A = V e E = ∅. Em cada iteração temos doiscasos. Se cada vértice de T contiver apenas um nó de G então pare: T é uma árvoreGomory-Hu. Senão, algum elemento A de A tem dois ou mais nós de G. Considere ascomponentes conexas da floresta T − A. (No exemplo abaixo, há quatro componentesconexas: uma tem vértices B1, B2 e B3, outra tem apenas o vértice C1, outra temvértices D1 e D2, e outra tem vértices E1, E2 e E3.) Para cada componente conexa Kde T − A, contraia o conjunto V (K) em G. Seja GA o grafo resultante dessa contração.(No exemplo abaixo, o conjunto B1 ∪ B2 ∪ B3 passa a ser um nó de GA. Também C1,D1 ∪D2 e E1 ∪ E2 ∪ E3 são nós de GA.)

Seja uA a função-capacidade em GA induzida por u. Sejam y e z dois nós de G —e também de GA — que pertencem a A. Calcule um corte mínimo entre y e z nografo capacitado (GA, uA). Seja X uma margem desse corte. Cada elemento de A ésubconjunto de X ou subconjunto de X .

Agora modifique a árvore T = (A, E) da seguinte maneira. O vértice A é subdivididoem dois novos vértices, Y := A ∩ X e Z := A ∩ X , e uma ligação Y Z é acrescentadaa E . Cada ligação que existia em T entre A e outro vértice F é trocada por uma ligaçãoentre Y e F se F ⊆ X e trocada por uma ligação entre Z e F se F ⊆ X . (No exemploabaixo, supondo que X = B1 ∪B2 ∪B3 ∪ E1 ∪ E2 ∪ E3, a ligação AB1 é trocada pela

Page 103: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

FEOFILOFF CORTES NÃO-DIRIGIDOS MíNIMOS 95

nova ligação Y B1, a ligação AE1 é trocada pela ligação Y E1, a ligação AC1 é trocadapela ligação ZC1, e a ligação AD1 é trocada por ZD1.) Isso encerra uma iteração.

EXEMPLO 14: Seja G o grafo representado pela primeira das figuras abaixo. As figuras se-guintes mostram a árvore T no início de sucessivas iterações da construção de uma árvoreGomory-Hu de G. (Figuras copiadas de https://cseweb.ucsd.edu/classes/fa06/cse202/Gomory-Hu%20Tree.pdf. Há um rótulo errado na última figura: o primeiro “h” da árvore deveria serum “j”.)

Page 104: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

96 CORTES NÃO-DIRIGIDOS MíNIMOS FEOFILOFF

Page 105: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

Capítulo 7

Emparelhamentos máximos

Este capítulo discute o problema dos emparelhamentos de cardinalidade máxima emgrafos. A solução desse problema — que começou com W. Tutte em 1947 e culminoucom J. Edmonds em 1965 — é um importante marco no desenvolvimento da otimizaçãocombinatória.

As técnicas desenvolvidas no capítulo 5 para tratar de fluxos não são suficientes pararesolver os problemas de emparelhamento, em parte porque os grafos não são dirigi-dos. É preciso desenvolver novas técnicas.

7.1 O problema

Um emparelhamento (= matching) num grafo não-dirigido é um conjuntoM de arestastal que todo nó pertence a no máximo uma das arestas de M . Um emparelhamento Mé máximo se tem cardinalidade máxima, ou seja, se |M | ≥ |M ′| para qualquer outroemparelhamento M ′.

Problema 7.1 (do emparelhamento máximo) Encontrar um emparelhamento máximonum grafo.

O problema é relativamente fácil quando restrito a grafos bipartidos. Essa restrição jáfoi estudada na seção 4.1 como caso particular do problema do fluxo máximo (veja oteorema de de Konig na página 45).

Um emparelhamento M cobre um nó v se v é ponta de alguma aresta de M . Se M nãocobre v, diz-se que v está exposto por M . O número que M deixa expostos é

n− 2|M |

sendo n o número de nós do grafo. Um emparelhamento é máximo se e somente seminimiza o número de nós expostos. Nosso problema pode ser parafraseado assim:dado um grafo G, encontrar um emparelhamento que minimize o número de nósexpostos.

97

Page 106: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

98 EMPARELHAMENTOS MÁXIMOS FEOFILOFF

EXEMPLO 1: A figura mostra um emparelhamento de tamanho 4. Há 2 nós expostos.

Denota-se por ν(G) a cardinalidade de um emparelhamento máximo no grafo G e pordef(G) o número de nós expostos por um emparelhamento máximo. Evidentemente

def(G) = n− 2ν(G).

Exercícios

7.1 Emparelhamento maximal. Um emparelhamento M em um grafo G é maximal se não existe em-parelhamento M ′ tal que M ′ ⊃ M . Em outras palavras, M é maximal se não existe aresta e emE(G) rM tal que M ∪ e é um emparelhamento. Mostre que todo emparelhamento maximalé grande. Mais precisamente, mostre que |M | ≥ 1

2 ν(G) para todo emparelhamento maximal M .[AMO 12.40]

7.2 Aplicação. É dado um conjunto de trabalhadores, um conjunto de postos de trabalho, e o conjuntode todos os pares (t, p) tais que o trabalhador t está habilitado a ocupar o posto p e o posto p estádisposto a contratar t. Queremos encontrar um emparelhamento máximo de trabalhadores compostos de trabalho.

7.3 Aplicação: pares de pilotos. Uma companhia de aviação opera aviões que precisam ser tripuladospor dois pilotos. Nem todos os pares de pilotos estão habilitados a voar juntos. Problema: seleci-onar um conjunto de pares de pilotos compatíveis de modo a colocar o maior número possível deaviões no ar.

7.2 Caminhos alternantes

Seja M um emparelhamento num grafo. Um caminho alternante é um caminho sim-ples cujas arestas estão alternadamente em M e fora de M . Um caminho alternanteé aumentador, ou de aumento (= augmenting path), se tiver pelo menos uma aresta, eseus extremos forem expostos por M . Para ressaltar a dependência de M , podemosusar as expressões “caminho M -alternante” e “caminho M -aumentador”.

(Caminhos alternantes são análogos aos caminhos de incremento usados pelo algo-ritmo de fluxo máximo na seção 3.4, página 34. Mas algumas diferenças são óbvias: láos grafos eram dirigidos, enquanto aqui não são; lá podíamos ter dois ou mais arcosconsecutivos de um mesmo tipo (direto ou inverso), enquanto aqui as arestas estãoalternadamente no emparelhamento e fora dele.)

Page 107: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

FEOFILOFF EMPARELHAMENTOS MÁXIMOS 99

C. Berge mostrou (1957) que caminhos aumentadores caracterizam emparelhamentosmáximos:

Teorema 7.2 (Berge) Um emparelhamento M é máximo se e somente se não existecaminho M -aumentador.

A prova do teorema usa o seguinte conceito. A diferença simétrica entre dois conjun-tos S e T é o conjunto (SrT )∪ (T rS) = (S ∪T )r (S ∩T ), que denotamos por S⊕T .

PROVA DO TEOREMA: Suponha que P é um caminho M -aumentador. Então M ⊕E(P )é um emparelhamento que cobre todos os nós cobertos por M e mais alguns (quantosmais?). Logo, M não é máximo.

Suponha agora que um emparelhamento M não é máximo. Então existe um empare-lhamento maior, digamos N . Cada nó do grafo pertence a no máximo duas arestas doconjunto M ⊕N . Portanto, cada componente conexa do subgrafo induzido por M ⊕Nconsiste em um circuito ou um caminho simples. Como |N | > |M |, algum caminhotem mais arestas em N que em M . Qualquer caminho desse tipo é M -aumentador.

A prova do teorema sugere um algoritmo para encontrar um emparelhamento máximoem qualquer grafo. Mas o algoritmo esbarra numa dificuldade fundamental: comoprocurar por um caminho aumentador? Trataremos dessa questão mais adiante.

Exercícios

7.4 Seja M um emparelhamento em um grafo G. Use o método de prova do teorema 7.2 para mostrarque há pelo menos ν(G)− |M | caminhos aumentadores sem nós em comum. [CCPS 5.2]

7.5 Seja M um emparelhamento de cardinalidade 4000 num grafo que tem um emparelhamento decardinalidade 5000. Use o resultado do exercício 7.4 para mostrar que o grafo tem um caminhoM -aumentador de comprimento no máximo 9. [CCPS 5.3]

7.6 Sejam M1 e M2 dois emparelhamentos em um grafo bipartido G com bipartição (P1, P2). Mostreque existe um emparelhamento N que cobre todos os nós de P1 cobertos por M1 e todos os nósde P2 cobertos por M2. [AMO 12.8]

Page 108: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

100 EMPARELHAMENTOS MÁXIMOS FEOFILOFF

7.3 Componentes ímpares e a fórmula de Tutte-Berge

Conforme definição na seção 4.1, página 43, uma cobertura é um conjunto de nós quecontém pelo menos uma ponta de cada aresta do grafo. Coberturas fornecem umadelimitação superior de ν(G): para qualquer cobertura K tem-se ν(G) ≤ |K|. Mas adesigualdade é usualmente estrita, mesmo quando K é uma cobertura mínima.

Uma delimitação superior mais poderosa precisa do conceito de componente ímpar.Uma componente ímpar (= odd component) de um grafo H é qualquer componenteconexa de H que tem um número ímpar de nós. O número de componentes ímparesde H é denotado por oc(H).

Proposição 7.3 Para qualquer grafo G e qualquer subconjunto A de V (G), def(G) ≥oc(G−A)− |A|, ou seja,

ν(G) ≤ 12

(n− oc(G−A) + |A|

), (1)

onde n := |V (G)|.

A expressão G− A denota o subgrafo de G induzido por V (G)− A. Essa notação seráusada com frequência no que segue. A propósito, não é difícil verificar que o númeron− oc(G−A) + |A| é par.

PROVA: Seja M um emparelhamento de G e A um subconjunto de V (G). SejamH1, . . . , Hk as componentes ímpares de G− A.

Cada grafo Hi tem um nó exposto por M ou um nó ligado por M a A. Por outro lado,no máximo |A| arestas de M têm uma ponta em A. Portanto, M deixa pelo menosk − |A| nós expostos. Em outras palavras, n − 2|M | ≥ k − |A|. Segue daí que |M | ≤12(n− k + |A|).

A proposição tem a seguinte consequência: para provar que um dado emparelhamentoM é máximo, basta exibir um conjunto A de nós tal que n − 2|M | = oc(G−A) − |A|.W. Tutte e C. Berge mostraram (1947 e 1958) que todo grafo tem um tal “certificado demaximalidade”:

Teorema 7.4 (fórmula de Tutte-Berge) Em qualquer grafo G,

maxM|M | = min

A

12

(n− oc(G−A) + |A|

),

Page 109: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

FEOFILOFF EMPARELHAMENTOS MÁXIMOS 101

sendo maxM tomado sobre todos os emparelhamentos M e minA tomado sobre todosos subconjuntos A de V (G).

Um emparelhamento é perfeito se não deixa nenhum nó exposto. Ocasionalmenteusaremos a abrviatura “ep” para a expressão “emparelhamento perfeito”. A fórmulade Tutte-Berge equivale a um teorema de Tutte sobre ep’s:

Teorema 7.5 (Tutte) Um grafo G tem um emparelhamento perfeito se e somente seoc(G−A) ≤ |A| para todo subconjunto A de V (G).

Essa condição para existência de um ep é conhecida como condição de Tutte.

EXEMPLO 2: A figura mostra um emparelhamento perfeito. Dizer que um grafo G tem um ep é omesmo que dizer que ν(G) = 1

2n, ou que def(G) = 0.

Exercícios

7.7 Mostre que minA12 (n− oc(G−A) + |A|) ≤ |K| para qualquer cobertura K.

7.8 Mostre que minA12 (n− oc(G−A) + |A|) = k se G consiste em um circuito de comprimento 2k+ 1

e nada mais.

7.9 ? Mostre que, para qualquer grafo G o número 12

(n− oc(G−A) + |A|

)é inteiro, qualquer que seja

o subconjunto A de V (G).

7.10 Mostre que se G tem um ep então oc(G− v) = 1 para cada nó v.

7.11 ? Mostre que uma árvore T tem ep se e somente se oc(T − v) = 1 para cada nó v.

7.12 Mostre que a fórmula de Tutte-Berge (teorema 7.4) vale quando G é uma árvore. (Dica: Árvoressão bipartidas.)

7.13 ? Teorema de Hall. Mostre que, no caso de grafos bipartidos, a condição de Tutte equivale à se-guinte: |N(B)| ≥ |B| para todoB ⊆ P e todoB ⊆ Q, sendo (P,Q) uma bipartição do grafo eN(B)o conjunto de todos os nós adjacentes a nós de B. (Sua prova não deve usar emparelhamentos.)[CCPS 3.21]

7.14 Use a proposição 7.3 para provar que o emparelhamento indicado na figura é máximo. (Dica:Veja os nós brancos.)

7.15 Exiba um emparelhamento com 7 arestas. Mostre que o emparelhaemento é máximo. [CCPS 5.14]

Page 110: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

102 EMPARELHAMENTOS MÁXIMOS FEOFILOFF

7.16 ? Seja G um grafo e k um inteiro positivo não maior que n/2. Construa um grafo G′ que tenhaa seguinte propriedade: G′ tem um ep se e somente se G tem um emparelhamento de tama-nho k. (A construção deve ser “genérica”, isto é, não pode depender da estrutura de G.) Useessa construção para provar a fórmula de Tutte-Berge (teorema 7.4) a partir do Teorema de Tutte(teorema 7.5). [CCPS 5.5]

7.17 Teorema de Petersen. Seja G um grafo tal que G− e é conexo para cada aresta e e grau(v) = 3 paratodo nó v. Use o teorema de Tutte (teorema 7.5) para mostrar G tem um ep. (Dica: Mostre que|∂(C)| ≥ 3 para todo conjunto ímpar C de nós.) [CCPS 5.7]

Contração de circuitos ímpares e a prova dos teoremas

A prova dos teoremas 7.4 e 7.5 exige a introdução de duas ideias: nós essenciais econtração de circuitos.

Seja C um circuito em um grafo G. A contração (= shrinking) de C é a operação queproduz um novo grafo que tem conjunto de nós (V (G) r V (C)) ∪ C e conjunto dearestas definido da seguinte maneira: para cada aresta vw de G tal que v ∈ V (G) rV (C), se w ∈ V (G) r V (C) então vw é aresta do novo grafo e se w ∈ V (C) então vC éaresta do novo grafo. (As eventuais “diagonais” de C não estão representadas no novografo.) Esse novo grafo será denotado por G×C.

(Ao contrário do que sugere a figura, a operação de contração não produz arestas“paralelas”.) A operação de contração tem a seguinte propriedade: se o circuito Cé ímpar — ou seja, tem comprimento ímpar — então qualquer emparelhamento emG×C pode ser propagado para dentro de C de modo a produzir um emparelhamentoem G:

Proposição 7.6 Se C é um circuito ímpar e M ′ é um emparelhamento em G×C entãohá um emparelhamento M em G tal que M ⊆ M ′ ∪ E(C) e o número de nós de G queM deixa expostos é igual ao número de nós de G′ que M ′ deixa expostos.

Page 111: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

FEOFILOFF EMPARELHAMENTOS MÁXIMOS 103

PROVA: SejaG′ o grafoG×C. Suponha inicialmente que o nó C deG′ é coberto porM ′.Então M ′ tem uma aresta da forma vC que se originou de uma aresta vw de G talque v /∈ V (C) e w ∈ V (C). Seja M ′′ um ep em C − w. Então M := M ′ ∪ M ′′ é umemparelhamento em G que tem as propriedades desejadas. O número de nós de G queM deixa expostos é igual ao número de nós de G×C que M ′ deixa expostos, ou seja,n− 2|M | = n′ − 2|M ′|.Suponha agora que o nó C deG×C não é coberto porM ′. Nesse caso, escolha qualquerw em V (C) e repita a construção do parágrafo anterior.

Segue dessa proposição que def(G) ≤ def(G×C) para qualquer circuito ímpar C,ou seja,

ν(G) ≥ ν(G×C) + 12(|V (C)| − 1) . (2)

Dizemos que o circuito C é justo (= tight) se (2) vale com igualdade, isto é, se existeum emparelhamento máximo em G que usa exatamente 1

2(|V (C)| − 1) arestas de C.

Se todos os circuitos ímpares fossem justos, o problema de encontrar um emparelha-mento máximo em G poderia ser reduzido ao problema de emparelhamento máximono grafo G×C. Infelizmente, nem todo circuito ímpar é justo, como mostra a figura.

Para tentar caracterizar os circuitos ímpares justos, o seguinte conceito é importante.Um nó v de um grafo G é essencial (= essential) se todo emparelhamento máximocobre v, ou seja, se ν(G−v) < ν(G). É claro que se v é essencial então ν(G−v) = ν(G)−1.

EXEMPLO 3: No grafo induzido por um circuito de comprimento par, todos os nós são essenciais.Já no grafo induzido por um circuito ímpar, nenhum nó é essencial.

Na árvore definida pela matriz de adjacências abaixo, somente os nós a e b são essenciais.

a b c d e f

a − 1 1 1 − −b 1 − − − 1 1c 1 − − − − −d 1 − − − − −e − 1 − − − −f − 1 − − − −

Proposição 7.7 Se um conjunto A satisfaz a condição (1) com igualdade então todo nóde A é essencial.

PROVA: Seja v um nó em A e tome G′ := G − v. Então G′ − (A r v) tem as mesmascomponentes conexas que G − A. Portanto, ν(G′) ≤ 1

2(n − 1 − oc(G−A) + |A| − 1) <

12(n− oc(G−A) + |A|) = ν(G).

Page 112: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

104 EMPARELHAMENTOS MÁXIMOS FEOFILOFF

Lema 7.8 Para qualquer aresta vw de um grafo G, se v e w não são essenciais então vwpertence a algum circuito ímpar justo C; ademais, C é um nó não-essencial de G×C.

PROVA: Seja M1 um emparelhamento máximo que não cobre v. Seja M2 um empare-lhamento máximo que não cobre w. Note que M1 cobre w e M2 cobre v. Considere ografo H induzido por M1 ⊕ M2. A componente conexa de H que contém v consisteem um caminho simples P com origem v. Se o término de P fosse exposto por M1,teríamos um caminho M1-aumentador, o que contradiz a maximalidade de M1. Se otérmino de P fosse um nó exposto por M2 e diferente de w, o caminho (w, v) · P seriacaminho M2-aumentador, o que contradiz a maximalidade de M2. Portanto, P terminaem w e tem comprimento par. Logo, C := P · (w, v) é um circuito ímpar.

O emparelhamento máximo M1 contém (|V (C)| − 1)/2 arestas de C. Logo, C é justo.Finalmente, M1rE(C) é um emparelhamento máximo em G×C e não cobre o nó C deG×C.

Agora que as proposições 7.6 e 7.7 e o lema 7.8 prepararam o terreno, podemos daruma prova da fórmula de Tutte-Berge.

PROVA DO TEOREMA 7.4: Seja G um grafo com n nós. A proposição 7.3 já mostrou quen − 2|M | ≥ oc(G − A) − |A| para qualquer emparelhamente M e qualquer A ⊆ V (G).Resta mostrar que existe um emparelhamento M e um conjunto A tais que n− 2|M | ≤oc(G− A)− |A|, ou seja, tais que M deixa no máximo oc(G− A)− |A| nós expostos.

A prova é uma indução no número de arestas. Se o conjunto de arestas é vazio, aafirmação vale com M = ∅ e A = ∅. Agora suponha que o conjunto de arestas não évazio e seja vw uma aresta qualquer.

Considere inicialmente o caso em que uma das pontas de vw é um nó essencial. Ajustea notação (intercambinado v e w se necessário) de modo que v seja o nó essencial. SejaG′ := G − v e n′ := n − 1. Por hipótese de indução, podemos supor que G′ tem umemparelhamento M ′ e um conjunto A′ tais que n′ − 2|M ′| ≤ oc(G′ − A′) − |A′|. SejaA := A′ ∪ v e observe que oc(G − A) = oc(G′ − A′). Seja M um emparelhamentomáximo em G e observe que |M | ≥ |M ′|+ 1, uma vez que ν(G− v) = ν(G)− 1. Temosentão

n− 2|M | ≤ n− 2|M ′| − 2= n′ − 2|M ′| − 1≤ oc(G′ − A′)− |A′| − 1= oc(G− A)− |A|

e portanto M deixa no máximo oc(G− A)− |A| nós de G expostos.

Considere agora o caso em que v e w são não-essenciais. Pelo lema 7.8, G tem um cir-cuito ímpar justo, digamos C. SejaG′ := G×C e n′ o número de nós deG′. Por hipótesede indução, podemos supor que G′ tem um emparelhamento M ′ e um conjunto A′ taisque n′ − 2|M ′| ≤ oc(G′ − A′) − |A′|. Pelo lema 7.8, o nó C de G′ não é essencial. Pelaproposição 7.7, o nó C de G′ não pode estar em A′. Logo, oc(G′ − A′) ≤ oc(G − A′),uma vez que toda componente ímpar deG′−A′, mesmo que contenha o nó C, tambémé uma componente ímpar de G − A′. Por outro lado, pela proposição 7.6, existe um

Page 113: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

FEOFILOFF EMPARELHAMENTOS MÁXIMOS 105

emparelhamento M de G tal que n− 2|M | = n′ − 2|M ′|. Logo,

n− 2|M | = n′ − 2|M ′|≤ oc(G′ − A′)− |A′|≤ oc(G− A′)− |A′|

e portanto M deixa no máximo oc(G− A′)− |A′| nós de G expostos.

Esta prova do teorema 7.4 não é construtiva, ou seja, não pode servir de base para umalgoritmo que calcule um emparelhamento máximo. Uma tal algoritmo será discutidonas proximas seções.

Exercícios

7.18 Critique a seguinte proposta de algoritmo para encontrar um emparelhamento máximo: contraiacircuitos ímpares, recursivamente, até que o grafo não os tenha; encontre um emparelhamentomáximo no grafo resultante; propague o emparelhamento para dentro dos circuitos que foramcontraídos.

7.19 Seja G um grafo induzido por um caminho simples. Quais são os nós essenciais de G?

7.20 Seja G um grafo dotado de um ep. Mostre que todos os nós de G são essenciais.

7.21 A proposição 7.7 sugere a seguinte pergunta: se A é o conjunto de todos os nós essencias de umgrafo, então A satisfaz (1) com igualdade? Responda a pergunta.

7.22 Partição de Gallai-Edmonds. Dado um grafo G, seja B o conjunto dos nós não-essenciais, C oconjunto dos vizinhos de B (ou seja, o conjunto dos nós em V (G) r B que têm algum vizinhoem B), e D o conjunto V (G) r (B ∪ C). Prove que(a) n− oc(G−A) + |A| tem valor mínimo quando A := C;(b) para todo emparelhamento máximo M e todo v em C, existe vw em M tal que w ∈ B;(c) todo emparelhamento máximo contém um ep de G[D].A expressão G[D] representa o subgrafo de G induzido por D. [CCPS 5.6]

7.23 Exiba a partição de Gallai-Edmonds (veja o exercício 7.22) do grafo da figura. [CCPS 5.16]

7.24 Mostre que a restrição do lema 7.8 a grafos bipartidos é equivalente ao teorema de Konig (teo-rema 4.3). [CCPS 5.8]

7.25 Seja G um grafo conexo cada um de cujos nós é não-essencial. Use o lema 7.8 para mostrar queν(G) = (n− 1)/2. [CCPS 5.9]

7.26 Slither. O jogo Slither é jogado por duas pessoas, digamos Um e Dois, sobre um grafo G. Osjogadores se alternam: o primeiro a jogar é Um, o segundo é Dois, e assim por diante. Cadajogada consiste em escolher uma aresta que não tenha sido escolhida em nenhuma das jogadasanteriores. A cada passo, o conjunto das arestas já escolhidas deve formar um caminho simples.Perde o jogador que não conseguir fazer uma jogada. Prove que Um pode forçar uma vitória seG tiver um ep. [CCPS 5.18]

7.27 Slither. Considere o jogo Slither do exercício 7.26. Suponha que a primeira jogada de Um é umaaresta uv tal que o nó u não é essencial. Mostre que Dois pode forçar uma vitória. [CCPS 5.19]

Page 114: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

106 EMPARELHAMENTOS MÁXIMOS FEOFILOFF

7.28 Slither. Considere o jogo Slither do exercício 7.26. Seja (B,C,D) a decomposição de Gallai-Edmonds de G (veja o exercício 7.22). Suponha que D não é vazio. Prove que Um pode forçaruma vitória. [CCPS 5.20]

7.29 Slither. Considere o jogo Slither do exercício 7.26. Seja (B,C,D) a decomposição de Gallai-Edmonds de G (veja o exercício 7.22). Suponha que os nós de todas as arestas jogadas até omomento estão em C. Suponha que o próximo jogador escolhe uma aresta que não tem pontaem C. Prove que o outro jogador pode forçar uma vitória. [CCPS 5.21]

7.4 Algoritmo do emparelhamento perfeito

O problema do emparelhamento perfeito é um caso especial do problema 7.1 do empa-relhamento máximo. (Um emparelhamento é perfeito se cobre todos os nós.) Como jásugerimos ao tratar da fórmula de Tutte Berge e do teorema de Tutte, o caminho paraencontrar um emparelhamento máximo passa pela nossa habilidade de encontrar umep.

Problema 7.9 (do emparelhamento perfeito) Encontrar um emparelhamento perfeitonum grafo.

Gostaríamos de ter um algoritmo que receba um grafo e produza um de dois objetos:um ep ou um conjunto de nós que viola a condição de Tutte (veja o teorema 7.5).O segundo objeto é uma prova de que o grafo não tem ep.

A ideia de um tal algoritmo já foi indicada na seção 7.2. Cada iteração começa comum emparelhamento e procura um caminho aumentador; se tiver sucesso, começa-nova iteração com um emparelhamento maior; se fracassar, encontra uma violação dacondição de Tutte.

Árvores alternantes

Dado um emparelhamento M , o processo de procurar um caminho aumentador éiterativo. Cada iteração começa com uma coleção de caminhos alternantes, todoscom origem em um nó exposto r. Essa coleção de caminhos constitui uma árvoreM -alternante, conforme a definição a seguir.

Uma árvore T com raiz r é M -alternante se tem três propriedades: (a) r é exposto,(b) cada nó de T − r é coberto por uma aresta de M ∩ E(T ), e (c) para todo nó v de T ,o caminho simples de r a v em T é M -alternante.

Page 115: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

FEOFILOFF EMPARELHAMENTOS MÁXIMOS 107

Dada uma árvore M -alternante T , denotamos por A(T ) o conjunto dos nós de T queestão à distância ímpar da raiz e porB(T ) o conjunto dos nós de T que estão à distânciapar da raiz. (Na figura, os nós de A(T ) são brancos e os de B(T ) são pretos.) É claroque |B(T )| = |A(T )|+ 1.

Uma árvore M -alternante T cresce sempre que houver uma aresta, digamos vw, comv em B(T ) e w fora de T . (Uma tal aresta certamente não pertence a M .) Se o nów for coberto por alguma aresta wz de M , as arestas vw e wz são acrescentadas a Tproduzindo uma nova árvore M -alternante. Se, por outro lado, o nó w for exposto,teremos um caminho M -aumentador. Nesse segundo caso, calculamos um novo em-parelhamento, maior que M , e começamos a construir uma nova árvore. Para usofuturo, encapsulamos esse processo em duas rotinas:

A rotina ESTENDEÁRVORE recebe G, M , T e vw tal que v ∈ B(T ), w /∈ V (T ) e w écoberto por M , determina a aresta wz de M que cobre w, acrescenta as arestas vwe wz a T , e devolve a árvore resultante.

A rotina AUMENTAEMP recebe G, M , T , r e vw tal que v ∈ B(T ), w /∈ V (T ) ew é exposto por M , determina o caminho simples P de r a v em T , e devolve oemparelhamento M ⊕ E(P ′), sendo P ′ a concatenação P com (v, w).

O processo que acabamos de descrever só chega ao fim quando não há mais arestasde G com uma ponta em B(T ) e outra fora de T . Quando isso acontece, toda arestacom uma ponta em B(T ) tem a outra ponta em A(T ) ∪ B(T ). (Nada impede que Gtambém tenha arestas com uma ponta em A(T ) e outra fora de T .) Se toda aresta comuma ponta em B(T ) tem a outra ponta em A(T ), dizemos que a árvore T é frustrada.

Proposição 7.10 Se um grafo G tem uma árvore M -alternante frustrada então G nãotem emparelhamento perfeito.

PROVA: Adote as abreviaturas A := A(T ) e B := B(T ). Observe que cada nó de Bconstitui uma componente ímpar de G − A. Logo, oc(G − A) = |B| = |A| + 1 > |A|.De acordo com o teorema de Tutte (teorema 7.5) isso mostra que G não tem empare-lhamento perfeito.

Suponha agora que uma aresta vw de G tem ambas as pontas em B(T ). Como ocaminho simples de w a v em T tem comprimento par (por quê?), o grafo T + vwtem um circuito ímpar. Não é fácil lidar com esses circuitos ímpares. Felizmente, umaclasse importante de grafos não tem circuito ímpar algum. Esse é o assunto da próximaseção.

Exercícios

7.30 Seja T uma árvore M -alternante e v e w dois nós em B(T ). Mostre que o caminho simples de v aw em T tem comprimento par.

Page 116: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

108 EMPARELHAMENTOS MÁXIMOS FEOFILOFF

O caso dos grafos bipartidos

Como se sabe, grafos bipartidos não têm circuitos ímpares. Assim, o esboço de algo-ritmo feito na seção anterior é suficiente no caso de grafos bipartidos.

Proposição 7.11 Seja G um grafo bipartido, M um emparelhamento de G, e T umaárvore M -alternante. Se nenhuma aresta de G liga B(T ) a V (G) r V (T ) então G nãotem emparelhamento perfeito.

PROVA: Suponha por um momento que T não é frustrada e seja vw uma aresta de Gtal que v ∈ B(T ) mas w /∈ A(T ). De acordo com hipóteses, w ∈ B(T ). A aresta vw e ocaminho simples em T que vai dew a v formam um circuito ímpar. Isso é contraditório,pois grafos bipartidos não têm circuitos ímpares. Portanto, a árvore T é frustrada. Pelaproposição 7.10, G não tem ep.

Segue o código do algoritmo. (Note que o algoritmo não tem conhecimento explícitode uma bipartição do grafo.)

EMPBIPARTIDOPERFEITO (G) G é bipartido01 M ← ∅02 seja r um nó exposto por M03 T ← (r, ∅)04 enquanto existe vw em E(G) com v ∈ B(T ) e w /∈ V (T ) faça05 se w é coberto por M06 então T ← ESTENDEÁRVORE (G,M, T, vw)

07 senão M ← AUMENTAEMP (G,M, T, r, vw)

08 se G tem nó exposto por M09 então seja r um nó exposto por M10 T ← (r, ∅)11 senão devolva M e pare M é perfeito12 devolva A(T ) e pare A(T ) viola a condição de Tutte

Esse algoritmo é essencialmente igual ao que foi descrito, em termos de fluxo máximo,na prova do teorema de Konig (teorema 4.2, página 44).

EXEMPLO 4: Aplique o algoritmo EMPBIPARTIDOPERFEITO ao grafo G representado pela matrizde adjacências abaixo. (Use o gabarito de posição dos nós para fazer uma figura.)

a b c d e f g h i

a − 1 − − − − − − −b 1 − − − − − − − −c − − − 1 1 1 − − −d − − 1 − − − − − −e − − 1 − − − − − −f − − 1 − − − 1 − −g − − − − − 1 − 1 −h − − − − − − 1 − 1i − − − − − − − 1 −

a c g i

b d e f h

Page 117: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

FEOFILOFF EMPARELHAMENTOS MÁXIMOS 109

Examine os nós em ordem alfabética. O algoritmo termina com a árvore frustrada T = (e, c, d,ec, ed), que tem raiz r = e. O emparelhamento é M = ab, cd. O algoritmo devolve o conjuntoA(T ) = c, que viola a condição de Tutte. Note que o algoritmo termina antes de examinar o grafotodo. Repita o exemplo examinando os nós em alguma ordem diferente.

Exercícios

7.31 Seja G um grafo bipartido com bipartição (P,Q). Seja M um emparelhamento em G e T umaárvore M -alternante com raiz em P . Mostre que A(T ) ⊆ Q e B(T ) ⊆ P . Suponha agora que T éfrustrada e mostre que N(B) ⊆ A(T ), sendo N(B) o conjunto de todos os vizinhos de nós de B.

7.32 Teorema de Hall. Seja G um grafo bipartido com bipartição (P,Q). Use o algoritmo EMPBIPAR-TIDOPERFEITO para provar que G tem um emparelhamento de tamanho |P | se e somente se|N(B)| ≥ |B| para todo subconjuntoB de P , sendoN(B) o conjunto de todos os nós emQ que sãovizinhos de nós em B. (Sugestão: Se T é uma árvore alternante frustrada então N(B(T )) ⊆ A(T )e |N(B(T ))| ≤ |A(T )| = |B(T )| − 1.) [CCPS 3.21]

7.33 Que acontece se o nó r escolhido na linha 02 do algoritmo EMPBIPARTIDOPERFEITO for isolado(isto é, tiver grau 0)?

7.34 Aplique o algoritmo EMPBIPARTIDOPERFEITO ao grafo com bipartição (P,Q) representado pelamatriz binária P ×Q abaixo. (Use o gabarito de posição dos nós para fazer uma figura.)

g h i j k l

a 1 − − − − −b − 1 − − − −c − 1 1 − − −d − − − 1 − −e − − − 1 − −f − − − − 1 −

a b c d e f

g h i j k l

7.35 Aplique o algoritmo EMPBIPARTIDOPERFEITO ao grafoG com bipartição (P,Q) representado pelamatriz P ×Q abaixo. (Use o gabarito de posição dos nós para fazer uma figura.)

e f g

a 1 − 1b − 1 1c 1 1 1d − − 1

a b c d

e f g

7.36 ? SejaG o grafo bipartido com bipartição (P,Q) representado pela matriz P ×Q abaixo. Execute oalgoritmo EMPBIPARTIDOPERFEITO começando com M = fb, gc e o nó exposto a. Faça figurasque mostrem o estado de coisas no início de cada iteração externa.

a b c d e

f 1 1 1 − −g 1 1 1 1 1h − − − − 1

7.37 Seja M um emparelhamento imperfeito em um grafo bipartido G. Suponha que, de algumamaneira, sei que M é máximo. Escreva um algoritmo que receba G e M e devolva um conjunto Aque viola as condições de Tutte.

Page 118: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

110 EMPARELHAMENTOS MÁXIMOS FEOFILOFF

Flores e contrações

Retomemos a discussão que a subseção anterior interrompeu. Seja M um emparelha-mento qualquer de um grafo arbitrário G. Suponha que a construção de uma árvoreM -alternante T chegou ao fim. Portanto, toda aresta de G com uma ponta em B(T )tem a outra ponta em A(T ) ∪B(T ).

Suponha que T não é frustrada. Então alguma aresta vw de G tem ambas as pontasem B(T ). Nesse caso, como já observamos acima, T + vw tem um circuito ímpar.Qualquer circuito desse tipo é conhecido como flor (= blossom). A contração da flor(veja a página 102) preserva boa parte das estruturas: as arestas de M que sobrevivemà contração constituem um emparelhamento M ′ e as arestas de T que sobrevivem àcontração constituem uma árvore T ′ que é M ′-alternante. O nó que resulta da contra-ção da flor pertence a B(T ′).

EXEMPLO 5: Seja T a árvore M -alternante indicada pelas linhas contínuas da figura. As linhasinterrompidas indicam arestas que não pertencem a T . Uma dessas arestas liga A(T ) a um nóexposto u que está fora de T . Há um caminho aumentador que começa em r, “desce” pela árvoreaté w, percorre wv, “volta” pela árvore até o vizinho de u, e finalmente chega a u. Mas a rotinaAUMENTAEMP não tem como usar esse caminho aumentador.

A aresta vw de G tem ambas as pontas em B(T ) e portanto o circuito de T + vw é uma flor. Depoisda contração da flor, a rotina AUMENTAEMP é capaz de usar o caminho aumentador que estavainvisível antes da contração.

A operação de contração pode ser encapsulada na seguinte rotina:

CONTRAIFLOR recebe G, M , T , r e uma aresta vw de G tal que v e w estãoem B(T ), calcula a flor C formada por vw e o caminho simples de w a v em T , fazG ← G×C, M ← M r E(C), e troca T pela árvore que tem conjunto de arestasE(T ) r E(C). Se a raiz r de T estiver em C, faz r ← C.

Proposição 7.12 Depois da aplicação da rotina CONTRAIFLOR, M é um emparelha-mento de G, T é uma árvore M -alternante de G e C pertence a B(T ).

O grafo obtido a partir de G por uma sequência de contrações de circuitos ímpares échamado grafo derivado (= derived graph). Todo grafo derivado G′ tem nós de doistipos: os nós originais do grafo G e os pseudonós, que resultaram de contrações decircuitos ímpares. Os pseudonós são recursivos: cada um resulta da contração de um

Page 119: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

FEOFILOFF EMPARELHAMENTOS MÁXIMOS 111

circuito ímpar cujos nós podem ser, por sua vez, pseudonós produzidos por contraçõesanteriores.

Para cada nó v de um grafo derivadoG′, seja S(v) o conjunto de nós do grafo originalGdefinido recursivamente da seguinte maneira: se v é um nó original então S(v) = v;se v é um pseudonó que resultou da contração de um circuito ímpar C então S(v) é aunião de todos os conjuntos S(w) para w em C. É claro que todo conjunto S(v) temcardinalidade ímpar. Além disso, a coleção dos conjuntos S(v) para todos os nós v deum grafo derivado G′ é uma partição do conjunto de nós do grafo original G.

Suponha queM ′ é um emparelhamento em um grafo derivadoG′ e T é uma árvoreM ′-alternante. Os pseudonós estão à distância par da raiz da árvore. Portanto, todos os nósem A(T ) são originais, ou seja, |S(v)| = 1 para cada v em A(T ). Essa observação leva àseguinte generalização da proposição 7.10, que permite reconhecer grafos desprovidosde emparelhamento perfeito:

Proposição 7.13 Seja G′ um grafo derivado de G, M ′ um emparelhamento em G′, eT uma árvore M ′-alternante em G′. Se T é frustrada e todos os nós de A(T ) sãooriginais1 então G não tem emparelhamento perfeito.

PROVA: Adote as abreviaturas A := A(T ) e B := B(T ). Considere as componentesímpares deG−A. O conjunto de nós de cada componente ímpar deG−A é igual a S(v)para algum v em B. Como S(v) é ímpar, temos oc(G − A) = |B|. Como |B| = |A| + 1,o teorema 7.5 garante que G não tem ep.

Exercícios

7.38 Mostre que o caminho simples que vai da raiz da árvore M -alternante até o primeiro nó de umaflor tem comprimento par.

7.39 Laminaridade. Uma coleção L de subconjuntos de V é laminar se, para cada par (L1, L2) deelementos da coleção, tem-se L1 ∩ L2 = ∅ ou L1 ⊆ L2 ou L1 ⊇ L2. Mostre que o conjunto deflores é laminar.

O algoritmo das flores para emparelhamento perfeito

O algoritmo que resolve o problema do emparelhamento perfeito em grafos arbitráriosfoi descoberto por J. Edmonds [Edm65] e ficou conhecido como algoritmo de Edmondsou algoritmo das flores (= blossom algorithm) .

EMPPERFEITO (G)

01 seja r um nó qualquer02 T ← (r, ∅), M ′ ← ∅, G′ ← G

03 enquanto existe aresta vw de G′ com v ∈ B(T ) e w /∈ A(T ) faça04 caso w /∈ V (T ) e w é coberto por M ′:

1 Durante a execução do algoritmo, essa condição está automaticamente satisfeita.

Page 120: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

112 EMPARELHAMENTOS MÁXIMOS FEOFILOFF

05 T ← ESTENDEÁRVORE (G′,M ′, T, vw)

06 caso w /∈ V (T ) e w é exposto por M ′:07 M ′ ← AUMENTAEMP (G′,M ′, T, r, vw)

08 estenda M ′ a um emparelhamento M de G09 se G tem nó exposto por M10 então seja r um nó exposto por M11 T ← (r, ∅), M ′ ←M , G′ ← G

12 senão devolva M e pare M é perfeito13 caso w ∈ B(T ):14 CONTRAIFLOR (G′,M ′, T, r, vw)

15 devolva A(T ) e pare G não tem ep

O algoritmo opera sobre grafos derivados de G. Ao encontrar um emparelhamentomaior queM ′ em um grafo derivadoG′, o algoritmo estendeM ′ a um emparelhamentode G (linha 08). Essa extensão usa o mecanismo descrito na prova da proposição 7.6para propagar o emparelhamento, recusivamente, para dentro das flores.

Se o processo iterativo das linhas 03–14 se esgota, a árvore T é frustrada e então aproposição 7.13 mostra que G não tem emparelhamento perfeito.

Proposição 7.14 O algoritmo EMPPERFEITO termina depois de O(n) invocações deAUMENTAEMP, O(n2) invocações de CONTRAIFLOR, e O(n2) invocações de ESTENDE-ÁRVORE, sendo n o número de nós do grafo.

ESBOÇO DA PROVA: É claro que há um total de O(n) invocações de AUMENTAEMP.Considere os eventos entre duas invocações consecutivas de AUMENTAEMP. Cadainvocação de CONTRAIFLOR diminui |V (G′)| mas não altera |V (G′) r V (T )|. Cada in-vocação de ESTENDEÁRVORE diminui |V (G′)rV (T )|mas não altera |V (G′)|. Portanto,temos O(n) de invocações CONTRAIFLOR e de ESTENDEÁRVORE entre duas invoca-ções consecutivas de AUMENTAEMP.

EXEMPLO 6: Aplique o algoritmo das flores ao grafo G definido pela matriz de adjacências abaixo.(Use o gabarito de posição dos nós para fazer uma figura.)

a b c d e f g h i

a − 1 1 − − − − − −b 1 − − 1 1 − − − −c 1 − − − 1 − − 1 −d − 1 − − − 1 1 1 −e − 1 1 − − − − − −f − − − 1 − − − 1 −g − − − 1 − − − − 1h − − 1 1 − 1 − − 1i − − − − − − 1 1 −

b d

g

a e f

i

c h

Comece com o emparelhamento M = bd, ce, fh, gi e a árvore M -alternante T representada pelamatriz de adjacências abaixo, à esquerda. Cada “M” na matriz representa uma aresta de M . Nos

Page 121: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

FEOFILOFF EMPARELHAMENTOS MÁXIMOS 113

cabeçalhos de linhas e colunas da matriz, os nós de B(T ) estão em negrito. A raiz de T é a.

a b c d e f g h i

a − 1 1 − − − − − −b 1 − − M − − − − −c 1 − − − M − − − −d − M − − − 1 1 − −e − − M − − − − − −f − − − 1 − − − M −g − − − 1 − − − − Mh − − − − − M − − −i − − − − − − M − −

a b c K e g i

a − 1 1 − − − −b 1 − − M − − −c 1 − − − M − −K − M − − − 1 −e − − M − − − −g − − − 1 − − Mi − − − − − M −

a b c L e

a − 1 1 − −b 1 − − M −c 1 − − − ML − M − − −e − − M − −

A primeira iteração escolhe a aresta dh, que liga dois nós de B(T ) e assim produz a flor K :=(d, h, f, d). A contração da flor transforma G em G′ := G×K, transforma M num emparelha-mento M ′ := M r E(K), e transforma T numa árvore M ′-alternante T ′, representada pela matrizacima, no meio. O novo nó K pertence a B(T ′).

A segunda iteração escolhe a aresta Ki, que liga dois nós de B(T ′) e assim produz a flor L :=(K, i, g,K). A contração da flor produz um novo nóL, transformaG′ emG′′ := G×L,M ′ emM ′′ :=M ′ r E(L), e T ′ em T ′′, representada na matriz acima, à direita. O novo nó L pertence a B(T ′′).

Agora temos B(T ′′) = a, L, e e A(T ′′) = b, c. Todas as arestas que têm uma ponta em B(T ′′)têm a outra ponta em A := A(T ′′). Portanto, A viola as condições de Tutte em G′′. Como todos osnós de A são originais, A também viola as condições de Tutte em G. Com efeito, oc(G− A) = 3 >2 = |A|. As três componentes ímpares de G−A têm conjuntos de nós a, d, h, f, i, g e e.

Implementação. Estruturas de dados apropriadas permitem implementar o algo-ritmo EMPPERFEITO de modo que o consumo total de tempo seja O(mn log n), sendom o número de arestas e n o número de nós do grafo.

Exercícios

7.40 Refaça o exemplo 6 escolhendo a aresta hi (no lugar de dh) na primeira iteração.

7.41 Refaça o exemplo 6 depois de acrescentar um nó j e uma aresta gj ao grafo.

7.42 Mostre que o algoritmo EMPPERFEITO pode contrair circuitos (ímpares) que não são justos (veja apágina 103). Isso pode acontecer durante a construção da última árvore alternante? [CCPS 5.12]

7.43 Seja M um emparelhamento imperfeito em um grafo G. Suponha que, de alguma maneira, seique M é máximo. Escreva um algoritmo que receba G e M e devolva um conjunto A que viola ascondições de Tutte.

7.5 Algoritmo do emparelhamento máximo

Finalmente, estamos em condições de enfrentar o problema do emparelhamento má-ximo (problema 7.1). Um algoritmo para o problema deve ter o seguinte comporta-mento: dado um grafo G, o algoritmo deve encontrar um emparelhamento M e umconjunto A de nós tal que n− 2|M | = oc(G−A)− |A|, sendo n o número de nós de G.

A ideia é obter um emparelhamento máximo reunindo os emparelhamentos que oalgoritmo EMPPERFEITO constrói ao tentar obter um ep em várias partes de G. Da

Page 122: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

114 EMPARELHAMENTOS MÁXIMOS FEOFILOFF

mesma forma, o conjunto A é obtido reunindo as várias violações da condição de Tutteconstruídas por EMPPERFEITO. A “casca externa” dsse algoritmo para emparelha-mento máximo é, portanto, meramente gerencial. Veja uma representação grosseirada estrutura do algoritmo:

M ← ∅enquanto M deixa nós expostos faça

M ←M ∪ EMPARELHAMENTOPERFEITO (G)

G← G− V (T )

Comece aplicando o algoritmo EMPPERFEITO ao grafo G. Se o algoritmo terminar comum ep M , devolva M e A := ∅ e pare. Senão, o algoritmo termina com um grafoderivado G′, um emparelhamento M ′ em G′ e uma árvore M ′-alternante frustrada T .A extensão de M ′ ao grafo original G pode não ser um emparelhamento máximo por-que caminhos aumentadores podem existir em partes de G que não foram exploradaspor EMPPERFEITO. Portanto, é preciso continuar procurando um emparelhamentomáximo em G′−V (T ). (Note que todos os nós desse grafo são originais.) Se G′−V (T )tem nós expostos então submeta esse grafo ao algoritmo EMPPERFEITO, começandocom o emparelhamento M ′rE(T ). Repita o processo até que G′−V (T ) não tenha nósexpostos. Nesse ponto, devolva a G′ todas as partes removidas nas iterações anteriorese devolva a M ′ todas as arestas removidas nas iterações anteriores.

Sejam T1, . . . , Tk as árvores frustradas geradas ao longo do processo. Os nós expostossão as raízes das árvores. Calcule a extensão de M ′ a um emparelhamento M no grafooriginal G. Esse emparelhamento deixa exatamente k nós expostos. Agora considereo conjunto A := A(T1) ∪ · · · ∪ A(Tk). Para cada i, cada nó (original ou pseudonó) emB(Ti) é uma componente ímpar do grafo G − A. Portanto oc(G − A) ≥ |A| + k. Deacordo com a proposição 7.3, o emparelhamento M é máximo.

O algoritmo que acabamos de esboçar pode ser chamado algoritmo de Edmonds paraemparelhamento máximo. Ele constitui uma prova do teorema 7.4.

É claro que o algoritmo é mais simples quando restrito a grafo bipartidos, pois não háflores nem pseudonós.

EXEMPLO 7: Apliquemos o algoritmo de Edmonds ao grafo G representado pela matriz de adja-cências abaixo. (Use o gabarito de posição dos nós para fazer uma figura.)

a b c d e f g h i

a − 1 − − − − − − −b 1 − − − − − − − −c − − − 1 1 1 − − −d − − 1 − − − − − −e − − 1 − − − − − −f − − 1 − − − 1 − −g − − − − − 1 − 1 −h − − − − − − 1 − 1i − − − − − − − 1 −

a c g i

b d e f h

Como G é bipartido, podemos substituir EMPPERFEITO por EMPBIPARTIDOPERFEITO, que é maissimples. Se os nós forem examinados em ordem alfabética, a primeira iteração (ou seja, a primeiraexecução de EMPBIPARTIDOPERFEITO) terminará com M = ab, cd e com A(T ) = c. (Comparecom o exemplo 4.)

Page 123: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

FEOFILOFF EMPARELHAMENTOS MÁXIMOS 115

A segunda iteração é executada sobre o subgrafo de G − V (T ) cuja matriz é exibida abaixo.A iteração começa com o emparelhamento M r E(T ) = ab. A iteração termina com o epM = ab, fg, hi e com A(T ) = ∅.

a b f g h i

a − 1 − − − −b 1 − − − − −f − − − 1 − −g − − 1 − 1 −h − − − 1 − 1i − − − − 1 −

O resultado final é o emparelhamento máximoM := ab, cd, fg, hi e o conjuntoA := c. Observeque n− 2|M | = 9− 2×4 = 2− 1 = oc(G−A)− |A|.

Implementação. A descrição do algoritmo dada acima supõe, implicitamente, que ocódigo de EMPPERFEITO foi ligeiramente modificado. Em primeiro lugar, supõe-se queEMPPERFEITO aceita um emparelhamento imperfeito M como argumento adicional,escolhe um nó r exposto por M na linha 01, e usa M como valor inicial de M ′ linha 02.Em segundo lugar, supõe-se que o código devolve G′, M ′ e T na linha 15. Finalmente,para padronizar a forma dos resultados, supõe-se que o código devolve G, M e T =(∅, ∅) na linha 12.

Com estruturas de dados apropriadas, é possível implementar o algoritmo de empa-relhamento máximo de modo que o consumo total de tempo seja O(mn log n), sendom o número de arestas e n o número de nós do grafo. Dada a complexidade da lógica,surpreende que uma implementação tão eficiente seja possível.

Exercícios

7.44 Seja G o grafo bipartido com bipartição (P,Q) representado pela matriz binária P × Q abaixo.Seja M o emparelhamento be, cf, dg. Use o algoritmo esboçado acima para verificar que M émáximo e calcular um conjunto A de nós que satisfaça a fórmula de Tutte-Berge com igualdade.

a b c d

e 1 1 1 1f 1 1 1 1g − − − 1h − − − 1

7.45 ? Escreva em código o algoritmo que calcula um emparelhamento máximo em um grafo bipar-tido. Use como guia o esboço apresentado no texto acima. (Sugestão: comece com uma versãosimplificada que recebe como parâmetro adicional um emparelhamento máximo.)

7.46 ? Deduza o teorema de Konig (teorema 4.3) do algoritmo que calcula um emparelhamento má-ximo num grafo bipartido (veja o exercício 7.45). [CCPS 5.10]

7.47 Use o algoritmo de Edmonds para encontrar um emparelhamento máximo no grafo da figura. En-contre também um conjunto A que satisfaz a fórmula de Tutte-Berge com igualdade. [CCPS 5.14]

Page 124: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

116 EMPARELHAMENTOS MÁXIMOS FEOFILOFF

7.48 Escreva em código um algoritmo de emparelhamento máximo para grafos arbitrários. Use comoguia o esboço apresentado no texto acima. (Sugestão: comece com uma versão simplificada querecebe como parâmetro adicional um emparelhamento máximo.)

7.49 Cobertura por arestas mínima. Uma cobertura por arestas de um grafo G é qualquer subconjuntoD de E(G) que incide em cada nó de G (ou seja, tal que cada nó é ponta de alguma aresta de D).Mostre como uma cobertura por arestas mínima de um grafo sem nós isolados pode ser calculadaa partir de um emparelhamento máximo. Prove que a cardinalidade de uma cobertura por arestasmínima é |V (G)| − ν(G). [CCPS 5.13]

Page 125: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

Capítulo 8

Emparelhamento de custo mínimo

Este capítulo é uma continuação do capítulo 7 e trata de emparelhamentos em grafoscom custos nas arestas. As técnicas desenvolvidas para resolver os problemas estão naorigem da chamada combinatória poliédrica, que se tornou uma ferramenta essencial noestudo de muitos outros problemas de otimização.

Num grafo com custos nas arestas, o problema mais natural parece ser o do emparelha-mento de custo máximo, do qual o problema 7.1 (página 97) é um caso particular. Porrazões técnicas, entretanto, convém tratar primeiro do problema do emparelhamentoperfeito de custo máximo, ou melhor, do problema equivalente do emparelhamentoperfeito de custo mínimo (basta multiplicar todos os custos por −1). Este capítulo fazuma discussão completa do problema no caso de grafos bipartidos e uma discussãointrodutória no caso geral.

8.1 Emparelhamento perfeito mínimo

O ponto de partida para o estudo de emparelhamentos de custo mínimo/máximo é oseguinte problema:

Problema 8.1 (emparelhamento perfeito mínimo) Dado um grafo G e uma função cque atribui um custo em Q a cada aresta, encontrar um emparelhamento perfeito Mque minimize c(M).

Note que a função-custo c não tem restrição de sinal. Note também que usamos aexpressão “ep mínimo” como abreviatura de “emparelhamento perfeito de custo mí-nimo.” (É razoável omitir “de custo” pois “mínimo” não poderia estar se referindo àcardinalidade do emparelhamento.)

EXEMPLO 1: Considere o grafo definido pela matriz de adjacências abaixo. Os custos dos arcos sãodados na tabela. Há dois ep’s, sendo ad, bc o que tem custo mínimo.

117

Page 126: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

118 EMPARELHAMENTO DE CUSTO MíNIMO FEOFILOFF

a b c d

a − − 1 1b − − 1 1c 1 1 − −d 1 1 − −

ac ad bc bd

c +60 +70 −10 +10

Exercícios

8.1 Uma loja de aluguel de pranchas de surf quer alugar n pranchas para n surfistas. As pranchas têmcomprimentos l1 ≤ · · · ≤ ln e os surfistas têm alturas h1 ≤ · · · ≤ hn. Idealmente, o comprimentode uma prancha deve ser igual à altura do surfista. Digamos que um emparelhamento entrepranchas a surfistas é ótima se minimiza a soma das diferenças, em valor absoluto, entre a alturado surfista e o comprimento de sua prancha. Formule essa questão como um problema de epmínimo. Mostre que o emparelhamento l1h1, . . . , lnhn é ótimo. (Dica: Mostre que se l ≤ l′ eh ≤ h′ então |l−h|+ |l′−h′| ≤ |l−h′|+ |l′−h|. Depois, faça a diferença simétrica entre dois ep’s.)

8.2 Suponha dado um grafo com custos nas arestas e um número positivo α. Se multiplicarmos ocusto de cada aresta por α, é verdade que todo ep mínimo continua sendo mínimo? Se somarmosα ao custo de cada aresta, é verdade que todo ep mínimo continua sendo mínimo?

8.3 Circuitos alternantes. Seja M um ep em um grafo com custos c nas arestas. O peso de qualquercircuito alternante C é o número c(E(C) rM) − c(E(C) ∩M). (Fica subentendido que circuitosalternantes têm comprimento par.) Prove que M é um ep mínimo se e somente se o grafo não temcircuitos alternantes de peso negativo. (Dica: considere diferenças simétricas.) [CCPS 5.35]

8.2 Programa linear

Se x é o vetor característico de um emparelhamento perfeito num grafo G entãox(∂(v)) = 1 para cada nó v de G. (Como de hábito, ∂(v) é o corte que tem margem v,ou seja, o conjunto das arestas que incidem em v.) Portanto, podemos tentar represen-tar o problema do ep mínimo pelo seguinte problema de otimização:

minimize cx

sob as restriçõesx(∂(v)) = 1 para cada v em V

xe ≥ 0 para cada e em E,

(1)

sendo V := V (G) e E := E(G). Infelizmente, uma solução ótima x desse programalinear pode não ser inteira e portanto pode não representar um ep. (Compare com opl (1), capítulo 5, página 61, que trata de fluxo viável de custo mínimo em digrafos.Considere, em particular, o caso em que o digrafo é bipartido e as capacidades sãoinfinitas.)

EXEMPLO 2: Considere o grafo que consiste em um circuito de comprimento 3 e nada mais. Supo-nha que ce = +10 para cada aresta e. O vetor x definido por xe = 0.5 para cada aresta e é soluçãoótima do pl (1) mas não representa um ep.

Page 127: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

FEOFILOFF EMPARELHAMENTO DE CUSTO MíNIMO 119

O dual do programa linear (1) consiste em encontrar um vetor (yv : v ∈ V ) que

maximize∑

(yv : v ∈ V )

sob as restriçõesyu + yv ≤ cuv para cada uv em E.

(2)

Diremos que um vetor y que satisfaz as restições do dual é um potencial viável. (Nãoconfunda com a definição de potencial viável associado ao problema do caminho decusto mínimo. Ao contrário daquele, este potencial deixa de ser viável se somarmosuma constante a cada componente yv.) Para qualquer potencial y e qualquer aresta uv,o custo reduzido de uv é a diferença entre cuv e yu+yv. O custo reduzido será denotadopor c:

cuv := cuv − yu − yv.

Observe que ce ≥ 0 para toda aresta e se e somente se o potencial y é viável. Ascondições de folgas complementares para o par de pl’s (1, 2) podem ser escritas assim:

xe > 0 implica ce = 0 para todo e em E. (3)

Se x e y são soluções viáveis dos pl’s primal e dual respectivamente, as condições (3)valem se e somente se as soluções x e y são ótimas.

EXEMPLO 3: Considere o grafo definido pela matriz de adjacências abaixo. À direita da matriztemos um potencial viável y. Mais à direita, os custos c dos arcos, os custos reduzidos c associadosa y, e uma solução viável x de (1) que é vetor característico de um ep.

a b c d y

a − − 1 1 +25b − − 1 1 +10c 1 1 − − +65d 1 1 − − +15

ac ad bc bd

c +90 +40 +75 +95c 0 0 0 70x 0 1 1 0

Os vetores viáveis x e y satisfazem as condições de folgas complementares. Logo, x é solução ótimado pl (1) e y é um potencial viável ótimo. (Observe que cx =

∑yv , como deveria ser.)

Dado um potencial viável y, toda aresta e de custo reduzido nulo é chamada “arestade igualdade”. O conjunto das arestas de igualdade será denotado por Ey.

Se x é o vetor característico de um emparelhamento perfeito M , as condições de folgascomplementares (3) equivalem à condição

M ⊆ Ey. (4)

Portanto, dado um potencial viável y, qualquer ep M tal que M ⊆ Ey é mínimo.A recíproca não é verdadeira em geral, mas vale para grafos bipartidos como veremosna próxima seção.

Exercícios

8.4 ? Escreva explicitamente os pl’s (1) e (2) para o grafo da figura.

Page 128: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

120 EMPARELHAMENTO DE CUSTO MíNIMO FEOFILOFF

a b c d

a − 1 1 −b 1 − 1 −c 1 1 − 1d − − 1 −

ab bc ca cd

c +10 +20 +30 +40

8.5 Seja G um grafo com número ímpar de nós. Mostre que o pl (1) pode ter solução, embora G nãotenha ep.

8.6 ? Mostre que todo ep corresponde a uma solução viável inteira do pl (1). Mostre que toda soluçãoviável inteira do pl (1) corresponde a um ep.

8.7 Mostre que o pl (2) é o dual do pl (1). Verifique que as condições de folgas complementares (3)estão corretas.

8.8 Seja G o grafo que consiste em um circuito e nada mais. Suponha que toda aresta tem custo 10.Mostre uma solução ótima x de (1) e uma solução ótima y de (2).

8.9 Mostre um grafo G e um ep mínimo M em G tal que M 6⊆ Ey qualquer que seja o potencialviável y.

8.10 ? Em algumas aplicações,G é um grafo bipartido e o custo de cada aresta uv é bu+bv , sendo b umaatribuição de números racionais aos nós de G. Descreva um bom algoritmo para calcular um epmínimo nesse caso. Em seguida, descreva um algoritmo particularmente rápido para o caso emque G é completo. (Um grafo com bipartição (P,Q) é completo se pq é uma aresta para cada p emP e cada q em Q.) [AMO 12.22b]

8.3 Algoritmo para grafos bipartidos

Se x é uma solução ótima do programa linear (1) e M é um emparelhamento perfeitomínimo então cx ≤ c(M). Em geral, a desigualdade é estrita. Entretanto, se o grafoé bipartido então vale a igualdade. É o que mostra um teorema clássico (1946) deBirkhoff:

Teorema 8.2 (Birkhoff) Um grafo bipartido G tem um emparelhamento perfeito se esomente se o programa linear (1) tem uma solução viável. Ademais, se G é bipartidoe tem um emparelhamento perfeito então o custo de um emparelhamento perfeitomínimo é igual ao valor ótimo de (1).

Esse teorema pode ser deduzido do teorema 5.6 (página 66), que trata de fluxos decusto mínimo em redes capacitadas. Mas é mais interessante apresentar uma provadireta.

A prova do teorema 8.2 consiste em um algoritmo que resolve a restrição do pro-blema 8.1 a grafos bipartidos. Ao receber um grafo bipartido G, o algoritmo co-meça por determinar um potencial viável y e o correspondente “grafo de igualdade”Gy := (V (G), Ey). (Note que V (Gy) = V (G), ou seja, Gy não é apenas o subgrafo indu-zido por Ey.) Em seguida, usa o algoritmo EMPBIPARTIDOPERFEITO (página 108) paraprocurar um ep em Gy. Se tiver sucesso, o ep encontrado é mínimo em G, conformea condição (4) de folgas complementares. Senão, EMPBIPARTIDOPERFEITO produziráum emparelhamento imperfeito M em Gy e uma árvore frustrada T . Nesse caso, como

Page 129: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

FEOFILOFF EMPARELHAMENTO DE CUSTO MíNIMO 121

observamos na seção 7.4 (página 107), cada aresta de Gy tem uma ponta em B(T ) eoutra em A(T ). Então G não tenha ep algum ou existe um ε positivo com a seguintepropriedade: se somarmos ε ao potencial de cada nó em B(T ) e subtrairmos o mesmoε do potencial de cada nó em A(T ), alguma nova aresta de G será acrescentada a Gy,permitindo assim que o processo todo seja repetido, com maiores chances de sucesso.A operação de somar um número ao potencial dos nós de B(T ) e subtrair o mesmonúmero do potencial dos nós de A(T ) garante que as arestas que já estavam em Gy

continuem em Gy. Eis uma representação grosseira da estrutura do algoritmo:

enquanto M não é perfeito façaajuste y e calcule Gy

M ← EMPBIPARTIDOPERFEITO (Gy)

EXEMPLO 4: A figura mostra um grafo G, um emparelhamento M (linhas grossas), um potencialviável y e o grafo Gy (linhas contínuas). Não há ep em Gy .

y y y

r +1 +2 +3a +1 0 −1b +2 +3 +4d +3 +2 +1f +1 +2 +3g +2 +2 +1h +3 +3 +4i +2 +2 +2

A figura mostra também uma árvore frustrada T com raiz r em Gy . Temos B(T ) = r, b, f eA(T ) = a, d. Adote ε = 1, some ε ao potencial de cada nó em B(T ) e subtraia ε ao potencialde cada nó em A(T ). O novo potencial é viável e está registrado na segunda coluna da tabela. Asarestas fg e gh são acrescentadas a Gy e a T . Mas Gy continua não tedo um ep.

A próxima iteração calcula um novo potencial viável (terceira coluna da tabela). Isso acrescenta asarestas fi e hi a Gy , acrescenta a aresta hi a T , e assim revela o caminho aumentador (r, d, f, g, h, i).Depois que esse caminho aumentador for processado, teremos um ep em Gy .

Esse algoritmo foi proposto por Kuhn (em 1955) e Munkers (em 1957) e ficou conhe-cido como algoritmo húngaro. O código tem dois processos iterativos, um encaixadono outro. O processo interno, que é essencialmente uma cópia do código de EMP-BIPARTIDOPERFEITO, ocupa as linhas 08–15, e opera sobre o grafo Gy, que permaneceinalterado. O processo externo, que ocupa as linhas 07–21, expande Gy acrescentandoarestas a Ey.

HÚNGARO (G) G é bipartido01 seja y um potencial viável02 seja M um emparelhamento qualquer em Gy talvez M = ∅03 se M é um ep em Gy

04 então devolva M e pare05 seja r um nó M -exposto em Gy

06 T ← (r, ∅)07 repita

Page 130: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

122 EMPARELHAMENTO DE CUSTO MíNIMO FEOFILOFF

08 enquanto existe vw ∈ Ey com v ∈ B(T ) e w /∈ V (T ) faça09 se w é coberto por M10 então T ← ESTENDEÁRVORE (Gy,M, T, vw)

11 senão M ← AUMENTAEMP (Gy,M, T, r, vw)

12 se Gy tem nó M -exposto13 então seja r um nó M -exposto14 T ← (r, ∅)15 senão devolva M e pare16 ε← min (cvw : v ∈ B(T ), w /∈ V (T ))

17 se ε = +∞ min tomado sobre conjunto vazio18 então pare G não tem ep19 senão yv ← yv + ε para todo v ∈ B(T )

20 yv ← yv − ε para todo v ∈ A(T )

21 cuv = cuv − yu − yv para cada uv em E(G)

No início de cada iteração do processo externo (linhas 07–21),

1. y é um potencial viável (e portanto c ≥ 0),2. M é um emparelhamento imperfeito em Gy.

No início de cada iteração do processo interno (linhas 08–15),

3. M é um emparelhamento imperfeito em Gy,4. T é uma árvore M -alternante em Gy.

(Nas linhas 03, 05, 10 e 11, poderíamos trocar “Gy” por “G” pois V (Gy) = V (G).)

EXEMPLO 5: Considere o grafo bipartido definido pela matriz de adjacências abaixo. À direita damatriz temos os custos c dos arcos.

a b c d

a − − 1 1b − − 1 1c 1 1 − −d 1 1 − −

ac ad bc bd

c +90 +40 +75 +95

Comece a execução do algoritmo húngaro com o potencial viável y dado abaixo. Esse potencialdetermina o custo reduzido c e o grafo Gy descritos a seguir. A tabela também dá o vetor caracte-rístico x do emparelhamento M em Gy escolhido na linha 02.

y

a +20b 0c +70d +15

ac ad bc bd

c 0 5 5 80x 1 0 0 0

a b c d

a − − 1 −b − − − −c 1 − − −d − − − −

A primeira iteração do bloco de linhas 08–21 começa com T = (b, ∅). Essa iteração não é capazde aumentar o emparelhamento nem estender a árvore. Portanto, calcula ε = 5 e reajusta y,acrescentando bc a Ey .

A segunda iteração do bloco de linhas 08–21 começa com o potencial y, os valores de c, x e Gy

Page 131: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

FEOFILOFF EMPARELHAMENTO DE CUSTO MíNIMO 123

dados a seguir, e com T = (b, ∅).

y

a +20b +5c +70d +15

ac ad bc bd

c 0 5 0 75x 1 0 0 0

a b c d

a − − 1 −b − − 1 −c 1 1 − −d − − − −

Essa segunda iteração acrescenta as arestas bc e ca à arvore. Em seguida calcula ε = 5 e reajusta y,acrescentando ad a Ey .

A terceira iteração do bloco de linhas 08–21 começa com y, c, x e Gy dados a seguir e com E(T ) =bc, ca:

y

a +25b +10c +65d +15

ac ad bc bd

c 0 0 0 70x 0 1 1 0

a b c d

a − − 1 1b − − 1 −c 1 1 − −d 1 − − −

Agora, x é o vetor característico de um ep emGy . Esse ep (o mesmo do exemplo 3) é mínimo emG.

Desempenho. No pior caso, o algoritmo húngaro consome tempo O(mn2), sendo mo número de arestas e n o número de nós do grafo. O termo “m” é consequência doprocesso iterativo externo, que acrescenta pelo menos uma aresta a Gy a cada iteração.O termo “n2” representa o consumo de tempo de EMPBIPARTIDOPERFEITO.

Exercícios

8.11 O que há de errado na seguinte afirmação? “Qualquer grafo bipartido com custos nas arestas temum ep cujo custo é igual ao valor ótimo do pl (1).”

8.12 ?Mostre que a recíproca do teorema de Birkhoff (teorema 8.2) é falsa. Isto é, mostre que existe umgrafo não bipartido tal que, para todo vetor c com valores em Q, o valor ótimo do pl (1) é igual aocusto de um ep mínimo. [CCPS 5.23]

8.13 Reduza o problema do ep mínimo em grafos bipartidos ao problema do fluxo de custo mínimo(problema 5.1). Em seguida, use o teorema 5.6 (seção 5.4, página 66) para provar o teorema deBirkhoff (teorema 8.2). [CCPS 5.24]

8.14 ? Prove a primeira parte do teorema de Birkhoff (teorema 8.2), ou seja, mostre que um grafobipartido G tem um ep se e somente se o pl (1) tem uma solução viável. (Dica: Suponha que Gnão tem ep e mostre que o pl dual (2) é ilimitado.)

8.15 Prove a primeira parte do teorema de Birkhoff (teorema 8.2), ou seja, mostre que um grafo bipar-tido G tem um ep se e somente se o pl (1) tem uma solução viável. (Dica: Seja x uma soluçãoviável do pl (1). Se x não é inteiro, existe um circuito C tal que 0 < xe < 1 para cada aresta e de C.Modifique x de modo a aumentar o número de componentes inteiras.) [CCPS 5.25]

8.16 Mostre que o pl (1) tem uma solução viável se e somente se existe um conjunto de arestas ecircuitos ímpares tal que todo nó do grafo pertence a exatamente um dos circuitos ou a exatamenteuma das arestas, mas não ambos. [CCPS 5.22]

8.17 Como calcular um potencial viável y na linha 01 do algoritmo HÚNGARO? (Procure calcular y demodo a colocar muitas arestas em Ey .)

8.18 Reescreva o código do algoritmo HÚNGARO trocando o bloco de linhas 08-15 por uma invocaçãodo algoritmo EMPBIPARTIDOPERFEITO (página 108). Para isso, o algoritmo EMPBIPARTIDOPER-FEITO precisa sofrer duas pequenas adaptações. Primeira adaptação: eliminar a inicialização

Page 132: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

124 EMPARELHAMENTO DE CUSTO MíNIMO FEOFILOFF

M ← ∅ (linha 01) e aceitar um emparelhamento imperfeito M como argumento. Segunda adap-tação: na linha 12, devolver M e T em lugar de A(T ).

8.19 Calcule um ep mínimo no grafo bipartido completo com bipartição (a, b, c, d) que tem oscustos indicados abaixo. Comece com o potencial y indicado abaixo (ele é viável?) e com oemparelhamento M = ac.

ac ad bc bd

c +10 +50 +30 +30

y

a 0b +2c +1d +4

8.20 Calcule um ep mínimo no grafo bipartido completo com bipartição (a, b, c, d, e, f) que tem oscustos indicados abaixo. Procure escolher o potencial inicial y de modo que o grafo de igualdadeGy tenha muitas arestas.

ad ae af bd be bf cd ce cf

c +20 +10 +50 +40 +30 +30 +50 +40 +20

8.4 Um programa linear mais poderoso

Voltamos a considerar o problema do ep mínimo em grafos arbitrários. Uma soluçãoótima x do programa linear (1) pode não ser o vetor característico de um emparelha-mento perfeito. Precisamos de um pl mais “poderoso”, com restrições que “cortemfora” essas soluções.

EXEMPLO 6: Considere a instância do problema do ep mínimo descrita a seguir. Uma soluçãoótima do pl (1) não define um ep.

a b c d e f

a − 1 1 − − 1b 1 − 1 − 1 −c 1 1 − 1 − −d − − 1 − 1 1e − 1 − 1 − 1f 1 − − 1 1 −

ab bc ca de ef fd be cd af

c +1 +2 +3 +4 +5 +6 +7 +8 +9

As tabelas a seguir indicam uma solução viável x do pl (1) e uma solução viável y do pl dual (2),bem como o custo reduzido c:

ab bc ca de ef fd be cd af

x 0.5 0.5 0.5 0.5 0.5 0.5 0 0 0c 0 0 0 0 0 0 5.5 3.5 4.5

y

a +1.0b 0.0c +2.0d +2.5e +1.5f +3.5

Confira a viabilidade das soluções e as condições de folgas complementares! Verifique também quecx = 10.5 =

∑yv . Portanto, x e y são soluções ótimas dos respectivos pl’s. Entretanto, é evidente

que x não define um emparelhamento. (O custo de um ep mínimo é 14.)

Page 133: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

FEOFILOFF EMPARELHAMENTO DE CUSTO MíNIMO 125

Dizemos que um corte D num grafo G tem margem ímpar (= is an odd cut) se D =∂(S) e |S| é ímpar. (Note que a paridade de |D| é irrelevante.) Denotaremos por Co conjunto de todos os cortes de margem ímpar do grafo. Se D ∈ C e x é o vetorcaracterístico de um emparelhamento perfeito então

x(D) ≥ 1. (5)

Portanto, podemos acrescentar essas desigualdades ao pl (1). O resultado é o se-guinte pl:

minimize cx

sob as restriçõesx(∂(v)) = 1 para cada v em V

x(D) ≥ 1 para cada D em Cxe ≥ 0 para cada e em E.

(6)

As restrições “x(D) ≥ 1” são conhecidas como desigualdades florais (= blossom ine-qualities). O vetor característico x de qualquer ep é solução viável de (1). (Na direçãocontrária, é preciso exigir que x seja inteiro.)

A ideia de acrescentar restrições lineares a um programa linear para eliminar soluçõesfracionárias indesejadas é muito efetiva e mostrou-se útil em muitos problemas deotimização combinatória além do problema que estamos estudando.

O dual de (6) tem uma variável yv para cada nó v e uma variável YD para cada D em Ce consiste em encontrar um par (y, Y ) que

maximize∑

(yv : v ∈ V ) +∑

(YD : D ∈ C)sob as restrições

yu + yv +∑

(YD : uv ∈ D ∈ C) ≤ cuv para cada uv em E

YD ≥ 0 para cada D em C.

(7)

Dado um par (y, Y ), o custo reduzido de uma aresta uv é o número cuv := cuv − yu −yv −

∑(YD : uv ∈ D ∈ C). Portanto, (y, Y ) é viável em (7) se e somente se ce ≥ 0 para

cada e em E e YD ≥ 0 para cada D em C.

As condiçoes de folgas complementares para o par dual de programas lineares são asseguintes:

para cada e em E, xe > 0 implica ce = 0,para cada D em C, YD > 0 implica x(D) = 1.

Se x é o vetor característico de um ep M , essas condições podem ser escritas assim:

para cada e em E, e ∈M implica ce = 0,para cada D em C, YD > 0 implica |M ∩D| = 1.

As desigualdades florais. As desigualdade florais do programa linear (6) podem serescritas assim:

x(∂(S)) ≥ 1 para cada S ⊆ V tal que |S| é ímpar.

Page 134: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

126 EMPARELHAMENTO DE CUSTO MíNIMO FEOFILOFF

As restrições que têm |S| = 1 podem ser eliminadas, pois já estão implícitas nas res-trições da forma x(∂(v)) = 1. Além disso, para cada partição (S, S) de V , podemoseliminar a restrição correspondente a um dos dois blocos da partição, uma vez que∂(S) = ∂(S). Isso pode ser organizado da seguinte maneira. Escolha um nó qualquer re seja S o conjunto de todos os subconjuntos S de V rr tais que |S| é ímpar e |S| ≥ 3.Com isso, as desigualdade florais do pl (6) podem ser escritas assim:

x(∂(S)) ≥ 1 para cada S em S (8)

e o vetor dual Y passa a ser indexado por S.

Feita essa alteração, pode ser interessante submeter o pl a um software de programaçãolinear. Como S é muito grande, o seguinte truque prático pode ser útil: use apenasuma pequena parte S ′ de S contendo os conjuntos S mais “promissores”; se isso nãoproduzir o vetor característico de um ep, acrescente a S ′ mais alguns elementos de Sque pareçam promissores e repita o processo. O exame do exemplo 6, por exemplo,sugere que o elemento mais promissor de S é a, b, c; o exemplo 7 confirma essasuspeita.

EXEMPLO 7: Considere novamente a instância do problema do ep mínimo do exemplo 6, desta vezdo ponto de vista dos pl’s (6) e (7).

a b c d e f

a − 1 1 − − 1b 1 − 1 − 1 −c 1 1 − 1 − −d − − 1 − 1 1e − 1 − 1 − 1f 1 − − 1 1 −

ab bc ca de ef fd be cd af

c +1 +2 +3 +4 +5 +6 +7 +8 +9

Uma solução viável x do pl (6) e uma solução viável (y, Y ) do pl dual (7) estão indicadas abaixo,juntamente com o custo reduzido c. O vetor dual Y tem uma única componente não nula: YS > 0apenas quando S = a, b, c.

ab bc ca de ef fd be cd af

x 1 0 0 0 1 0 0 1 0c 0 0 0 +1 0 +2 0 0 0

y

a +1b 0c +2d +1e +2f +3

Y

abc 5

Confira a viabilidade das soluções e a validade das condições de folgas complementares! Verifiquetambém que cx = 14 =

∑yv +

∑YS . Portanto, x e (y, Y ) são soluções ótimas dos respectivos pl’s.

Segue daí que M = ab, cd, ef é um ep mínimo.

O número de desigualdades florais é muito grande (na ordem do número de subcon-juntos de V (G)). Portanto, o número de componentes do vetor Y também é muitogrande. Verifica-se, entretanto, que a maior parte das componentes de Y é nula. Maisprecisamente, numa solução ótima (y, Y ) de (7), os conjuntos S para os quais YS > 0formam uma coleção laminar — cada dois desses conjuntos são disjuntos ou estãoincluídos um no outro — e portanto há menos que 2n deles.

Page 135: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

FEOFILOFF EMPARELHAMENTO DE CUSTO MíNIMO 127

Exercícios

8.21 Seja M um ep em um grafo G. Seja D um corte de margem ímpar. Mostre que M ∩D não é vazio.

8.22 Mostre que o pl (7) é o dual do pl (6). Verifique que as condições de folgas complementares dadasno texto acima.

8.23 Suponha que G é um grafo com número ímpar de nós (e portanto não tem ep). Mostre que ocorrespondente pl (6) é inviável e o pl (7) é ilimitado. Repita o exercício supondo que G tem duascomponentes conexas, cada uma com número ímpar de nós.

8.24 Mostre que um grafo G tem um ep se e somente se o pl (6) é viável. (Sugestão: Suponha que Gnão tem ep e mostre que o pl dual (7) é ilimitado.) (Observação: Isso prova a primeira parte doteorema 8.3.) [CCPS 5.28]

8.25 Laminaridade. Uma coleção L de subconjuntos de V é laminar se, para cada par (L1, L2) deelementos da coleção, tem-se L1 ∩ L2 = ∅ ou L1 ⊆ L2 ou L1 ⊇ L2. Mostre que |L| ≤ 2|V |.

8.26 Escreva explicitamente as desigualdades florais do exemplo 7.

8.27 Encontre um ep mínimo no grafo da figura. Encontre também uma solução ótima do pl (7). (Dica:Tire as desigualdades florais de (7) e use um software de programação linear para resolver o pl.Examine o subgrafo induzido pelas arestas e que têm 0 < xe < 1. Isso sugere as desigualdesflorais mais promissoras. Acrescente essas desigualdes ao pl e resolva-o novamente. Repita oprocesso.) [CCPS 5.27]

8.28 Considere o pl (7) com a alteração decorrente de (8). Suponha que (y, Y ) é uma solução viáveldo pl. Para cada S em S e cada v ∈ S, faça yv ← yv + YS ; depois, para cada S, faça YS ← 0. Essaoperação preserva viabilidade de (y, Y )?

8.5 Algoritmo para grafos arbitrários

Se x é uma solução ótima do programa linear (6) então é claro que cx ≤ c(M) paraqualquer emparelhamento perfeito M . J. Edmonds mostrou (1965) que vale a igual-dade quando o ep é mínimo:

Teorema 8.3 (Edmonds) Um grafo tem um emparelhamento perfeito se e somente se oprograma linear (6) tem uma solução viável. Ademais, se o grafo tem um emparelha-mento perfeito então, qualquer que seja a função-custo, o custo de um emparelhamentoperfeito mínimo é igual ao valor ótimo do pl.

Para provar o teorema 8.3, basta construir um algoritmo que produza um ep M e umasolução viável (y, Y ) do pl (7) que satisfaçam as condições de folgas complementares.Um tal algoritmo é análogo ao algoritmo HÚNGARO, mas mais complexo, pois o pl (7)é mais complexo que o pl (2).

Page 136: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

128 EMPARELHAMENTO DE CUSTO MíNIMO FEOFILOFF

Um algoritmo com essas propriedades é conhecido como algoritmo das flores paraep mínimo (= blossom algorithm for minimum perfect matching). Da mesma forma queHÚNGARO usa EMPBIPARTIDOPERFEITO como subrotina, o algoritmo das flores usaEMPPERFEITO (página 111) como subrotina. As flores produzidas por EMPPERFEITOcorrespondem, grosso modo, aos cortes S que têm YS 6= 0.

Não tenho condições de discutir o algoritmo. Vou me limitar a exibir uma descrição dealto nível, sem maiores explicações:

EMPPERFEITOMÍNIMO (G)

01 seja y uma solução viável do pl (2)02 seja M ′ um emparelhamento qualquer em Gy talvez M = ∅03 se M ′ é um ep em G

04 então devolva M ′ e pare05 G′ ← G G′ é o grafo derivado06 seja r um nó M ′-exposto de G′

07 T ← (r, ∅)08 repita as pontas de cada e em Ey e E são tomadas em G′

09 caso existe vw ∈ Ey com v ∈ B(T ), w /∈ V (T ) e w exposto por M ′:10 M ′ ← AUMENTAEMP (G′,M ′, T, r, vw)

11 se G′ não tem nó M ′-exposto12 então estenda M ′ a um ep M de G e pare13 senão seja r um nó M ′-exposto14 T ← (r, ∅)15 caso existe vw ∈ Ey com v ∈ B(T ), w /∈ V (T ) e w coberto por M ′:16 T ← ESTENDEÁRVORE (G′,M ′, T, vw)

17 caso existe vw ∈ Ey com v ∈ B(T ) e w ∈ B(T ):18 CONTRAIFLOR (G′,M ′, T, r, vw, c′)

19 caso existe pseudonó v ∈ A(T ) tal que yv = 0:20 expanda v e atualize M ′, T e c′

21 caso nenhum dos anteriores:22 se todo vw ∈ E com v ∈ B(T ) tem w ∈ A(T )

23 então se A(T ) não tem pseudonós24 então pare G não tem ep25 senão modifique y

Esse algoritmo pode ser implementado de modo a consumir O(mn2) unidades detempo.

Exercícios

8.29 O que há de errado com a seguinte enunciado alternativo do teorema de Edmonds? “Em qualquergrafo, o custo de um ep mínimo é igual ao valor ótimo do pl (6).”

8.30 Critique a seguinte tentativa de prova algorítmica do teorema (8.3): “Use qualquer algoritmo deprogramação linear para determinar uma solução ótima, digamos x, do pl (6). Pelo teorema forte

Page 137: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

FEOFILOFF EMPARELHAMENTO DE CUSTO MíNIMO 129

da dualidade, existe uma solução viável (y, Y ) do pl dual (7) tal que cx =∑yv +

∑YS . Então x

representa um ep M e é claro que cx = c(M).”

8.6 Emparelhamentos de custo máximo

Problema 8.4 (emparelhamento de custo máximo) Dado um grafo G e uma função cque atribui um custo em Q a cada aresta, encontrar um emparelhamento M que maxi-mize c(M).

Esse problema pode ser reduzido ao problema do emparelhamento perfeito mínimodiscutido nas seções anteriores, mas poupo o leitor dos detalhes.

Exercícios

8.31 Suponha dado um grafo com custos nas arestas e um número positivo α. Se multiplicarmos ocusto de cada aresta por α, é verdade que todo emparelhamento de custo máximo continua tendocusto máximo? Se somarmos α ao custo de cada aresta, é verdade que todo emparelhamento decusto máximo continua continua tendo custo máximo?

Page 138: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

130 EMPARELHAMENTO DE CUSTO MíNIMO FEOFILOFF

Page 139: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

Capítulo 9

Poliedros inteiros

Este capítulo inicia o estudo do poliedro dos emparelhamentos perfeitos de customínimo. O estudo supõe conhecida a existência de um bom algoritmo para empa-relhamento perfeito mínimo, como o algoritmo das flores mencionado na seção 8.5,página 127.

Usaremos a abreviatura “ep” para a expressão “emparelhamento perfeito”. Emboraeste capítulo trate apenas do poliedro dos ep’s, muitas das ideias e conceitos aplicam-se igualmente bem a quaisquer outros poliedros.

Os capitulos anteriores destas notas estão no mundo combinatório e discreto. Este ca-pítulo se aventura num outro mundo, o mundo geométrico e contínuo. A colaboraçãoentre esses dois mundos é surpreendentemente frutífera.

9.1 Casco convexo e separação

Seja E um conjunto finito e sejam s1, . . . , sj elementos de RE (assim, cada si é um vetorreal indexado porE). Uma combinação convexa dos vetores s1, . . . , sj é qualquer vetorda forma

λ1s1 + · · ·+ λjsj ,

sendo λ1, . . . , λj números não-negativos tais que λ1 + · · · + λj = 1. Se denotarmos porS a matriz cujas colunas são s1, . . . , sj , podemos dizer que uma combinação convexadas colunas de S é qualquer vetor da forma Sx, sendo x um vetor (x1, . . . , xj) tal quex ≥ 0 e x1 + · · ·+ xj = 1.

Um conjunto C de vetores é convexo se qualquer combinação convexa de seus elemen-tos também está em C.

O casco convexo (= convex hull) de um conjunto finito S de vetores é o conjunto detodas as combinações convexas de elementos de S. O casco convexo de um conjuntoS de vetores será denotado por cc(S) ou por conv.hull(S). É evidente que S ⊆ cc(S) eque cc(S) é um conjunto convexo.

EXEMPLO 1: Considere o grafo definido pela matriz de adjacências abaixo. Os vetores caracterís-ticos dos dois únicos ep’s do grafo estão representados na tabela. Como o exemplo é pequeno, o

131

Page 140: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

132 POLIEDROS INTEIROS FEOFILOFF

casco convexo dos ep’s pode ser representado por uma única expressão, dada abaixo da tabela.Nessa expressão, λ é qualquer número real no intervalo fechado [0, 1].

a b c d

a − − 1 1b − − 1 1c 1 1 − −d 1 1 − −

ac ad bc bd

1 0 0 10 1 1 1

λ 1−λ 1−λ λ

O conjunto cc(S) é tipicamente muito maior que S. Apesar disso, maximizar umafunção linear sobre cc(S) produz o mesmo resultado que maximizar sobre S:

Proposição 9.1 Para qualquer conjunto finito S de elementos de RE e qualquer vetorc em RE , min (cx : x ∈ S) = min (cx : x ∈ cc(S)).

Separação

As combinações convexas de um conjunto finito S de vetores podem ser separadas porum hiperplano de qualquer vetor que não seja combinação convexa de S:

Proposição 9.2 (lema de Farkas) Para qualquer subconjunto finito S de RE e qualquervetor v em RE , se v /∈ cc(S) então existem c em RE e t e R tais que cv < t mas cs ≥ tpara todo s em cc(S).

A conclusão da proposição pode ser verbalizada assim: “o hiperplano cs= t separa vde cc(S).”

PROVA: Sejam s1, s2, . . . , sj os elementos de S e J o conjunto de índices 1, 2, . . . , j.Interprete S como uma matriz indexada por E × J cujas colunas são s1, . . . , sj . Sejad um vetor qualquer em RJ e considere o seguinte problema de programação linear:encontrar x em RJ que

maximize dx

sob as restrições1x = 1

Sx = v

x ≥ 0 .

Page 141: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

FEOFILOFF POLIEDROS INTEIROS 133

(Na expressão “x ≥ 0”, o “0” é um vetor em RJ cujos elementos são todos nulos.Na expressão “1x = 1”, o primeiro “1” é um vetor em RJ cujos elementos são todosiguais a 1 e o segundo “1” é um número real. Portanto, a expressão 1x = 1 significax1 + · · · + xj = 1.) O dual desse programa linear consiste em encontrar z em R e y emRE que

minimizem z + yv

sob as restriçõesz1 + yS ≥ d .

Tome esse par de pl’s com d = 0. Como v /∈ cc(S), o primeiro pl é inviável. Já osegundo pl é viável, pois (z, y) = (0, 0) satisfaz as restrições. Portanto, pelo teoremaforte da dualidade, o segundo pl é ilimitado. Em particular o segundo pl tem umasolução viável (z, y) tal que z + yv < 0. Portanto, yS ≥ −z1 mas yv < −z. Paraconcluir, a proposição 9.1 garante que ys ≥ −z para todo s em cc(S). Agora bastatomar c = y e t = −z.

Exercícios

9.1 Prove a proposição 9.1.

9.2 Poliedro dos emparelhamentos perfeitos

Dado um grafo G, seja PM(G) o conjunto dos vetores característicos de todos os ep’sde G.1 Para simplificar o palavreado, diremos que cada elemento de PM(G) é um epde G, deixando a expressão “vetor característico de” subentendida.

EXEMPLO 2: Considere o grafo definido abaixo por sua matriz de adjacências. O grafo tem exata-mente 3 ep’s. Esses ep’s estão representados pelas linhas da tabela à direita.

a b c d e f

a − − − 1 1 −b − − − 1 1 1c − − − − 1 1d 1 1 − − − −e 1 1 1 − − −f − 1 1 − − −

ad ae bd be bf ce cf

1 0 0 1 0 0 10 1 1 0 0 0 11 0 0 0 1 1 0

Denotaremos por PM(G) o conjunto de todos os vetores x em RE(G) que satisfazem oseguinte sistema de desigualdades:

x(∂(v)) = 1 para cada v em V (G)

x(∂(S)) ≥ 1 para cada S em S(G)

xe ≥ 0 para cada e em E(G).(1)

Esse é o conjunto de soluções viáveis do programa linear (6), com a alteração (8) (vejaa seção 8.4, página 125). É claro que PM(G) é convexo.

1 “PM” é uma abreviatura de “perfect matching”.

Page 142: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

134 POLIEDROS INTEIROS FEOFILOFF

EXEMPLO 3: Se G é o grafo descrito no exemplo 2, cada linha da tabela abaixo representa um vetordo conjunto PM(G). Confira!

ad ae bd be bf ce cf

1.0 0.0 0.0 1.0 0.0 0.0 1.00.3 0.7 0.7 0.2 0.1 0.1 0.90.15 0.85 0.85 0.1 0.05 0.05 0.950.12 0.88 0.88 0.12 0.0 0.0 1.0

É fácil ver que cc(PM(G)) ⊆ PM(G). O seguinte teorema prova a inclusão na outradireção. A prova do teorema usa o algoritmo das flores (para ep de custo mínimo)mencionado na página 127.

Teorema 9.3 (poliedro dos ep’s) Para qualquer grafo G, o casco convexo de PM(G) éigual ao conjunto PM(G).

PROVA: Queremos provar que cc(PM(G)) = PM(G). Como todos os ep’s de G sa-tisfazem o sistema de desigualdades (1) (veja discussão das desigualdades florais napágina 125), temos PM(G) ⊆ PM(G). Como PM(G) é convexo, temos cc(PM(G)) ⊆PM(G). A prova da inclusão recíproca é mais complexa.

Adote as abreviaturas S := PM(G), C := cc(S) e P := PM(G). Seja x um vetorqualquer em RE e suponha que x 6∈ C. Para mostrar que C ⊇ P , basta mostrar quex /∈ P . Pela proposição 9.2, algum hiperplano separa x de C, isto é, existem c em RE et em R tais que

cx < t mas cs ≥ t para todo s em C.

Agora trate c como uma função-custo e submeta (G, c) ao algoritmo das flores para epmínimo. O algoritmo produzirá um ep x∗ em S tal que cx∗ ≤ cx para todo x em P .Como x∗ ∈ S ⊆ C, temos cx∗ ≥ t. Segue daí que cx ≥ cx∗ ≥ t para todo x em P . Comocx < t, concluímos que x /∈ P .

Uma consequência imediata do teorema é que PM(G) = ∅ se e somente se PM(G) = ∅.Isso observação foi objeto do exercício 8.24, na página 127.

Exercícios

9.2 Prove que PM(G) é convexo.

9.3 Poliedros, politopos, e seus vértices

Já usamos a palavra “poliedro,” informalmente, nas seções anteriores. Esta seção de-fine o conceito com precisão. Também define politopos e seus vértices. As provas detodas as afirmações serão omitidas, embora não sejam triviais.

Um subconjunto P de RE é um poliedro (= polyhedron) se existe um conjunto finito I ,uma matriz A real indexada por I × E, e um vetor b indexado por I tais que

x ∈ P se e somente se Ax ≤ b.

Page 143: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

FEOFILOFF POLIEDROS INTEIROS 135

Um poliedro P em RE é um politopo (= polytope) se for limitado, ou seja, se existiremvetores l e u em RE tais que l ≤ x ≤ u para todo x em P .

EXEMPLO 4: Seja P o conjunto de todos os vetores (x1, x2, x3) que satisfazem o sistema de desigual-dades abaixo, do lado esquerdo. (Faça uma figura.) Esse conjunto é um politopo pois 0 ≤ xi ≤ 5para todo i. A quarta e a quinta linhas do sistema de desigualdades são redundantes: o poliedronão se altera se essas linhas forem apagadas.

x1 ≥ 1x2 ≥ 2

x1 + x2 ≤ 5x1 + 2x2 ≥ 0x1 + x2 + x3 ≤ 9

x3 = 3

−1 0 0 −10 −1 0 −21 1 0 5−1 −2 0 0

1 1 1 90 0 1 30 0 −1 −3

O sistema de desigualdades pode escrito como Ax ≤ b, sendo A a matriz e b o vetor à direita dasdesigualdades. O conjunto de índices de linhas de A é I = 1, . . . , 7 e o conjunto de índices decolunas é E = 1, 2, 3. O posto de A é 3.

Como veremos adiante, se um sistema de desigualdades Ax ≤ b define um politopoem RE então o posto da matriz A é |E|, ou seja, A tem |E| linhas linearmente indepen-dentes, isto é, todo vetor de RE é combinação linear das linhas de A, isto é, A não temcolunas “redundantes”.

Para qualquer grafo G, o conjunto PM(G) (veja a seção anterior) é um poliedro. Como0 ≤ xe ≤ 1 para cada x, o poliedro PM(G) é um politopo. Trata-se do politopo dosemparelhamentos perfeitos.

Vértices

Todo politopo tem “bicos”. Os vetores que estão nesses “bicos” são especialmenteimportantes. A definição exata do conceito de “bico”, dada a seguir, exige algumesforço.

Seja A uma matriz real indexada por I × E e b um vetor real indexado por I . SejaP o poliedro x : Ax ≤ b. Para qualquer L ⊆ I , denote por AL a submatriz de Acorrespondente a L, ou seja, o conjunto de todas as linhas de A cujo índice está em L.Analogamente, denote por bL o subvetor de b correspondente a L.

Um vértice de P é qualquer vetor v de P dotado da seguinte propriedade: existe L ⊆ Ital que v é o único vetor de RE tal queALv = bL. Nas condições da definição, o posto deAL é, necessariamente, igual a |E|. (Portanto, todos os vetores em RE são combinaçõeslineares das linhas de AL.)

EXEMPLO 5: Considere novamente o politopo P do exemplo 4. Veja abaixo, mais uma vez, osistema de desigualdades que define P . (É mais cômodo discutir o politopo em termos das desi-gualdades originais, e não em termos da matrizA.) O subsistema formado pela primeira, segunda esexta desigualdades, destacado abaixo, é satisfeito com igualdade pelo vetor (1, 2, 3) e por nenhum

Page 144: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

136 POLIEDROS INTEIROS FEOFILOFF

outro; esse vetor pertence a P e portanto é um vértice de P .

x1 ≥ 1x2 ≥ 2

x1 + x2 ≤ 5x1 + 2x2 ≥ 0x1 + x2 + x3 ≤ 9

x3 = 3

x1 = 1x2 = 2

x3 = 3

x1 = 1

x1 + x2 = 5

x3 = 3

O subsistema formado pela primeira, terceira e sexta desigualdades é satisfeito com igualdadeapenas por (1, 4, 3); esse vetor pertence a P e portanto é um vértice. Analogamente, o subsistemaformado pela segunda, terceira e sexta desigualdades define o vértice (3, 2, 3). Esses são os trêsúnicos vértices de P .

A título de curiosidade, veja alguns subsistemas que não definem vértices. O subsistema for-mado pela primeira, quarta, e sexta desigualdades é satisfeito com igualdade apenas pelo vetor(1,−0.5, 3), mas esse vetor não é um vértice pois não pertence a P . O subsistema formado pelaprimeira, segunda, terceira e sexta desigualdades não é satisfeito com igualdade por nenhum vetor.O subsistema formado pela primeira e segunda desigualdades é satisfeito com igualdade por maisde um vetor.

EXEMPLO 6: Considere o grafo do exemplo 1, que tem conjunto de arestas E = ac, ad, bc, bd.Seja P o poliedro de todos os vetores em RE que satisfazem o sistema de desigualdades abaixo, àesquerda. (As desigualdades foram numeradas, de 1 a 8, para facilitar a discussão.) Esse poliedroé um politopo, pois 0 ≤ x ≤ 1 para todo x em P . O subsistema formado pelas desigualdades 1-5e 8 é satisfeito com igualdade (veja abaixo e à direita) pelo vetor (xac, xad, xbc, xbd) = (0, 1, 1, 0) epor nenhum outro. Esse vetor pertence a P e portanto é um vértice de P .

12345678

xac + xad = 1xbc + xbd = 1

xac + xbc = 1xad + xbd = 1

xac ≥ 0xad ≥ 0

xbc ≥ 0xbd ≥ 0

xac + xad = 1xbc + xbd = 1

xac + xbc = 1xad + xbd = 1

xac = 0

xbd = 0

Esse mesmo vértice é definido por outros subsistemas, como o formado pelas desigualdades 1, 2,5, 8, o formado pelas desigualdades 1-3, 5 e 8, etc.

O subsistema formado pelas desigualdades 1-4 e 6-7 é satisfeito com igualdade pelo vetor (1, 0, 0, 1)e por nenhum outro. Esse vetor satisfaz todas as desigualdades e portanto é um vértice de P .Vários outros subsistemas definem esse vértice.

Os vetores (0, 1, 1, 0) e (1, 0, 0, 1) são os dois únicos vértices de P . O subsistema formado pelasdesigualdades 1-4 não define um vértice pois é satisfeito com igualdade por vários vetores, como(0.5, 0.5, 0.5, 0.5), por exemplo.

Embora isso não seja evidente, todos os vértices do politopo PM(G) da seção anteriorsão ep’s, ou seja, estão em PM(G).

Um vetor v de um subconjunto Q de RE é extremo em Q se não for combinação con-vexa de vetores emQrv, ou seja, se não existem u ew emQ tais que v = λu+(1−λ)wpara algum 0 < λ < 1. A seguinte proposição dá uma definição alternativa muito útildo conceito de vértice:

Proposição 9.4 Um vetor v de um poliedro P é um vértice se e somente se é um vetorextremo de P .

Page 145: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

FEOFILOFF POLIEDROS INTEIROS 137

Por outro lado, todos os vetores de um politopo são combinação convexa de seusvértices:

Teorema 9.5 Todo politopo é igual ao casco convexo de seus vértices.

Em outras palavras, se P é um politopo e S é o conjunto de vértices de P então P =cc(S). (Isso é uma generalização do teorema 9.3, que trata do politopo dos ep’s.)

EXEMPLO 7: O conjunto de todos os vetores (x1, x2) que satisfazem as o sistema de desigualdadesabaixo é um politopo. A figura mostra que o politopo é combinação convexa de seus vértices.

1x1 + 3x2 ≤ 181x1 + 0x2 ≤ 61x1 − 2x2 ≤ 2−1x1 − 1x2 ≤ −5−2x1 + 1x2 ≤ −1

Nem certo sentido, vale a recíproca do teorema 9.5:

Teorema 9.6 Um conjunto P é um politopo se e somente se existe um conjunto finitoS tal que P = cc(S).

Em particular, o teorema afirma que para qualquer conjunto finito S de vetores existeum conjunto finito de desigualdades lineares, digamos Ax ≤ b, tal que x : Ax ≤ b =cc(S).

Essas duas maneiras de descrever um politopo — por um lado, como conjunto devetores que satisfazem desigualdades lineares e, por outro, como casco convexo deum conjunto de vetores — está intimamente relacionada com o fenômeno da duali-dade em programação linear e serve de fundamento para os métodos geométricos emcombinatória.

No problema do ep mínimo (problema 8.1), começamos com o conjunto de todos osep’s do grafo e consideramos o casco convexo, digamos C, desses ep’s. Gostaríamos deobter uma descrição deC por desigualdades lineares. A primeira tentativa de fazer issoproduziu as desigualdades do pl (1), página 118, seção 8.2, que se revelaram corretas nocaso de grafos bipartidos mas insuficientes para grafos arbitrários. A segunda tentativaproduziu as desigualdades do pl (6), página 125, seção 8.4, que o teorema de Edmonds(teorema 8.3, página 127) mostrou corretas.

Exercícios

9.3 ? Seja S um conjunto finito de vetores. De acordo com o teorema 9.6, cc(S) é um politopo. Mostreque todo vértice de cc(S) está em S. (Dica: Se um vértice s em S é extremo em S, também éextremo em cc(S). Use a proposição 9.4 para concluir que s é um vértice de cc(S).)

Page 146: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

138 POLIEDROS INTEIROS FEOFILOFF

9.4 Politopos de programas lineares

Todo programa linear é um problema do seguinte tipo: dado um poliedro P ⊆ RE ,e um vetor c em RE , encontrar x em RE que minimize cx para x ∈ P . (Poderíamosigualmente bem ter dito “maximize” no lugar de “minimize”.) Nesta seção, vamosrepresentar esse problema por (P, c).

Um problema (P, c) é inviável se P = ∅. Uma solução viável de um problema (P, c) équalquer elemento de P . Um problema (P, c) é ilimitado se, para qualquer número α,existe x em P tal que cx < α. Uma solução ótima de um problema (P, c) é qualquer xem P que minimiza cx.

Se P é um politopo não vazio então (P, c) não é ilimitado, qualquer que seja c. Ademais,para qualquer c, o problema (P, c) tem uma solução ótima que é um vértice de P .

Se P é um politopo não vazio e todos os seus vértices são inteiros então, para qual-quer c, o problema (P, c) tem uma solução ótima que é um vetor inteiro.

O teorema 8.3 (página 127) equivale ao seguinte:

Teorema 9.7 (Edmonds) Para qualquer grafo G, todos os vértices do politopo PM(G)são inteiros.

Agora considere o politopo formado pelas soluções viáveis do pl (1), na página 118.Denotaremos esse politopo por FPM(G).2 Veja, mais uma vez, as desigualdades quedefinem que definem FPM(G):

x(∂(v)) = 1 para cada v em V (G)

xe ≥ 0 para cada e em E(G).(2)

O teorema de Birkhoff (teorema 8.2, na página 120) pode ser reenunciado assim:

Teorema 9.8 (Birkhoff) Para qualquer grafo bipartido G, todos os vértices do politopoFPM(G) são inteiros.

Surpreendentemente, mesmo que o grafo não seja bipartido, os vértices de FPM(G)são quase inteiros:

Teorema 9.9 Seja G um grafo e x um vetor em FPM(G). Então x é um vértice deFPM(G) se e somente se xe ∈ 0, 12 , 1 para todo e em E(G). Ademais, as arestas e paraas quais xe = 1

2formam circuitos ímpares sem nós em comum.

Exercícios

9.4 Esclareça a relação entre o teorema 9.9 o exercício 8.16 da página 123.

2 A letra “F” é a inicial de “Fractional”.

Page 147: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

FEOFILOFF POLIEDROS INTEIROS 139

9.5 Prove diretamente (isto é, sem usar o teorema 9.5) que todo politopo não vazio tem pelo menosum vértice. [CCPS 6.2]

9.6 Seja P um poliedro (não necessariamente limitado). Suponha que P ⊆ x : x ≥ 0. Mostre que Ptem um vértice. [CCPS 6.3]

9.7 Um conjunto emparelhável em um grafo G é o conjunto dos nós cobertos por algum emparelha-mento de G. Seja S o conjunto de vetores característicos de conjuntos emparelháveis de um grafobipartido G := (V,E) com bipartição (A,B). Considere as condições

x(C)− x(N(C)) ≤ 0 para todo C ⊆ Ax(A)− x(B) = 0

xv ≥ 0 para todo v ∈ Vxv ≤ 1 para todo v ∈ V .

Prove que se x ∈ cc(S) então x safisfaz essas condições. [CCPS 6.5]

9.8 Considere as seguintes condições:

y(∂(v)) = xv para todo v ∈ Vye ≥ 0 para todo e ∈ E.

No exercício 9.8, prove que x ∈ cc(S) se e somente se x ≤ 1 e existe y em RE que satisfaz ascondições acima. [CCPS 6.6]

Page 148: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

140 POLIEDROS INTEIROS FEOFILOFF

Page 149: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

Bibliografia

[AMO93] R.K. Ahuja, T.L. Magnanti, and J.B. Orlin. Network Flows: Theory, Algorithmsand Applications. Prentice Hall, 1993. i

[CCPS98] W.J. Cook, W.H. Cunningham, W.R. Pulleyblank, and A. Schrijver. Combina-torial Optimization. John Wiley, 1998. i

[Chv83] V. Chvátal. Linear Programming. W.H. Freeman, 1983. 8, 68

[CLRS01] T.H. Cormen, C.E. Leiserson, R.L. Rivest, and C. Stein. Introduction to Algo-rithms. MIT Press and McGraw-Hill, second edition, 2001. i

[Din70] E.A. Dinits. Algorithm for solution of a problem of maximum flow in anetwork with power estimation. Soviet Mathematics Doklady, 11:1277–1280,1970. 39

[Edm65] J. Edmonds. Paths, trees, and flowers. Canadian Journal of Mathematics,17:449–467, 1965. 111

[EK72] J. Edmonds and R.M. Karp. Theoretical improvements in algorihmic effici-ency for network flow problems. Journal of the ACM, 19:248–264, 1972. 39

[FF56] L.R. Ford and D.R. Fulkerson. Maximal flow through a network. CanadianJournal of Mathematics, 8:399–404, 1956. 34

[Kot56] A. Kotzig. Súvislost’ a pravideliná súvislost’ konecných grafov. Vysoká ŠkolaEkonomická, 1956. 34

[Sch03] A. Schrijver. Combinatorial Optimization: Polyhedra and Efficiency. Springer,2003. i

141

Page 150: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

Índice

?, iyTA, 7cTx, 6δ(·), 4∂(·), 81∂+(·), 4∂−(·), 4P ·Q, 3R, 4ν(·), 98⊕, 99G− v, 2G− e, 2G+ ij, 2G×A, 84G×C, 102Ω(·), 10Θ(·), 10

acúmulo de fluxo, 29alcance, 3algoritmo

das flores, 111emparelhamento máximo, 111emparelhamento perfeito mínimo, 128

de busca em largura, 26de Dijkstra, 25de Edmonds, 111, 114, 128de Ford, 16de Ford-Bellman, 20de Ford-Bellman para DAGs, 23de Ford-Fulkerson, 37de Gomory-Hu, 92do corte mínimo global, 86do dicaminho mínimo, 16, 20do emparelhamento

bipartido máximo, 115bipartido perfeito, 108máximo, 114, 116perfeito, 111perfeito mínimo, 128

do fluxo

de custo mínimo, 67máximo, 37

dos caminhos de aumento, 37dos circuitos de aumento, 67húngaro, 121polinomial, 10Simplex, 8

de transbordo, 71para redes, 68, 78

AMO, ianticadeia, 55antichain, 55ao alcance, 3arbórea

bipartição, 69tripartição, 77

arborescência, 4arco, 1

antiparalelo, 2direto, 2inverso, 2justo, 15paralelo, 1que entra, 1que sai, 1relaxado, 15tenso, 15

aresta, 5paralela, 1

árvore, 3alternante, 106de cortes, 89de um digrafo, 69degenerada, 77dirigida, 3divergente, 4frustrada, 107Gomory-Hu, 89, 91não-dirigida, 5

assintótica, 10

b, 59

142

Page 151: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

FEOFILOFF ÍNDICE 143

Bellman, 20Berge, 100binário, 5, 11bipartição, 4bipartição arbórea, 69

degenerada, 69fortemente viável, 74

bipartido, 4Birkhoff, 120blossom, 110

inequality, 125blossom algorithm

for maximum matching, 111for minimum perfect matching, 128

booleano, 11busca em largura, 26

c, 13, 59c, 63, 119, 125caminho, 2

alternante, 98aumentador, 98de aumento, 35de incremento, 34dirigido, 3mínimo, 13simples, 3vai de r a s, 2

caminhosinternamente disjuntos, 45

cap(·), 33capacidade

de arco, 32de corte, 33inteira, 36

casco convexo, 131CCPS, icc(·), 131ciclo euleriano dirigido, 53circuito, 3

alternante, 118de aumento, 64dirigido, 3fundamental, 70, 78ímpar, 4, 102

circulação, 30de Hoffman, 50

CLRS, icobertura, 44, 100

por arestas, 116

por dicaminhos, 55por nós, 44

coleçãodisjunta, 33laminar, 84, 111, 126, 127

complexidade de algoritmos, 9componente

conexa, 3ímpar, 100

comprimento de caminho, 2concatenação de caminhos, 3condições de otimalidade

de caminho mínimo, 15, 16de emparelhamento, 100de fluxo máximo, 34de fluxo mínimo, 54, 62de Gale, 48de Hoffman, 51de Tutte, 101

conservação de fluxo, 30contração, 84, 102convex hull, 131convexa

combinação, 131convexo, 131

casco, 131conjunto, 131

conv.hull(·), 131corte, 4, 81

de capacidade mínima, 34de margem ímpar, 125divide um conjunto, 85entre dois nós, 31, 81globalmente mínimo, 85ímpar, 125mínimo, 34, 82separa dois nós, 31, 81W -mínimo, 85

custode arco, 13de caminho, 70de dicaminho, 13de fluxo, 59mínimo, 13positivo, 25reduzido, 63, 119, 125unitário, 26

δ(·), 4∂(·), 81

Page 152: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

144 ÍNDICE FEOFILOFF

∂+(·), 4∂−(·), 4DAG, 3, 23def(·), 98demandas

nos arcos, 50nos nós, 47

desigualdadedas flores, 125floral, 125submodular, 34, 81

dicaminho, 3mínimo, 13simples, 3

dicaminhosinternamente disjuntos, 45

dicircuito, 3digrafo, 1

acíclico, 3, 23bipartido, 4completo, 42conexo, 3fortemente conexo, 3induzido, 2residual, 64simétrico, 2

Dijkstra, 25Dilworth, 56Dinits, 39dipath, 3dipath cover, 55divide and conquer, 91divisão e conquista, 91dualidade

teorema forte, 7teorema fraco, 7, 22

E(·), 1E(·), 37E(·), 37edge, 1

cover, 116Edmonds, 39, 105, 111, 127emparelhamento, 43, 97

maximal, 98máximo, 97perfeito, 60, 101

mínimo, 117ep, 101escalonamento

de aviões, 57de máquinas paralelas, 57

excesso de fluxo, 29

feasible tree, 69flor, 110floresta, 3

dirigida, 3fluxo, 29

de custo mínimo, 59de r a s, 31induzido

por uma bipartição, 69por uma tripartição, 77

inteiro, 36máximo, 32ótimo, 59respeita capacidade, 32satisfaz demanda, 47, 50vazio, 69viável, 32, 59

de custo mínimo, 59folgas complementares, 8fonte, 4Ford, 16, 34forest, 3fortemente

polinomial, 10fortemente conexo, 3FPM(·), 138Fulkerson, 34função, 11

-capacidade, 32, 81-custo, 13-predecessor, 17

Gale, 48Gallai, 105Gomory, 85, 89grafo, 1, 5

bipartido, 5completo, 10

capacitado, 81completo, 120conexo, 3derivado, 110dirigido, 1induzido, 2não-dirigido, 5

grau, 5de entrada, 4

Page 153: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

FEOFILOFF ÍNDICE 145

de saída, 4

Hall, 101, 109hiperplano, 132Hoffman, 51Hu, 85, 89

ilimitado, 7, 138indegree, 4int(·), 31intensidade de fluxo, 31inviável, 138iteração degenerada, 72

Karp, 39Konig, 44, 45Kotzig, 34Kuhn, 121

laminar, 84, 111, 126, 127largura

de caminho de aumento, 35

m, 2margem

de corte, 5, 81negativa, 5positiva, 5

matching, 43, 97matriz

binária, 11booleana, 11de adjacências, 2de incidência, 2, 5

maximal, 98Menger, 45MFMC, 34minimum-cost flow, 59Munkers, 121

n, 2N(·), 46ν(·), 98não-negativo, 10não-positivo, 10negativo, 10network, 5Network Simplex, 68, 76network Simplex

algorithm, 78nó, 1

essencial, 103

final, 32inicial, 13, 32

notação assintótica, 10

O(·), 10oc(·), 100odd component, 100origem de caminho, 2outdegree, 4overload, 11, 89

partição, 4de Gallai-Edmonds, 105

permutação, 20topológica, 23

pl, 7ilimitado, 7inviável, 7viável, 7

PM(·), 133PM(·), 133poliedro, 134polinomial, 10

fortemente, 10pseudo-, 10

politopo, 135emparelhamentos perfeitos, 135

polyhedron, 134polytope, 135ponta

de aresta, 5final, 1inicial, 1negativa, 1positiva, 1

positivo, 10posto (álgebra linear), 135potencial, 15, 61, 119

viável, 15, 61, 119predecessor, 17problema

da baldeação, 69de Gale, 47de Hoffman, 50de transbordo, 69de viabilidade, 43do dicaminho mínimo, 13do emparelhamento

bipartido máximo, 43de custo máximo, 129máximo, 97

Page 154: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

146 ÍNDICE FEOFILOFF

perfeito, 106do fluxo de custo mínimo, 59do fluxo mínimo, 53do fluxo máximo, 32ilimitado, 138inviável, 138viável, 138

programa linear, 6dual, 7ilimitado, 7inteiro, 9inviável, 7viável, 7

propriedade submodular, 34, 81pseudonó, 84, 110pseudopolinomial, 10

Q, 10Q+, 11QV , 11

R, 10R+, 10raiz

de arborescência, 4rede, 5

capacitada, 32de fluxo, 32ilimitada, 59viável, 59

relaxaçãode arco, 17linear, 9

respeita capacidade, 32

saldo de fluxo, 29satisfaz demanda, 47Sch03, isepara r de s, 31separador, 45shrinking, 84simétrico, 2Simplex, 8

para redes, 68, 76sink, 4slither, 105solução, 7

ótima, 7, 138viável, 7, 138

sorvedouro, 4source, 4

spanning subdigraph, 2strongly feasible tree, 74subdigrafo, 2

gerador, 2induzido, 2

subgrafo, 5submodularidade, 34, 81

teoremada dualidade, 8das folgas complementares, 8de Berge, 99de Birkhoff, 120, 138de Dilworth, 56de Edmonds, 127, 138de Edmonds-Karp, 39de Ford, 18de Ford-Bellman, 20de Gale, 48de Gomory e Hu, 85, 91de Hall, 101, 109de Hoffman, 51de Konig, 44, 45de Menger, 45de Tutte, 101de Tutte-Berge, 100do dicaminho mínimo

e potencial máximo, 21do fluxo mínimo, 54do fluxo ótimo inteiro, 66do politopo dos emparelhamentos

perfeitos, 134dos emparelhamentos perfeitos

fracionários, 138forte da dualidade, 7fraco da dualidade, 7, 22MFMC, 34

inteiro, 36teoria dos grafos, 1terminais, 85término de caminho, 2torneio, 50transbordo, 69transshipment, 69

Simplex algorithm, 71tree, 3tripartição

arbórea, 77viável, 77

Tutte, 100

Page 155: Curso de Otimização Combinatória - IME-USPpf/otimizacao-combinatoria/mynotes/... · esses problemas sob o prisma da programação linear é muito revelador. Para estudar a eficiência

FEOFILOFF ÍNDICE 147

u, 59u−(·), 33u+(·), 33

V (·), 1valor de fluxo, 31valor ótimo de pl, 6vértice, 1, 135vetor, 11

binário, 11booleano, 11característico, 11de predecessores, 17extremo, 136inteiro, 11

viável, 32, 138vizinhança, 46

x−(·), 29x+(·), 29x+

−(·), 29

Z, 11Z+, 11