Notas de Aula Pesquisa Operacional DCC-UFMG
Notas de Aula Pesquisa Operacional DCC-UFMG
Notas de Aula Pesquisa Operacional DCC-UFMG
Pesquisa Operacional
Notas de aula do curso de Pesquisa Operacional do
Dept. de Ciência da Computação da UFMG
Bibliografia
A maior parte do material nestas notas de aula se baseiam em capı́tulos e passagens das
seguintes referências. Alguns exemplos foram copiados ipsis literis.
(i) Bertrand Guenin, Jochen Könemann, and Levent Tunçel. A gentle introduction to
optimization. Cambridge University Press, 2014.
(ii) Marco Cesar Goldbarg, and Henrique Pacca L. Luna. Otimização combinatória e pro-
gramação linear: modelos e algoritmos. Elsevier, 2005.
(iv) Vasšek Chvátal. Linear programming. W.H. Freeman and Company, 1983.
(v) Michele Conforti, Gérard Cornuéjols, and Giacomo Zambelli. Integer programming.
Springer, 2014.
1
Sumário
1 Programações lineares 4
1.1 Introdução ao curso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.1.1 Otimização neste curso . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.2 Introdução à Programação linear . . . . . . . . . . . . . . . . . . . . . . . . 5
1.2.1 Exemplo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.2.2 Exemplo prático . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.3 Programação linear - formalização . . . . . . . . . . . . . . . . . . . . . . . . 10
1.4 Modelagem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.5 Formas de apresentar uma PL . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.6 Toda PL tem solução ótima? . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
1.6.1 PLs inviáveis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
1.6.2 PLs ilimitadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
1.6.3 PLs com soluções ótimas . . . . . . . . . . . . . . . . . . . . . . . . . 20
1.6.4 Resumo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2 Simplex 22
2.1 Começando a pensar no Simplex . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.2 Uma base de soluções viáveis . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.3 Simplex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.3.1 Como encontrar um certificado de ilimitada . . . . . . . . . . . . . . 29
2.4 O simplex via tableaus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
2.5 O problema de achar soluções viáveis - simplex fase 2 . . . . . . . . . . . . . 33
2.6 Pseudo-código e sutilezas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
2.6.1 Múltiplas soluções ótimas . . . . . . . . . . . . . . . . . . . . . . . . 36
2.6.2 Soluções degeneradas . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
2.7 Como achar certificados de ótimo e inviabilidade? . . . . . . . . . . . . . . . 40
2.8 Método Simplex Dual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
3 Dualidade 46
3.1 Dualidade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
3.2 A PL dual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
3.3 Teorema fraco da Dualidade . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
3.4 Teorema Forte da Dualidade . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
3.5 PLs inviáveis ou ilimitadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
3.6 Folgas complementares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
2
G. Coutinho e C. Arbex Valle DCC035 P.O.
5 Programações inteiras 78
5.1 Programações inteiras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
5.2 Modelagem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
5.3 Escrevendo uma PI como uma PL . . . . . . . . . . . . . . . . . . . . . . . . 84
5.4 Planos de corte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
5.5 Branch and bound . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
3
Capı́tulo 1
Programações lineares
Aula 2
1.1 Introdução ao curso
Apesar de o nome do curso ser Pesquisa Operacional, talvez seria mais descritivo se fosse
chamado “Introdução à otimização”. Problemas de otimização são uma (grande) sub-área
da Pesquisa Operacional. Matematicamente falando, um problema de otimização é um
problema em que se busca achar o máximo ou o mı́nimo de uma função dentro de um
determinado conjunto. Por exemplo:
• E se o intervalo for limitado a [1, 5]? Qual seu mı́nimo e máximo neste intervalo?
Chamamos o primeiro caso de um problema de otimização irrestrita, isto é, não há
condições restringindo o domı́nio. O segundo caso é conhecido como um problema de oti-
mização restrita uma vez que restrições são impostas no conjunto possı́vel de valores que
x pode assumir. Buscamos a solução ótima, isto é, o ponto onde a função atinge o valor
máximo ou mı́nimo dentre os valores possı́veis do domı́nio.
A dificuldade de um problema de otimização pode estar na descrição da função, ou na
compreensão do conjunto. Ou em ambos. Por exemplo:
Funções como as que descrevemos acima tipicamente necessitam do uso do cálculo para
estudarmos seus pontos de máximo e mı́nimo. Neste curso, entretanto, nossas funções serão
mais simples.
4
G. Coutinho e C. Arbex Valle DCC035 P.O.
não são.
Exercı́cio 1. Prove estes fatos.
Otimizar uma função linear (ou decidir que não é possı́vel achar o seu ótimo) é a princı́pio
uma tarefa simples. Por exemplo:
Problemas de otimização linear se tornam difı́ceis quando há mais variáveis. Neste caso, a
dificuldade estará sempre na compreensão do conjunto onde a função está sendo definida,
ou nas restrições que as variáveis da função devem satisfazer. Neste curso, essas restrições
serão também sempre lineares, mas ainda assim veremos que os problemas podem ser bem
difı́ceis.
5
G. Coutinho e C. Arbex Valle DCC035 P.O.
• Variáveis de decisão, que representam efetivamente a decisão que deve ser tomada
no problema modelado,
1.2.1 Exemplo
Ache o máximo da função f (x1 , x2 ) = x1 + x2 supondo que x1 e x2 satisfaçam
x1 ≥ 0 ; x2 ≥ 0 ; 2x1 + x2 ≤ 4 ; x1 + 2x2 ≤ 3.
No caso, as variáveis de decisão são dadas por x1 e x2 e a função objetivo é maximizar x1 +x2 .
Abaixo, reescrevemos este PL utilizando a notação mais comum:
max x1 + x 2
sujeito a 2x1 + x2 ≤ 4
x1 + 2x2 ≤ 3
x1 ≥ 0
x2 ≥ 0
6
G. Coutinho e C. Arbex Valle DCC035 P.O.
2x1 + x2 = 4
x2
x1 + 2x2 = 3
0
0 1 2 3 4
x1
Observe que qualquer ponto à direita da reta azul torna a desigualdade 2x1 +x2 ≤ 4 inválida.
Por exemplo, considere o ponto (2, 2) - neste caso temos que 6 4 e diz-se que a desigualdade
foi violada. Já para qualquer ponto à esquerda da reta azul o oposto ocorre. Por exemplo,
ao substituirmos o ponto (1, 1) na desigualdade obtemos 3 ≤ 4.
Desta forma, temos que:
A união destes conjuntos é chamada de região viável ou área viável e pode ser vista
no gráfico abaixo:
7
G. Coutinho e C. Arbex Valle DCC035 P.O.
2x1 + x2 = 4
x2
0
0 1 2 3 4
x1
Todos os pontos da região viável são soluções válidas para o problema. A principal questão de
um problema de PL é encontrar, dentre todos os pontos válidos, qual é aquele que maximiza
ou minimiza a função objetivo desejada.
Exercı́cio 2. Dentro da área viável acima, qual par de pontos (x1 , x2 ) maximiza x1 + x2 ?
E 3x1 + x2 ? E x1 − x2 ? E minimizar?
Três comentários importantes:
(i) Se você prestou atenção, o máximo ou mı́nimo sempre acabou sendo um dos vértices.
Isto nem sempre é o caso, por exemplo, se quiséssemos o máximo de f (x1 , x2 ) = 2x1 +x2
ou o mı́nimo de f (x1 , x2 ) = x1 . Mas sempre será o caso de que o máximo ocorrerá num
ponto de fronteira entre o conjunto e o seu complemento.
(ii) Nem sempre problemas deste tipo terão solução, mas isto sempre dependerá do con-
junto em que estamos otimizando, nunca da função. Por exemplo, qual o máximo de
f (x1 , x2 ) = x1 + x2 no conjunto
x1 ≥ 0 ; x2 ≥ 0 ; x1 − x2 ≤ 2 ?
E em
x1 ≥ 0 ; x2 ≥ 0 ; x1 + x2 ≤ −2 ?
(iii) Problemas deste tipo possuem grande aplicabilidade prática. Veremos logo mais um
exemplo. Infelizmente, a grande parte dos problemas ocorre com muitas variáveis, ou
seja, é impossı́vel termos uma visualização gráfica fiel ao problema. Entretanto, procure
manter sempre uma intuição geométrica: dentro de um conjunto limitado por retas, ou
planos, ou hiperplanos, você estará procurando o canto onde um plano, ou hiperplano,
atinge seu máximo ou mı́nimo.
8
G. Coutinho e C. Arbex Valle DCC035 P.O.
Por mês, a máquina 1 pode funcionar no máximo 700 horas, e a 2 por no máximo 500
horas. A empresa pode comprar no máximo 600 horas de trabalho operacional ao custo de 8
reais a hora, e 650 horas de controle de qualidade ao custo de 6 reais a hora. Quantos itens
de cada produto a empresa deve produzir de forma a maximizar seu lucro?
Vamos formular esse problema como uma PL.
(i) Variáveis de decisão: Temos que decidir quantas unidades de cada produto serão
produzidas. Para isso, vamos criar variáveis x1 , x2 , x3 , x4 representando estes valores.
Ou seja, x1 é uma variável ainda desconhecida cujo valor é o número de unidades que
devem ser produzidas do produto 1. Estas são as únicas incertezas a respeito deste
problema, e todos os demais valores associados (por exemplo: quantas horas usar de
uma determinada máquina?) serão determinados por x1 ,..,x4 .
Entretanto, muitas vezes o uso de variáveis adicionais facilita a compreensão e expressão
do problema. Neste caso, vamos introduzir variáveis y1 e y2 que representam as quan-
tidades de horas de trabalho operacional e controle de qualidade utilizadas. Ao final,
veremos também que teria sido possı́vel modelar o problema sem usar essas variáveis.
(ii) Função objetivo: A empresa busca maximizar o lucro. A função matemática que
representa o lucro é dada por:
(iii) Restrições:
Podemos utilizar no máximo 700 horas da máquina 1:
Trabalho operacional:
8x1 + 5x2 + 5x3 + 6x4 ≤ y1
9
G. Coutinho e C. Arbex Valle DCC035 P.O.
Controle de qualidade:
7x1 + 8x2 + 7x3 + 4x4 ≤ y2 .
As limitações na quantidade de horas que podem ser contratadas:
y1 ≤ 600 e y2 ≤ 650.
Não faz sentido que as variáveis possam ter valores negativos, logo:
x1 , x2 , x3 , x4 , y1 , y2 ≥ 0.
Exercı́cio 3. Como ficaria este modelo caso optássemos por não utilizar as variáveis y1 e
y2 ?
10
G. Coutinho e C. Arbex Valle DCC035 P.O.
Aulas 3 e 4
1.4 Modelagem
Como dito anteriormente, a PL modela diversos problemas da vida real. Nesta seção, in-
cluı́mos alguns exercı́cios e exemplos de aplicações.
No começo de cada mês, esta empresa pode comprar este insumo de um distribuidor regional
pelos seguintes valores:
mês 1 2 3 4
custo por litro 0.75 0.72 0.92 0.90
• Variáveis de decisão: Cada mês, Pompéu Insumos precisa determinar (1) quantos litros
comprar e (2) quantos armazenar do insumo. Estes valores são incertos e devem ser
decididos pela empresa: são os candidatos ideais para as variáveis de decisão.
Introduzimos então 8 variáveis: p1 , ..., p4 referentes a quanto comprar, e t1 , ..., t4 refe-
rentes à capacidade ocupada do tanque. Note que já fomos informados que t1 = 2000.
11
G. Coutinho e C. Arbex Valle DCC035 P.O.
Exercı́cio 5. Termine de formular esta PL, incluindo condições iniciais e demais restrições,
e escreva no formato de (1.1). Qual você acredita ser a solução ótima para o problema?
Como o problema seria alterado se o custo de armazenamento fosse 0.10 por litro de insumo
por mês?
Uma nutricionista deseja montar um cardápio que minimize os custos diários, ao mesmo
tempo que as seguintes demandas nutricionais são satisfeitas:
Exercı́cio 7. Um banco faz quatro tipos de empréstimos para seus clientes pessoais. Cada
tipo de empréstimo rende os seguintes juros anuais para o banco:
O banco pode emprestar no máximo 250 milhões, sendo também restrito pelas seguintes
polı́ticas:
• A primeira hipoteca deve ser pelo menos 55% de todas as hipotecas e pelo menos 25%
de todos os empréstimos.
• Para evitar descontentamento do público, a taxa de juros média não deve exceder 15%.
12
G. Coutinho e C. Arbex Valle DCC035 P.O.
Exercı́cio 8. Uma refinaria processa três tipos diferentes de petróleo. Cada tipo de petróleo
possui uma planilha de custos diferente, expressando condições de transporte e preços na
origem. A planilha de custos e a quantidade máxima disponı́vel é dada abaixo:
Por outro lado, cada tipo de petróleo é mais ou menos apropriado para a produção de
três tipos de gasolina diferentes: amarela, azul e superazul. As especificações de cada tipo
de gasolina são dadas abaixo:
Formule este problema como uma PL que calcule quanto de cada gasolina a empresa deve
produzir, e quais tipos de petróleo deve utilizar em cada de forma a maximizar seus lucros.
Suponha que não há perda volumétrica no processo da refinaria.
DICA: use 9 variáveis, cada variável correspondendo a quanto de cada tipo de petróleo
será usado em cada tipo de gasolina.
Exercı́cio 9. Você administra uma empreiteira, e projeta construir uma casa. As seguintes
atividades devem ser feitas
• F - subir as paredes
• E - parte elétrica
• P - encanamento
13
G. Coutinho e C. Arbex Valle DCC035 P.O.
• L - jardim.
Você possui equipes na sua empreiteira que realizam cada uma das atividades. O tempo em
dias para concluir tudo é:
tarefa B F E P D L
tempo 3 2 3 4 1 2
Infelizmente as tarefas não podem ser realizadas todas simultaneamente. Se baseie na lista
de restrições abaixo e formule o problema de construir a casa no menor tempo possı́vel como
uma PL.
• F só pode começar após B.
• L só pode começar após B.
• E só pode começar após F.
• P só pode começar após F.
• D só pode começar após E e P.
Exercı́cio 10. Tente resolver o seguinte sistema de equações:
2x + y = −1
x+y =1
x + 3y =4
−2x + 4y =3
Tentou? Vamos então tentar encontrar os valores que mais se aproximam de ser uma solução
do sistema. Formule o problema de achar um vetor (x, y) que mais se aproxime de resolver
este sistema como uma PL. Ou seja, você deseja achar (x, y) tal que a soma
|2x + y + 1| + |x + y − 1| + |x + 3y − 4| + | − 2x + 4y − 3|
seja mı́nima.
E se ao invés de minimizar a soma, você desejasse minimizar o maior dos valores absolutos.
Ainda é possı́vel modelar como uma PL?
Exercı́cio 11. Em um restaurante, os funcionários trabalham 5 dias consecutivos e folgam
2. Como há dias de mais e menos movimento, a tabela abaixo indica quantos funcionários
devem trabalhar em cada dia da semana:
Dia Seg Ter Qua Qui Sex Sab Dom
Demanda 17 13 15 19 14 16 11
Qual o menor número de funcionários que o restaurante deve contratar de forma a su-
prir a demanda de trabalho? Modele este problema como uma PL (vamos permitir que
funcionários sejam “fracionários” por enquanto). E se o pagamento de funcionários que
trabalham domingo fosse 1.5 vezes o pagamento nos outros dias, como a empresa poderia
minimizar o custo?
14
G. Coutinho e C. Arbex Valle DCC035 P.O.
max cT x
sujeito a Ax ≤ b
x ≥ 0.
Exemplo 2. Considere a PL
max x1 + x2
sujeito a x1 + 2x2 ≤ 2
2x1 + x2 ≤ 2
x1 , x2 ≥ 0.
Esta PL pode ser expressa na forma matricial descrita acima da seguinte maneira:
x1
max 1 1 ·
x2
1 2 x1 2
sujeito a ≤
2 1 x2 2
x ≥ 0.
Neste exemplo:
1 2 2
1 2 1 2 x1
c= , A=
−1
, b=
0 , x=
1 0 x2
0 −1 0
15
G. Coutinho e C. Arbex Valle DCC035 P.O.
Exercı́cio 13. Considere o primeiro exemplo de PL, (1.1). Identifique naquele exemplo
quais são os vetores c, b, x e a matriz A.
Conforme você notou no exercı́cio, nem sempre o conjunto de desigualdades obtidos da
modelagem poderá ser imediatamente agrupado em um formato matricial, e então alguns
ajustes podem precisar ser feitos.
Como forma de padronizar a interpretação de PLs definimos a forma padrão de igual-
dades (FPI) a seguir.
Definição 1. Uma PL está na forma padrão de igualdades se existem vetores c,b e uma
matriz A tal que a PL se expressa como
max cT x
sujeito a Ax = b
x ≥ 0.
Em outras palavras, uma PL está na FPI se
• é um problema de maximização.
• com exceção das restrições de não-negatividade, todas as outras são igualdades.
• toda variável possui uma restrição de não negatividade.
Qualquer PL pode ser expressa na FPI. Em geral, quando uma inequação é obtida na
formulação, ela pode ser substituı́da por uma igualdade ao adicionarmos uma variável extra.
Exercı́cio 14. Expresse a desigualdade 2x + 3y ≤ 5 utilizando apenas igualdades e/ou
restrições de não-negatividade. Dica: adicione uma variável w.
Faça o mesmo para 8x − y + z ≥ 10.
Problemas de minimização também podem ser expressos como maximização.
Exercı́cio 15. Expresse
min x + y + z
como
max cT x.
Ou seja, diga quais são os vetores c e x.
Ainda pode haver um fator dificultador de que, ao modelarmos o problema, uma das
variáveis não possua uma restrição de não-negatividade. Neste caso, a variável em questão
deve ser substituı́da por duas outras. Note o exemplo abaixo.
Exemplo 3.
min x + y
sujeito a x − y ≤ 2
x + y ≥ −1
x≥0
16
G. Coutinho e C. Arbex Valle DCC035 P.O.
Note que não podemos simplesmente adicionar y ≥ 0, porque isto alteraria a solução da PL.
No caso, a PL dada possui mı́nimo igual a −1 referente à solução (x, y) = (0, −1), onde
y < 0. Para termos restrições de não-negatividade para todas as variáveis, vamos substituir
y por duas variáveis:
y = y+ − y−,
e agora exigimos y + , y − ≥ 0. No caso, quando y = −1, temos y + = 0 e y − = 1, ambos
não-negativos. A PL se torna então:
min x + y + − y −
sujeito a x − (y + − y − ) ≤ 2
x + (y + − y − ) ≥ −1
x, y + , y − ≥ 0
Há portanto três passos básicos a serem realizados para transformar uma PL para a FPI.
(i) Trocar min por max, se necessário, adicionando um sinal negativo em c (lembrando de
multiplicar o valor objetivo encontrado no final por −1).
(ii) Trocar todas as inequações por igualdades adicionando variáveis extras (sempre não-
negativas). Estas serão chamadas de variáveis de folga.
17
G. Coutinho e C. Arbex Valle DCC035 P.O.
Aula 5
1.6 Toda PL tem solução ótima?
Já discutimos na primeira aula situações em que uma PL possui uma solução ótima, não
possui solução viável, ou é ilimitada. De fato, o Teorema Fundamental de Programações
Lineares estabelece que essas são as únicas possibilidades. Vamos discutir cada uma delas.
Para isto, a notação FPI é bastante útil.
Você pode tentar resolver este sistema, mas notará que não é possı́vel. Como entretanto
provar isto?
A verificação de que uma PL é inviável não depende da função objetivo, dependendo
apenas do conjunto de restrições. Podemos provar que um sistema de equações com restrições
de não-negatividade não possui solução ao encontrarmos uma equação tal que
(i) esta equação seja consequência de operações elementares nas equações do sistema e
(ii) todos os coeficientes sejam não-negativos, mas o lado direito seja negativo.
18
G. Coutinho e C. Arbex Valle DCC035 P.O.
e concluı́mos que
Ax = b não é possı́vel pois, ao multiplicar por y, temos y T Ax = y T b,
y T Ax ≥ 0 e y T b < 0.
Exercı́cio 17. Ache um certificado de inviabilidade para o sistema determinado por
4 −5 x1 1
=
6 −2 x2 0
x1 , x2 ≥ 0.
19
G. Coutinho e C. Arbex Valle DCC035 P.O.
cT · x ≤ cT · z = 6.
Isto é verdade?
De fato, se x é viável, então
1 −2 1 0 2 2
−1 2 · x = −1 2 ·
0 1 −1 1 3 4
Logo
−1 4 −3 2 4 x = 6.
Com esta informação, conseguimos mostrar que:
cT z − cT x ≥ 0
6 − cT x ≥ 0
−1 4 −3 2 4 x − cT x ≥ 0
0 1 2 0 3 x≥0
Exercı́cio 19. Coloque a PL abaixo em FPI, ache uma candidata a solução ótima, e exiba
um certificado de otimalidade.
max 1 1 ·x
2 1 2
sujeito a x≤
1 2 2
x ≥ 0.
20
G. Coutinho e C. Arbex Valle DCC035 P.O.
1.6.4 Resumo
Dada uma PL em FPI
max cT x
sujeito a Ax = b
x ≥ 0,
esta PL é
y T A ≥ 0 e y T b < 0.
Ad = 0 , d ≥ 0 e cT d > 0.
• solúvel com solução ótima z se z for viável e existir um vetor y tal que
y T A ≥ cT e y T b = cT z.
21
Capı́tulo 2
Simplex
Aula 6
2.1 Começando a pensar no Simplex
Considere a seguinte PL
max 3 2 0 0 0 x
2 1 1 0 0 8
sujeito a 1 2 0 1 0 x = 8
1 1 0 0 1 5
x ≥ 0.
Claramente z = 1 1 5 5 3 é uma solução viável. É possı́vel melhorá-la? Qualquer
solução que aumente z1 ou z2 vai melhorar a solução da PL. Vamos então manter z2 fixo e
aumentar z1 , mas para isso teremos que diminuir z3 , z4 e z5 . Teremos
z(t) = 1 + t 1 5 − 2t 5 − t 3 − t
permanece sendo uma solução viável desde que 5 − 2t ≥ 0, 5 − t ≥ 0 e 3 − t ≥ 0. O maior
valor de t possı́vel é, portanto t = 5/2. Daı́
7/2 1 0 5/2 1/2
é uma nova solução que melhora a solução anterior.
Podemos agora repetir este processo para a variável z2 ? Como proceder?
22
G. Coutinho e C. Arbex Valle DCC035 P.O.
podemos sempre assumir que a matriz A está em um formato especial. O objetivo dos
exercı́cios dirigidos a seguir é descobrirmos que formato é este.
É possı́vel escrever uma PL equivalente a esta em que a matriz A possua menos linhas?
Qual o posto dessa matriz? Ou seja, quantas colunas linearmente independentes existem?
É possı́vel reduzir o número de linhas?
Elimine linhas, se for possı́vel, e identifique colunas da matriz que formem uma matriz
quadrada não-singular.
max cT x
sujeito a Ax = b
x ≥ 0.
Suponha que A possui m linhas linearmente independentes, e n colunas. Explique por que
podemos assumir, sem qualquer prejuı́zo à solução da PL, que se n ≥ m, há precisamente m
colunas linearmente independentes em A.
23
G. Coutinho e C. Arbex Valle DCC035 P.O.
Ao longo dos exercı́cios acima, vimos que sempre que uma PL estiver em FPI, podemos
assumir que existe uma escolha de colunas para a matriz A que formam uma base para
o espaço, ou seja, m colunas linearmente independentes onde m é o número de linhas da
matriz.
Toda vez que isso ocorrer, haverá uma única solução para o sistema de equações em que
as variáveis correspondentes às colunas fora da base são todas iguais a 0, e que portanto as
variáveis correspondentes às colunas da base serão as únicas possivelmente diferentes de 0.
Esta solução será chamada de solução básica correspondente à base de colunas escolhida.
Abaixo, explicamos este fato formalmente:
• Por exemplo, se essas colunas forem as primeiras n colunas, a matriz A estará na forma
abaixo
|
A= AB | AN (2.1)
|
onde AB é uma matriz quadrada não singular, e AN é uma matriz cujas colunas são
combinações lineares das colunas de AB . Note que podem haver diferentes escolhas
para as matrizes AB e AN (elas podem estar intercaladas), sempre dependendo da
matriz original A.
Quando temos Ax, podemos separar as variáveis que compõem o vetor x entre aquelas
indexadas pelas colunas linearmente independentes e as outras. As variáveis de x que
correspondem às colunas de AB são chamadas de variáveis básicas, ao passo que as
demais são as variáveis não-básicas. Sempre podemos dividir o vetor x como
xB
x= ,
xN
Ax = b,
observe que b é uma combinação linear das colunas em AB . No caso, b é tratado como
uma coluna extra de A que pode ser escrita como uma combinação linear das colunas
básicas de A. Então, existe um vetor z tal que Az = b, e
AB z B = b e z N = 0.
24
G. Coutinho e C. Arbex Valle DCC035 P.O.
Note que uma vez escolhida a matriz AB , existe uma única solução básica associada
z, e ela é definida por z B = A−1
B b, e z N = 0, com
zB
z= .
zN
Note que as colunas 3, 4 e 5 desta PL formam uma base, e que nesta base, AB = I, e as
entradas correspondentes de c são 0.
Definição 2. Uma PL em FPI tal que a base canônica do espaço de colunas aparece intei-
ramente como colunas da matriz A, e tal que as entradas correspondentes a estas colunas no
vetor c são todas iguais a 0, é uma PL em forma canônica.
Ou seja, será tal que AB = I (a menos de trocar as colunas de lugar), e cB = 0.
25
G. Coutinho e C. Arbex Valle DCC035 P.O.
Aulas 7 e 8
2.3 Simplex
Quando uma PL está em forma canônica e há uma solução básica viável, sempre é possı́vel
(tentar) melhorar a solução da maneira como fizemos no exemplo! Portanto o problema
de achar a solução ótima de uma PL se reduz ao problema de colocar uma PL em forma
canônica para uma solução básica viável. O exemplo abaixo deverá ser esclarecedor.
Exemplo 8. Começamos com
max 3 2 0 0 0 x
2 1 1 0 0 8
sujeito a 1
2 0 1 0 x = 8
1 1 0 0 1 5
x ≥ 0.
• Restrição 1: Ignorando os coeficientes das variáveis não básicas fixas, temos que
2x1 + x3 = 8. O maior valor possı́vel de x1 = 4, senão x3 teria que ser negativo.
Este valor é obtido ao dividir o valor de b1 pelo coeficiente A11 , 8/2.
• Restrição 2: Temos que x1 + x4 = 8, o maior valor possı́vel de x1 = 8.
• Restrição 3: Temos que x1 + x5 = 5, o maior valor possı́vel de x1 = 5.
26
G. Coutinho e C. Arbex Valle DCC035 P.O.
O máximo que podemos aumentar em x1 é o mı́nimo dos três valores acima, 4. Com
este incremento, obtemos a nova solução
x= 4 0 0 4 1 ,
(v) O próximo passo é garantir que esta nova solução se torne uma solução básica viável
para uma PL em forma canônica equivalente à original. Logo devemos alterar a PL de
modo que
Para (b), subtraı́mos a função objetivo por 3 vezes a primeira equação. Como isto
altera o valor da função objetivo, compensamos adicionando 3 × 4 = 12. Portanto o
problema de otimização não se altera, e teremos
max 0 1/2 −3/2 0 0 x + 12
1 1/2 1/2 0 0 4
sujeito a 0 3/2 −1/2 1 0 x = 4
0 1/2 −1/2 0 1 1
x ≥ 0.
Note que a função objetivo não é mais linear, mas a adição de uma constante não afeta
em qualquer maneira o problema de otimização. De fato, a solução básica
x= 4 0 0 4 1
27
G. Coutinho e C. Arbex Valle DCC035 P.O.
(vi) Repetimos os itens (iii) e (iv). Agora só faz sentido aumentar x2 pois é a única cujo valor
na função objetivo é positivo, ou seja, a única que poderia contribuir para melhorar a
solução final. Calculando os valores dos coeficientes bi /Ai2 :
• Restrição 1: b1 /A12 = 4
1/2
= 8.
• Restrição 2: b2 /A22 = 4
3/2
= 8/3.
• Restrição 3: b3 /A32 = 1
1/2
= 2.
(viii) Repetimos (ou tentamos repetir) os itens (iii) e (iv). Note entretanto que não existe
variável que faça sentido aumentar em x tendo em vista o atual formato do vetor c.
Exercı́cio 26. Refaça este exemplo, mas na primeira vez que chegar ao passo (iii), comece
aumentando x2 , deixando x1 fixo. Daı́ pra frente, faça como achar melhor. Note que no
final, o valor de ótimo precisa ser o mesmo.
Algumas observações:
(i) Este método sempre resolverá uma PL. Nós entretanto não demonstraremos isto for-
malmente agora.
(ii) Geometricamente, cada iteração dos pontos (ii)-(iv) correspondem a: achar uma solução
na região viável, caminhar até uma face aumentando o valor da função objetivo, depois
achar o melhor caminho para caminhar pela face até a próxima face.
(iii) Na próxima seção, veremos uma maneira esquemática de repetirmos esses passos.
28
G. Coutinho e C. Arbex Valle DCC035 P.O.
Construa PL equivalente em forma canônica para as bases formadas pelas colunas {1, 4} e
pelas colunas {3, 5}. A solução básica correspondente é viável?
Decida se esta PL é viável ou inviável. Se for viável, construa uma PL equivalente em
forma canônica cuja solução básica associada seja viável. Se for inviável, apresente um
certificado.
Esta PL está na forma canônica para as colunas 3 e 4. Vamos aplicar o método simplex do
Exemplo (8) para resolvê-la.
Escolhemos a coluna com ci mais positivo. No caso, a 1a coluna com c1 = 5. Note porém
que os dois coeficientes são negativos. Isso significa que x1 pode crescer infinitamente, pois
29
G. Coutinho e C. Arbex Valle DCC035 P.O.
−2d1 + 4d2 + d3 + d5 = 0
−3d1 + 7d2 + d4 + d5 = 0
Vamos começar colocando d1 = 1, isto é, na coluna que entraria como variável básica,
colocamos o valor 1. As variáveis básicas originais são x3 e x4 . Vamos fixar d2 = d5 = 0 e
colocar valores em d3 e d4 que garantem as igualdades acima: no caso, d3 = 2 e d4 = 3. Temos
que d = 1 0 2 3 0 . Note que este vetor satisfaz as três condições: Ad = 0, d ≥ 0 e
cT d = 5 > 0, sendo um certificado de ilimitada. Como a PL está na forma canônica, apenas
cT d = c1 neste caso pois os demais cj = 0 para todas as outras variáveis básicas cujo valor
dj > 0.
Encontrar o certificado nestas condições é fácil: estando a PL em forma canônica, e
encontrando um ci positivo cuja coluna Ai correspondente é toda não-positiva, então para
encontrar o certificado d basta colocar di = 1, dj = 0 para toda variável j não básica e
dk = −ali para toda variável básica k com valor 1 na restrição l correspondente.
Observação: Note
que se toda a coluna correspondente a x1 fosse 0, com c1 > 0,
d = 1 0 0 0 0 seria um certificado válido.
30
G. Coutinho e C. Arbex Valle DCC035 P.O.
onde a variável w representa o valor objetivo. Note que esta PL já se encontra em forma
canônica para a base viável formada pelas colunas 3, 4 e 5. Vamos reescrever as equações e
a função objetivo como um sistema:
w
1 −2 −3 0 0 0 x
1
0
0 1 1 1 0 0 x2 6
= .
0 2 1 0 1 0 x3
10
0 −1 1 0 0 1 x4 4
x5
Note que a primeira linha da matriz corresponde a w − 2x1 − 3x2 = 0, ou w = 2x1 + 3x2 , que
é o valor objetivo. Escrevemos agora a matriz aumentada deste sistema, distinguindo a linha
da variável w, que só está nos ajudando a escrever a função objetivo como uma igualdade
envolvendo as outras variáveis:
1 −2 −3 0 0 0 0
0 1 1 1 0 0 6
T1 = 0 2
1 0 1 0 10
0 −1 1 0 0 1 4
No simplex, escolhemos uma entrada de c que seja positiva. Como a matriz T1 possui −cT
na primeira linha, faremos agora:
(1) Escolhemos uma coluna cuja primeira entrada seja negativa. Digamos a 2a coluna.
(2) Escolhemos agora uma linha da 2a à 4a tal que a razão entre os elementos da última
coluna e da 2a coluna seja o menor possı́vel. No caso, 3a linha.
(3) Daı́ transformamos a 2a coluna usando eliminação Gaussiana, de modo que apenas o
elemento na 3a linha e 2a coluna seja igual a 1, e o resto seja 0. Isso se chama “pivotear”o
elemento (3,2).
1 0 −2 0 1 0 10
0 0 1/2 1 −1/2 0 1
T2 = 0 1 1/2 0
1/2 0 5
0 0 3/2 0 1/2 1 9
31
G. Coutinho e C. Arbex Valle DCC035 P.O.
Não há mais elementos negativos na 1a linha, e de fato, a função objetivo agora é
5 1
w = 17 − x3 − x5 ,
2 2
cujo valor máximo, igual a 17, ocorre com x3 = x5 = 0, e corresponde à solução básica viável
T
x= 1 5 0 3 0 ,
que é facilmente observada em T3 (basta pensar que cada uma dessas variáveis é um peso
multiplicando a coluna correspondente.)
(b) Ache um certificado de que a PL é ótima ou ilimitada (se for ótima, no olho mesmo, por
enquanto).
32
G. Coutinho e C. Arbex Valle DCC035 P.O.
Queremos apenas decidir por ora se esta PL é viável ou inviável. O primeiro passo é tornar
b ≥ 0, já que desejamos eventualmente encontrar uma base de colunas na forma da matriz
identidade, e que a solução correspondente a esta base seja viável. Fazemos então
max 1 2 −1 3 x
1 5 2 1 7
sujeito a x=
2 9 0 −3 13
x ≥ 0.
Agora, poderı́amos testar todas as possı́vel 42 escolhas de duas colunas, até acharmos (ou
não) uma que corresponda a uma base viável. Mas vamos mostrar abaixo um método mais
eficiente! Este método usará uma nova PL para encontrar este par de colunas.
Construı́mos uma nova PL, chamada de auxiliar, em FPI, e que satisfaz a seguintes
propriedades:
(b) É limitada, e nenhuma solução ótima pode ter valor objetivo maior que 0.
(c) Uma solução ótima da nova PL de valor objetivo igual a 0 é uma solução viável da PL
original, e se o ótimo for menor que 0, a PL original é inviável.
Considere a PL aplicada a vetores x agora com 6 variáveis, ou seja, criamos duas variáveis
novas:
max 0 0 0 0 −1 −1 x
1 5 2 1 1 0 7
sujeito a x=
2 9 0 −3 0 1 13
x ≥ 0.
Pare por um momento para entender como esta PL foi obtida da original. Claramente
(a) x = 0 0 0 0 7 13 é solução viável para esta PL (note que aqui foi extremamente
importante que b ≥ 0). Esta solução é básica, mas usa apenas as variáveis novas, e
portanto sempre terá valor objetivo negativo (veja como o novo vetor c foi construı́do).
33
G. Coutinho e C. Arbex Valle DCC035 P.O.
(b) Esta PL é limitada e nenhuma solução desta PL pode ter valor objetivo maior que 0, já
que x ≥ 0 e o novo c é ≤ 0.
(c) Usando o simplex (faça como exercı́cio), descobriremos que
x= 2 1 0 0 0 0
é uma solução ótima para a PL auxiliar, e, portanto, como x5 = x6 = 0, esta solução
leva à solução viável da PL original.
T
x= 2 1 0 0
34
G. Coutinho e C. Arbex Valle DCC035 P.O.
Exercı́cio 32. Suponha que uma dada PL seja inviável. Prove que um certificado de oti-
malidade para a PL auxiliar é também um certificado de inviabilidade para a PL original.
35
G. Coutinho e C. Arbex Valle DCC035 P.O.
Método Simplex
Input: Uma PL e uma base viável de colunas B.
Output: Uma solução ótima, ou um certificado de que a PL é ilimitada.
1: Reescreva a PL para a forma canônica com respeito à base B.
Seja x a solução básica viável associada.
2: Se cN ≤ 0, então pare. x é ótima.
3: Escolha um k ∈ N tal que ck > 0.
4: Se Ak ≤ 0, então pare. A PL é ilimitada.
5: Seja r o ı́ndice j tal que o mı́nimo abaixo ocorre:
bj
t = min : Ajk > 0 .
Ajk
6: Troque a r-ésima (na ordem da matriz identidade) coluna de B pela coluna k.
7: Volte para 1.
Este algoritmo passeia de solução básica em solução básica até encontrar a melhor. Cada
solução básica corresponde a precisamente um valor objetivo, e como há um número finito
de soluções básicas, se garantirmos que a cada rodada o algoritmo pára ou aumenta o valor
objetivo, então teremos que este algoritmo sempre termina.
max cT x
sujeito a Ax ≤ b
x ≥ 0,
e um vetor y tal que y ≥ 0 e y T A ≥ cT , mostre que nenhuma solução da PL pode ter valor
objetivo maior que y T b.
min cT x
sujeito a Ax = b
x≥0
36
G. Coutinho e C. Arbex Valle DCC035 P.O.
1
max x1 + x2
2
sujeito a 2x1 + x2 ≤ 4
x1 + 2x2 ≤ 3
x1 , x2 ≥ 0
1
max x1 + x2
2
sujeito a 2x1 + x2 + x3 = 4
x1 + 2x2 + x4 = 3
x1 , x2 , x3 , x4 ≥ 0
37
G. Coutinho e C. Arbex Valle DCC035 P.O.
max 2x1 + x2
sujeito a 3x1 + x2 ≤ 6
x1 − x2 ≤ 2
x2 ≤ 3
x1 , x2 ≥ 0
Vamos novamente resolve-la usando o Simplex. O primeiro tableau com ela já em FPI é
dado por:
1 −2 −1 0 0 0 0
0 1 1 0 0 6
3 Base: x3 = 6, x4 = 2, x5 = 3
0 1 −1 0 1 0 2 Fora da base: x1 = x2 = 0
0 0 1 0 0 1 3
Escolhemos x1 para entrar na base. Há um empate nas variáveis candidatas a sair da base
(x3 → 6/3 = 2 e x4 → 2/1 = 2). Escolhemos arbitrariamente a segunda restrição (terceira
linha do tableau). O segundo tableau é dado por:
1 0 −3 0 2 0 4
0 0 4 1 −3 0 0
Base: x1 = 2, x3 = 0, x5 = 3
0 1 −1 0 1 0 2 Fora da base: x2 = x4 = 0
0 0 1 0 0 1 3
Observe que esta solução básica possui uma variável básica igual a zero (x3 ). Quando isto
ocorre, dizemos que a solução básica é degenerada. Isto deve ser motivo de preocupação?
Vamos continuar com o Simplex. A variável x2 deve entrar na base, e a razão mı́nima é dada
pela primeira restrição (segunda linha da tabela): 0/4 = 0. Assim x3 sai da base:
1 0 0 3/4 −1/4 0 4
0 0 1 1/4 −3/4 0 0
Base: x1 = 2, x2 = 0, x5 = 3
0 1 0 1/4 1/4 0 2 Fora da base: x3 = x4 = 0
0 0 0 −1/4 3/4 1 3
Obtivemos quase que exatamente a mesma solução, com o mesmo valor e com apenas uma
troca em uma variável básica. Ainda há elemento negativo na função objetivo, então conti-
nuamos o processo. A variável x4 entra na base, enquanto que a variável x5 sai:
1 0 0 2/3 0 1/3 5
0 0 1 1 3
0 0 Base: x1 = 1, x2 = 3, x4 = 4
0 1 0 1/3 0 −1/3 1 Fora da base: x3 = x5 = 0
0 0 0 −1/3 1 4/3 4
A solução acima é ótima. Então, neste caso, a degeneração não impediu que o Simplex
encontrasse o ótimo, ela apenas atrasou um pouco até que isto acontecesse. Porém, é possı́vel
38
G. Coutinho e C. Arbex Valle DCC035 P.O.
criar exemplos em que a degeneração leva à ciclagem, isto é, uma sequência de pivôs que
repete periodicamente os mesmos tableaus e que continua indefinidamente, entrando em loop
infinito. Esta situação pode ser evitada pela seguinte regra:
Regra de Bland:
Neste link (em inglês), é possı́vel ver um exemplo de uma situação em que a regra de Bland
evita a ciclagem.
Esta regra, apesar de garantir a não ocorrência da ciclagem, pode ser por vezes ineficiente.
Na prática, por mais que a degeneração seja relativamente comum, em solvers comerciais e
open-source nenhum esforço é dedicado a evitar a ciclagem, pois:
Exercı́cio 36. De novo, como o problema acima possui apenas duas variáveis, interprete
graficamente a degeneração.
39
G. Coutinho e C. Arbex Valle DCC035 P.O.
Aula 9
2.7 Como achar certificados de ótimo e inviabilidade?
Considere uma PL em FPI
max cT x
sujeito a Ax = b
x≥0
Assuma por enquanto que ela tem ótimo, e que portanto o simplex encontrará este ótimo.
Se z é uma solução ótima, então y é certificado se
(a) y T A − cT ≥ 0
(b) y T b = cT z.
Ao resolvermos o simplex (usando o tableaux), começamos como na esquerda abaixo, e
eventualmente terminamos na direita
1 −cT 0 1 cT v.o.
7→
A b A b
40
G. Coutinho e C. Arbex Valle DCC035 P.O.
Olhando para a matriz, vemos que já temos uma base viável de colunas, mas a PL não está
em forma canônica. Começaremos escrevendo o tableaux em sua nova versão — a versão
estendida de registro de operações (VERO™).
0 0 1 −3 −1 −2 0
1 0 1 2 −2 0 2
0 1 0 1 3 1 5
−1 2 0 −3 7 0 8
1 0 1 2 −2 0 2
0 1 0 1 3 1 5
Note que −1 2 registra precisamente que somamos ao −c −1 vezes a 1a linha de A, e 2
vezes a 2a. Agora SIMPLEX. Pivotearemos o 2 abaixo do −3.
−1 2 0 −3 7 0 8 1/2 2 3/2 0 4 0 11
1/2 0 1/2 1 −1 0 1 → 1/2 0 1/2 1 −1 0 1
0 1 0 1 3 1 5 −1/2 1 −1/2 0 4 1 4
Note que ao termos registrado que multiplicamos a 1a linha por 1/2 quando normalizamos
o 2 no primeiro tableaux, automaticamente pudemos saber que adicionamos 3 · (1/2) da 1a
linha original à linha do c. Enfim, chegamos ao ótimo. E agora temos:
T
z= 0 1 0 4 v.o. = cT z = 11
e o certificado de ótimo T
y = 1/2 2 .
De fato:
y T A − cT = 1/2 3 5 2 − −1 3 1 2 = 3/20 4 0
que é exatamente o que aparece sobre o tableaux, assim como
T
2
y b = 1/2 2 = 11.
5
O exemplo acima deve ter sido esclarecedor. Vamos ver agora o que aconteceria se
tivéssemos registrado as operações ao resolvermos uma PL auxiliar.
41
G. Coutinho e C. Arbex Valle DCC035 P.O.
Não está claro qual seria uma base viável. Logo, vamos para a PL auxiliar. A primeira
coisa que faremos é multiplicar a 1a linha por −1, e portanto já registraremos esta operação.
Depois montamos a PL auxiliar.
0 0 0 0 0 1 1 0 1 −1 2 −8 17 0 0 −2
−1 0 −1 3 −7 1 0 1 → −1 0 −1 3 −7 1 0 1
0 1 −1 5 −10 0 1 1 0 1 −1 5 −10 0 1 1
1 −1 2 −8 17 0 0 −2
−1 0 −1 3 −7 1 0 1 →
0 1/5 −1/5 1 −2 0 1/5 1/5
1 3/5 2/5 0 1 0 8/5 −2/5
−1 −3/5 −2/5 0 −1 1 −3/5 2/5
0 1/5 −1/5 1 2 0 1/5 1/5
Como o ótimo da PL auxiliar é negativo,
a PL original é inviável. Mais importante que isso
T
neste momento, seja y = 1 3/5 , ou seja, o certificado de ótimo da PL auxiliar. Note que
T
1 −3 7
y A = 1 3/5 = 2/5 0 1 ,
−1 5 −10
exatamente o que aparece na linha de cima do tableaux, e que é ≥ 0 já que o tableaux está
em estado de ótimo. Ademais
T
−1
y b = 1 3/5 = −2/5 < 0,
1
42
G. Coutinho e C. Arbex Valle DCC035 P.O.
0 0 4 0 8 1 0 0 4 −32 8 0 20 0 0 9 8 0 20 −152
1 0 2 0 -1 1 1 0
2 −15 −1 0 −2 0 1 −1 −1 0 −2 15
→
0 1 3 0 −4 −5 0 1 3 −21 −4 1 −5 0 0 −9 −4 1 −5 39
0 0 −1 1 0 2 0 0 −1 8 0 0 −1 1 0 2 0 0 −1 8
43
G. Coutinho e C. Arbex Valle DCC035 P.O.
Note que agora b ≥ 0 e cT ≤ 0, o que faz com que a base das colunas 1, 2 e 5 seja não
apenas viável, mas também ótima! Em particular
x = 8 15 0
é ótimo para o problema, e note que no registro de operações realizadas à esquerda, obtivemos
um certificado de otimalidade:
y = 8 0 20
Como a PL original estava em forma canônica para a base das últimas três colunas
(variáveis de folga), as operações realizadas ao vetor c também registraram os mesmos valores
(poderı́amos ter economizado nas contas).
Resumindo, sabemos que B é uma base viável e ótima para uma PL se
(1) c ≤ 0 e cB = 0.
(2) b ≥ 0.
A filosofia do simplex (versão primal) é a seguinte:
(i) Encontra solução viável para a PL, ou seja, uma base satisfazendo (2) acima.
(ii) Modifica esta solução em direção a (1), mantendo (2) verdade.
No simplex dual, utilizamos o tableau para caminhar entre soluções básicas inviáveis mas
que, em certo sentido, já apontam na direção ótima, até que cheguemos em uma solução
básica viável. Veremos mais à frente que há uma programação linear dual de cada PL, e que
se ambas possuem ótimos, esses ótimos são iguais. Ademais, o certificado de ótimo de uma
PL é a solução ótima da sua dual, e o que o método simplex dual faz nada mais é do que
começar com uma solução básica viável para a programação linear dual e ir melhorando ela,
mantendo a viabilidade.
Exercı́cio 37. Resolva a PL
min 2 3 4 5 x
1 −1 1 −1 10
sujeito a 1
−2 3 −4 x ≥ 6
3 −4 5 −6 15
x ≥ 0.
Note que ao colocá-la em FPI, teremos uma situação perfeita para aplicar o método simplex
dual.
44
G. Coutinho e C. Arbex Valle DCC035 P.O.
Exercı́cio 39. Faça o mesmo no exercı́cio 37. Suponha que após resolver a PL, o cliente
chega e lhe diz que esqueceu a restrição mais importante, que é
45
Capı́tulo 3
Dualidade
Aulas 10 e 11
3.1 Dualidade
Nesta seção, estudaremos um importantı́ssimo aspecto das programações lineares. Descobri-
remos que para toda programação linear, poderemos definir uma outra, intimamente rela-
cionada, chamada de programação dual (motivo pelo qual a PL original é costumeiramente
chamada de primal).
Considere a PL:
Ou seja, a função objetivo não pode ser maior do que 8. Sendo assim, caso o sistema abaixo
possua alguma solução:
2x1 + x2 + x3 = 2
x1 + 2x2 + 3x3 = 2
x1 , x2 , x3 ≥ 0
46
G. Coutinho e C. Arbex Valle DCC035 P.O.
Uma boa escolha de y1 e y2 nos fornece um limite superior ao valor que a solução ótima
do problema pode obter. Naturalmente, gostarı́amos de encontrar o menor limite superior
possı́vel. É mais valioso dizer que a solução ótima do problema é ≤ 7 que ≤ 18, por exemplo.
Procuramos então y1 e y2 , não-negativos, tais que 3y1 + 2y2 seja o menor possı́vel, e ainda
assim tenhamos 2y1 + y2 ≥ 4, y1 + 2y2 ≥ 5, e y1 + 3y3 ≥ 6. Parece familiar?
Exercı́cio 40. Escreva uma programação linear cuja otimização busca limitar os valores
objetivos da PL
max 1 1 1 x
1 1 2 4
sujeito a x≤
2 1 1 4
x ≥ 0.
Otimize ambas.
47
G. Coutinho e C. Arbex Valle DCC035 P.O.
3.2 A PL dual
Considere uma PL, que chamamos de primal, dada por
max cT x
(P) sujeito a Ax ≤ b
x ≥ 0.
Como vimos na seção anterior, é possı́vel escrever uma PL, doravante chamada de dual, em
que
cada restrição da primal corresponde a uma variável da dual.
Será um problema de minimização. O valor objetivo será calculado em termos de b. O vetor
c é o limite inferior das restrições. E tudo ainda precisa ser não-negativo. Ou seja
min bT y
(D) sujeito a y T A ≥ cT (ou equivalentemente AT y ≥ c)
y ≥ 0.
Note que este formato é especı́fico para uma PL que esteja exatamente no formato de
(P ) acima. Como fazer por exemplo se a PL (P ) estiver em FPI?
Originalmente, no exemplo acima, tı́nhamos 2x1 + x2 + x3 ≤ 3. Ao multiplicarmos ambos
os lados por y1 , precisamos que y1 ≥ 0 para que o sinal da desigualdade não se invertesse.
Se contudo tivéssemos 2x1 + x2 + x3 = 3, então y1 poderia ter sido qualquer número e a
igualdade não se alteraria. Temos portanto a seguinte formulação de dualidade para uma
PL em FPI:
max cT x min bT y
(P) sujeito a Ax = b (D) sujeito a AT y ≥ c
x≥0 y livre.
Mais geralmente, temos a seguinte tabela que nos ensina como construir a dual de uma
PL qualquer:
Primal Dual
restrição ≤ variável ≥ 0
max T
c x restrição = variável livre min bT y
sujeita a restrição ≥ variável ≤ 0 sujeita a
Ax ? b variável ≥ 0 restrição ≥ AT y ? c
x? 0 variável livre restrição = y? 0
variável ≤ 0 restrição ≤
48
G. Coutinho e C. Arbex Valle DCC035 P.O.
(v) Ache soluções viáveis para a primal (P) e a sua dual (D).
(vi) Verifique que o valor objetivo da solução viável da primal é menor ou igual que o valor
objetivo da solução viável da dual.
(i) cT x ≤ bT y.
49
G. Coutinho e C. Arbex Valle DCC035 P.O.
Demonstração.
y T Ax = y T b.
y T Ax ≥ cT x.
Temos portanto
bT y = xT Ay ≥ cT x.
Note que este teorema ainda não está dizendo que se ambas as PLs tem ótimos,
então estes ótimos são iguais. Isso de fato é verdade, e veremos logo mais, reforçando
ainda mais o motivo pelo qual definimos duais como tal. Contudo, por enquanto, a única
coisa que sabemos é que se a primal e a dual possuı́rem soluções viáveis de mesmo valor
objetivo, então essas soluções são respectivos ótimos de cada PL. Note aqui que uma solução
da dual com mesmo valor objetivo que uma solução da primal é exatamente o que estávamos
chamando de certificado de otimalidade.
50
G. Coutinho e C. Arbex Valle DCC035 P.O.
51
G. Coutinho e C. Arbex Valle DCC035 P.O.
0 0 0 −3 −2 0 0 0 0
1 0 0 2 1 1 0 0 8
0 1 0 1 2 0 1 0 8
0 0 1 1 1 0 0 1 5
A quarta coluna (a segunda da base) já está em forma canônica. Faremos o processo na 1a
coluna, pivoteando o elemento relativo à primeira restrição, e na 2a coluna, pivoteando o
elemento relativo à 3a restrição:
3/2 0 0 0 −1/2 3/2 0 0 12
1/2 0 0 1 1/2 1/2 0 0 4
−1/2 1 0 0 3/2 −1/2 1 0 4
−1/2 0 1 0 1/2 −1/2 0 1 1
1 0 1 0 0 1 0 1 13
1 0 −1 1 0 1 0 −1 3
1 1 −3 0 0 1 1 −3 1
−1 0 2 0 1 −1 0 2 2
Obtivemos o mesmo tableau final que quando começamos o simplex a partir da base (x3 , x4 , x5 ).
Isto não é coincidência, pois não importa a ordem das operações, ao final só haverá um ta-
bleau possı́vel para uma certa base. Suponha sem perda de generalidade que tivéssemos
reorganizado as colunas da matriz A na ordem (1, 4, 2, 3, 5), reorganizando também acima o
vetor cT . Neste caso, podemos dividir a matriz A em AB representando a base e AN com as
colunas das variáveis que não são parte da base. O tableau inicial ficaria da seguinte forma:
0 −cTB −cTN 0
I AB AN b
Ao colocar o tableau na forma canônica, estamos obtendo uma matriz identidade no lugar
de AB . Se vocês se lembram bem de Álgebra Linear, A−1 B AB = I. Isto implica também
que na matriz original identidade à esquerda, obteremos a inversa da base A−1
B . Fazendo as
mesmas operações nas demais colunas, obtemos o tableau temporário, ainda não totalmente
na forma canônica:
0 −cTB −cTN 0
A−1
B A−1
B AB = I A−1
B AN A−1
B b
Para completar a forma canônica, precisamos zerar cTB . Para isso, multiplicamos A−1 B AB
por cTB e somamos em −cTB . Claro, repetimos as operações nas outras partes do tableau:
cTB A−1
B cTB A−1 T
B AB − c B = 0 cTB A−1 T
B AN − c N cTB A−1
B b
A−1
B A−1
B AB = I A−1
B AN A−1
B b
52
G. Coutinho e C. Arbex Valle DCC035 P.O.
cTB A−1
B cTB A−1
B A−c
T
cTB A−1
B b
A−1
B A−1
B A A−1
B b
Se a base escolhida é a base ótima, teremos que (como o tableau é invertido) que
cTB A−1
B A − c
T
≥ 0, onde os termos relativos à base são precisamente iguais a zero. O
valor ótimo do problema é dado por cTB A−1
B b.
Teorema 3. Sejam (P ) e (D) um par primal-dual de PLs, e suponha que (P ) está em FPI.
Se existe uma solução ótima para (P ), então existe uma solução ótima para (D), e, ademais,
o valor objetivo ótimo de (P ) e (D) é igual.
Demonstração. Temos
max cT x
min bT y
(P) sujeito a Ax = b (D)
sujeito a AT y ≥ c
x≥0
Sabemos que existe uma solução ótima para (P ) que é básica. Seja z uma solução ótima
básica de (P ) para uma base B. Aplicamos uma rodada do simplex, e obteremos uma PL
em forma canônica. Como vimos anteriormente, esta PL é obtida multiplicando Ax = b por
A−1
B , e usando os coeficientes de cB para somar as linhas da nova matriz de modo que cB se
torne 0 e cN se torne não-positivo (agora, sem o tableau invertido). Ou seja
cT − cTB A−1
B A ≤ 0,
de modo que
(cT − cTB A−1
B A)z = 0.
cTB A−1 T −1
B Az = cB AB b.
53
G. Coutinho e C. Arbex Valle DCC035 P.O.
Pelo teorema fraco da dualidade, segue que o ótimo de (D) não pode ser menor que o
ótimo de (P ), e portanto eles tem que ser iguais.
(i) É inviável.
Nós agora podemos relacionar essas possibilidades para um par primal-dual de PLs.
Corolário 4. Sejam (P ) e (D) um par primal-dual de PLs. Há precisamente quatro casos:
54
G. Coutinho e C. Arbex Valle DCC035 P.O.
Exercı́cio 47. Considere as quatro PLs primais abaixo, e as quatro PLs duais em seguida.
Associe os pares corretamente, e em seguida decida qual caso do corolário acima se aplica a
cada par. Apresente certificados.
max 2x1 + x2 max 2x1 + x2
sujeito a x1 + x2 ≤ 4 sujeito a x1 − x2 ≤ 4
x1 − x 2 ≤ 2 x1 − x2 ≤ 2
x1 , x2 ≥ 0 x1 , x2 ≥ 0
max a1 x1 + a2 x2
1 −3 −2
sujeito a x≥
−1 3 3
x livre.
55
G. Coutinho e C. Arbex Valle DCC035 P.O.
(iii) Ache todos os valores de a1 e a2 tais que a dual seja (1) viável (2) inviável (3) viável e
ilimitada.
y T b = y T (Ax + u)
= (y T A)x + y T u
≥ cT x + y T u.
56
G. Coutinho e C. Arbex Valle DCC035 P.O.
Vimos que se x e y são ótimas, essas condições são satisfeitas. O converso também é
verdadeiro, ou seja...
min2 4 −1 y
max 5 3 5 x
1 3 −1 5
(P) 1 2 −1 2 (D) sujeito a 2 1 1 y = 3
sujeito a 3 1
2 x≤ 4 −1 2 1 5
−1 1 1 −1
y≥0
Prove que x = 1 −1 1 e y = 0 2 1 são soluções ótimas de duas maneiras diferen-
tes. Uma usando o Teorema Fraco da Dualidade, e a outra usando o Teorema das Folgas
Complementares.
Faça o mesmo para o par
max 12 26 20 x min −1 2 13 y
1 2 1 ≤ −1 1 4 2 ≥ 12
(P) sujeito a 4 6 5 x ≤ 2 (D) sujeito a 2 6 −1 y = 36
2 −1 −3 = 13 1 5 −3 ≥ 20
x1 , x3 ≥ 0 y1 , y2 ≥ 0,
com as soluções x = 5 −3 0 e y = 0 4 −2 .
max cT x
sujeito a Ax = b
possui solução ótima se, e somente se, existe uma combinação linear das linhas de A que é
igual a c.
57
G. Coutinho e C. Arbex Valle DCC035 P.O.
Aula 12
3.7 Análise de sensibilidade
Com tudo o que já vimos até agora, podemos compreender como alterações realizadas a
posteriori na formulação da PL afetam a solução ótima encontrada para o problema original.
Para isso, será sempre útil ter a matriz que codifica as operações realizadas pelo simplex para
achar a base viável ótima. Como referência, vimos antes que, dada uma base B qualquer, o
tableau estendido final obtido para aquela base é dado por:
cTB A−1
B cTB A−1
B A−c
T
cTB A−1
B b
A−1
B A−1
B A A−1
B b
Vamos agora estudar como alterações a posteriori alteram a solução ótima de uma PL.
Observe o seguinte exemplo.
max 1 1 x
1 0 3
sujeito a x≤
2 3 24
x ≥ 0.
(i) A base viável ótima é formada por colunas 1 e 2. Isolando essas colunas, podemos
calcular....
58
G. Coutinho e C. Arbex Valle DCC035 P.O.
59
G. Coutinho e C. Arbex Valle DCC035 P.O.
Exercı́cio 51. Determine o menor valor w para que, se bT = 3 w , a base de colunas 1 e
2 permaneça viável e ótima.
Exercı́cio 52. Como resolver agora se bT = 2 3 ? Dica: use o simplex dual.
Após sua resolução, encontre 2 restrições que podem ser eliminadas sem alterar a solução
ótima.
Dica: use a dual.
Este último exercı́cio nos mostra que restrições cuja variável dual correspondente na
solução ótima é igual a zero podem ser eliminadas sem alteração na solução ótima de PL
primal.
Dualmente, variáveis que são iguais a zero na solução ótima da PL primal podem ser
eliminadas da sua programação sem alteração no valor ótimo.
Por fim, incluı́mos mais dois exemplos.
Exemplo 13. Considere a PL dual do exercı́cio anterior (mas agora não pense nela como
dual, e sim como uma PL primal):
min 4 11 9 17 y
1 2 1 4 3
sujeito a y≥
0 1 1 1 2
y ≥ 0.
Você aplica o simplex nesta PL (de fato: aplique, pratique!), e após sua solução você encontra
o tableau
2 0 0 2 2 7 −20
1 1 0 3 −1 1 1
−1 0 1 −2 1 −2 1
Note que temos −20 porque estávamos fazendo max(−cT )y ao invés de min cT y. Tudo
funciona igual, mas o valor objetivo fica multiplicado por −1.
Continuando.... Suponha agora que seu cliente lhe diz: “esqueça a variável y2 ”. Você fica
chateado porque a variável y2 era básica, mas mesmo assim você a apaga do seu tableau,
obtendo:
2 0 2 2 7 −20
1 0 3 −1 1 1
−1 1 −2 1 −2 1
Como ajustar agora para acharmos o ótimo?
60
G. Coutinho e C. Arbex Valle DCC035 P.O.
O problema perdeu uma variável básica. Isto indica também que o dual deste problema
(que seria o primal do exemplo anterior!) perdeu uma restrição apertada. Ou seja, o pro-
blema dual continua viável, mas não é mais necessariamente ótimo. Vamos então reotimizar
o problema através do simplex dual. Para facilitar, vamos começar multiplicando a primeira
linha, que perdeu sua variável básica, por −1:
2 0 2 2 7 −20
−1 0 −3 1 −1 −1
−1 1 −2 1 −2 1
Podemos aplicar (como visto anteriormente) o simplex dual escolhendo o mı́nimo:
ci
.
−A1,i
A idéia é sempre fazer a operação de pivoteamento correta que (1) não torna a solução
inviável (2) não leva c a ficar ≤ 0. No caso, i = 3. Teremos então
4/3 0 0 8/3 19/3 −62/3
1/3 0 1 −1/3 1/3 1/3
−1/3 1 0 1/3 −8/3 5/3
Note que este novo tableau é ótimo para a base viável de colunas 2 e 3!
Poderı́amos também ter evitado a multiplicação da primeira linha por −1 e escolhido,
neste caso, o mı́nimo
ci
.
A1,i
Isto apenas nos pouparia um pouco de trabalho.
Exemplo 14.
max 1 2 7 x
1 0 2 4
sujeito a 0 1 3 x ≤ 5
−1 1 0 0
x ≥ 0.
61
G. Coutinho e C. Arbex Valle DCC035 P.O.
62
G. Coutinho e C. Arbex Valle DCC035 P.O.
(i) Ao adicionarmos uma restrição após a solução: (1) eliminação Gaussiana para que a
nova PL permaneça na base antiga (2) aplicar o simplex dual para achar uma nova
base viável.
(ii) Variação no vetor b: aplica a matriz de operações ao novo vetor b. Se viável, maravilha.
Se não, simplex dual.
(iii) Para remover restrições, cheque as entradas iguais a 0 na solução dual ótima.
(iv) Para remover variáveis: se for não-básica, nada muda, apenas remove. Se for básica,
remove, e aplica uma espécie de simplex dual na linha correspondente com o sinal
invertido.
Exercı́cio 54. Explique como adaptar a solução de uma PL se houver uma mudança na
função objetivo.
Aula 13
3.8 Teoria de jogos
Nesta aula vamos dar um gostinho de teoria de jogos, e mostrar uma aplicação clássica do
Teorema Forte da Dualidade.
Aqui vamos tentar formalizar a definição de um jogo. Vamos começar com pedra-papel-
tesoura. Em cada rodada, dois jogadores fazem escolhas independentes, e a comparação das
estratégias escolhidas define o resultado. Pedra-papel-tesoura é um jogo de soma zero: se
jogador A ganha, jogador B perde, ou vice-versa. Não há como ambos ganharem ou ambos
perderem. Um jogo como este pode ser formalizado como uma matriz:
Esta matriz M representa a pontuação recebida pelo jogador A, onde sua escolha é a linha, e
a escolha de B é a coluna. Como este é um jogo de soma 0, a matriz que indica a pontuação
de B é exatamente −1 vezes a transposta da matriz acima: se A ganha −1 em a12 , então B
ganha 1 em a12 , etc.
63
G. Coutinho e C. Arbex Valle DCC035 P.O.
Suponha que A e B fazem suas escolhas seguindo uma certa probabilidade. Por exemplo,
A pode escolher x = (1/2, 1/4, 1/4), indicando que em 50% dos casos ele escolhe pedra, e os
outros 50% ele divide igualmente entre papel e tesoura. Já B pode fazer y = (1/3, 1/3, 1/3),
ou seja, mesma chance pra todos. Com essas escolhas feitas, podemos calcular o valor
esperado do jogo para A:
X
3 X
3
xi y j mij , que é igual a xT My.
i=1 j=1
xT My = 0.
E portanto B também ganharia 0. Por outro lado, se as escolhas tivessem sido x = (1, 0, 0)
e y = (0, 0, 1), então
xT My = 1,
indicando que A ganharia sempre +1, e B ganharia sempre −1 (o que é de se esperar, já
que A estaria garantindo que escolheria sempre pedra, e B escolheria sempre tesoura).
3.8.1 Estratégias
Imagine agora a situação em que A e B jogam, mas A anuncia sua estratégia probabilı́stica
antes do jogo para B. Será que isso dá alguma vantagem a B?
• A resposta é que depende da estratégia. Por exemplo, se A anuncia x = (1, 0, 0),
então B sabiamente escolheria y = (0, 1, 0) para ganhar. Mas note que se A escolher
x = (1/3, 1/3, 1/3), então não importa o que B faça, A vai acabar sorteando inde-
pendentemente a sua escolha. Ou seja, há uma escolha de probabilidades para A que,
mesmo que B tenha acesso a ela de antemão, ele não ganha qualquer vantagem.
Imagine agora outro jogo, chamado “Exemplo da Wikipedia”. Neste jogo, A tem duas
escolhas, e B tem três. A matriz que quantifica o pagamento para A a partir das combinações
é a seguinte:
1 2 3
1 30 −10 20
2 −10 20 −20
Aı́ A pensa assim: “se eu escolher 2, eu posso até ganhar 20, mas aı́ eu perco 10 ou 20, nas
outras possibilidades. Por outro lado, escolher 1 me dá chance de ganhar 30 ou 20, e eu só
perderia 10. Então vou escolher 1.”Mas aı́ B se liga nisso e escolheria 2. Então A se toca
que B pensaria assim, e na verdade escolhe 2 pra surpreender B. B que não é besta imagina
que A pensaria nisso, e aı́ pega 3 pra ganhar 20 de A. E assim sucessivamente.... Qual a
melhor estratégia?
• B decide então tomar uma atitude drástica: ele vai deixar que a sorte escolha. Mas
não totalmente. Ele escolhe as probabilidades. Após muito refletir, B decide que
y = (0, 1/2, 1/2) parece razoável. E se sentindo confiante, decide avisar a A de antemão
64
G. Coutinho e C. Arbex Valle DCC035 P.O.
que é assim que ele vai agir. O que A deveria fazer? Ora, A agora vai escolher sua
probabilidade, ou seja, A escolhe x = (x1 , x2 ), com x1 + x2 = 1, e o ganho final do jogo
para A será
0
30 −10 20 5
x1 x2 1/2 = x1 x2 = 5x1 .
−10 20 −20 0
1/2
Ou seja, sabendo das probabilidades de B, A vai sempre escolher 1, e maximizará
assim sua esperança de ganho. B, se sentindo injustiçado, decide jogar de novo. Mas
dessa vez, ele quer forçar A a escolher suas probabilidades antes e anunciá-las. O que
acontece?
• A, que não é besta e aprendeu das coisas comigo, manda pra B a seguinte escolha de
probabilidades: x = (4/7, 3/7). B vai lá fazer suas continhas, pra achar y = (y1 , y2 , y3 ),
com y1 + y2 + y3 = 1. Daı́ temos
y1
30 −10 20 y1 90 20 20
4/7 3/7 y2 = 90/7 20/7 20/7 y2 = y1 + y2 + y3 .
−10 20 −20 7 7 7
y3 y3
Ou seja, não importa o que B fizer, a esperança de ganho para A será pelo menos 20/7!
Exercı́cio 55. Suponha que em um dado jogo, a melhor estratégia probabilı́stica para Alice
é o vetor x, e que
xT M = −1 2 3 −2 0 .
Qual a estratégia ótima para Bob?
max `
sujeito a ` ≤ 30x1 − 10x2
` ≤ −10x1 + 20x2
` ≤ 20x1 + 20x2
x1 + x2 + x3 = 1
x ≥ 0.
65
G. Coutinho e C. Arbex Valle DCC035 P.O.
max `
sujeito a MT x − `1 ≥ 0
1T x = 1
x ≥ 0.
min ω
sujeito a ω ≥ 30y1 − 10y2 + 20y3
ω ≥ −10y1 + 20y2 − 20y3
y1 + y2 + y3 = 1
y ≥ 0.
min ω
sujeito a My − ω1 ≤ 0
1T y = 1
y ≥ 0.
66
G. Coutinho e C. Arbex Valle DCC035 P.O.
Conclusão?
Teorema 6 (von Neumann). Em um jogo de soma zero entre duas pessoas, o valor máximo
do ganho esperado mı́nimo de um jogador é IGUAL ao valor mı́nimo da perda esperada
máxima do outro jogador. Ademais, cada jogador possui uma estratégia probabilı́stica que
satisfaz esta igualdade. Ou seja
max min x Ay = min max xT Ay .
T
x y y x
O valor descrito no teorema acima é o famoso equilı́brio de Nash do jogo. John Nash
publicou este teorema em sua tese de doutorado, e este trabalho lhe rendeu o Prêmio Nobel
de Economia em 1994.
Exercı́cio 56. Considere o seguinte jogo. Alice e Bob decidem que a cor azul vale 10 reais,
e que a cor verde vale 6 reais. Cada um deles escolhe uma cor. Se derem iguais, Bob paga
a Alice o valor somado das duas cores (16). Se der diferente, Alice paga a Bob duas vezes o
valor da cor que ela escolheu (20 ou 12).
(i) Este jogo é melhor pra quem? Calcule o equilı́brio de Nash.
(ii) Há alguma escolha de valores para as cores em que este jogo se torna justo?
67
G. Coutinho e C. Arbex Valle DCC035 P.O.
max cT x
sujeito a Ax ≤ b
x ≥ 0.
Vamos agora ver um exemplo do significado do dual. Suponha que até então esta empresa
era um monopólio, e adquiria os recursos a um preço muito baixo do único produtor Z.
Uma segunda indústria Y , mais poderosa talvez, deseja entrar no mercado. Após suces-
sivas tentativas frustradas de comprar a indústria X, ela decide eliminá-la secando a fonte
dela, ou seja, comprando todos os recursos disponı́veis de Z. Como estabelecer uma proposta
de preços para cada recurso de modo a minimizar o custo total, porém de modo que a oferta
a Z seja irrecusável?
A empresa Y pensa assim. Para cada recurso j, com j de 1 a m, vamos propor o preço
de y m . Queremos minimizar o custo da compra de todos os recursos, ou seja
min bT y.
Para que nossa oferta a Z seja irrecusável, vamos oferecer um preço que cubra o que o
X jamais conseguiria ganhar com a venda de seus produtos. Dessa forma, Z pensará que
mesmo que X reformule sua produção, nossa oferta ainda será superior. Note que, com a
produção de uma unidade do produto i, X gasta
X
m
Aji
j=1
recursos. Cada uma dessas unidades rende a X um lucro de ci . Então vamos colocar preços
de modo que ao comprar a mesma quantidade de recursos, Z receba pelo menos o que X
receberia na venda do produto, ou seja
X
m
Aji y j ≥ ci .
j=1
AT y ≥ c.
68
G. Coutinho e C. Arbex Valle DCC035 P.O.
min bT y
sujeito a AT y ≥ c
y ≥ 0.
Esta é precisamente a PL dual. O mais impressionante, talvez, é que por conta do Teorema
da Dualidade, a solução ótima para Y é exatamente o máximo que X conseguiria vender.
Nem mais, nem menos.
A idéia aqui, obviamente, é limitada no sentido em que preços no mundo real não são
determinados de modo tão simples. Este modelo ignora a existência de outros fatores,
como demais concorrentes ou outros fornecedores de recursos. Mas ele estabelece uma idéia
importante: a de que dado um certo processo de produção, os recursos usados possuem um
preço inerente somente ao processo, também chamado de preço interno ou “shadow price”.
E as condições de folga complementares, o que diriam? Nesta lógica, se um determinado
recurso não é completamente usado por X, então Y pode oferecer qualquer valor a Z pelo
excedente. Em certo sentido, Z estaria disposta a até mesmo dar de graça para poder fechar
o negócio. Nessa lógica, a variável correspondente em y é 0.
Note também que uma pequena variação na quantidade disponı́vel de cada recurso pro-
vavelmente não alterará o preço deste recurso. De fato, como vimos, alterações no vetor b
podem, muitas vezes, não alterar o processo de solução no simplex. Ou seja, a solução dual
permanece a mesma!
Considere agora o seguinte problema.
Exercı́cio 57. Um estudante está decidindo o que comprar de uma padaria para um lanche.
Há duas opções: brownies e cheesecakes, ao preço de 5 ou 8 reais, respectivamente (é possı́vel
comprar frações do lanche). A padaria usa 100 gramas de chocolate no cheesecake, 60g de
açúcar no brownie e 120g no cheesecake, e 60g de creme no brownie e 150g no cheesecake.
O estudante, seguindo a dieta do nutricionista, quer no mı́nimo 180g de chocolate, 300g de
açúcar e 240g de creme. O objetivo, naturalmente, é gastar o mı́nimo possı́vel.
(b) Imagine agora que você é o distribuidor que vende à padaria chocolate, açúcar e creme. A
padaria te informa precisamente o mı́nimo de cada ingrediente que ela precisa comprar
para satisfazer o estudante, assim como quanto é gasto em cada lanche. Explique a
interpretação econômica de dualidade, ou seja, qual a lógica do distribuidor para realizar
essa venda, e como a PL dual captura isso?
(c) Usando as condições de folga complementares, explique qual seria a lógica se uma das
variáveis na solução ótima da dual for zero, ou seja, o que explicaria o distribuidor vender
algo de graça a padaria?
69
Capı́tulo 4
aT x = 0
aT x ≥ 0
é o conjunto de todos os vetores x tais que o ângulo entre x e a está entre 0 e π/2. Tais
conjuntos são chamados de hiperespaços. Ao adicionarmos uma constante, por exemplo
aT x ≥ β,
estamos apenas transladando o hiperplano que serve de fronteira entre o hiperespaço e o seu
complemento.
As restrições lineares de uma PL sempre são da forma
aT x ≤ β ou aT x = β ou aT x ≥ β.
Ax ≤ b (∗)
para uma certa matriz A e um vetor b. Conjuntos de vetores x satisfazendo (∗) são chamados
de poliedros. Todo poliedro é uma interseção finita de hiperespaços.
Toda PL consiste em otimizar uma função afim (linear adicionada de uma
possı́vel constante) em um poliedro.
70
G. Coutinho e C. Arbex Valle DCC035 P.O.
Dados dois pontos x1 , x2 ∈ Rn , o segmento de reta entre eles pode ser expresso como
x ∈ Rn : x = λx1 + (1 − λ)x2 com 0 ≤ λ ≤ 1.
Um conjunto C de pontos é chamado de convexo se para quaisquer dois pontos no conjunto,
o segmento de reta entre eles também pertence ao conjunto.
Teorema 7. Poliedros são convexos.
Demonstração. Sejam x1 e x2 pontos satisfazendo Ax ≤ b. Daı́ teremos que, para todo
λ tal que 0 ≤ λ ≤ 1,
A(λx1 + (1 − λ)x2 ) ≤ λb + (1 − λ)b = b.
71
G. Coutinho e C. Arbex Valle DCC035 P.O.
Pegamos por exemplo o ponto x = 1 1 . Segue que
2 3
1 2
Ax =
1 ≤ 2 ,
−1 0
−1 0
e portanto nenhuma das linhas corresponde a uma restrição com igualdade. Segue que A=
é a matriz vazia, de posto 0, ex não é ponto extremo.
Considere agora x = 1 0 . Teremos
1 3
1 2
Ax =
0 ≤ 2 ,
−1 0
0 0
portanto a última linha é uma restrição com igualdade, e A= = 0 −1 e b= = 0 . Como
o posto de A= é igual a 1, e não
2, este ponto x não é um ponto extremo.
Considere agora x = 2 1 . Segue que
3 3
2 2
Ax =
1 ≤ 2 ,
−2 0
−1 0
portanto as duas primeiras linhas são restrições com igualdade, e daı́ teremos
= 1 1 = 3
A = eb = .
1 0 2
72
G. Coutinho e C. Arbex Valle DCC035 P.O.
A= x1 = A= x2 = b= ,
(i) Reescreva as restrições que definem P para que apareçam apenas restrições com ≤.
(ii) Use o Teorema (8) para mostrar que z é um ponto extremo do poliedro.
Exercı́cio 61. O objetivo deste exercı́cio é compreender melhor a geometria da região viável
de uma PL em FPI. Considere
max cT x
sujeito a Ax = b
x ≥ 0,
e suponha que seja viável e limitada. Suponha que A é uma matriz m × n, n ≥ m, e seu
posto é igual a m.
(a) Suponha que z 1 e z 2 são soluções viáveis. Verifique diretamente que o segmento de reta
entre elas é composto de soluções viáveis.
73
G. Coutinho e C. Arbex Valle DCC035 P.O.
Lembre-se que para uma PL em FPI, uma solução viável x é chamada de básica se o
suporte das entradas não nulas de x corresponde a um subconjunto de colunas de A
contidas em uma base. Para a próxima letra, converta a expressão da PL para algo da
forma Mx ≤ d, e use o teorema anterior.
Também é possı́vel demonstrar a letra acima diretamente. As letras abaixo são um passo-
a-passo. É um excelente exercı́cio fazer as letras abaixo sem olhar para a demonstração
do teorema acima.
(c) Assuma que z 1 e z 2 são soluções viáveis distintas, e z = λz 1 + (1 − λ)z 2 . Mostre que se
0 < λ < 1, z não pode ser uma solução básica viável da PL.
(d) Mostre que se w > 0 (ou seja, um vetor em que todas as entradas são positivas) e w é
viável, então existem w1 6= w2 soluções viáveis tais que w = 1/2(w1 + w2 ), a não ser
possivelmente no caso em que n = m.
(e) Mostre que todo ponto extremo do poliedro (ou seja, os pontos que não pertencem a um
segmento viável não-trivial) são exatamente as soluções básicas viáveis.
Por fim, seja x1 , ..., xm um conjunto de pontos no Rn . Uma combinação convexa desses
pontos é um ponto x que satisfaz
x = λ1 x1 + ... + λm xm ,
(ii) Mostre que se três pontos pertencem a conjunto convexo, então todas as combinações
convexas também pertencem.
(iii) Se convença, mas tente me convencer também, que um poliedro que não contenha uma
semi-reta (ou se você preferir, um poliedro limitado, também chamado de politopo) é
precisamente o conjunto de combinações convexas dos seus pontos extremos.
74
G. Coutinho e C. Arbex Valle DCC035 P.O.
X
n−1
Aik xk + xn ≤ bi , para todo i ∈ I+ ,
k=1
X
n−1
Aik xk − xn ≤ bi , para todo i ∈ I− ,
k=1
X
n−1
Aik xk ≤ bi , para todo i ∈ I0 .
k=1
Note que o número de variáveis diminuiu, mas o número de inequações aumentou terrivel-
mente. Isso contudo não é um problema para a nossa indução (mas seria um problema se
estivéssemos usando este método para resolver PLs).
Se o sistema original não tem solução, o anterior também não tem, e, por indução, existem
coeficientes wij , para i ∈ Ii e j ∈ I+ , e coeficientes vi , para i ∈ I0 , de modo que, para todos
os ı́ndices, wij ≥ 0, vi ≥ 0, e
X X
(Aik + Ajk )wij + Aik vi = 0, para todo k,
i∈I− ,j∈I+ i∈I0
75
G. Coutinho e C. Arbex Valle DCC035 P.O.
e X X
(bi + bj )wij + bi vi < 0.
i∈I− ,j∈I+ i∈I0
zi = vi , para i ∈ I0 .
Satisfaz z ≥ 0, z T A = 0, e bT z < 0.
Exercı́cio 63. O lema de Farkas diz que Ax = b e x ≥ 0 não tem solução se e somente se
houver y de modo que y T A ≥ 0 e bT y < 0. Prove isso (usando o Teorema das Alternativas).
Lembre-se que vimos que o certificado de inviabilidade nada mais é do que o ótimo da
dual da PL auxiliar. Não é difı́cil verificar que sua existência implica que o ótimo de PLs
duais coincide.
Teorema 10 (Teorema Forte da Dualidade). Considere o seguinte par primal-dual de pro-
gramações lineares
T min bT y
max c x
(P) (D) sujeito a AT y = c
sujeito a Ax ≤ b
y ≥ 0.
Se o problema dual (D) é viável e limitado, então (P) também é, e os ótimos coincidem.
Demonstração. Já sabemos por dualidade fraca que cT x ≤ bT y. Seja w solução ótima
para (D). Considere o sistema de inequações lienares
A b
x≤ .
−cT −bT w
Note que se ele for viável, então existe x viável para (P) tal que cT x ≥ bT w, e portanto
cT x = bT w. Suponha então, para efeito de contradição, que o sistema é inviável. Pelo Lema
de Farkas, existe (z, z0 ) ≥ 0 tal que
T
A T
b
z z0 =0 e z z0 < 0.
−cT −bT w
Se z0 = 0, note então que z seria uma certificado de ilimitada para (D), uma contradição.
Se z0 > 0, então note que
1 T 1 T
z A = cT , e z b < bT w,
z0 z0
contrariando o fato que w era ótimo para (D).
Assim, concluı́mos que (P) é viável, e seu ótimo é igual ao de (D).
É um exercı́cio interessante verificar que (algumas d)as demais formulações equivalentes
de dualidade também satisfazem o teorema forte acima.
76
G. Coutinho e C. Arbex Valle DCC035 P.O.
Exercı́cio 64. Volte ao Exemplo 15 e calcule o cone de restrições de igualdade para os três
pontos apresentados.
Teorema 11. Seja x uma solução viável de max{cT x : Ax ≤ b}. Então x é ótima se e
somente c pertence ao cone de restrições de igualdade de x.
cT x = y T Ax = y T (b − u) ≤ y T b,
77
Capı́tulo 5
Programações inteiras
78
G. Coutinho e C. Arbex Valle DCC035 P.O.
Aulas 14 e 15
5.1 Programações inteiras
Considere o problema de otimização abaixo:
Se ignorarmos a última restrição (que diz que as variáveis devem ser inteiras), a PL corres-
pondente pode ser representada graficamente pela figura abaixo:
5.0
x2 = 4
3x1 − 2x2 = 3
x2
2.5
0.0
10x1 + 2x2 = 23
0 2 4 6
x1
Os vértices do poliedro que define a área viável são (0, 0), (1, 0), (2, 32 ), ( 32 , 4), (0, 4). A figura
também inclui, em vermelho, os pontos dentro da área viável que são inteiros.
O ótimo (da PL) está no ponto (2, 32 ). O problema é que ele é fracionário, isto é, a solução
não satisfaz a condição de integralidade imposta. Observe a figura abaixo:
79
G. Coutinho e C. Arbex Valle DCC035 P.O.
5.0
x2 = 4
(1,4)
3x1 − 2x2 = 3
x2
2.5
3
(2, )
2
0.0
10x1 + 2x2 = 23
0 2 4 6
x1
Os pontos inteiros viáveis mais próximos da solução ótima da PL são (1, 1) e (1, 2). Porém,
como podemos ver na figura, o ótimo inteiro é o ponto (1, 4). As linhas verdes pontilhadas
representam a função objetivo passando pelo ponto ótimo da PL (com valor 27) e pelo ponto
ótimo do problema inteiro (com valor 20).
Este exemplo dá uma ideia da dificuldade que é lidar com problemas de programação
inteira: a solução ótima não é necessariamente próxima da solução ótima da PL obtida
quando ignoramos a restrição de integralidade. Quando consideramos mais variáveis (mais
dimensões), o problema se torna ainda mais crı́tico. Apontamos alguns fatos relevantes:
(i) O ótimo de uma programação inteira não está necessariamente na fronteira do poliedro.
(ii) Se a programação é um problema de maximização, o ótimo da PL é sempre maior ou
igual que o ótimo da PI. No exemplo acima, o ótimo da PL era 27, e da PI 20.
(iii) O que acontece com dualidade?
(iv) Se todos os vértices do poliedro são pontos de coordenadas inteiras, então esses ótimos
irão coincidir.
Em relação ao ponto (iv) acima, veremos mais pra frente que algumas PIs com um tipo
de estrutura especı́fica podem ser resolvidas facilmente. Porém, a grande maioria das PIs
não possui tal estrutura, e é um problema em aberto se é possı́vel resolve-las com algoritmos
polinomiais ou não.
Veremos em breve dois algoritmos que resolvem PIs. Ambos os algoritmos possuem
complexidade exponencial, porém funcionam rapidamente na prática em diversos casos (mas
não todos!). Porém, inicialmente, vamos apresentar alguns exemplos de problemas que
podem ser modelados como PIs.
80
G. Coutinho e C. Arbex Valle DCC035 P.O.
5.2 Modelagem
Vimos nas aulas anteriores várias PLs onde faria sentido se, na verdade, tivessem sido mo-
deladas como PIs. Por exemplo, ao planejar a produção de uma empresa, permitimos que
a solução final sugerisse produzir uma quantidade fracionária de um certo produto ao invés
de unidades inteiras. Outro exemplo é o problema da dieta, onde a solução pode indicar a
compra de “5.3 ovos” ou “10.2 porções de carne”. Na prática, faria sentido impor que as
porções devem ser inteiras para diversos alimentos (com exceção daqueles que compramos a
granel, por exemplo).
Nesta seção, veremos exemplos de problemas onde somente faz sentido utilizar pro-
gramação inteira.
Exemplo 16. Uma empresa possui N projetos nos quais pode investir. Cada projeto i ∈ N
possui retorno esperado positivo ci (em reais). Porém, devido a restrições orçamentárias,
não é possı́vel investir em todos. No caso, cada projeto i requer que a empresa faça aportes
financeiros ait nos tempos t = 1, . . . , T . O orçamento disponı́vel para estes aportes no tempo
t é bt (previamente conhecido ou estimado). Formule este problema como um problema de
programação inteira.
Variáveis de decisão: Devemos decidir em quais projetos a empresa irá investir. Não faz
sentido “investir em meio projeto”, ou “investir duas vezes no mesmo projeto”. Ou seja,
a decisão é binária: para cada projeto i, ou investe, ou não investe. Assim, vamos propor
variáveis xi que terão o valor 1 se optarmos por investir no projeto i, ou o valor 0, caso
contrário.
Este tipo de variável é geralmente chamado de variável binária. É uma variável inteira
limitada pelos valores 0 ≤ xi ≤ 1. É bastante utilizada em situações onde devemos tomar
decisões binárias, sim ou não. A grande maioria dos problemas mais interessantes de PI
requer variáveis binárias.
X
N
max ci x i
i=1
Note que o retorno esperado do projeto i, ci , será positivo na função objetivo apenas caso
xi seja 1.
X
N
ait xi ≤ bt t = 1, . . . , T
i=1
Observe que a formulação possui T restrições, uma para cada perı́odo de tempo. O modelo
completo é dado abaixo:
81
G. Coutinho e C. Arbex Valle DCC035 P.O.
X
N
max ci x i
i=1
X
N
sujeito a ait xi ≤ bt t = 1, . . . , T
i=1
0 ≤ xi ≤ 1, xi inteiro, i = 1, . . . , N
É comum também utilizarmos a notação xi ∈ B para dizer que uma variável pode ter apenas
os valores 0 ou 1.
No problema acima, assumimos que ci é conhecido. Na prática, o retorno esperado é uma
estimativa cuja incerteza pode ser alta (alto risco). Existem diversos modelos de otimização
que buscam gerenciar o risco ao controlar a incerteza enquanto busca-se maximizar o retorno
esperado.
(a) Os projetos 3 e 4 são concorrentes, não é possı́vel investir em ambos ao mesmo tempo.
(c) Se a empresa investir nos projeto 1 e 4, então deve obrigatoriamente investir no projeto
6.
Acrescente restrições à formulação acima de forma a garantir que estas condições sejam
respeitadas.
Exemplo 17. Uma empresa possui N tarefas urgentes que devem ser cumpridas. Cada
tarefa exige um funcionário (há também N funcionários disponı́veis). Todo funcionário pode
fazer toda tarefa, mas como cada funcionário tem um nı́vel de capacitação diferente, o tempo
gasto varia. Já sabemos de antemão que o funcionário i precisa de cij horas para executar
a tarefa j. A empresa busca minimizar o tempo total gasto nas tarefas e quer que todos os
funcionários fiquem ocupados (ninguém deve ficar a toa). Formule este problema como uma
PI.
82
G. Coutinho e C. Arbex Valle DCC035 P.O.
X
N X
N
min cij xij
i=1 j=1
X
N
sujeito a xij = 1 i = 1, . . . , N
j=1
X
N
xij = 1 j = 1, . . . , N
i=1
xij ∈ B i = 1, . . . , N, j = 1, . . . , N
O primeiro conjunto de restrições garante que todo funcionário será alocado a uma tarefa, e
o segundo conjunto garante que toda tarefa será executada por um funcionário.
Este problema é conhecido como o problema da atribuição (assignment). Veremos
mais pra frente que esta é uma PI “fácil” de ser resolvida.
Exercı́cio 66. Altere a formulação acima de acordo com os detalhes abaixo:
Exercı́cio 67. O governo de Minas deve decidir onde construir novos quartéis do corpo
de bombeiros. Há uma região com 6 cidades no norte do Estado que atualmente que não
é atendida por nenhum quartel em menos de 45 minutos. O governo gostaria de garantir
que há um corpo de bombeiros a no máximo 15 minutos de distância de cada uma destas 6
cidades. Abaixo, uma tabela com o tempo necessário para dirigir da cidade i até a cidade j
(a tabela não é necessariamente simétrica):
De/para 1 2 3 4 5 6
1 0 10 20 30 30 20
2 10 0 25 35 20 10
3 20 25 0 15 30 20
4 30 35 15 0 15 25
5 20 20 30 15 0 14
6 20 10 20 25 14 0
83
G. Coutinho e C. Arbex Valle DCC035 P.O.
(a) Considere inicialmente que cada equipe jogará apenas uma vez contra as demais (19
jogos cada). Formule este problema como uma PI que minimiza o número de quebras.
(b) Adicione uma restrição que impõe que se na primeira rodada uma equipe jogou em
casa, então deve jogar fora de casa na última rodada.
(c) O que você deve fazer para resolver agora o problema com 38 rodadas, onde se a equipe
i enfrentou j em casa na rodada t, deve então enfrenta-la fora de casa na rodada t + 19
(tabela com dois turnos simétricos)?
max cT x
sujeito a Ax = b
x ≥ 0,
84
G. Coutinho e C. Arbex Valle DCC035 P.O.
Cada uma das restrições corresponde às retas (1), (2), (3) e (4) abaixo, e a região verde é
portanto a região de viabilidade da relaxação linear.
O ótimo da PL é o ponto x = 7/3 7/3 . Suponha que agora foi adicionada a restrição
abaixo, que corresponde à reta (c) da figura.
1 1 x ≤ 4.
85
G. Coutinho e C. Arbex Valle DCC035 P.O.
Note que todos eles permanecem satisfazendo 1 1 x ≤ 4, mas que o ponto x = 7/3 7/3
não satisfaz. Daı́ consideramos a PI que adiciona esta restrição:
max 1 1 x
2 1 7
1 2 7
sujeito a
−1 −4 x ≤ −4
−1 0 −1/2
1 1 4
x inteiro.
O ótimo desta PI ainda será o mesmo que o da PI original, já que não retiramos qualquer
ponto inteiro da região de viabilidade. Porém ao olharmos para a relaxação
linear, saberemos
que o seu ótimo será diferente. Basicamente: cortamos x = 7/3 7/3 fora, sem mudar os
pontos inteiros.
86
G. Coutinho e C. Arbex Valle DCC035 P.O.
Aula 16
5.4 Planos de corte
Considere o seguinte exemplo.
max 2 5 x
1 4 8
sujeito a x≤
1 1 4
x ≥ 0, x inteiro.
No caso, a desigualdade aqui será x1 + 3x2 ≤ 6, correspondente à reta (?) acima. Como
achá-la em geral? Ao resolvermos o simplex na relaxação linear do problema original, teremos
1 −2 −5 0 0 0 1 0 0 1 1 12
0 1 4 1 0 8 ⇒ 0 1 0 −1/3 4/3 8/3
0 1 1 0 1 4 0 0 1 1/3 −1/3 4/3
87
G. Coutinho e C. Arbex Valle DCC035 P.O.
Qualquer solução satisfaz essa igualdade! Como as variáveis são não-negativas, reduzir os
coeficientes significa reduzir o valor da soma. Daı́
−1 4 8
x1 + x3 + x4 ≤ .
3 3 3
Ou seja
8
x1 − x3 + x4 ≤ .
3
Contudo, estamos preocupado apenas com soluções inteiras. Uma soma de número inteiros
menor ou igual que 8/3 será também menor ou igual a 2. Teremos finalmente a inequação
abaixo, que necessariamente será satisfeita por qualquer solução viável inteira do problema
original:
x1 − x3 + x4 ≤ 2.
Observe que esta desigualdade é violada pela solução ótima da PL, x = 8/3 4/3 . De
fato, um corte obtido desta forma sempre será violado pela solução atual da PL (por que?).
Acrescentamos esta inequação e resolvemos de novo. Ou seja, o novo tableau será:
1 0 0 1 1 0 12 1 0 0 1 1 0 12
0 1 0 −1/3 4/3 0 8/3 8/3
⇒ 0 1 0 −1/3 4/3 0 ,
0 0 1 1/3 −1/3 0 4/3 0 0 1 1/3 −1/3 0 4/3
0 1 0 −1 1 1 2 0 0 0 −2/3 −1/3 1 −2/3
(ii) Escolhemos uma das equações que indique uma solução fracionária para uma das
variáveis do problema - necessariamente será uma linha onde o b foi uma fração.
(iii) Trocamos todos os coeficientes desta inequação por b c (cuidado com os negativos!!).
(iv) Acrescentamos a nova equação, e resolvemos o simplex novamente (método dual será
sempre a melhor estratégia).
(v) Se a solução for inteira, acaba. Se não for, repete o passo (ii).
Este algoritmo foi proposto por Ralph Gomory nos anos 50 e estes cortes possuem hoje
o nome de cortes de Gomory. De inı́cio, porém, não era considerado muito prático (até pelo
próprio Gomory) devido a instabilidades numéricas e devido ao enorme número de cortes que
eram necessários no geral para resolver uma PI. A partir dos anos 90, o método foi revisitado
e combinado com o próximo algoritmo que veremos, chamado Branch-and-bound, para
formar o que chamamos de algoritmos Branch-and-cut, bastante efetivos para diversos
problemas. Hoje em dia, todos os solvers implementam cortes de Gomory de uma forma ou
outra.
88
G. Coutinho e C. Arbex Valle DCC035 P.O.
Exercı́cio 71. Suponha que ao resolver a relaxação linear de uma PI, chegamos no seguinte
tableau:
1 0 0 0 17/12 1/12 5/12 140
0 1 0 0 111/60 −13/12 −1/60 9/2
0 0 1 0 1/10 1/2 −1/10 1
0 0 0 1 2 11/2 −1/12 11/10
Quais inequações podem ser usadas para acharmos planos de corte? Para cada uma delas,
qual o plano de corte correspondente?
Imaginamos então que o ótimo inteiro tenha valores próximos desses. Vimos que isso
nem sempre é verdade, mas pode ser verdade em alguns casos. Pegamos então uma variável
cujo resultado tenha sido fracionário, e dividimos em dois casos. Por exemplo, a variável x1 .
Claramente x1 ≤ 2 ou x1 ≥ 3. Desta forma, criamos dois subproblemas:
Temos agora mais duas PLs para resolver, os subproblemas 2 e 3. Sabemos que a solução
inteira ótima é parte de algum destes dois problemas. Podemos visualizar os problemas como
uma árvore, de acordo com a figura abaixo:
89
G. Coutinho e C. Arbex Valle DCC035 P.O.
Prob. original
x1 = 2.8, x2 = 1.8
Valor: 258
x1 ≥ 3 x1 ≤ 2
Subproblema 2 Subproblema 3
Devemos então escolher um dos dois para começar. Vamos escolher o Subproblema 2.
Como já relembramos nesta semana, resolver uma PL após adicionar uma única restrição não
é muito custoso, podemos continuar a partir do tableau do problema original. Ao resolver,
descobrimos que o ótimo do Subproblema 2 é x = 3 3/2 com valor objetivo 255. A
variável x1 agora é inteira, mas a variável x2 continua fracionária. Podemos então criar mais
dois problemas:
Prob. original
x1 = 2.8, x2 = 1.8
Valor: 258
x1 ≥ 3 x1 ≤ 2
Subproblema 2
x1 = 3, x2 = 1.5 Subproblema 3
Valor: 255
x2 ≤ 1 x2 ≥ 2
Subproblema 4 Subproblema 5
Agora possuimos três subproblemas na fila para serem resolvidos, 3, 4 e 5. Vamos seguir
onde estávamos e resolver agora o Subproblema 4. Obtemos como solução x = 10/3 1
com valor objetivo 250. A variável x2 passou a ser inteira, mas x1 voltou a ser fracionária.
Podemos criar então mais dois subproblemas ao ramificar a árvore em x1 :
90
G. Coutinho e C. Arbex Valle DCC035 P.O.
Prob. original
x1 = 2.8, x2 = 1.8
Valor: 258
x1 ≥ 3 x1 ≤ 2
Subproblema 2
x1 = 3, x2 = 1.5 Subproblema 3
Valor: 255
x2 ≤ 1 x2 ≥ 2
Subproblema 4
x1 = 10/3, x2 = 1 Subproblema 5
Valor: 250
x1 ≤ 3 x1 ≥ 4
Subproblema 6 Subproblema 7
91
G. Coutinho e C. Arbex Valle DCC035 P.O.
Prob. original
x1 = 2.8, x2 = 1.8
Valor: 258
x1 ≥ 3 x1 ≤ 2
Subproblema 2
x1 = 3, x2 = 1.5 Subproblema 3
Valor: 255
x2 ≤ 1 x2 ≥ 2
Subproblema 4 Subproblema 5
x1 = 10/3, x2 = 1 inviável
Valor: 250
x1 ≤ 3 x1 ≥ 4
Subproblema 6 Subproblema 7
x1 = 3, x2 = 1 x1 = 4, x2 = 0
92
G. Coutinho e C. Arbex Valle DCC035 P.O.
Prob. original
x1 = 2.8, x2 = 1.8
Valor: 258
x1 ≥ 3 x1 ≤ 2
Subproblema 2 Subproblema 3
x1 = 3, x2 = 1.5 x1 = 2, x2 = 2.45
×
Subproblema 4 Subproblema 5 Subproblema 8 Subproblema 9
x1 = 10/3, x2 = 1 inviável x1 = 2, x3 = 2 x1 = 4/3, x2 = 3
Subproblema 6 Subproblema 7
x1 = 3, x2 = 1 x1 = 4, x2 = 0
Alguns comentários:
(i) Várias escolhas no processo acima foram arbitrárias. Preferimos fazer uma busca em
profundidade antes, sempre descendo na árvore quando possı́vel. Também escolhemos
começar ramificando em x1 ao invés de x2 . Podemos implementar a mesma idéia com
variações, e estas decisões podem influenciar fortemente na performance do algoritmo.
A busca em profundidade costuma encontrar soluções inteiras mais rapidamente, mas
demora mais para reduzir limite superior e, consequentemente, o gap de otimalidade.
A busca em largura é o oposto.
(ii) O passo em que decidimos não seguir no subproblema 9 é o grande diferencial desde
algoritmo, em comparação a uma simples busca em todos os pontos inteiros. Ele usa
o fato que o ótimo da PI nunca é melhor que o da sua relaxação linear para eliminar a
necessidade de testar vários casos. Pode fazer uma diferença enorme na prática.
(iii) Muitos dos melhores algoritmos comerciais para resolver PIs usam métodos mistos
que combinam branch-and-bound e planos de corte. São os chamados branch-and-cut,
cutting-and-branch, etc. Para grande parte dos problemas inteiros, esta combinação
é hoje a técnica de maior sucesso na resolução destes problemas. A maior instância
já resolvida para o caixeiro viajante possui 85900 cidades e a solução ótima foi obtida
com um branch-and-cut.
(iv) Ainda assim, muitos problemas são desafiadores do ponto de vista computacional. O
branch-and-bound é um algoritmo de enumeração com complexidade exponencial no
93
G. Coutinho e C. Arbex Valle DCC035 P.O.
(v) Em todas as aplicações nesta semana, corremos o risco de precisar resolver um grande
número de PLs. Em todos os casos, usar o método simplex dual é mais eficiente que o
primal - portanto o ganho final de usar este método é enorme.
Exercı́cio 73. Suponha que a árvore abaixo mostra o atual estado na solução de uma PI
via branch and bound. Já é possı́vel determinar a solução final do problema?
Exercı́cio 74. Suponha que se deseja resolver a PI abaixo, cuja região de viabilidade está
desenhada ao lado, em um quadriculado onde cada quadrado tem lado 1/2. Lembre-se que
o ótimo de uma PL sempre se encontra em um vértice da região de viabilidade.
94
G. Coutinho e C. Arbex Valle DCC035 P.O.
3
x
max 8 10
y
2
sujeita a 2y + x ≤ 6
2x + 2y ≤ 7
1
y + 2x ≤ 6
x, y ≥ 0, x, y ∈ Z.
0
0 1 2 3
min xn+1
sujeito a 2(x1 + x2 + ... + xn ) + xn+1 = n
0 ≤ x ≤ 1, x inteiro.
Mostre que o método de branch and bound precisa examinar, no caso de piores escolhas
possı́veis, pelo menos 2bn/2c subproblemas antes de resolver o problema.
95
Capı́tulo 6
Aula 17
6.1 Problema do caixeiro viajante
Considere o seguinte problema:
96
G. Coutinho e C. Arbex Valle DCC035 P.O.
conectando as cidades nas duas direções. A cada arco é associada um custo cij e não há
necessariamente simetria nos custos - isto é, pode ser que cij 6= cji .
Caso o grafo real do problema não seja completo (por exemplo, não existe rota direta
entre Rio e Brası́lia sem passar por BH), podemos criar um arco artificial nas duas direções
onde o custo entre Rio e Brası́lia é dada pelo menor custo de um caminho entre as duas
cidades. Seja |V | o número de vértices do grafo (esta notação é geralmente utilizada para
representar a cardinalidade de um conjunto).
Esta versão do problema é chamada de TSP assimétrico. Vamos agora formula-lo como
uma PI:
Formulação: Gostarı́amos de minimizar o custo total, e garantir que toda cidade será
visitada. Veja o modelo abaixo:
X X
min cij xij
i∈V j∈V,j6=i
X
sujeito a xij = 1, ∀i ∈ V
j∈V,j6=i
X
xij = 1, ∀j ∈ V
i∈V,i6=j
As restrições do problema indicam que a partir de toda cidade i o caixeiro viajante deve
seguir viagem para alguma cidade j. Igualmente, se o caixeiro chegou em j, ele tem que ter
vindo de alguma cidade i. Ou seja, em toda cidade, o caixeiro vem de algum lugar e vai para
algum lugar. A formulação está completa?
Infelizmente ainda não! Por exemplo, considere |V | = 6 e assuma a solução x12 = x23 =
x31 = 1, x45 = x56 = x64 = 1 e todos os demais xij = 0. Esta representa uma solução viável
de acordo com o modelo acima, porém não representa um ciclo Hamiltoniano. Diz-se que a
solução acima possui subciclos. Como podemos garantir que o caso acima não aconteça?
Uma possı́vel ideia é adicionar a seguinte restrição ao problema:
97
G. Coutinho e C. Arbex Valle DCC035 P.O.
que garantir que para todo subcojunto de vértices, pelo menos um arco saia dele em direção
ao complemento desse subconjunto. Podemos adicionar o seguinte conjunto de restrições:
X
xij ≥ 1, ∀W ⊆ V, 1 < |W | < |V | − 1 (6.1)
i∈W, j ∈W
/
Para todo subconjunto W de tamanho entre 2 e |V | − 1, garantimos que pelo menos um arco
sairá dele e consequentemente nenhum subciclo ocorrerá.
Uma forma alternativa de representar as mesmas desigualdades de eliminação de subciclos
é através das inequações:
X
xij ≤ |W | − 1, ∀W ⊂ V, 1 < |W | < |V | − 1 (6.2)
(i,j)∈W
Nesta versão, dizemos que o número de arcos entre vértices de W que fazem parte da solução
(xij = 1) deve ser no máximo |W | − 1. Se houvesse |W | ou mais arcos entre vértices do
mesmo subconjunto, obrigatoriamente terı́amos um subciclo.
Exercı́cio 77. Teremos algum problema para obter a relaxação linear da formulação acima?
Neste momento vem a questão: como resolver esta formulação se, mesmo para V relativa-
mente baixo, o número de restrições é tão alto que nem conseguimos escreve-las na memória
do computador mais poderoso que se conhece?
98
G. Coutinho e C. Arbex Valle DCC035 P.O.
3. Verifique se pelo menos uma restrição de eliminação de subciclos é violada pela solução
da relaxação linear do subproblema resolvido.
(a) Caso sim, adicione ao modelo uma ou mais dentre as restrições violadas identifi-
cadas e volte ao passo 2, resolvendo novamente o subproblema.
(b) Senão, continue com o branching normalmente.
http://www.math.uwaterloo.ca/tsp/
Ficou apenas uma dúvida: como descobrir se alguma restrição de eliminação de subciclos
é violada pela solução da relaxação linear do subproblema atual? Este problema é chamado
de problema de separação e necessitamos de um algoritmo capaz de resolve-lo. Para o
TSP, há dois casos possı́veis.
Caso 1: Durante a resolução de algum subproblema do branch-and-bound, podemos obter
uma solução desconectada e inteira. Neste caso devemos verificar se o grafo induzido por
aquela solução é conectado. Senão for, podemos utilizar um algoritmo de busca em largura
ou busca em profundidade para encontrar as componentes desconectadas do grafo. Por
exemplo, considere a seguinte solução inteira para o TSP relaxado:
= 1
4 45
1 =
5
46
1
31 = 1
56 = 1
6
1 =
3 8
= 1
1 =
21
78
98
= 1 7
2 23
9
97 = 1
O grafo induzido é aquele que mantém apenas os arcos (i, j) cujo valor xij = 1. No exem-
plo acima, o grafo original é completo, mas todas os arcos omitidos tiveram, na solução
encontrada, xij = 0.
99
G. Coutinho e C. Arbex Valle DCC035 P.O.
X X
xij ≤ 2 (6.3)
i∈W2 j∈W2 ,i6=j
X X
xij ≤ 2 (6.4)
i∈W3 j∈W3 ,i6=j
O corte (6.3) indica que no máximo duas arestas devem ser escolhidas no subconjunto W2 ,
senão obteremos um ciclo (como mostrado no exemplo). O corte (6.4) diz o mesmo para o
subconjunto W3 .
Podemos também combinar W2 e W3 fazendo W = W2 ∪ W3 e adicionando:
X X
xij ≤ 5 (6.5)
i∈W j∈W,i6=j
Note que a solução inteira acima, contendo subciclos, viola todas estas restrições. Podemos
adicionar uma restrição para cada componente conexa que não contém a origem, ou uma
restrição geral contendo a união de todas as componentes conexas. A tendência é que a
primeira opção diminua mais a chance de outros subciclos acontecerem, mas pode tornar o
modelo mais pesado por conter mais restrições (no exemplo, adicionarı́amos (6.3) e (6.4). A
segunda opção é o contrário. Por exemplo, se adicionarmos apenas a restrição (6.5), podemos
obter a solução abaixo:
= 1
4 45
1 =
5
46
1
31 = 1
56 = 1
6
1 =
3 8
= 1
1 =
21
78
98
7
2 93 = 1 9
27 = 1
que não viola (6.5) nem (6.4), mas viola (6.3). Se adicionarmos apenas (6.3) e (6.4), a solução
acima não poderia acontecer.
100
G. Coutinho e C. Arbex Valle DCC035 P.O.
3
1 3
2 2 2 2
3 3 3 3
1 1
3 3
2 4
1
Note que a solução acima não viola nenhuma das demais restrições do TSP: em todo vértice,
entra 1 e sai 1. Porém, observe que se considerarmos W = {3, 4}, obtemos a seguinte
desigualdade do tipo (6.2):
101
G. Coutinho e C. Arbex Valle DCC035 P.O.
A resposta é que sim: no caso do TSP, sabemos que o algoritmo que resolve o problema
de fluxo máximo pode ser utilizado para encontrar estas desigualdades. Como conhecemos
algoritmos polinomiais para resolver este problema, a separação de cortes é polinomial. Veja
abaixo o algoritmo de separação completo, expandindo o passo 3 visto acima:
(i) Começamos com uma solução viável x para a relaxação da (PI) atual do branch.
(iii) Para cada xij > 0, adicionamos um arco de i para j com capacidade xij .
(a) Se o fluxo é menor que 1, significa que o corte mı́nimo entre esses vértices é menor
que 1, e portanto existe um subconjunto U contendo u e não contendo 1 tal que
X
xij < 1.
i∈U, j ∈U
/
O algoritmo de fluxo máximo é executado muitas vezes: para cada relaxação linear re-
solvida e cujo grafo induzido é conectado e fracionário, resolvemos |V | − 1 vezes o fluxo
máximo. Isto não parece tão eficiente, e na verdade nem é obrigatório: se apenas adicionar-
mos restrições quando encontrarmos soluções inteiras desconectadas, resolvemos o problema
do mesmo jeito. Porém, na prática observamos que uma boa implementação do problema
de separação utilizando fluxo máximo é capaz de acelerar consideravelmente a resolução do
TSP.
Exercı́cio 78. Considere agora um grafo não direcionado G = (V, A) onde há apenas uma
aresta entre i e j com distância dij . Este exemplo implica a simetria nas distâncias entre i, j
e j, i. Reescreva a formulação do TSP baseada em um número exponencial de restrições de
eliminação de subciclos para este caso. Utilize uma notação matemática apropriada.
102
G. Coutinho e C. Arbex Valle DCC035 P.O.
Exercı́cio 79. Desafio Imagine o mapa de uma cidade onde as esquinas são vértices e as
ruas conectando as esquinas são arcos. Pense em algo parecido com um grid. Este grafo
claramente não é completo. Também pode ter ruas que são mão mas não são contra-mão, etc.
Considere um grafo G(V, A) não completo que modele este mapa. Considere também um
caminhão que deve partir de um ponto de origem, entregar encomendas em um subconjunto
K de vértices na cidade (K < V ) e voltar ao ponto de origem.
Escreva uma formulação inteira que não assuma um grafo completo e que encontre a rota
mı́nima para o caminhão. Considere que pode não haver ligação direta entre dois pontos
quaisquer de K.
u1 = 1
2 ≤ ui ≤ |V | ∀i ∈ V, i 6= 1
ui − uj + 1 ≤ (|V | − 1)(1 − xij ) ∀(i, j) ∈ A, i 6= 1, j 6= 1
• Se xij = 1, isto é, atravessamos o arco (i, j), então o lado direito é zero e temos que
ui + 1 ≤ uj . Ou seja, uj deve ser pelo menos uma unidade maior que ui . O conjuto
completo destas restrições em conjunto com as restrições de limite garantem que se
xij = 1, a diferença uj − ui será efetivamente 1. A sequência será preservada pois
nunca ocorrerão ui ’s repetidos.
103
G. Coutinho e C. Arbex Valle DCC035 P.O.
• Se xij = 0, então temos que a diferença entre ui e uj é pelo menos |V | − 2. Todo par
ui , uj entre 2 e |V | respeita este caso.
Exercı́cio 80. Mostre que o número máximo de restrições que garantem a não ocorrência
de subciclos na formulação MTZ é |V |2 − 2|V | + 1.
Nem sempre é fácil responder a esta pergunta, mas no caso dessas duas formulações para
o TSP possuı́mos uma resposta. Contra-intuitivamente, como mencionado no inı́cio desta
seção, sabemos que a formulação original é objetivamente melhor que a MTZ.
Uma forma objetiva de comparar duas formulações é medir o quão próximo do ótimo
está o valor da relaxação linear de cada uma delas. Vamos fazer isso indiretamente. Ignore
no momento a questão do número exponencial de restrições de eliminação de subciclos na
primeira formulação.
Vamos começar, na MTZ, reordenando os termos das restrições que garantem a sequência
correta dos ui . Considere um arco (i, j) qualquer:
Agora imagine um ciclo formado por vértices em um subconjunto W . Este ciclo possui |W |
arcos. Ao somar a restrição acima para todos os arcos do ciclo, temos que:
X
1
xij ≤ 1 − |W | (6.8)
|V | − 1
(i,j) no ciclo
uj −ui
Observe que os termos |V |−1 se cancelam. Para verificar, considere W = (i, j, k) com um
ciclo formado pelos arcos (i, j), (j, k), (k, i). Ao somar os termos:
uj − ui uk − uj ui − uk
+ + =0
|V | − 1 |V | − 1 |V | − 1
Agora vamos lembrar a segunda versão da restrição de eliminação de subciclos da primeira
formulação, para o mesmo subconjunto W :
104
G. Coutinho e C. Arbex Valle DCC035 P.O.
X
xij ≤ |W | − 1
(i,j)∈W
Observe como o lado direito da desigualdade (6.2) é mais apertado que o da desigualdade
(6.8). Em especial, 1 > |V|W|−1
|
pois |W | < |V |−1. Restrições mais apertadas podem ser vistas
como uma melhor aproximação da envoltória convexa do problema, e consequentemente
proveem valores de relaxação linear mais próximos do ótimo inteiro.
Geometricamente, ao adicionarmos as variáveis ui , estamos aumentando a dimensão do
problema, o que por outro lado nos permite reduzir o número de restrições. Se para todo
subconjunto W ⊂ V fizermos a mesma soma acima, estamos eliminando totalmente as
variáveis ui da formulação e reescrevendo a mesma como uma formulação com um número
exponencial de desigualdades, mas com dimensão menor. Diz-se que estamos projetando
uma formulação com dimensão maior em uma outra com dimensão menor e a projeção é
equivalente à formulação MTZ original. Como as desigualdades de eliminação de subciclos
são mais apertadas na primeira que na projeção da segunda, podemos inferir que a primeira
formulação é mais forte.
A MTZ não é a única formulação do TSP com um número polinomial de restrições. Há
também, por exemplo, formulações baseadas em fluxo de uma ou múltiplas commodities.
Porém, nenhuma delas é mais forte que a formulação original vista acima.
105
G. Coutinho e C. Arbex Valle DCC035 P.O.
Aulas 18 e 19
6.2 Problema da mochila
Suponha que uma mochila pode carregar o peso máximo b. Existem n tipos de itens, e cada
item tem peso ai > 0, e valor ci . Queremos escolher itens para carregar na mochila que
maximizem o seu valor. Ou seja,
max cT x
X
n
sujeito a ai x i ≤ b
i=1
x ≥ 0, x inteiro.
Exercı́cio 81. Prove que é impossı́vel carregar a mochila com um valor maior do que (ci /ai )b
para todo i. Ache o ótimo da relaxação linear.
Se apenas um item de cada tipo pode ser selecionado, então precisamos forçar x ≤ 1.
Este é o problema da mochila 0-1. Definimos
( )
Xn
K = x ∈ {0, 1}n : ai x i ≤ b .
i=1
Exercı́cio 82.
(a) No problema 0-1, imagine que o item j só tem valor se o item i for levado também.
Como representar este fato na formulação?
(b) Imagine que é necessário levar ao menos i ou j. Como representar isso?
(c) Agora, não podemos levar i e j juntos. Como formular?
Vamos agora apresentar uma formulação alternativa. Um subconjunto C ⊂ {1, ..., n} é
uma cobertura para a mochila se X
ai > b,
i∈C
ou seja, é um subconjunto tal que nem todos os itens cabem na mochila ao mesmo tempo.
O subconjunto C é uma cobertura minimal se, para todo j ∈ C, vale que
X
ai ≤ b.
i∈C\{j}
106
G. Coutinho e C. Arbex Valle DCC035 P.O.
107
G. Coutinho e C. Arbex Valle DCC035 P.O.
Ou seja, minimizamos as chapas usadas, garantimos que cada chapa usada seja cortada de
acordo com seu limite, cortamos o mı́nimo de cada tira que precisamos, e garantimos que as
variáveis são inteiros que fazem sentido.
Exercı́cio 87. Escreva a formulação em geral para este problema.
Infelizmente a formulação que você inventou acima não é muito boa na prática. O ótimo
da PI costuma ficar muito longe do ótimo da relaxação linear.
Exercı́cio 88. Por sinal, qual o ótimo da relaxação linear?
Vamos inventar uma nova formulação para o problema. Definimos o conjunto:
( )
Xm
S = s ∈ Zm : wT s ≤ W, s ≥ 0.
i=1
Ou seja, S representa o conjunto de todas as possı́veis maneiras que podemos cortar a chapa
de metal nas larguras limitadas.
Exercı́cio 89. No exemplo acima, liste todos os vetores em S.
Sejam agora xs variáveis inteiras de decisão que indicam quantas vezes utilizaremos a
forma s ∈ S para cortar uma chapa. Então temos a seguinte formulação:
X
min xs
s∈S
X
sujeito a si xs ≥ bi para todo i = 1, . . . , m
s∈S
x ≥ 0 x inteiro.
108
G. Coutinho e C. Arbex Valle DCC035 P.O.
Exercı́cio 90. Pare para ler e entender a formulação acima. Qual o problema desta for-
mulação?
A parte boa é que, na prática, o ótimo da relaxação linear costuma estar muito perto
do ótimo inteiro. As vezes basta apenas arrendondar o ótimo da relaxação linear. Vamos
entender uma estratégia para resolver este problema.
Exercı́cio 91. Escreva a relaxação linear da formulação acima e a sua dual (use variáveis
duais ui para i = 1, ..., m). Note que teremos uma restrição para cada s ∈ S.
O problema dual não possui um número potencialmente enorme de variáveis, mas possui um
número enorme de restrições. Imagine então que no problema original utilizamos apenas um
subconjunto de S, digamos S 0 , para definir variáveis - ou seja, estamos relaxando o problema
ao eliminar diversas variáveis. Então na dual teremos apenas as restrições indexadas por S 0 .
Assuma que resolvemos as relaxações lineares do modelo acima contando apenas com
as colunas em S 0 . Sejam x e u um par primal-dual de soluções ótimas para os problemas
indexados por S 0 . Estendemos x para uma solução viável da relaxação linear fazendo xs = 0
para todo s ∈ S\S 0 .
Exercı́cio 92. Por que esta solução ainda é viável? Por que ela não é necessariamente
ótima?
Exercı́cio 93. Argumente que se u é viável para a dual original, então a nova x estendida
é ótima para a relaxação original (teorema forte? folgas complementares?).
Observe que, no problema dual, relaxamos as seguintes restrições:
X
m
si ui ≤ 1 ∀s ∈ S \ S 0
i=1
Note então que u será ótima para a relaxação original do dual se e somente se o valor
abaixo é no máximo 1 (senão, uma restrição deixada de fora do dual foi violada).
X
max ui si
sujeito a s ∈ S
No dual, u são variáveis e si parâmetros (si diz quantas tiras de tamanho wi serão tiradas
quando utilizarmos a maneira s de cortar uma chapa). Agora, vamos pensar diferente: como
conhecemos a solução do dual u, vamosPtratar os s como variáveis. Queremos encontrar
alguma forma de cortar a chapa s onde si ui > 1, com a condição de que a forma s seja
fisicamente possı́vel de ser executada. Para isso escrevemos o modelo abaixo:
X
max ui si
X
m
sujeito a wi si ≤ W
i=1
s ≥ 0 s inteiro.
109
G. Coutinho e C. Arbex Valle DCC035 P.O.
Observe que temos exatamente o problema da mochila com valores iguais a u, pesos iguais
a w e capacidade igual a W !
Digamos que s∗ seja a solução ótima deste problema. Se o valor da função objetivo de s∗
for maior que 1, então encontramos a restrição do dual que é mais violada pela candidata a
ótimo u. Então adicionamos à variável xs∗ à formulação restrita de (P), ou seja, S 0 = S 0 ∪ s∗ .
Em seguida, repetimos o processo, resolvendo a primal de novo, obtendo o valor dual e
verificando se o ótimo do problema da mochila correspondente é menor ou igual a um.
Exemplo 20. Volte ao exemplo corrente desta seção. Comece com um conjunto S 0 =
{(0, 0, 2), (2, 1, 0)}.
(i) Resolva o programa (P) e (D) de acordo com S 0 , ou seja, resolva o par
min x1 + x2
max 4u1 + 3u2 + 3u3
sujeito a 0x1 + 2x2 ≥ 4
sujeito a 2u3 ≤ 1
(P) 0x1 + 1x2 ≥ 3 (D)
2u1 + 1u2 ≤ 1
2x1 + 0x2 ≥ 3
u ≥ 0.
x ≥ 0.
(iv) Note que o ótimo é s∗ = (0, 2, 0), de valor objetivo 2. Maior do que 1. Portanto
precisamos adicionar este elemento no conjunto S 0 e recomeçar.
(v) Exercı́cio: faça mais uma iteração.
Valor absoluto
Considere:
X
max cj |xj |
sujeito a Ax ≤ b
x livre.
Como reescrever a PL acima para que seja linear? Dica: transforme cada xj em duas
variáveis.
110
G. Coutinho e C. Arbex Valle DCC035 P.O.
max ck x
sujeito a Ax ≤ b
x ≥ 0.
Como modelar o problema acima como uma única programação linear? Dica: crie uma única
nova variável que limite todas as programações de máximo originais.
Exercı́cio 94. No problema abaixo, estamos procurando o vetor x que satisfaz as restrições
e possui a maior entrada possı́vel.
n
max max xn
k=1
sujeito a Ax ≤ b
x ≥ 0.
Como adaptar o que vimos acima para este problema? Ou seja, quem são os ck ?
No caso, α e β são constantes na função objetivo. A função objetivo é não linear, mas
é possı́vel lineariza-la utilizando a transformação de Charnes-Cooper, de 1962. Defina uma
nova variável:
1
t= T
d x+β
Isto não altera as restrições, mas transforma a função objetivo em
min(cT x + α)t
Continuamos tendo um termo não linear. Porém agora podemos definir variáveis y = t · x.
Multiplicando as restrições por t, a formulação passa a ser:
111
G. Coutinho e C. Arbex Valle DCC035 P.O.
min cT y + αt
sujeito a Ay ≤ bt
y≥0
t≥0
min cT y + αt
sujeito a Ay ≤ bt
dT y + βt = 1
y≥0
t≥0
Temos agora um problema de programação linear! Ao final, obtemos o vetor solução (y, t).
y
Podemos obter o valor x original ao fazer x = t .
112
Capı́tulo 7
Otimização em grafos
Aula 20
7.1 Grafos
Esta seção está aqui apenas para estabelecer uma notação geral sobre grafos, reutilizando
também a notação introduzida na última seção. Estes conceitos serão utilizados nas próximas
aulas.
Um grafo G(V, E) é um conjunto V de vértices e um conjunto E de arestas entre pares de
vértices. Essas arestas podem ou não ter pesos associados. Se há uma aresta (de peso dife-
rente de 0) entre dois vértices, eles são chamados de vizinhos. A soma dos pesos das arestas
incidentes a um vértice é o seu grau. Se as arestas tem peso unitário, o grau corresponde ao
número de vizinhos do vértice.
1 2
2
Caminhos
Dados dois vértices a e b, um caminho entre a e b é uma sequência de vértices
v0 v1 v2 ...vn
113
G. Coutinho e C. Arbex Valle DCC035 P.O.
Direcionado
Um grafo é direcionado se cada aresta possui uma direção. Uma aresta com direção é
chamada de arco. Para cada par de vértices definindo um arco, um deles é chamado de
cauda e o outro de cabeça. Neste caso, utilizamos a notação G(V, A) para representar um
grafo com conjunto de vértices V e arcos A.
Matrizes
Nossa maneira favorita de representar grafos será usando matrizes. Há essencialmente dois
tipos de matrizes que representam grafos. Numa matriz de adjacência, linhas e colunas são
indexadas por vértices, e as entradas são 0 se eles não são vizinhos, ou 1 se eles são. No caso
de grafos com peso, trocamos 1 pelo peso da aresta correspondente.
0 1
0 1 1 0 0
B1 0 1 1 0C
B C
A=B B 1 1 0 0 1 C
C
@0 1 0 0 1A
0 0 1 1 0
Cortes
Vamos considerar a seguinte notação. Se S ⊂ V , então δ(S) é o conjunto de arestas que são
incidentes a exatamente um vértice de S (e portanto a um vértice fora de S). Se v ∈ V ,
então δ(v) será simplesmente o conjunto de arestas incidente a v.
Considere o grafo abaixo:
114
G. Coutinho e C. Arbex Valle DCC035 P.O.
Fluxos
Um fluxo em um grafo G(V, A) é uma atribuição de valores para os arcos de um grafo
dirigido tal que, com exceção de uma fonte e um sorvedouro, a entrada é igual à saı́da em
todos os vértices. Ou seja, um vértice, tipicamente chamado s, envia um fluxo através de
cada arco em direção a um vértice t. Todos os vértices do grafo recebem e repassam este
fluxo, sem adicionar ou remover qualquer parte dele. Cada arco, a princı́pio, só transmite
o fluxo em uma determinada direção - portanto o problema é geralmente modelado em um
grafo direcionado, onde os pesos dos arcos representam a capacidade máxima de transmissão.
Considere a figura abaixo:
a
30 25
s 30 10 t
20 15
b
Emparelhamentos
Dado um grafo G = (V, E), um subconjunto M de arestas satisfazendo a propriedade que
nenhum par de arestas de M é incidente a um mesmo vértice é chamado de um empare-
lhamento. Ou seja, M define uma coleção de pares disjuntos de vértices do grafo. Um
emparelhamento é chamado perfeito se todo vértice é incidente a uma aresta de M .
115
G. Coutinho e C. Arbex Valle DCC035 P.O.
Coberturas
Uma cobertura por vértices das arestas é uma escolha de alguns vértices tais que todas as
arestas do grafo sejam incidentes a pelo menos um vértice da escolha.
Como exemplo de aplicação, considere as arestas como ruas e os vértices como esquinas.
Queremos colocar câmeras nas esquinas de forma a cobrir o máximo número de ruas. Ao
encontrar a cobertura por vértices mı́nima, escolhemos onde instalar as câmeras com menor
custo.
Exercı́cio 98. Prove que um grafo é bipartido se, e somente se, não há qualquer ciclo com
um número ı́mpar de vértices.
Considere nos exercı́cios abaixo a matriz de incidência N como vista acima. Porém, no caso
de um grafo não direcionado, substituı́mos os componentes -1 por 1.
Exercı́cio 99. Dado um grafo G = (V, E) com pesos ce > 0 para cada aresta, formule como
uma PI o problema de achar um emparelhamento que tenha peso máximo (o emparelhamento
não precisa ser perfeito).
Exercı́cio 100. Dado um grafo G = (V, E) e pesos ce > 0, uma cobertura por arestas é um
conjunto de arestas tal que cada vértice do grafo é incidente a pelo menos uma aresta do
conjunto. Formule como uma PI o problema de achar uma cobertura por arestas de peso
mı́nimo.
Exercı́cio 101. Dado um grafo G = (V, E) (sem peso algum), uma cobertura por vértices é
um conjunto de vértices tal que cada aresta do grafo é incidente a pelo menos um vértice do
conjunto. Formule o problema de encontrar uma cobertura por vértices de menor tamanho
possı́vel como uma PI.
Exercı́cio 102. Use dualidade para mostrar que o tamanho máximo de um emparelhamento
é menor ou igual à quantidade mı́nima de vértices necessária para formar uma cobertura por
vértices.
116
G. Coutinho e C. Arbex Valle DCC035 P.O.
Aulas 21 e 22
7.2 Fluxos
Considere a seguinte situação: você deseja ter uma video-conferência com sua colega que se
encontra no Japão. Supondo que vocês não tenham acesso direto a um dos cabos submarinos
que atravessam o Pacı́fico, os dados dessa vı́deo conferência deverão percorrer uma rede de
servidores através do planeta. A questão é: qual a maior quantidade de dados que podem
atravessar a rede?
Naturalmente, modelamos este problema como um problema em grafos. Um vértice,
tipicamente chamado s, envia um fluxo através de cada arco em direção a um vértice t. Todos
os vértices do grafo recebem e repassam este fluxo, sem adicionar ou remover qualquer parte
dele. Cada arco, a princı́pio, só transmite o fluxo em uma determinada direção - portanto
o problema será modelado em um grafo direcionado, e possui uma capacidade máxima de
transmissão. Considere a figura abaixo:
a
30 25
s 30 10 t
20 15
b
117
G. Coutinho e C. Arbex Valle DCC035 P.O.
T
x ≤ 30 20 30 10 25 15 .
A função objetivo é o fluxo que sai de s (e que será igual ao que chega em t). Ou seja, o
problema se torna
Note agora que para cada conjunto de vértices U contendo s e não contendo t, o fluxo máximo
de s para t não pode ser maior que a capacidade das arestas indo de dentro para fora de U .
s t
(i) Se as capacidades de cada arco são números inteiros, então sempre existe um st-fluxo
de valor máximo em que todo fluxo é inteiro!
Exercı́cio 103. Ache o maior st-fluxo que você consiga no grafo abaixo.
u 1 v
3 3
s 1 2 t
8 2
3
3
w 5 z
Ache o menor st-corte. Deu o mesmo valor? Se sim, é possı́vel melhorar algum deles?
118
G. Coutinho e C. Arbex Valle DCC035 P.O.
Exercı́cio 106. Quais são os possı́veis números que podem ser entradas de uma matriz
totalmente unimodular?
Exercı́cio 107. Quais são as possı́veis submatrizes 2×2 que podem aparecer em uma matriz
totalmente unimodular?
Exercı́cio 108. A matriz abaixo é totalmente unimodular?
1 −1 0
0 1 1
−1 0 1
Por que se importar com matrizes totalmente unimodulares? Por conta da Regra de
Gabriel1 . A regra diz que:
det(Ai )
Ax = b ⇐⇒ x = A−1 b ⇐⇒ ∀i : xi =
det(A)
onde Ai representa a matriz original A mas com a i-ésima coluna trocada por b.
Note que se a matriz A for totalmente unimodular e o vetor b for inteiro, então toda
solução básica do sistema Ax = b será inteira. Isto ocorre pois para qualquer submatriz
quadrada formando uma base AB , o determinante será −1 ou 1 (considerando o posto
completo da base) e o determinante de AiB será também inteiro.
Desta forma, se possuı́mos uma PI com matriz de restrições A totalmente unimodular e
vetor b inteiro, então ao resolver sua relaxação linear obteremos uma solução básica ótima
que será inteira e resolverá a PL original.
Exercı́cio 109. Encontre todas as soluções do sistema abaixo em que no máximo duas
variáveis sejam diferentes de 0.
1 −1 1 0 4
x=
−1 1 0 1 5
1
Gabriel... Cramer
119
G. Coutinho e C. Arbex Valle DCC035 P.O.
Demonstração. Vamos mostrar por indução. No caso base, note que todas as matrizes
1 × 1 tem determinante igual a 0, +1 ou −1. Agora suponha que todas as submatrizes de
tamanho r × r tem determinante 0, +1 ou −1. Considere B uma matriz (r + 1) × (r + 1).
Três casos:
• Alguma coluna de B tem uma única entrada não-nula. Então fazendo a expansão de
Laplace por coluna, o determinante de B será ± o determinante de uma matriz r × r,
e portanto o de B será 0, +1 ou −1.
• Todas as colunas de B possuem duas entradas não nulas. Neste caso a soma de todas
as linhas de B é 0, e portanto o determinante de B é 0.
Agora vamos formalizar o resultado discutido anteriormente para alguns tipos de PLs:
Teorema 14. Seja M uma matriz totalmente unimodular. Se cada uma das PLs abaixo for
limitada e viável, então existem soluções ótimas que são inteiras.
120
G. Coutinho e C. Arbex Valle DCC035 P.O.
A idéia do teorema acima é que as soluções ótimas básicas das PLs são obtidas resolvendo
sistemas de equações formados por submatrizes de M quadradas, isto é, com o mesmo número
de variáveis e equações, e portanto unimodulares. Se o lado direito é inteiro, soluções desses
sistemas só podem ser inteiras devido à Regra de Cramer.
Teorema 15. Em um problema de achar o fluxo máximo com capacidades inteiras nos arcos,
qualquer solução básica ótima será um fluxo inteiro.
max dT x
sujeito a Mx = 0
0 ≤ x ≤ c,
7.3.1 Exemplo
Exercı́cio 110. Escreva a PL seguinte, correspondente à figura abaixo, no formato matricial.
Em seguida escreva a sua dual.
max x1 + x2
sujeito a x1 − x3 + x4 − x5 = 0
x2 + x3 − x4 − x6 = 0
T
0 ≤ x ≤ 30 20 30 10 25 15
a
30 25
s 30 10 t
20 15
b
121
G. Coutinho e C. Arbex Valle DCC035 P.O.
Teremos
max 1 1 0 0 0 0 x
1 0 −1 1 −1 0 = 0
0 1 1 −1 0 −1 = 0
1 0 0 0 0 0 ≤ 30
0 1 0 0 0 0 ≤ 20
sujeito a x
0 0 1 0 0 0 ≤ 30
0 0 0 1 0 0 ≤ 10
0 0 0 0 1 0 ≤ 25
0 0 0 0 0 1 ≤ 15
x ≥ 0.
Cuja formulação dual é:
T
min 0 0 30 20 30 10 25 15 y
1 0 1 0 0 0 0 0 1
0 1 0 1 0 0 0 0
1
−1 1 0 0 1 0 0 0
sujeito a y ≥ 0
1 −1 0 0 0 1 0 0 0
−1 0 0 0 0 0 1 0 0
0 −1 0 0 0 0 0 1 0
y 1 , y 2 livres, e y 3 , ..., y 8 ≥ 0
Note os fatos a seguir a respeito do dual:
(i) Está no formato do item (iii) do Teorema 14, logo qualquer solução básica ótima será
inteira. Ou seja, os itens (ii) e (iii) são um par primal-dual.
(ii) Pela regra de Cramer e uma vez que o vetor de restrições só tem entradas iguais a +1
ou 0, os valores da solução serão +1 ou 0.
(iii) As duas primeiras colunas da matriz correspondem aos dois vértices diferentes de s e
t (no caso, a e b) e as demais à cada arco do grafo. Seja U o conjunto de vértices cujo
valor foi igual a +1, adicionado de s.
(iv) As linhas da matriz correspondem aos arcos. Se u ∈ U (ou seja, y u = 1) então a
linha correspondente a qualquer arco saindo de u terá um −1. Se o vértice de chegada
também está em U , então fica −1 + 1 = 0, ok. Se o vértice de chegada não está em U ,
teremos que adicionar a variável correspondente a este arco.
(v) Ou seja: as entradas iguais a +1 na solução identificarão um conjunto de vértices U e
um conjunto de arcos que vão de dentro pra fora deste conjunto, ou seja, δ − (U )2 , que
é exatamente um st-corte. O valor objetivo da solução será precisamente a soma das
capacidades deste conjunto.
2
Se em um grafo não direcionado δ(U ) é o conjunto de arestas entre U e o complemento de U , em um
grafo direcionado podemos extrapolar a notação e definir δ − (U ) como os arcos que saem de U para seu
complemento e δ + (U ) como os arcos que chegam em U vindos do complemento.
122
G. Coutinho e C. Arbex Valle DCC035 P.O.
(vi) Se as capacidades não fossem necessariamente inteiras, toda a análise das regiões viáveis
acima valeria - a única diferença é que o valor objetivo do corte seria possivelmente
não-inteiro.
(a) Como entrada do problema, temos um grafo dirigido G, com uma fonte s e sorvedouro
t. Todos os arcos possuem uma capacidade.
a 4 b
10 10
S 2 8 6 T
10
10
c 9 d
(b) Começamos com um fluxo viável. No caso, o óbvio: o fluxo em todos os arcos igual
a 0. Para auxı́lio na visualização, colocarei ao lado direito o grafo com a capacidade
disponı́vel.
123
G. Coutinho e C. Arbex Valle DCC035 P.O.
a b a b
0 4
0 0 10 10
S 0 0 0 T S 2 8 6 T
0 0 10
0 9 10
c d c d
(c) Encontramos então um caminho de s para t cuja capacidade disponı́vel seja positiva
em todos os arcos. Aumentamos o fluxo o máximo possı́vel, e diminuı́mos a capacidade
disponı́vel de acordo.
a b a b
0 4
8 0 2 10
S 0 8 0 T S 2 0 6 T
0 8 10
0 9 2
c d c d
(d) Repetimos.
a b a b
0 4
8 0 2 10
S 0 8 0 T S 2 0 6 T
2 8
2 10 7 0
c d c d
(e) O ponto crucial do algoritmo de Ford e Fulkerson é que estes caminhos não precisam
ter a mesma direção dos arcos. De fato, podemos achar um arco no sentido oposto ao
caminho, e ao invés de aumentarmos o fluxo neste arco, iremos diminuir. Portanto: nos
arcos na mesma direção do caminho, precisamos ter capacidade disponı́vel (logo algo
> 0 no grafo da direita). Nos arcos no sentido oposto, precisamos ter fluxo disponı́vel
para retirar (logo algo > 0 no grafo original, na esquerda).
124
G. Coutinho e C. Arbex Valle DCC035 P.O.
a b a b
4 4 0
8 2 6
S 0 4 0 T S 2 4 6 T
6 4
6 10 3 0
c d c d
(f) Concluı́mos então repetindo os passos acima, sempre que possı́vel. No caso abaixo,
acabamos escolhendo mais dois caminhos onde somente fizemos aumentar o fluxo em
qualquer arco.
a b a b
4 6 0
10 0 4
S 0 6 2 T S 2 2 4 T
6 4
6 10 3 0
c d c d
a b a b
4 9 0 1
10 0
S 0 6 5 T S 2 2 1 T
9 1
9 10 0 0
c d c d
Note que em cada passo, o algoritmo sempre aumenta o valor do fluxo em pelo menos
uma unidade. Portanto não é possı́vel que ele não termine.
Vamos agora entender como este algoritmo pode ser visto como um algoritmo de atua-
lização de valores de variáveis primal-dual.
125
G. Coutinho e C. Arbex Valle DCC035 P.O.
126
G. Coutinho e C. Arbex Valle DCC035 P.O.
(c) Sempre que possı́vel, atualizaremos o y para que se torne mais viável.
xT = 8 2 0 0 8 2 0 0 10
yT = 1 1 1 1 0 0 0 0 0 0 0 0 1
(e) O vértice (a) deixou de ser “alcançável”. Seu 1 é removido. Para não piorar a viabilidade,
podemos adicionar uma aresta, e nota que isso não piora as CFC (pois (a) deixou de ser
alcançável com uma aresta que ficou satisfeita com igualdade).
xT = 10 6 0 4 6 6 2 6 10
yT = 0 1 1 1 1 0 0 0 0 0 0 0 1
(f) Os vértices (d) e (b) deixaram de ser “alcançáveis”. Seus 1s são removidos. Note que (d)
ainda é “vizinho”de vértices alcançável, portanto precisamos compensar aquela aresta.
Os vértices não alcançáveis porque não tem vizinhos alcançáveis não criam problemas.
A aresta que havia sido adicionada para o (d) deve ser removida junto com ele.
xT = 10 9 0 4 6 9 5 9 10
yT = 0 0 1 0 1 0 0 0 0 1 0 0 0
Note que as CFC permanecem válidas, mas y ficou viável. Ademais, o vetor y indica
precisamente um corte de valor mı́nimo: U = {S, c} com as arestas 1a e 6a definindo o
corte, de valor 19.
127
G. Coutinho e C. Arbex Valle DCC035 P.O.
Aulas 23 e 24
7.5 Emparelhamentos e coberturas
Relembrando:
(i) Qual é o emparelhamento máximo? Aqui, “máximo”pode significar “de maior tama-
nho”ou “de maior custo”.
(ii) Qual é o emparelhamento perfeito de custo mı́nimo? Aqui, assumimos que existe um
emparelhamento perfeito, e dentre todos eles procuramos o de custo mı́nimo.
Seja N a matriz de incidência do grafo não direcionado. Por exemplo, para o grafo:
128
G. Coutinho e C. Arbex Valle DCC035 P.O.
max cT x
sujeito a Nx ≤ 1
x≥0
x inteiro.
No caso, x é vetor de variáveis de decisão indicando se a aresta e ∈ E faz parte do empare-
lhamento ou não.
Quando c = 1, estamos basicamente buscando o emparelhamento de maior cardinalidade.
As desigualdades Nx ≤ 1 dizem precisamente que para cada vértice, a soma das variáveis
em x correspondentes às arestas incidentes àquele vértice é menor ou igual a 1. Se essas
variáveis forem 0 ou 1, então necessariamente apenas uma delas poderá ser positiva, e esta
será a aresta escolhida para o emparelhamento.
No caso da segunda pergunta, a formulação será
min cT x
sujeito a Nx = 1
x≥0
x inteiro.
Aqui codificamos o fato de que o emparelhamento procurado é perfeito, uma vez que Nx = 1
diz que para cada vértice, exatamente uma aresta incidente a ele será escolhida. Note que
se tivéssemos escrito simplesmente Nx ≤ 1, a solução da PL seria trivialmente x = 0.
min 1T y
sujeito a NT y ≥ 1
y≥0
y inteiro.
Note que, ignorando as restrições de integralidade, a formulação acima é precisamente
a dual da relaxação linear do problema de emparelhamento de cardinalidade máxima. Pelo
teorema fraco da dualidade, temos que:
cardinalidade de emparelhamento máximo ≤ cardinalidade de cobertura mı́nima.
Vamos ver abaixo uma classe abrangente de grafos onde a relação acima é, na verdade,
uma igualdade. O motivo será, novamente, a total unimodularidade.
129
G. Coutinho e C. Arbex Valle DCC035 P.O.
Grafos bipartidos
Vamos relembrar o problema de atribuição. Considere F funcionários para os quais T tarefas
são atribuı́das (|F | = |T |). Cada funcionário i gasta cij horas para executar cada tarefa j.
Relembrando a formulação, temos variáveis xij = 1 caso o funcionário i seja atribuı́do à
tarefa j, 0 caso contrário. A formulação é dada por:
XX
min cij xij
i∈F j∈T
X
sujeito a xij = 1 ∀i ∈ F
j∈T
X
xij = 1 ∀j ∈ T
i∈F
x ∈ B.
Observe que podemos modelar este problema como um problema em grafos ao definirmos
um grafo G = (V, E) onde V = F ∪ T e para cada possı́vel atribuição de funcionário à tarefa
criamos uma aresta e ∈ E conectando um vértice em F a um vértice em T . O problema de
atribuição se resume a encontrar um emparelhamento perfeito de custo mı́nimo neste grafo
(confira que a formulação acima é equivalente à formulação discutida anteriormente).
Observe que em G não há arestas conectando vértices em F e nem arestas conectando
vértices em T . Diz-se que o grafo correspondente é portanto bipartido. O grafo mostrado
na figura acima é um exemplo de grafo bipartido (repetido aqui por conveniência):
Estes grafos são importantes pois sua matriz de incidência possui a propriedade de total
unimodularidade.
Demonstração. Vamos mais uma vez provar por indução. Novamente suponha que todas
as submatrizes de tamanho r × r possuem determinante 0, +1 ou −1 e considere B uma
matriz (r + 1) × (r + 1) No caso base, toda matriz 1 × 1 possui determinante 1 ou 0. De
novo, temos três possibilidades para B:
130
G. Coutinho e C. Arbex Valle DCC035 P.O.
• B possui alguma coluna com exatamente um 1: Então pela expansão de Laplace por
colunas, o determinante de B será ± o determinante de uma matriz r × r, e portanto
o de B será 0, +1 ou −1
• B possui todas as colunas com dois 1’s e os demais elementos iguais a zero. Como o
grafo é bipartido, podemos particionar a matriz B em duas onde todos os elementos
de um lado do grafo estão numa partição e todos do outro estão em outra partição, de
forma que cada partição contenha apenas um valor 1 por coluna. Multiplicamos uma
das partições por −1 e somamos todas as linhas de ambas as partições. O resultado é
zero e com isso mostramos que as linhas são linearmente dependentes e o determinante
é zero.
Por conta do teorema acima, sabemos que sempre será possı́vel encontrar soluções ótimas
para problemas de otimização de emparelhamentos em grafos bipartidos resolvendo as re-
laxações lineares das PIs correspondentes. Temos então o Teorema de Konig:
Teorema 18. Em um grafo bipartido, o tamanho de um emparelhamento máximo é igual
ao tamanho de uma cobertura por vértice mı́nima.
Demonstração. Considere as programações lineares abaixo:
max 1T x min 1T y
(P) sujeito a Nx ≤ 1 (D) sujeito a NT y ≥ 1
x≥0 y ≥ 0.
A matriz N é totalmente unimodular, assim como N T . Logo há soluções ótimas que são
inteiras para ambas as programações, portanto o valor objetivo ótimo de (P) é o tamanho
de um emparelhamento máximo, ao passo que o valor objetivo ótimo de (D) é o tamanho
de uma cobertura por vértices mı́nima. Como este é um par primal-dual, estes valores são
iguais.
Apesar do fato de que resolver PLs é suficiente para resolver problemas de emparelha-
mento em grafos bipartidos, há algoritmos famosos. O mais tradicional é o método Húngaro
(década de 50), que usa uma estratégia primal-dual para encontrar um emparelhamento
perfeito de custo mı́nimo.
131
G. Coutinho e C. Arbex Valle DCC035 P.O.
min 1T y
sujeito a NT y ≥ 1
y ≥ 0.
Assuma que y seja uma solução viável, e assuma que existe uma entrada de y que é diferente
de 0, 1/2 ou 1. Ou seja, existe v ∈ V (G) tal que
yv ∈
/ {0, 1/2, 1}.
Seja V + = {v ∈ V (G) : 1/2 < y v < 1}, e V − = {v ∈ V (G) : 0 < y v < 1/2}. Seja pequeno
o suficiente, e defina dois vetores z + e z − tais que
y v + se v ∈ V + ,
+
zv = y − se v ∈ V − ,
v
yv caso contrário.
y v − se v ∈ V + ,
−
zv = y + se v ∈ V − ,
v
yv caso contrário.
Note que
132
G. Coutinho e C. Arbex Valle DCC035 P.O.
min 1T y
sujeito a NT y ≥ 1
y ≥ 0.
Exercı́cio 115. Mostre como é possı́vel usar a informação acima para achar uma cobertura
por vértices das arestas de tamanho no máximo duas vezes a ótima, resolvendo apenas uma
programação linear.
• Suponha que o estoque de cada centro seja dado por Si , com i = 1, ..., m.
• Suponha que a demanda de cada ponto seja dada por Dj , com j = 1, ..., n.
• Suponha que o custo de transportar um produto do centro i para o ponto j seja dado
por cij .
• Defina variáveis xij que determinarão quanto será transportado de i para j, onde
i = 1, ..., m e j = 1, ..., n.
xij ≥ 0,
xij ∈ Z.
133
G. Coutinho e C. Arbex Valle DCC035 P.O.
seja, assuma que S = D. Mostre que, neste caso, podemos reescrever a formulação acima
trocando todas as desigualdades por igualdades sem qualquer prejuı́zo na modelagem do
problema.
Pelo exercı́cio acima, a formulação do problema de transporte pode ser expressa por
X
m X
n
min xij cij
i=1 j=1
Xm
sujeito a xij = Dj para todo j = 1, .., n,
i=1
Xn
xij = Si para todo i = 1, ..., m,
j=1
xij ≥ 0,
xij ∈ Z.
Exercı́cio 117. Considere um grafo dirigido com dois tipos de vértices: um representa os
centros, e o outro representa os pontos de venda. Conecte com arcos dirigidos todos os
centros aos pontos de venda. Seja N a matriz de incidência deste grafo dirigido.
min cT x
sujeito a Nx = b
x≥0
x inteiro.
(ii) Mostre que as soluções da relaxação linear são inteiras se os estoques e demandas forem
inteiros.
Exercı́cio 118. Reduza o problema de transporte a um problema de fluxo entre dois vértices
s e t.
134
G. Coutinho e C. Arbex Valle DCC035 P.O.
Então existe um emparelhamento perfeito se, e somente se, para todo subconjunto S
de vértices em A, o número total de vizinhos desses vértices em B é maior ou igual
que |S|.
Vamos agora usar este resultado e uma estratégia primal-dual para resolvermos (exata-
mente) o problema de encontrar um emparelhamento perfeito de grau mı́nimo em um grafo
bipartido. Relembre a formulação como PI deste problema (suponha que c ≥ 0).
min cT x
sujeito a Nx = 1
x≥0
x inteiro.
max 1T y
sujeito a NT y ≤ c
y livre.
Exercı́cio 119. Explique com palavras o que a dual está encontrando no grafo.
Exercı́cio 121. Encontre uma solução viável para a dual que não seja muito besta.
Algoritmo:
(1) Seja α o menor valor dentre os custos c. Faça y v = α/2 para todo v ∈ V . Note que é
viável para a dual do problema de emparelhamento.
135
G. Coutinho e C. Arbex Valle DCC035 P.O.
(2) Seja H um grafo com os mesmos vértices de G, e cujas arestas são aquelas uv ∈ E(G)
tais que y u + y v = cuv .
(4) Caso contrário, existe um conjunto S ⊂ A tal que |NH (S)| < |S| (por que?!)
(5) Se |NG (S)| < |S|, PARE. Neste caso, não existe qualquer emparelhamento perfeito em
G (por que?!)
(6) Escolha maior possı́vel que permita aumentar a variável y de cada vértice de S por
, diminuir a variável y de cada vértice de NH (S) por , e deixar as demais constantes;
mas garantindo que y permaneça viável em G. Note que > 0 (por que?!).
Exercı́cio 123. Qual ponto do algoritmo acima é o mais delicado (do ponto de vista de
complexidade).
Exercı́cio 125. Considere um grafo bipartido completo cujos pesos são dados na tabela
abaixo. Ache um emparelhamento perfeito de custo máximo usando o algoritmo visto.
Exercı́cio 126. Mostre que se os pesos são positivos, então um algoritmo que encontre um
emparelhamento perfeito de custo máximo pode ser usado para encontrar um emparelha-
mento máximo de custo máximo.
136
G. Coutinho e C. Arbex Valle DCC035 P.O.
max 0
sujeito a Nx = 1
x≥0
. Seja G um grafo bipartido, e S subconjunto de uma das partições. Mostre que se |S| >
|N (S)|, então a dual da PL acima é ilimitada (e portanto a PL é inviável). Dica: olhe para
o algoritmo visto.
min 1T y
sujeito a Ay ≥ 1
y ∈ Bm .
Exemplo 22. Além dos médicos de plantão no pronto socorro, um hospital precisa manter
outros médicos em stand-by. Isto é necessário pois o hospital precisa garantir que haverá
um indivı́duo qualificado para executar qualquer procedimento cirúrgico que possa ser ne-
cessário. Para cada um dos diversos médicos disponı́veis para stand-by, o salário adicional
e os procedimentos que é capaz de executar são conhecidos. O objetivo é escolher médicos
tais que todos os procedimentos são cobertos ao custo mı́nimo.
Considere a tabela abaixo:
137
G. Coutinho e C. Arbex Valle DCC035 P.O.
T
a1 = 1 1 0 1 0 0 . Considere cj o salário adicional do médico j caso fique em stand-
by.
Escolhemos variáveis de decisão yj se o médico ficará de stand-by ou não. Temos a
seguinte formulação:
X
m
min cj y j
j=1
X
m
sujeito a aij yj ≥ 1 ∀i = 1, . . . , n
j=1
y ∈ Bm .
Observe como, se tivermos mesmo salário cj para todos, temos exatamente a formulação
vista acima: o cálculo do menor número de médicos de forma que todo procedimento seja
coberto.
138
G. Coutinho e C. Arbex Valle DCC035 P.O.
max cT y
sujeito a Ay = 1
y ∈ B.
Exemplo 23. O custo com pessoal é o segundo maior de uma companhia aérea, perdendo
apenas para custos com combustı́vel. O uso efetivo de tripulações pode resultar em economias
enormes de custos. Há, porém, diversas regulações impostas por sindicatos e órgãos de
controle (tipo a ANAC no Brasil ou FAA nos EUA). Por exemplo, há horas de descanso
mı́nimas, ou tripulações maiores para ciclos de voos mais longos, etc.
No final dos anos 80, a American Airlines desenvolveu para este problema um sistema
de otimização que veio a se tornar extremamente lucrativo para a empresa. Na formulação
que desenvolveram, uma variável binária xi é atribuı́da para cada possı́vel trajeto que uma
tripulação pode legalmente voar. Por exemplo, podemos ter um trajeto onde a tripulação
sai de São Paulo 7:00 e chega ao Rio de Janeiro às 8:00. Saem do Rio às 9:00 em direção a
Belo Horizonte, chegando às 10:00. Saindo às 11:00, chega em São Paulo 12:00, terminando
o percurso. Outro trajeto é sair de São Paulo à Londres, esperar 36 horas (obrigatórias pela
legislação) e voltar a São Paulo.
Assim, cada possı́vel trajeto representa um conjunto, e cada voo individual um elemento.
Cada voo deve ser parte de exatamente um conjunto na solução final. Suponha que um
determinado voo esteja nos possı́veis trajetos i, j, k e l. Então teremos que:
xi + xj + xk + xl = 1
Teremos uma restrição deste tipo para cada voo. O problema de particionamento de con-
juntos é então minimizar os custos dos trajetos de forma que todo voo seja coberto por exa-
tamente um trajeto. As regulamentações às quais as tripulações estão sujeitas são implı́citas
pois apenas trajetos válidos são considerados.
139
G. Coutinho e C. Arbex Valle DCC035 P.O.
que talvez nem seja possı́vel expressar todas na memória disponı́vel. Como então resolver
este problema?
Através de um algoritmo chamado geração de colunas. Lembra-se que no branch-and-
cut relaxamos o modelo para conter menos restrições e vamos adicionando as restrições aos
poucos, na medida em que são violadas? A geração de colunas é semelhante: iniciamos a
resolução do branch-and-bound com um modelo relaxado, com menos variáveis. Na medida
em que vamos resolvendo o problema, devemos verificar se há variáveis que deveriam entrar
no modelo. A esperança é que conseguiremos provar a otimalidade da solução acrescentando
apenas uma fração das muitas variáveis deixadas de fora.
E como verificar se uma variável deve entrar no modelo? Lembre-se que para cada
variável (coluna) no primal, temos uma restrição (linha) no dual. Uma variável deve entrar
no problema caso sua restrição correspondente seja violada no dual. Assim resolvemos um
problema de separação no dual, encontramos uma restrição violada e acrescentamos a variável
correspondente àquela restrição no primal.
Na verdade, o problema de separação no dual recebe o nome de problema de preci-
ficação, pois busca encontrar os custos reduzidos das variáveis que não estão no modelo
para ver se alguma entraria na base ótima da relaxação linear. Em caso de uma PI, resolve-
mos a precificação em cada nó da árvore do branch-and-bound. O algoritmo correspondente
é chamado de branch-and-price. É possı́vel ir além e misturar planos de corte, branch-
and-bound e geração de colunas, formando algoritmos branch-and-cut-and-price.
Diversas PIs podem ser resolvidas com algoritmos de geração de colunas, e em certos
casos estes algoritmos são os melhores conhecidos para tais problemas.
O algoritmo que vamos apresentar agora é um algoritmo de aproximação. Significa que ele
não necessariamente achará o ótimo, mas sim uma solução que está garantidamente próxima
do ótimo. O fator de aproximação mede o quão bom o algoritmo é. Neste caso, o algoritmo
achará uma solução que é no máximo f vezes maior que a melhor possı́vel.
É uma estratégia simples e gulosa. Dado um conjunto de n pontos U e subconjuntos
S1 , ..., Sm desses pontos:
140
G. Coutinho e C. Arbex Valle DCC035 P.O.
(ii) Ache um elemento a ∈ U que não esteja coberto por qualquer subconjunto da coleção.
Dentre os subconjuntos que contêm a, adicione aquele de menor custo, ou que contenha
mais elementos não cobertos, à coleção.
(iii) Repita o passo (ii) até não haverem mais elementos não cobertos.
Esta estratégia provavelmente adicionará mais conjuntos do que o necessário, mas quão
mais? Mostraremos agora duas coisas simultaneamente: como realizar uma análise cautelosa
do desempenho deste algoritmo, e como adaptá-lo para resolver a versão com pesos do
problema da cobertura por conjuntos. Ambas as coisas serão feitas utilizando dualidade e
folgas complementares.
Considere a formulação de programação inteira do problema com pesos
min cT y
sujeito a Ay ≥ 1
y≥0
y ∈ Zm .
Saı́da: uma coleção C de subconjuntos que cobrem os elementos, e uma solução viável
x para (D).
(i) Faça x = 0 e C = ∅. Note que x é viável para (D), mas y C é inviável para (P).
(ii) Enquanto existir a ∈ U que não esteja coberto por qualquer subconjunto de C, faça:
(iii) Retorne C e x.
141
G. Coutinho e C. Arbex Valle DCC035 P.O.
R= 3 T= 7
S=1
5 =P a b c
1 =Q d e f
4=W g h i
O algoritmo acima é do tipo primal-dual. Ele começa com uma solução inviável da
primal e uma solução viável da dual. A cada rodada ele implementa mudanças em ambas
as soluções. Essas mudanças satisfazem algumas propriedades
(ii) A solução da primal vai se aproximando cada vez mais de ser viável, inclusive se man-
tendo sempre inteira.
(iii) Condições de folgas complementares vão sendo satisfeitas. Em particular, temos dois
tipos de condição:
P
(a) Se y i > 0, então a a∈Si xa = ci .
P
(b) Se xa > 0, então Si 3a y i = 1.
O teorema a seguir estabelece um limite para quão distante do ótimo o algoritmo nos
leva.
cT y Z ≥ cT y I ≥ cT y L ≥ 1T x. (∗)
142
G. Coutinho e C. Arbex Valle DCC035 P.O.
Note agora que, por conta do ponto (a) acima (complementaridade de folga), cada conjunto
Si que foi adicionado a C satisfaz X
x a = ci .
a∈Si
Ou seja, XX
cT y Z = xa .
S∈C a∈S
Para cada a ∈ U , a variável xa aparece no máximo f vezes na soma acima - uma para cada
conjunto S que a contém. Logo
cT y Z ≤ f · 1T x.
Por outro lado, por conta de (∗), temos f · 1T x ≤ f · cT y I . Segue portanto que
cT y Z ≤ f · c T y I ,
2
4
4 3 4 3
min 1T y
sujeito a Ay ≥ 1
y≥0
y ∈ Zm .
143
G. Coutinho e C. Arbex Valle DCC035 P.O.
(i) Enquanto há elementos descobertos, escolha o subconjunto que contém mais elementos
descobertos.
Algumas observações:
(i) Para problemas em que cada elemento aparece em no máximo poucos conjuntos, o
algoritmo primal-dual acima é muito bom.
(ii) Em particular, é provado que uma aproximação melhor do que ≈ 1, 36 para o problema
da cobertura por vértices implicaria que P = NP.
(iii) Algumas pessoas acreditam haver motivos razoavelmente fortes para acreditar que 2 é
o melhor possı́vel, a não ser, novamente, que P = NP.
144
G. Coutinho e C. Arbex Valle DCC035 P.O.
Aulas 25 e 26
7.10 Empacotamento, partição e coberturas — uma
revisão
Dados um conjunto P = {1, ..., n} de pontos e uma famı́lia F = {F1 , ..., Fm } de subconjuntos
de P , um subconjunto S de P é chamado de...
Em geral, a não ser que N possua uma estrutura especial, otimizar em conjuntos das
formas acima são problemas difı́ceis.
Exemplo 24. Atenção! Note que originalmente quando falamos de coberturas, estávamos
cobrindo pontos escolhendo subconjuntos. Aqui é ao contrário, ou ao menos assim parece
à primeira vista: estamos cobrindo os subconjuntos escolhendo pontos (ou fazendo hitting).
Os dois problemas são contudo equivalentes: basta inverter os nomes do que é ponto e o que
é subconjunto, mantendo a mesma regra de incidência...
7.10.1 Grafos
Considere um grafo G, vértices V e arestas E.
Exercı́cio 134.
(a) Um emparelhamento em um grafo é uma estrutura de qual tipo acima? Quem são os
pontos e os subconjuntos?
(b) Uma cobertura por vértices de arestas em um grafo é uma estrutura de qual tipo acima?
Quem são os pontos e os subconjuntos?
(c) Uma coloração em um grafo é uma estrutura de qual tipo acima? Quem são os pontos
e os subconjuntos?
145
G. Coutinho e C. Arbex Valle DCC035 P.O.
(d) Um conjunto independente em um grafo é um problema de qual tipo acima? Quem são
os pontos e os subconjuntos?
(e) Um clique em um grafo é um problema de qual tipo acima? Quem são os pontos e os
subconjuntos?
max 1T x
sujeito a Nx ≤ 1
x ≥ 0 x inteiro.
Vamos discutir abaixo como trocar as desigualdades Nx ≤ 1 por outras mais restritas, que
tornem a relaxação linear mais próxima da programação inteira.
Seja K um clique (conjunto de vértices em que todos se ligam a todos), e seja v K seu
vetor de incidência (vetor de n entradas 01 que indica quais vértices pertencem a K). Note
que se x é um conjunto independente, então necessariamente teremos
v KT x ≤ 1.
Exercı́cio 135. Considere o grafo que possui três vértices a, b e c, e todos são conectados.
Mostre que há soluções 0 ≤ x ≤ 1 fracionárias que satisfazem Nx ≤ 1 mas que não
satisfazem xa + xb + xc ≤ 1. Conclua que a formulação das desigualdades lineares para o
problema de achar conjuntos independentes em um grafo é mais restrita se usarmos uma
desigualdade para cada clique, ao invés de uma desigualdade para cada aresta.
Exercı́cio 136.
(a) Demonstre que o número cromático de um grafo é sempre maior ou igual do que o
tamanho do maior clique do grafo.
(b) Mostre que mesmo o ótimo da relaxação linear da formulação do problema de coloração
como no Exercı́cio 134 ainda é maior ou igual que o tamanho do maior clique de um
grafo.
146
G. Coutinho e C. Arbex Valle DCC035 P.O.
7.11 Colorações
Vamos agora olhar para mais um problema em grafos. Suponha que desejamos colorir os
vértices de um grafo de modo que vértices vizinhos recebam cores diferentes.
O primeiro é uma boa coloração com 4 cores, o segundo é uma má coloração, e o terceiro
é uma boa coloração com 3 cores. Parece fácil, até que tornamos isso em um problema de
otimização:
• Qual o mı́nimo número de cores necessário para colorir os vértices de um grafo de modo
que vizinhos não recebam a mesma cor?
Exercı́cio 137. Quais são os grafos que podem ser coloridos com duas cores?
Exercı́cio 138. Dê exemplo de um grafo com 6 vértices que precise exatamente de 6 cores
para ser colorido.
Por exemplo, imagine que os vértices representem eventos. Cada aresta representa even-
tos que não podem ocorrer simultaneamente, por exemplo, porque dependem dos mesmos
participantes. O problema da coloração portanto é a modelagem combinatória do problema
de encontrar o menor número possı́vel de horários para sediar todos os eventos!
Note que o problema de coloração é, em certo sentido, um problema de cobertura. Es-
pecificamente: desejamos cobrir os vértices do grafo com escolhas de conjuntos de vértices
que sejam independentes! Se I é o conjunto de todos os conjuntos independentes do grafo,
então rapidamente chegamos à clássica formulação do problema de cobertura:
X
min xI
I∈I
X
sujeito a xI ≥ 1 para todo v ∈ V (G)
v∈I
xI ≥ 0
xI ∈ Z.
Exercı́cio 139. Fora ser uma formulação com restrições de integralidade, qual um grave
problema da restrição acima?
Exercı́cio 140. Como formular o problema de achar uma coloração de um grafo com um
número mı́nimo de cores como uma PI com um número “pequeno”de restrições?
147
G. Coutinho e C. Arbex Valle DCC035 P.O.
• Dica: suponha que você tem n vértices. Claramente n cores seriam suficientes. Pode-
mos fazer com menos? Bem, use dois tipos de variáveis: variáveis yk , com k = 1, ..., n,
que indicariam se a cor k seria utilizada. E use variáveis xik que indicariam se a cor k
será ou não aplicada no vértice i.
• Escreva a função objetivo, as restrições especı́ficas (são 3 tipos), as restrições de não
negatividade e as de integralidade.
Exercı́cio 141. Qual o ótimo da relaxação linear da PI acima?
Exercı́cio 142. Se um grafo G tem grau máximo ∆, ache um algoritmo guloso que colore
G com no máximo ∆ + 1 cores.
Exercı́cio 143. Ache um grafo de grau máximo 6 mas que só precisa de duas cores para ser
colorido.
148
G. Coutinho e C. Arbex Valle DCC035 P.O.
Começamos escrevendo
P a programação dual da relaxação linear. Teremos variáveis para cada
restrição do tipo xij ≥ 1, digamos uj , e outras para cada xij ≤ yi , digamos vij . Daı́
X
max uj
j∈C
u e v ≥ 0.
É possı́vel interpretar a dual como um problema em que cada cliente está pagando para
a abertura das instalações. Assim, uma possı́vel interpretação para as variáveis duais é a
seguinte:
(i) Cada uj é quanto cada cliente está disposto a pagar no total.
(ii) Cada vij é quanto está disposto a pagar para abrir a instalação i.
De fato, se (x, y) e (u, v) formam um par primal-dual viável e ótimo, as condições de
folga complementar implicam que
P
(i) Se yi > 0, então vij = fi , ou seja, instalações abertas foram pagadas inteiramente
pelos clientes.
(ii) Se vij > 0, então yi = xij , ou seja, se o cliente j para por i, então ele a utiliza.
(iii) Se xij > 0, então uj = cij + vij , ou seja, se o cliente j usa i, então o total que ele gasta
é exatamente o custo do pareamento mais a sua fração na abertura de i.
149
G. Coutinho e C. Arbex Valle DCC035 P.O.
Ao término, cada cliente estará “conectado”a uma única instalação. Entretanto, mais ins-
talações do que o necessário foram abertas, e clientes estão contribuindo para instalações as
quais não conectaram. Vamos descrever agora um esquema que fechará algumas delas.
(a) Crie um grafo cujos vértices são as instalações abertas, e duas delas vizinhas se e somente
se há um cliente que contribui para abrir ambas.
(b) Ache um conjunto independente maximal neste grafo, digamos, T , começando na or-
dem em que as instalações foram temporariamente abertas. Este será o conjunto de
instalações oficialmente abertas.
(c) Para cada cliente j, se i(j) está em T , declare então j oficialmente pareado com i(j).
/ T , seja i0 a instalação de T que conflita com i(j) (e que, portanto, foi aberta
Se i(j) ∈
antes que i(j)). Declare j oficialmente pareado a i0 .
cij ≤ 3uj .
Para ver este, note que precisa haver j 0 que contribui originalmente para i e para i(j),
logo uj 0 ≥ cij 0 e ≥ ci(j)j 0 . Também sabemos que uj ≥ ci(j)j . Como i abriu antes que
i(j) (e portanto ficou em T ...), e como os us aumentam juntos e de modo uniforme,
teremos que uj 0 ≤ uj . Logo
150