Buscar

O problema da subsequência comum máxima sem repetições

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 151 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 151 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 151 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

O problema da subsequência comum
máxima sem repetições
Christian Tjandraatmadja
Dissertação apresentada
ao
Instituto de Matemática e Estatística
da
Universidade de São Paulo
para
obtenção do título
de
Mestre em Ciências
Programa: Ciência da Computação
Orientador: Prof. Dr. Carlos Eduardo Ferreira
Durante o desenvolvimento deste trabalho o autor recebeu auxílio financeiro da FAPESP através do
processo 07/57149-5
São Paulo, julho de 2010
O problema da subsequência comum
máxima sem repetições
Esta versão definitiva da dissertação
contém as correções e alterações sugeridas pela
Comissão Julgadora durante a defesa realizada
por Christian Tjandraatmadja em 26/7/2010.
Comissão Julgadora:
• Prof. Dr. Carlos Eduardo Ferreira (orientador) - IME-USP
• Prof.a Dr.a Yoshiko Wakabayashi - IME-USP
• Prof.a Dr.a Marie-France Sagot - UCBL-FRANÇA
Agradecimentos
Agradeço à minha família, em especial meus pais, pelo sempre presente apoio e pelo extensivo
esforço em me ajudarem a chegar onde estou.
Agradeço a todos os meus amigos, pela companhia, apoio, diversão e amizade em geral que me
trouxeram todos esses anos. Tenho muita sorte por conhecer os amigos que conheço. Em particular,
agradeço ao Jan M. P. G. e ao Stefan T., dois grandes amigos de inúmeras qualidades que muito me
influenciaram de forma positiva nestes últimos anos. Aprecio também as interessantes discussões de
programação inteira que tive com o Alexandre da S. F. durante o mestrado.
Agradeço aos meus professores, em particular,
• ao prof. Carlos Eduardo Ferreira, excelente orientador e professor, sempre disposto, com
bastante interesse e entusiasmo, a me oferecer ótimos conselhos e ideias e a me guiar na
superação dos desafios que surgiram neste trabalho; aprecio também seu esforço para tornar
possíveis viagens para conferências e cursos que certamente contribuíram para minha formação;
• à prof.a Yoshiko Wakabayashi, uma professora excelente pela qual tenho muito respeito
particularmente devido à sua notável atenção e esforço em dar impulso à aprendizagem de
seus alunos; sou grato pelo seu interesse em minha formação, pela sua participação em ambas
as minhas bancas e pelos valiosos conselhos e sugestões dados quanto a este trabalho;
• à prof.a Cristina Gomes Fernandes, que sempre mostrou interesse e teve uma grande parte no
desenvolvimento deste trabalho particularmente perto de seu início, oferecendo interessantes
comentários e sugestões sempre com o entusiasmo de explorar possíveis caminhos;
• ao prof. Paulo Feofiloff, pelo qual tenho grande respeito por suas notáveis qualidades como
professor; particularmente por, no curso de graduação, ter me feito enxergar a elegância em
algoritmos, graças à sua habilidade em elaborar e dar aulas que têm precisão e “encaixam”;
• ao prof. José Coelho de Pina, que participou em minha banca de qualificação e trouxe
comentários detalhados e ótimas sugestões para este trabalho;
• ao prof. Roberto Hirata Jr., por sempre demonstrar interesse mesmo sendo de uma área
diferente; e
• à prof.a Marie-France Sagot, pela participação em minha banca e seus interessantes comentários
sobre este trabalho.
Enfim, fico feliz por ter conhecido e aprendido com todos estes professores, que certamente foram
importantes para minha formação.
Resumo
Exploramos o seguinte problema: dadas duas sequências X e Y sobre um alfabeto finito, encontre
uma subsequência comum máxima de X e Y sem símbolos repetidos. Estudamos a estrutura deste
problema, particularmente do ponto de vista de grafos e de combinatória poliédrica. Desenvolvemos
algoritmos de aproximação e heurísticas para este problema. O enfoque deste trabalho está na
construção de um algoritmo baseado na técnica branch-and-cut, aproveitando-nos de um algoritmo
de separação eficiente e de heurísticas e técnicas para encontrarmos uma solução ótima mais cedo.
Também estudamos um problema mais fácil no qual este problema é baseado: dadas duas
sequências X e Y sobre um alfabeto finito, encontre uma subsequência comum máxima de X e Y .
Exploramos este problema do ponto de vista de combinatória poliédrica e descrevemos vários
algoritmos conhecidos para resolvê-lo.
Palavras-chave: Subsequência comum máxima sem repetições, subsequência comum máxima,
programação inteira, combinatória poliédrica, branch-and-cut, algoritmos de aproximação, heurísti-
cas.
Abstract
We explore the following problem: given two sequences X and Y over a finite alphabet, find a
longest common subsequence of X and Y without repeated symbols. We study the structure of
this problem, particularly from the point of view of graphs and polyhedral combinatorics. We
develop approximation algorithms and heuristics for this problem. The focus of this work is in
the construction of an algorithm based on the branch-and-cut technique, taking advantage of an
efficient separation algorithm and of heuristics and techniques to find an optimal solution earlier.
We also study an easier problem on which this problem is based: given two sequences X and Y
over a finite alphabet, find a longest common subsequence of X and Y . We explore this problem
from the point of view of polyhedral combinatorics and describe several known algorithms to solve it.
Keywords: Repetition-free longest common subsequence, longest common subsequence, integer
programming, polyhedral combinatorics, branch-and-cut, approximation algorithms, heuristics.
Sumário
1 Introdução 13
1.1 Aplicações . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.1.1 Problema do LCS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.1.2 Problema do RFLCS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.2 Organização do texto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.3 Informações sobre os resultados computacionais . . . . . . . . . . . . . . . . . . . . . 16
2 Os problemas e suas estruturas 17
2.1 Descrição dos problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.2 Conceitos estruturais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.3 Grafos de cruzamento e de conflito . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
3 Formulações e poliedros 21
3.1 Preliminares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
3.2 Formulações para LCS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.3 Formulações para RFLCS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3.3.1 Formulação por estrelas estendidas . . . . . . . . . . . . . . . . . . . . . . . . 31
3.3.2 Formulação por símbolos distintos . . . . . . . . . . . . . . . . . . . . . . . . 34
3.4 Limitantes e gap de integralidade para RFLCS . . . . . . . . . . . . . . . . . . . . . 39
4 Aproximabilidade e heurísticas para RFLCS 41
4.1 Preliminares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
4.2 Algoritmos de aproximação baseados em remoção de repetições . . . . . . . . . . . . 42
4.2.1 LCS e remove repetições . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
4.2.2 Remove repetições e LCS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
4.3 Heurísticas gulosas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
4.3.1 Escolha simples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
4.3.2 Menor número de conflitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
4.3.3 Maior limitante de casamento . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
4.4 Resultados computacionais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
4.5 Inaproximabilidade do RFLCS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
4.5.1 Preliminares. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
4.5.2 Uma L-redução de MAX 2,3-SAT para uma versão restrita do RFLCS . . . . 49
9
5 Algoritmo branch-and-cut para RFLCS 55
5.1 A técnica branch-and-cut . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
5.2 Algoritmo de separação para estrelas estendidas maximais . . . . . . . . . . . . . . . 56
5.2.1 Algoritmo de separação baseado em programação dinâmica . . . . . . . . . . 57
5.2.2 Algoritmo de separação baseado em limiares . . . . . . . . . . . . . . . . . . . 62
5.2.3 Comparação entre os dois algoritmos de separação . . . . . . . . . . . . . . . 69
5.3 Heurísticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
5.4 Limitante de casamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
5.5 Pré-processamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
5.6 Resultados computacionais gerais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
6 Algoritmos de enumeração para RFLCS 81
6.1 Decomposição em subproblemas fáceis . . . . . . . . . . . . . . . . . . . . . . . . . . 81
6.2 Decomposição em subproblemas fáceis com branch-and-bound . . . . . . . . . . . . . 82
6.3 Programação dinâmica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
6.4 Conjunto independente no grafo de conflito . . . . . . . . . . . . . . . . . . . . . . . 88
7 Algoritmos para LCS 89
7.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
7.2 Algoritmo de programação dinâmica . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
7.3 Visualização da estrutura do LCS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
7.4 Algoritmo por limiares de Hunt e Szymanski . . . . . . . . . . . . . . . . . . . . . . 95
7.4.1 Modificação por Kuo e Cross . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
7.5 Algoritmo por contornos de Hirschberg . . . . . . . . . . . . . . . . . . . . . . . . . . 101
7.6 Modificações dos algoritmos de Hirschberg e de Hunt-Szymanski por Apostolico e
Guerra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
7.6.1 Modificação do algoritmo de Hirschberg . . . . . . . . . . . . . . . . . . . . . 107
7.6.2 Modificação do algoritmo de Hunt-Szymanski . . . . . . . . . . . . . . . . . . 110
7.7 Algoritmo por preenchimento de diagonais de Nakatsu, Kambayashi e Yajima . . . . 111
7.8 Algoritmo de divisão e conquista de Hirschberg em espaço linear . . . . . . . . . . . 115
7.9 Algoritmo de subdivisão de matriz de Masek e Paterson . . . . . . . . . . . . . . . . 118
7.10 Algoritmo por limiares e saltos para casamentos . . . . . . . . . . . . . . . . . . . . . 120
7.11 Resultados computacionais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
7.12 Resumo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
8 Conclusão 127
A Técnicas não usadas no algoritmo branch-and-cut 129
A.1 Algoritmo de separação para circuito ímpar . . . . . . . . . . . . . . . . . . . . . . . 129
A.2 Pool de inequações . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
A.3 Atualização da matriz de programação dinâmica no algoritmo de separação . . . . . 131
B Comparação entre resultados computacionais usando CPLEX e GLPK 133
10
C Dados numéricos dos resultados computacionais 135
C.1 Algoritmos de aproximação e heurísticas . . . . . . . . . . . . . . . . . . . . . . . . . 135
C.2 Algoritmos de separação de estrela estendida . . . . . . . . . . . . . . . . . . . . . . 138
C.3 Heurísticas no branch-and-cut . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
C.4 Variáveis fixadas através de limitantes de casamento . . . . . . . . . . . . . . . . . . 140
C.5 Resultados gerais do algoritmo branch-and-cut . . . . . . . . . . . . . . . . . . . . . 140
C.6 Formulação por símbolos distintos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
C.7 Formulação por cruzamentos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
C.8 Algoritmos de decomposição em subproblemas . . . . . . . . . . . . . . . . . . . . . 142
C.9 Algoritmo de programação dinâmica . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
C.10 Algoritmos de conjunto independente . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
C.11 Algoritmos para o LCS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
Créditos 147
Referências Bibliográficas 149
11
12
Capítulo 1
Introdução
O objetivo deste trabalho é explorar a fundo um problema de otimização combinatória denominado
problema da subsequência comum máxima sem repetições e desenvolver um algoritmo exato eficiente
para o problema. No decorrer deste trabalho estudamos também o problema do qual ele é derivado,
o problema da subsequência comum máxima.
O problema de comparar duas sequências surge em diversas aplicações. Um critério comum para
comparar duas sequências consiste em olhar para a mais longa sequência da qual podemos obter
cada uma das duas apenas adicionando símbolos a ela (nesse sentido, é uma espécie de ancestral).
Se for possível obter uma sequência desse tipo que é longa, então as duas sequências são similares.
O problema de encontrar a sequência mais longa desse tipo é o problema da subsequência comum
máxima, ou LCS (longest common subsequence).
O problema estudado neste trabalho é uma variante do problema do LCS: o problema da sub-
sequência comum máxima sem repetições, ou RFLCS (repetition-free longest common subsequence).
Ele é um problema pouco estudado, mas, assim como o problema do LCS, pode ser usado para
determinar a similaridade entre duas sequências. No entanto, o critério usado tem uma condição
adicional: a sequência usada como critério pode ter no máximo uma ocorrência de cada símbolo do
alfabeto. Este critério é útil para comparar genomas em que hajam famílias de genes, como veremos
na seção seguinte.
Os problemas serão definidos formalmente e exemplos serão dados no capítulo seguinte.
1.1 Aplicações
1.1.1 Problema do LCS
O problema do LCS é um problema bem conhecido e estudado em computação. Uma aplicação
relativamente recente do problema do LCS e de bastante interesse é a comparação de segmentos de
DNA e de proteínas. Podemos estar interessados em saber o grau de similaridade de dois segmentos,
que pode ser um indicativo de que têm um ancestral comum parecido com os dois. Com a evolução,
nucleotídeos ou aminoácidos podem ter sido inseridos, removidos ou alterados, e o comprimento de
um LCS dos segmentos é uma medida que considera bem isso. Atualmente existem outras variantes
do LCS para compará-los mais precisamente, pois existem outras transformações que podem ocorrer
com esses segmentos conforme a evolução, mas o problema do LCS não deixa de ter um papel muito
importante nas comparações.
13
Capítulo 1. Introdução
Uma outra aplicação é comparar arquivos, como no programa Unix diff. Queremos comparar
dois arquivos e saber quais linhas foram inseridas ou removidas. Se considerarmos um arquivo como
uma sequência de linhas, um LCS nos dá o “núcleo” que pertence a ambos os arquivos, e para saber
quais linhas foram inseridas ou removidas, basta observar a diferença entre esse “núcleo” e algum
dos arquivos. A comparação de arquivos também é útil para sistemas de controle de versão.
Mais uma aplicação é corrigir erros ortográficos – podemos procurar palavras dentro de um
dicionário que tenha um LCS de comprimento alto entre ela e a palavra incorreta. Também existem
aplicações em compressão de dados, reconhecimento de voz, atualização de tela em monitores CRT,
entre outras. Algumas dessas aplicações e outras são descritas em [42].
1.1.2 Problema do RFLCS
Devido a característicasde sequências, diversas variantes do problema do LCS surgiram. O problema
do RFLCS é uma delas, e sua aplicação vem da comparação entre genomas, levando em conta a
teoria de rearranjo de genomas. Nessa abordagem, representamos cada gene como um símbolo,
sem se preocupar com sua estrutura interna, e consideramos a evolução de genomas baseada em
processos de rearranjo.
Durante esses processos, duplicatas de genes podem surgir de diversas maneiras. Uma suposição
comum feita para comparar rearranjos de genomas é que cada gene é homólogo a no máximo um
gene de outro genoma. Em outras palavras, dadas duas sequências X e Y de genomas, essa suposição
diz que, dado um símbolo em X, só pode ter no máximo uma ocorrência desse símbolo em Y . Essa
suposição tem fundamento para alguns genomas pequenos, como os de vírus ou de mitocôndrias, e
torna o problema mais fácil, já que o comprimento de um LCS é uma medida boa para esse caso.
No entanto, para genomas maiores, ela é problemática devido ao número de duplicatas de genes.
No genoma humano, aproximadamente 15% dos genes de proteína são duplicatas [31]. Ainda mais,
a situação é complicada pelo processo de divergência de sequência, no qual as duplicatas podem se
tornar estruturalmente e funcionalmente diferentes até o ponto de deixarem de ser duplicatas, mas
continuam sendo da mesma família de genes, que são homólogas e funcionalmente similares.
Com esse conceito de família de genes, em vez de considerar cada gene separadamente, podemos
considerar um representante de cada família, chamado de exemplar. Usando essa ideia, Sankoff [39]
propõe uma medida de comparação de genes, denominado de distância exemplar. Ademais, com
base nessa medida, Bonizzoni et al. [6] estuda variantes do LCS chamados de subsequência comum
máxima exemplar (exemplar longest common subsequence, ELCS), que consideram um conjunto de
símbolos obrigatórios na subsequência. Uma dessas variantes limita em 1 o número de ocorrências
de cada símbolo opcional e, assim, é uma generalização do RFLCS. Outra generalização do problema
do RFLCS também é considerada em [7], em que os autores juntam o problema do RFLCS com o
problema do CLCS (constrained longest common subsequence).
O comprimento de um RFLCS é uma outra medida que leva em consideração a noção de exemplar.
Ele pode ser visto como uma medida de similaridade entre dois genomas na qual, para cada família
de genes, desconsideramos todos os genes exceto um representante da família, o exemplar.
Uma noção melhor sobre rearranjo de genomas e duplicação de genes pode ser obtida em [41, 40].
Em particular, a variante do problema do RFLCS que permite reversões de sequências é
uma medida boa para evidenciar uma conjectura que afirma que o cromossomo Y é derivado do
cromossomo X a partir de cinco grandes reversões [30, 44]. Nessas referências, observa-se que o
cromossomo X é dividido em quatro ou cinco trechos (estratos) que são comparáveis com partes do
cromossomo Y em termos da distância entre eles.
14
Capítulo 1. Introdução
1.2 Organização do texto
Os capítulos seguintes são organizados como abaixo.
Capítulo 2: Os problemas e suas estruturas. Iniciamos descrevendo alguns conceitos impor-
tantes para resolver os problemas do LCS e do RFLCS e apresentamos uma visão dos problemas
sob o ponto de vista de grafos.
Capítulo 3: Formulações e poliedros. Prosseguimos com formulações de programação inteira
para os problemas do LCS e do RFLCS e provamos que as inequações das formulações são
“fortes” do ponto de vista de poliedros. Além disso, mostramos que o poliedro da formulação
para o problema do LCS descreve por completo o poliedro associado ao problema. Na última
seção desse capítulo, descrevemos limitantes para o comprimento de um RFLCS. Esse capítulo
contém a maior parte dos resultados teóricos desta dissertação.
Capítulo 4: Aproximabilidade e heurísticas para RFLCS. Nesse capítulo, descrevemos al-
goritmos de aproximação e heurísticas para o problema do RFLCS e mostramos o resultado de
dificuldade sobre a aproximabilidade do problema desenvolvido por Adi et al. [1]. Apresentamos
alguns resultados computacionais dos algoritmos.
Capítulo 5: Algoritmo branch-and-cut para RFLCS. Os dois capítulos anteriores formam
a base para esse capítulo, que descreve a implementação de um algoritmo baseado na técnica
branch-and-cut para o problema do RFLCS. Ele é baseado em uma formulação do Capítulo 3
e usa heurísticas inspiradas nos algoritmos de aproximação e heurísticas do Capítulo 4, além
de usar técnicas para permitir que uma solução ótima seja encontrada mais cedo. Mostramos
resultados computacionais do algoritmo.
Capítulo 6: Algoritmos de enumeração para RFLCS. Esse curto capítulo descreve mais al-
guns algoritmos exatos para o problema do RFLCS que se aproveitam da estrutura do
problema para enumerar soluções e encontrar uma solução ótima no processo. Apresentamos
dois algoritmos que enumeram subproblemas computacionalmente mais fáceis de se resolver e
um algoritmo de programação dinâmica eficiente para alfabetos muito pequenos. Também
mostramos resultados computacionais desses algoritmos. Além disso, comparamos o consumo
de tempo do algoritmo branch-and-cut com os de dois algoritmos de conjunto independente
no grafo relacionado ao problema.
Capítulo 7: Algoritmos para LCS. Estudamos e implementamos alguns algoritmos para o
problema do LCS. Em particular, a Seção 7.10 apresenta um algoritmo para o problema do
LCS que não encontramos na literatura.
Para o leitor que não conhece nenhum algoritmo para resolver o problema do LCS, pode
valer a pena pelo menos conhecer o algoritmo de programação dinâmica lendo a Seção
7.2. Mais adiante, descreveremos um algoritmo que faz parte do algoritmo branch-and-cut
(algoritmo de separação) que usa como base os algoritmos de programação dinâmica e de Hunt
e Szymanski, da Seção 7.4. O restante dos algoritmos descritos no Capítulo 7 não são usados
em nenhum outro capítulo desta dissertação, com exceção de uma técnica por Apostolico e
Guerra (Seção 7.6.1) usada no algoritmo de programação dinâmica (Seção 6.3). Apresentamos
resultados computacionais das implementações.
15
Capítulo 1. Introdução
O Capítulo 7 é uma resenha auto-contida e o leitor que deseja apenas estudar algoritmos para
o problema do LCS pode pular diretamente para esse capítulo.
Finalmente, o Capítulo 8 resume os principais resultados obtidos nesta dissertação de mestrado
e sugere alguns trabalhos futuros que podem ser realizados.
Além dos capítulos, esta dissertação contém três apêndices. O primeiro apêndice comenta
algumas técnicas que foram implementadas mas não usadas no algoritmo branch-and-cut por
não contruibuírem ao algoritmo. O segundo compara a implementação do algoritmo, que usa a
biblioteca GLPK, com uma mesma implementação que usa a biblioteca comercial CPLEX. O terceiro
documenta os valores numéricos dos resultados computacionais dos gráficos apresentados nesta
dissertação (recomendamos ao leitor interessado que observe os valores numéricos junto com os
gráficos).
Este trabalho foi desenvolvido com contribuições técnicas diretas de algumas pessoas. A seção
de Créditos no final desta dissertação menciona as contribuições, especificando que partes o autor e
essas pessoas tiveram neste trabalho.
1.3 Informações sobre os resultados computacionais
Todas as instâncias usadas para os testes foram sequências geradas de forma aleatória e uniforme de
acordo com o alfabeto. Isto é, para cada posição na sequência, escolhemos um símbolo aleatório do
alfabeto. Ambas as sequências geradas para cada teste são do mesmo comprimento.
Em todos os testes que envolveram programação linear, foi usada a biblioteca de código aberto
GLPK 4.41 [14], que cuida da resolução de programas lineares e organiza a estrutura do algoritmo
branch-and-cut (com exceção da formulação por cruzamentos, para o qual foi usada a versão 4.31
pela razãoexplicada no Apêndice C.7).
Todos os resultados computacionais neste texto foram obtidos a partir da média de 10 execuções.
A máquina utilizada para realizar os testes roda Linux, é 64-bit e tem dois processadores Intel R©
Xeon R© E5440 (quad-core), com velocidade de clock 2.83GHz, e 32GB de RAM. Cada execução foi
sequencial (usou apenas uma thread).
Para facilitar a identificação das curvas nos gráficos, as legendas dos gráficos estão ordenadas na
mesma ordem em que os valores estão na margem direita do gráfico (ou, se a curva não atingir a
margem direita, o valor que a atingiria se a curva crescesse na mesma taxa).
16
Capítulo 2
Os problemas e suas estruturas
Neste capítulo, descrevemos os problemas do LCS e do RFLCS e exploramos suas características
estruturais. Tal investigação é especialmente importante para o desenvolvimento do algoritmo exato
para o problema do RFLCS do Capítulo 5.
2.1 Descrição dos problemas
Defina um alfabeto como um conjunto finito cujos elementos são chamados de símbolos. Por
exemplo, o conjunto de letras Σ = {a,b, c, . . . , z} é um alfabeto. Uma sequência é uma lista
ordenada de símbolos de algum alfabeto. Por exemplo, uma palavra como projeto é uma sequência
sobre o alfabeto Σ do exemplo anterior.
Dada uma sequência qualquer Z, denote por zi o seu i-ésimo símbolo, por |Z| o seu comprimento,
e por Z[r..s] a subsequência zrzr+1 . . . zs.
Dada uma sequência X sobre algum alfabeto (por exemplo, X = mestrado), Z é uma sub-
sequência de X se podemos obter Z removendo zero ou mais símbolos de X (por exemplo, Z pode
ser etrdo). Vale ressaltar que os símbolos de Z não precisam estar em ordem contígua em X e, além
disso, Z pode ser vazio ou ser igual a X. Formalmente, Z é uma subsequência de X se existe uma
sequência estritamente crescente i1i2 . . . ik de índices de X tal que zj = xij para todo j = 1, . . . , |Z|.
Uma subsequência comum de duas sequências X e Y é uma sequência que é tanto sub-
sequência de X como de Y (por exemplo, se X = mestrado e Y = matrizes, ela pode ser ma).
Uma subsequência comum máxima ou LCS (longest common subsequence) de X e Y é uma
subsequência comum de comprimento máximo entre todas as subsequências comuns de X e Y (no
exemplo anterior, ela pode ser mtr ou mes). O problema do LCS é encontrar um LCS de duas
sequências.
Dizemos que uma sequência é sem repetições se não contém dois símbolos que são iguais no
alfabeto (por exemplo, a sequência abcd é sem repetições enquanto abca tem repetições). Assim, uma
subsequência comum máxima sem repetições ou RFLCS (repetition-free longest common
subsequence) de X e Y é uma subsequência comum sem repetições de comprimento máximo entre
todas as subsequências comuns sem repetições de X e Y . O problema do RFLCS é encontrar
um RFLCS de duas sequências.
Nesta dissertação, as sequências X e Y estão implícitas (a menos que definidas explicitamente).
Assim, quando nos referirmos a uma subsequência comum, LCS, ou RFLCS, estamos nos referindo
a uma subsequência comum, LCS, ou RFLCS das duas sequências X e Y para as quais queremos
17
Capítulo 2. Os problemas e suas estruturas
resolver o problema do LCS ou do RFLCS, dependendo do contexto. O alfabeto Σ também está
implícito nesta dissertação como o alfabeto que contém os símbolos de X e Y .
Observe que nem sempre podemos obter um RFLCS removendo os símbolos repetidos de um
LCS. Por exemplo, se X = aaabc e Y = bcaaa, então o único LCS de X e Y é aaa, mas o único
RFLCS de X e Y é bc.
LCS
c a a d b d
a b a c d a d
a a d d
c a a d b d
a b a c d a d
c a dRFLCS
O problema do LCS pode ser resolvido usando programação dinâmica em tempo O(mn), onde m
e n são os comprimentos das duas sequências para as quais se quer encontrar um LCS (Seção 7.2). Já
o problema do RFLCS é APX-difícil [1]. Em outras palavras, adicionar essa restrição aparentemente
simples não só torna o problema NP-difícil como também faz com que seja impossível encontrar, a
menos que P = NP, um esquema de aproximação polinomial para o problema (descrito na Seção
4.1).
2.2 Conceitos estruturais
Defina um casamento como um par ordenado de índices (i, j) para o qual xi = yj , isto é, o i-ésimo
símbolo de X é igual ao j-ésimo símbolo de Y . Cada casamento (i, j) está associado a um símbolo
xi (= yj). Seja C o conjunto de casamentos associados a X e Y . Dizemos que dois casamentos
(i, j) ∈ C e (k, l) ∈ C se cruzam se i ≥ k e j ≤ l, ou i ≤ k e j ≥ l (representando os casamentos
graficamente como abaixo, eles se cruzam se e só se eles se intersectam graficamente). Dizemos
também que um casamento conflita com outro se eles se cruzam ou seus símbolos são iguais.
a b c e c d a e
e c a b d a c c
a b c e c d a e
e c a b d a c c
a b c e c d a e
e c a b d a c c
casamentos
a b c e c d a e
e c a b d a c c
casamentos que se cruzam
casamentos que conflitam um com o outro
Dizemos que (i, j) precede (k, l) (ou (k, l) sucede (i, j)) se i < k e j < l, e denotamos isso por
(i, j) ≺ (k, l). Isto é, (i, j) não cruza com (k, l) e está à esquerda de (k, l) na representação gráfica.
É fácil ver que, dado um conjunto de casamentos C = {(i1, j1), (i2, j2), . . . , (ik, jk)}, seus
elementos não se cruzam dois a dois se e só se eles podem ser ordenados de forma que (il1 , jl1) ≺
(il2 , jl2) ≺ . . . ≺ (ilk , jlk), onde (l1, l2, . . . , lk) é uma permutação de {1, 2, . . . , k}. Assim, dizemos
que um conjunto de casamentos C = {(i1, j1), (i2, j2), . . . , (ik, jk)} com seus elementos ordenados
de tal maneira é uma representação da subsequência comum S = xi1xi2 . . . xik = yj1yj2 . . . yjk .
Note que, embora toda representação esteja associada a uma subsequência comum, uma mesma
subsequência comum pode ter mais de uma representação, como ilustrado na figura seguinte.
18
Capítulo 2. Os problemas e suas estruturas
a b c e c d a e
e c a b d a c c
c d a
a b c e c d a e
e c a b d a c c
c d a
i1 i2 i3 i4 ik
...
...
j1 j2 j3 j4 jk...
1 2 3 4 k
duas representações distintas 
da subsequência comum cda
σ σ σ σ σ
A relação entre esses conceitos e os problemas estudados é clara: é de interesse buscar uma
representação de cardinalidade máxima, livre ou não de repetições dependendo do problema, pois
dela obtemos um RFLCS ou um LCS. É importante observar que, se o conjunto de casamentos
não conflitam entre si dois a dois, então ele representa uma subsequência comum sem repetições.
Todos os algoritmos exatos para o problema do LCS e do RFLCS comentados neste texto primeiro
encontram uma representação, implicitamente ou explicitamente, e dela se constrói um LCS ou um
RFLCS.
2.3 Grafos de cruzamento e de conflito
É interessante observar os conceitos anteriores sob o ponto de vista de grafos. Um grafo é um par
(V,E), onde V é um conjunto finito cujos elementos são chamados de vértices, e E é uma família
de pares não-ordenados de V chamados de arestas.
Defina Gcr = (Vcr, Ecr) como o grafo de cruzamento de X e Y , onde Vcr é o conjunto
de casamentos de X e Y e uma aresta (u, v) ∈ Ecr se e só se os casamentos u e v se cruzam.
Analogamente, defina o grafo de conflito Gc da mesma forma, mas a aresta (u, v) pertence ao
grafo se e só se u conflita com v.
Sejam occX(σ) e occY (σ) o número de ocorrências do símbolo σ ∈ Σ em X e Y respectivamente
e seja Σ′ ⊆ Σ o conjunto de símbolos σ tal que occX(σ) > 1 e occY (σ) > 1. Então o grafo de conflito
tem exatamente ∑σ∈Σ′ (occX(σ)2 )(occY (σ)2 ) arestas a mais que o grafo de cruzamento. No exemplo
abaixo, as quatro arestas destacadas no grafo de conflito são a única diferença entre os dois grafos.
Grafo de cruzamento Grafo de conflito
a b c e c d a e
e
c
a
b
d
a
c
c
a b c e c d a e
e
c
a
b
d
a
c
c
19
Capítulo 2. Os problemas e suas estruturas
Para resolver o problema do LCS ou do RFLCS, buscamos um conjunto de casamentos que,
dois a dois, não se cruzamou não conflitam um com o outro respectivamente. Portanto, é o
mesmo que procurar um conjunto independente máximo para o grafo de cruzamento ou de conflito
respectivamente (um conjunto independente máximo é um conjunto de vértices dois a dois não
adjacentes de cardinalidade máxima).
Grafo de cruzamento Grafo de conflito
a b c e c d a e
e
c
a
b
d
a
c
c
a b c e c d a e
e
c
a
b
d
a
c
c
a b c e c d a e
e c a b d a c c
a d ab
RFLCSLCS
a b c e c d a e
e c a b d a c c
c d ae
Seja ≺c uma ordem parcial tal que (i, j) ≺c (k, l) se i ≤ k e j ≥ l (ela é uma ordem parcial pois
é reflexiva, antissimétrica e transitiva). Com isso, podemos reescrever a definição de cruzamento da
seguinte forma: (i, j) e (k, l) se cruzam se (i, j) ≺c (k, l) e (k, l) ≺c (i, j). Portanto, por definição,
o grafo de cruzamento pertence à classe dos grafos de comparabilidade. Sabe-se que o problema
do conjunto independente para grafos de comparabilidade é computacionalmente fácil, o que é
consistente com o fato que o problema do LCS é também um problema fácil.
Tome o complemento de Gc, Gc. Dois casamentos são adjacentes em Gc se e só se eles não se
cruzam. Como ≺ é uma ordem parcial estrita (ela é irreflexiva, antissimétrica e transitiva), Gc
também é um grafo de comparabilidade. Nesse caso, o problema do LCS é equivalente ao problema
do clique máximo em Gc, que é equivalente ao problema do caminho mínimo na orientação transitiva
em Gc, por ser um grafo de comparabilidade.
Já o grafo de conflito não tem essa propriedade. Em particular, o grafo de conflito não pertence
à classe dos grafos perfeitos (que contém a classe dos grafos de comparabilidade), pois se pertencesse,
o problema do RFLCS seria polinomialmente tratável, já que o problema do conjunto independente
máximo também o é em grafos perfeitos. (As relações entre grafos de comparabilidade, grafos
perfeitos, e o problema do conjunto independente máximo podem ser encontradas em [15]. Voltaremos
a falar sobre grafos de comparabilidade e grafos perfeitos na segunda prova do Teorema 3.2.3.)
20
Capítulo 3
Formulações e poliedros
Neste capítulo, investigamos possíveis formulações para os problemas do LCS e do RFLCS, e
exploramos características dos poliedros associados a essas formulações.
3.1 Preliminares
Descrevemos brevemente alguns conceitos básicos de programação linear, programação inteira e
combinatória poliédrica necessários para o entendimento deste capítulo. Esta seção é baseada no
livro de Wolsey [46].
Um programa linear é, de uma forma geral, um problema de maximizar ou minimizar uma
função linear sobre um poliedro, dado por um sistema de inequações lineares. Trataremos apenas
de problemas de maximização nesta seção; o de minimização é análogo.
Mais formalmente, um programa linear é um problema do tipo
maximize cx (função objetivo)
sujeito a Ax ≤ b (sistema de inequações lineares)
x ≥ 0
onde x é um vetor coluna de variáveis de dimensão n, e o restante são dados: A é uma matriz m
por n, c é um vetor linha de dimensão n, e b é um vetor coluna de dimensão m (0 denota o vetor
zero neste caso). Em outras palavras, queremos encontrar um vetor x que maximiza cx e satisfaz as
restrições Ax ≤ b e x ≥ 0.
Exemplo 3.1.1. Se o problema é de maximização, e n = 2, m = 3, x = (x1, x2) ∈ R2, c = (1, 2),
A =
 1 12 −1
−1 1
 e b =
 56
2
, então temos o programa linear: maximize x1 + 2x2
sujeito a x1 + x2 ≤ 5
2x1 − x2 ≤ 6
−x1 + x2 ≤ 2
x1 ≥ 0
x2 ≥ 0
21
Capítulo 3. Formulações e poliedros
Uma solução viável é um vetor x que satisfaz as restrições do programa linear. Uma solução
ótima é uma solução viável que maximiza a função objetivo, isto é, é uma solução propriamente
dita do problema.
Um poliedro é um conjunto {x ∈ Rn | Ax ≤ b} para alguma matriz A ∈ Rm×n e vetor b ∈ Rm.
O poliedro associado à formulação linear anterior ao exemplo é
P := {x ∈ Rn | Ax ≤ b, x ≥ 0}.
Exemplo 3.1.2. O poliedro do exemplo anterior é o conjunto P := {(x1, x2) ∈ R2 | x1 + x2 ≤ 5,
2x1 − x2 ≤ 6, − x1 + x2 ≤ 2, x1 ≥ 0, x2 ≥ 0}, ilustrado pela região sombreada delimitada pelas
retas abaixo.
x1
x2
2x1 – x2 ≤ 6
x1 + x2 ≤ 5
–x1 + x2 ≤ 2
0 1 2 3 4 5
1
2
3
4
5
P
Programas lineares podem ser resolvidos usando o método simplex, desenvolvido por Dantzig
em 1947 [10]. A ideia do método, em termos gerais, é encontrar um vértice do poliedro e andar
de vértice em vértice adjacente sempre aumentando o valor da função objetivo até não ser mais
possível. O método simplex funciona bem na prática e é bastante usado, embora não se saiba até
agora um limitante superior polinomial para seu consumo de tempo. A figura seguinte ilustra, em
linhas gerais, a ideia do método simplex.
x1
x2
0 1 2 3
1
2
3
x1
x2
0 1 2 3
1
2
3
x1
x2
0 1 2 3
1
2
3
solução
ótima
solução 
viável inicial
direção da
função obj.
Em 1979 e 1984, Khachiyan [26] e Karmarkar [24] desenvolveram dois outros métodos para
resolver programas lineares: o método do elipsoide e o método dos pontos interiores, respectivamente.
Ambos os métodos consomem tempo polinomial, apesar do primeiro não ser rápido o suficiente para
aplicações práticas. Já o segundo é comparável com o método simplex na prática.
22
Capítulo 3. Formulações e poliedros
Um programa linear inteiro (ou apenas programa inteiro) é um programa linear no qual
adicionamos a restrição de que as variáveis são inteiras, como a seguir.
max cx
s. a Ax ≤ b
x ∈ Zn+
Os métodos mencionados para resolver um programa linear não resolvem um programa inteiro,
especialmente pelo fato de que as soluções viáveis do problema não formam um conjunto convexo.
Ainda mais, o problema geral de resolver um programa inteiro é NP-difícil. Veremos como resolver
um programa inteiro (particularmente, um relacionado ao problema do RFLCS) no Capítulo 5.
O casco convexo de um conjunto de pontos P , denotado por conv(P ), é o conjunto convexo
minimal que contém P . Mais formalmente, se P = {x1, . . . , xk}, então conv(P ) = {λ1x1+. . .+λkxk |
λ1 + . . .+ λk = 1, λ1, . . . , λk ≥ 0}. O casco convexo de um conjunto finito de pontos é um poliedro
limitado.
O poliedro associado à formulação inteira anterior é
PI := conv{x ∈ Zn+ | Ax ≤ b}.
Se A e b têm valores racionais, então conv(PI) é um poliedro racional [33].
Exemplo 3.1.3. Os pontos em preto da figura ao lado são as soluções
da formulação inteira dada pelo exemplo anterior adicionando a restri-
ção de integralidade. A região sombreada, definida pelos traços cheios,
definem o casco convexo dessas soluções, e, portanto, definem PI (as
linhas pontilhadas são do poliedro original P ).
x1
x2
0 1 2 3 4
1
2
3
4
PI
A relaxação linear de um programa inteiro é o programa linear obtido ao remover a restrição
de integralidade do programa inteiro. Por exemplo, a relaxação linear do programa inteiro anterior
é max{cx | Ax ≤ b, x ≥ 0}, e o poliedro associado a ele é {x ∈ Rn | Ax ≤ b, x ≥ 0}. Idealmente,
gostaríamos de ter o poliedro associado à formulação inteira, mas, se o problema for NP-difícil e
NP 6= co-NP, não é possível obter uma descrição completa dele de forma que exista uma “prova
curta” para toda inequação linear que o define de que ela é necessária para o poliedro [25]. Então,
trabalhamos, em geral, com o poliedro associado à relaxação linear, que podemos obter diretamente
da formulação.
Uma inequação é válida para um poliedro P se ela é satisfeita por todos os pontos de P . Uma
inequação válida pix ≤ pi0 domina uma outra inequação válida µx ≤ µ0 se existe u > 0 tal que
pi ≥ uµ e pi0 ≤ uµ0.1 Note que se pix ≤ pi0 domina µx ≤ µ0, então toda solução x não-negativa que
satisfaz a primeira inequação também satisfaz a segunda.
Os pontos x1, x2, . . . , xk são linearmente independentes se, quando
∑k
i=1 αixi = 0, onde
αi ∈ R,temos que α1 = α2 = . . . = αk = 0. Os pontos x1, x2, . . . , xk são afim-independentes se os
1A definição usual inclui a condição de que (pi, pi0) 6= (uµ, uµ0). Neste texto, desconsideraremos essa condição por
conveniência.
23
Capítulo 3. Formulações e poliedros
k−1 pontos x2−x1, . . . , xk−x1 são linearmente independentes, ou os k pontos (x1, 1), . . . , (xk, 1) são
linearmente independentes. Afim-independência é análogo a independência linear desconsiderando a
origem (todo conjunto de pontos linearmente independentes são também afim-independentes).
A dimensão de um poliedro P é o número máximo de pontos afim-independentes em P menos
um. Um poliedro P ⊆ Rn tem dimensão plena se sua dimensão é n. Isso implica que não existe
equação ax = b satisfeita por todos os pontos de P , onde a ∈ Rn e b ∈ R. Pode-se provar que se um
poliedro tem dimensão plena, então ele tem uma descrição minimal única (cujas inequações são
únicas a menos de um múltiplo positivo).
Uma face de um poliedro P é um conjunto F = {x ∈ P | pix = pi0} para alguma inequação
válida pix ≤ pi0. Dizemos que essa inequação define a face. Uma face é uma faceta se sua dimensão
é a dimensão do poliedro menos um.
Exemplo 3.1.4. Ainda considerando as inequações e os
poliedros dos exemplos anteriores, as inequações x1 +x2 ≤ 5,
−x1 + x2 ≤ 2, x1 ≥ 0 e x2 ≥ 0 definem facetas de PI . A
única inequação das anteriores que não define uma faceta
é 2x1 − x2 ≤ 6, pois existe apenas um ponto x do poliedro
tal que 2x1 − x2 = 6. Note que as inequações x1 ≤ 3 e
x2 ≤ 3, não presentes nas inequações anteriores, definem
facetas de PI . Com essas inequações, temos uma descrição
completa de PI . x1
x2
0 1 2 3
1
2
3
PI
2x1 – x2 ≤ 6 define
uma face de dim. 0
–x1 + x2 ≤ 2 define
uma faceta (dim. 1)
O foco deste capítulo é descrever formulações e provar que algumas inequações definem facetas
de poliedros associados aos problemas do LCS e do RFLCS. A importância disso é que, se um
poliedro P tem dimensão plena, então uma inequação válida de P define faceta se e só se ela é
necessária na descrição de P (isto é, não existe outra inequação válida além de um múltiplo dela
que a domina).
3.2 Formulações para LCS
Como vimos no capítulo anterior, resolver o problema do LCS é equivalente a escolher um conjunto
de casamentos de cardinalidade máxima em que não haja dois casamentos que se cruzam. Em outras
palavras, para cada dois casamentos que se cruzam, podemos apenas escolher um deles. Usando
isso, construiremos, a seguir, uma formulação de programação inteira que é válida para o problema
do LCS.
Para todo casamento (i, j) em C, seja zij uma variável que é 1 se o casamento (i, j) está na
representação da subsequência comum associada a z, ou é 0 em caso contrário.
max
∑
(i,j)∈C
zij (formulação por cruzamentos)
s. a zij + zkl ≤ 1 para todo (i, j) e (k, l) em C que se cruzam,
zij ∈ {0, 1} para todo (i, j) em C.
24
Capítulo 3. Formulações e poliedros
O poliedro associado à relaxação linear da formulação é
PC := {z ∈ RC | zij + zkl ≤ 1 para todo (i, j) e (k, l) em C que se cruzam, e
0 ≤ zij ≤ 1 para todo (i, j) em C}.
Sobre PC , apenas faremos a observação de que PC pode ter vértices fracionários (isto é, não-
inteiros). De fato, tome o caso em que as sequências de entrada são X = abc e Y = cba, ou seja,
existem apenas três casamentos (1, 3), (2, 2) e (3, 1) que se cruzam dois a dois. Então as inequações
de cruzamento são z13 + z22 ≤ 1, z13 + z31 ≤ 1 e z22 + z31 ≤ 1. O ponto fracionário (12 , 12 , 12) é um
vértice do poliedro, pois pertence ao poliedro e satisfaz d = 3 inequações com igualdade, onde d é a
dimensão do poliedro.
O ideal seria o poliedro não ter vértices fracionários, pois otimizar sobre tal poliedro nos daria
sempre um ponto inteiro, que é o que queremos. Observe que, se substituirmos essas 3 inequações
pela inequação z13 + z22 + z31 ≤ 1, o ponto fracionário (12 , 12 , 12) deixa de ser um vértice do poliedro
pois ele viola a inequação, e a formulação inteira original continua sendo válida sob este poliedro
pois a nova inequação não elimina nenhum ponto inteiro do poliedro.
( , , )1
2
1
2
1
2
x3
x2 + x3 ≤ 1
(0,1,0)
(1,0,0)
(0,0,1)
x1 + x2 ≤ 1
x1
x2
x1 + x3 ≤ 1
(0,1,0)
(1,0,0)
(0,0,1)
x1 + x2 + x3 ≤ 1
x3
x1
x2
A seguir, construiremos uma outra formulação mais forte com inequações como a última do
exemplo acima e, mais adiante, mostraremos que o poliedro dado por esse tipo de inequações tem
apenas vértices inteiros.
Uma estrela é um conjunto de casamentos que se cruzam dois a dois (ilustrada na página
seguinte), ou seja, é um clique no grafo de cruzamento definido na Seção 2.3 (um clique de um
grafo é um conjunto de vértices dois a dois adjacentes). Dizemos que uma estrela S é maximal
se não existe nenhum casamento que pode ser acrescentado a S de forma a se obter uma estrela
maior. Note que, para qualquer estrela maximal S, podemos escolher no máximo um casamento de
S para estar em uma representação de uma subsequência comum. Construiremos, a seguir, uma
formulação baseada nesse fato.
Seja z ∈ {0, 1}C uma variável como na formulação anterior, isto é, zij = 1 se e só se (i, j) pertence
à representação dada por z.
max
∑
(i,j)∈C
zij (formulação por estrelas)
s. a
∑
(i,j)∈S
zij ≤ 1 para toda estrela maximal S ⊆ C,
zij ∈ {0, 1} para todo (i, j) em C.
25
Capítulo 3. Formulações e poliedros
a b c e c d a e
e
c
a
b
d
a
c
c
a b c e c d a e
e c a b d a c c
estrela maximal
Uma relaxação linear da formulação pode ser obtida trocando zij ∈ {0, 1} por zij ≥ 0 (não são
necessárias as inequações zij ≤ 1 pois as inequações de estrela as dominam).
Vale comentar que a formulação é a formulação por cliques para o problema do conjunto
independente máximo, mas restrito a grafos de cruzamento (ela aparece no contexto de conjunto
independente máximo, por exemplo, na referência [16]). As inequações ∑v∈K zv ≤ 1 para todo
clique maximal K são chamadas de inequações de clique e são válidas para o problema do conjunto
independente máximo. As inequações baseadas em estrelas maximais são uma adaptação das
inequações de clique, uma vez que uma estrela é um clique no grafo de cruzamento.
Como todo par de casamentos que se cruzam está contido em alguma estrela maximal, as
restrições baseadas em cruzamento são dominadas pelas restrições baseadas em estrelas maximais.
Logo, o poliedro associado à formulação por cruzamentos está contido no poliedro associado à
formulação por estrelas. Ainda mais, podemos provar um resultado mais forte: o poliedro associado
à formulação por estrelas é o melhor poliedro possível (o mais justo) em termos de representações
de subsequências comuns.
Defina o poliedro do problema do LCS como
Plcs := conv{z ∈ {0, 1}C | z representa uma subsequência comum de X e Y }.
Observe primeiro que o poliedro Plcs tem dimensão |C|, isto é, tem dimensão plena. De fato, o
vetor zero e os |C| vetores unitários eij para todo (i, j) ∈ C estão em Plcs e são afim-independentes
(um vetor unitário ek tem valor 1 na posição k e 0 nas restantes).
Provaremos a seguir que as inequações da relaxação linear da formulação por estrelas,∑
(i,j)∈S
zij ≤ 1 para toda estrela maximal S ⊆ C, e (inequação de estrela)
zij ≥ 0 para todo (i, j) em C, (inequação de não-negatividade)
definem facetas de Plcs.
Proposição 3.2.1. Para todo (i, j) em C, a inequação de não-negatividade zij ≥ 0 define uma
faceta de Plcs.
Prova. Considere um casamento (i, j) ∈ C. O vetor zero e os vetores unitários ekl para todo
(k, l) 6= (i, j) estão contidos na face {z ∈ Plcs | zij = 0} e são afim-independentes. Portanto, zij ≥ 0
define uma faceta.
26
Capítulo 3. Formulações e poliedros
Lema 3.2.2. Considere uma estrela S ⊆ C. Então a inequação de estrela ∑(i,j)∈S zij ≤ 1 define
uma faceta de Plcs se e só se S é maximal.Prova. Mostraremos primeiro que a inequação de estrela define uma faceta quando S é maximal.
Seja F a face definida em Plcs pela inequação de estrela, isto é, F := {z ∈ Plcs |∑(i,j)∈S zij = 1}.
Suponha que S é maximal. Então, para cada casamento (k, l) em C r S, existe um casamento
(i, j) em S que não cruza com (k, l). Tome os |C| − |S| vetores ekl + eij para todo par de casamentos
(k, l) e (i, j) dessa forma. Como eles representam uma subsequência comum e satisfazem a igualdade∑
(i,j)∈S zij = 1, eles pertencem à face F . Além disso, os |S| vetores eij para todo (i, j) em S
também pertencem a F . Esses |C| vetores são afim-independentes e, assim, F é uma faceta de Plcs.
Agora, suponha que F é uma faceta de Plcs. Se S não é maximal, então existe uma estrela
maximal S′ que contém S, e ∑(i,j)∈S zij ≤ 1 pode ser escrito como uma soma da inequação∑
(i′,j′)∈S′ zi′j′ ≤ 1 com as inequações −zkl ≤ 0 para todo (k, l) em S′ r S, o que é uma contradição.
Considere o poliedro associado à relaxação linear da formulação por estrelas, isto é, dado pelas
inequações de estrela e de não-negatividade:
PS := {z ∈ RC |
∑
(i,j)∈S
zij ≤ 1 para toda estrela maximal S ⊆ C, e
zij ≥ 0 para todo (i, j) ∈ C}.
Provaremos que as inequações de estrela e de não-negatividade definem o poliedro do problema
do LCS por completo, isto é:
Teorema 3.2.3. Plcs = PS.
Apresentaremos duas provas do teorema acima, ambas por Fernandes et al. [12]. A primeira
prova mostra diretamente que toda inequação que define faceta de Plcs é uma inequação de estrela
ou de não-negatividade. A segunda prova usa um teorema de Chvátal relacionando grafos perfeitos
e poliedros de clique.
Antes de apresentarmos as demonstrações, uma primeira tentativa para provar o teorema seria
verificar se a matriz de restrições A da relaxação linear da formulação por estrelas é totalmente
unimodular. Uma matriz é totalmente unimodular se o determinante de toda submatriz quadrada
dela é 1, 0 ou −1. Pode-se provar que se a matriz de restrições de um programa linear for totalmente
unimodular e o lado direito das inequações tiver apenas valores inteiros, então os vértices do poliedro
associado a esse programa são inteiros [46], o que provaria o teorema. No entanto, no caso do LCS,
nem sempre a matriz de restrições de estrela é totalmente unimodular, como no exemplo em que
X = abcdef e Y = efcdab, cuja matriz de restrições possui um subdeterminante −2.
Prova 1. (Teorema 3.2.3) Seja az ≤ α uma inequação que define uma faceta F de Plcs. Isto é,
F := {z ∈ Plcs | az = α}.
27
Capítulo 3. Formulações e poliedros
Sejam F1(i, j) e F2(S) as facetas definidas pelas inequações de não-negatividade para (i, j) e de
estrela para S respectivamente. Isto é,
F1(i, j) := {z ∈ RC | zij = 0}, e
F2(S) := {z ∈ RC |
∑
(i,j)∈S
zij = 1}.
Como F é faceta, é suficiente provarmos que F ⊆ F1(i, j) para algum (i, j) em C, ou F ⊆ F2(S)
para alguma estrela maximal S ⊆ C.
Denote por F -representação um conjunto de casamentos que representa uma subsequência
comum cujo vetor de incidência z pertence a F (um vetor de incidência z de um conjunto S é aquele
em que zs = 1 se s ∈ S, ou zs = 0 caso contrário). Como os vértices de Plcs são inteiros, é suficiente
considerar apenas vetores z em Plcs que são vetores de incidência de alguma F -representação.
Primeiro, suponha que existe (i, j) em C tal que aij < 0. Qualquer F -representação R satisfaz
zij = 0, pois, caso contrário (se zij = 1), Rr {(i, j)} também representa uma subsequência comum,
mas a(z − eij) = az − aij > α, isto é, z − eij não pertence a Plcs, o que é um absurdo. Portanto,
F ⊆ F1(i, j).
Podemos supor então que aij ≥ 0 para todo (i, j) em C.
Seja T o vetor suporte para az ≤ α, isto é, T := {(i, j) ∈ C | aij > 0}. Como a inequação define
faceta, podemos supor que T 6= ∅.
Seja R uma F -representação e z seu vetor de incidência. Se zij = 0 para qualquer (i, j) em T ,
então ∑(i,j)∈T aijzij = 0, e, logo, α = 0. Então, como aij ≥ 0 para todo (i, j) em C e a 6= 0, existe
um (i′, j′) em C tal que zi′j′ = 0 para qualquer vetor de incidência z de uma F -representação e,
portanto, F ⊆ F1(i′, j′).
Assim, podemos supor que, para qualquer F -representação, existe (i, j) em T tal que zij = 1.
Definiremos agora uma ordem lexicográfica entre conjuntos de casamentos. Considere dois
subconjuntos S1 e S2 de C ordenados de forma que (i, j) vem antes de (k, l) se i < k ou (i = k e
j < l). Dizemos que S1 é lexicograficamente menor ou igual a S2 se, sob a ordem acima, ou S1 é
prefixo de S2, ou, para o primeiro índice p tal que o p-ésimo casamento (i1, j1) de S1 é diferente
do p-ésimo casamento (i2, j2) de S2, (i1, j1) vem antes de (i2, j2) na ordem acima (se existir tal p).
Esta ordem lexicográfica é uma ordem total.
Seja S1 a primeira estrela maximal em T em ordem lexicográfica. Provaremos que F ⊆ F2(S1).
Para isso, temos que mostrar que sempre vale ∑(i,j)∈S1 zij = 1 para qualquer vetor de incidência z
de uma F -representação.
Suponha, por contradição, que existe uma F -representação R com vetor de incidência z tal que
zij = 0 para todo casamento em S1. Como existe (i, j) em T tal que zij = 1, R ∩ (T r S1) 6= ∅.
Então cada casamento (i, j) em S1 cruza com algum casamento em R∩ (T rS1), pois, caso contrário,
R ∪ {(i, j)} representaria uma subsequência comum e a(z + eij) = az + aij > α, isto é, z + eij não
pertenceria a Plcs, o que é um absurdo.
Mostraremos agora que existe um par de casamentos distintos (i, j) e (k, l) em R∩(TrS1) tal que
todo casamento em S1 cruza com (i, j) ou com (k, l). De fato, suponha que tal par não existe. Então,
para qualquer par de casamentos distintos em R ∩ (T r S1), existe um casamento em S1 que não
cruza com nenhum dos dois. Lembremos da definição de precedência entre casamentos: (i, j) precede
(k, l), ou (i, j) ≺ (k, l), se i < k e j < l. Considere dois casamentos (i1, j1) e (i2, j2) em R∩ (T r S1)
tal que (i1, j1) precede imediatamente (i2, j2), e seja (k, l) um casamento em S1 que não cruza
28
Capítulo 3. Formulações e poliedros
com nenhum dos dois. Se (i1, j1) ≺ (k, l) ≺ (i2, j2), então (k, l) não cruza com nenhum casamento
em R ∩ (T r S1), uma contradição. Caso contrário, para todo par desse tipo, (k, l) ≺ (i1, j1) ou
(i2, j2) ≺ (k, l). Em ordem de precedência, tome o primeiro par de casamentos (i1, j1) e (i2, j2) de
R∩ (T rS1), com (i1, j1) precedendo imediatamente (i2, j2), tal que (k, l) ≺ (i1, j1), onde (k, l) é um
casamento em S1 que não cruza com (i1, j1) ou (i2, j2). Se (i1, j1) for o primeiro casamento ou se tal
par não existir (ou seja, (i2, j2) ≺ (k, l) para o último casamento (i2, j2) em R∩ (T rS1)), então, em
ambos os casos, (k, l) não cruza com nenhum casamento de R ∩ (T r S1), o que é uma contradição.
Assim, existe um casamento (i0, j0) em R ∩ (T r S1) que precede imediatamente (i1, j1), e vale que
(i1, j1) ≺ (k′, l′) para algum (k′, l′) em S1 que não cruza com (i0, j0) ou (i1, j1), já que (i1, j1) e
(i2, j2) são o primeiro par tal que (k, l) ≺ (i1, j1). Mas então (k, l) ≺ (k′, l′), ou seja, existem dois
casamentos de S1 que não se cruzam, o que é uma contradição.
Considere tal par (i, j) e (k, l) e suponha, sem perda de generalidade, que (i, j) ≺ (k, l). Como
S1 é a primeira estrela maximal em ordem lexicográfica, existe um casamento (i1, j1) em S1 que
não cruza com (i, j) e é tal que i1 < i ou (i1 = i e j1 < j). De fato, caso contrário, ou S1
não seria maximal, ou todo casamento que não cruza com (i, j) vem depois de (i, j) (na ordem
definida anteriormente), o que implicaria que o conjunto S1 ∪ {(i, j)}r {(k, l) ∈ S1 | (k, l) não cruza
com (i, j)} seria uma estrela que vem antes de S1 em ordem lexicográfica, o que é um absurdo.
Logo, vale que (i1, j1) ≺ (i, j) ≺ (k, l). Assim, (i1, j1) não cruza nem com (i, j), nem com (k, l), o
que é uma contradição.
Logo, F ⊆ F2(S1).
Finalmente, note que F2(S′) ⊆ F2(S) para qualquer estrela S′ e qualquer estrelamaximal S que
contém S′. De fato, para todo z ∈ RC tal que ∑(i,j)∈S′ zij = 1, vale que ∑(i,j)∈S zij ≥ 1. Como S é
uma estrela, ∑(i,j)∈S zij = 1.
Assim, F ⊆ F2(S) para alguma estrela maximal S que contém S1.
A segunda prova requer que olhemos para o problema sob o ponto de vista de grafos novamente.
A prova se baseia essencialmente no teorema de Chvátal a seguir. Lembremos que um clique é
um conjunto de vértices dois a dois adjacentes e um conjunto independente é um conjunto de vértices
dois a dois não-adjacentes. Dizemos que G é um grafo perfeito se, para cada subgrafo induzido G′
de G, o tamanho de um clique máximo de G′ é igual ao número mínimo de cores necessárias para
colorir os vértices de G′ de forma que dois vértices adjacentes não tenham a mesma cor.
Teorema 3.2.4 (Chvátal [9]). Seja G = (V,E) um grafo. Considere o poliedro
P := {z ∈ RV |
∑
v∈S
zv ≤ 1 para todo conjunto independente maximal S ⊆ V , e
zv ≥ 0 para todo v ∈ V }.
Então P é o casco convexo dos cliques de G se e somente se G é perfeito.
Uma prova do teorema acima pode ser encontrada nas referências [15, 43].
Prova 2. (Teorema 3.2.3) Usando-se o teorema de Chvátal acima, a prova é simples. Considere
o complemento do grafo de cruzamento Gc definido na Seção 2.3: Gc = (C, E) é o grafo onde os
vértices são os casamentos e dois casamentos são adjacentes se e só se eles não se cruzam. Lembremos
também da relação da precedência entre casamentos: (i, j) ≺ (k, l) se i < k e j < l. A relação ≺ é
29
Capítulo 3. Formulações e poliedros
uma ordem parcial estrita, pois ela é irreflexiva ((i, j) 6≺ (i, j)), antissimétrica (se (i1, j1) ≺ (i2, j2) e
(i2, j2) ≺ (i1, j1), então (i1, j1) = (i2, j2)) e transitiva (se (i1, j1) ≺ (i2, j2) e (i2, j2) ≺ (i3, j3), então
(i1, j1) ≺ (i3, j3)). Como dois casamentos (i, j) e (k, l) são adjacentes em Gc se e só se (i, j) ≺ (k, l)
ou (k, l) ≺ (i, j), Gc pertence à classe dos grafos de comparabilidade, por definição.
Veremos agora que todo grafo de comparabilidade é perfeito [11, 15]. De fato, sejam G um grafo
de comparabilidade e F sua orientação transitiva. Tome uma coloração c tal que c(v) = 0 se v
não tem arcos de saída em F , e c(v) = 1 + max{c(w) | vw ∈ F} caso contrário. É fácil ver que a
coloração c é própria em G (isto é, dois vértices adjacentes não têm a mesma cor) e o número de
cores usadas é o comprimento de um caminho máximo em F . Além disso, como F é transitiva, os
vértices de um caminho em F correspondem a um clique em G. Portanto, temos uma coloração
própria do tamanho de um clique máximo. Além disso, como todo subgrafo induzido de um grafo
de comparabilidade também é de comparabilidade, a mesma propriedade vale para os subgrafos
induzidos de G. Logo, G é um grafo perfeito.
Seja P o poliedro enunciado no teorema de Chvátal para Gc. Um conjunto independente, no
contexto de Gc, é um conjunto de casamentos que se cruzam dois a dois, que é exatamente a
definição de estrela. Portanto, podemos enunciar P da seguinte forma:
P = {z ∈ RC |
∑
(i,j)∈C
zij ≤ 1 para toda estrela maximal S ⊆ C, e
zij ≥ 0 para todo (i, j) ∈ C}.
Vemos que P = PS . Pelo teorema de Chvátal, P = PS é o casco convexo dos cliques de Gc. Um
clique em Gc é um conjunto de casamentos que não se cruzam dois a dois, ou seja, uma representação.
Portanto, PS é o casco convexo dos conjuntos de casamentos que representam uma subsequência
comum, isto é, PS = Plcs.
Nesta seção, descrevemos de forma completa e minimal o poliedro do problema do LCS através
de inequações lineares. Assim, qualquer solução básica ótima z∗ da relaxação linear da formulação
por estrelas (isto é, uma solução ótima que corresponde a um vértice do poliedro) é inteira e, logo,
representa um LCS. Portanto, podemos resolver o problema do LCS apenas resolvendo um programa
linear. Isso é apenas interessante em teoria, pois, na prática, já temos algoritmos que resolvem o
problema do LCS de forma muito mais eficiente que um algoritmo que usa a formulação por estrelas.
Como o problema de otimização sobre um poliedro e o problema de separação de suas inequações
são computacionalmente equivalentes [16], e conhecemos um algoritmo polinomial para separar
as inequações (uma versão mais simples do algoritmo de separação para o problema do RFLCS
descrito na Seção 5.2), então sabemos que é possível otimizar sobre o poliedro do problema do LCS
em tempo polinomial. Isso é consistente com o fato do problema do LCS ser resolvível em tempo
polinomial usando programação dinâmica.
Esta seção, porém, se reflete indiretamente na prática ao servir de apoio para a seção seguinte,
na qual desenvolvemos a base teórica para um algoritmo que resolve a variante sem repetições do
problema do LCS.
30
Capítulo 3. Formulações e poliedros
3.3 Formulações para RFLCS
Veremos nesta seção algumas características dos poliedros do problema do RFLCS e de um outro
problema equivalente. O algoritmo baseado em branch-and-cut implementado, que descreveremos
no Capítulo 5, é relacionado à formulação principal da subseção seguinte.
3.3.1 Formulação por estrelas estendidas
Uma primeira formulação para o problema do RFLCS é simplesmente adicionar à formulação do
problema do LCS a restrição de que queremos no máximo uma ocorrência de cada símbolo do
alfabeto na subsequência comum obtida. A seguir, estendemos tanto a formulação baseada em
cruzamento como a baseada em estrelas, e ambas as formulações são válidas para o problema do
RFLCS.
Para todo casamento (i, j) em C, seja zij uma variável que é 1 se o casamento (i, j) está na
representação da subsequência comum associada a z, ou é 0 caso contrário. Seja C(σ) o conjunto
dos casamentos em C que são do símbolo σ.
max
∑
(i,j)∈C
zij
s. a
∑
(i,j)∈C(σ)
zij ≤ 1 para todo σ em Σ,
zij + zkl ≤ 1 para todo (i, j) e (k, l) em C que se cruzam,
zij ∈ {0, 1} para todo (i, j) em C.
A formulação seguinte é baseada na formulação por estrelas do problema do LCS.
max
∑
(i,j)∈C
zij
s. a
∑
(i,j)∈C(σ)
zij ≤ 1 para todo σ em Σ,∑
(i,j)∈S
zij ≤ 1 para toda estrela maximal S ⊆ C,
zij ∈ {0, 1} para todo (i, j) em C.
Do ponto de vista de poliedros, a segunda formulação é mais forte que a primeira pelo mesmo
motivo que no problema do LCS (as inequações de estrela dominam as de cruzamento). Porém,
ainda vale tentar obter uma formulação mais forte ainda.
Lembremos que um casamento conflita com outro se eles se cruzam ou são do mesmo símbolo, e
que encontrar um RFLCS de duas sequências é equivalente a encontrar um conjunto de casamentos
que dois a dois não conflitam entre si. É natural então a formulação seguinte.
max
∑
(i,j)∈C
zij (formulação por conflitos)
s. a zij + zkl ≤ 1 para todo (i, j) e (k, l) em C que conflitam entre si,
zij ∈ {0, 1} para todo (i, j) em C.
A formulação acima nos lembra da formulação por cruzamentos para o problema do LCS. De
31
Capítulo 3. Formulações e poliedros
forma análoga à que fizemos com estrelas na seção anterior, estenderemos o conceito de conflito para
considerar conjuntos de casamentos em vez de pares. Defina uma estrela estendida como um
conjunto de casamentos que dois a dois conflitam entre si (ou seja, é um clique no grafo de conflito).
É verdade que, para toda estrela estendida maximal, podemos escolher apenas um casamento dela
para estar em uma representação de uma subsequência comum sem repetições.
a b c e c d a e
e
c
a
b
d
a
c
c
a b c e c d a e
e c a b d a c c
estrela estendida maximal
Seja zij uma variável como na formulação anterior: é 1 se o casamento (i, j) está na representação
da subsequência comum sem repetições associada a z, ou é 0 em caso contrário. A seguinte formulação
é válida para o problema do RFLCS.
max
∑
(i,j)∈C
zij (formulação por estrelas estendidas)
s. a
∑
(i,j)∈S
zij ≤ 1 para toda estrela estendida maximal S ⊆ C,
zij ∈ {0, 1} para todo (i, j) em C.
A formulaçãoacima é a base do algoritmo exato do Capítulo 5. Não é difícil ver que as inequações
da formulação acima dominam as inequações de todas as formulações anteriores. De fato, qualquer
par de casamentos que se cruzam ou que conflitam entre si, qualquer conjunto de todos os casamentos
de um mesmo símbolo, ou qualquer estrela maximal está contido em alguma estrela estendida
maximal.
Defina o poliedro do problema do RFLCS como
Prflcs := conv{z ∈ {0, 1}C | z representa uma subsequência comum sem repetições de X e Y }.
O poliedro Prflcs tem dimensão plena pois o vetor zero e os |C| vetores unitários eij para todo
(i, j) ∈ C estão em Prflcs e são afim-independentes.
As inequações da relaxação linear da formulação por estrelas estendidas,∑
(i,j)∈S
zij ≤ 1 para toda estrela estendida maximal S ⊆ C, e (inequação de estrela estendida)
zij ≥ 0 para todo (i, j) em C, (inequação de não-negatividade)
definem facetas de Prflcs.
32
Capítulo 3. Formulações e poliedros
Proposição 3.3.1. Para todo (i, j) em C, a inequação de não-negatividade zij ≥ 0 define uma
faceta de Prflcs.
Prova. Análoga à prova da Proposição 3.2.1, onde isso foi provado para Plcs.
Lema 3.3.2. Considere uma estrela estendida S ⊆ C. Então a inequação de estrela estendida∑
(i,j)∈S zij ≤ 1 define uma faceta de Prflcs se e só se S é maximal.
Prova. Análoga à prova da Proposição 3.2.2, onde foi provado que a inequação de estrela define
faceta para Plcs.
O poliedro associado à formulação não tem todos os vértices inteiros, pois o problema do RFLCS
é NP-difícil e, como já mencionado na primeira seção deste capítulo, não se espera ter uma descrição
explícita e completa do poliedro inteiro associado a um problema NP-difícil [25] (além disso, o
poliedro contém pontos fracionários que violam as inequações de buraco ímpar mais adiante).
Usaremos, no Capítulo 5, um método para adicionar as inequações de estrela estendida conforme
elas são necessárias. Essencialmente, otimizamos sobre um poliedro relaxado, procuramos uma
inequação de estrela estendida que é violada pela solução ótima do poliedro relaxado se existir,
adicionamos a inequação violada ao programa linear relaxado, e repetimos o processo até nenhuma
inequação de estrela estendida ser violada pela solução ótima de um poliedro relaxado. O problema
de encontrar tal inequação é chamado de problema da separação.
De acordo com as formulações que discutimos, o poliedro associado ao problema do RFLCS é
equivalente ao poliedro associado ao problema do conjunto independente máximo no correspondente
grafo de conflito. Assim, as inequações válidas para o poliedro do conjunto independente também
são válidas para o poliedro do RFLCS. Por exemplo, as seguintes inequações são válidas para o
problema do RFLCS, considerando o grafo de conflito:
∑
(i,j)∈B
zij ≤ |B| − 12 para todo buraco ímpar (odd hole) B ⊆ C, e∑
(i,j)∈A
zij ≤ 2 para todo anti-buraco ímpar (odd antihole) A ⊆ C.
a c b a d
b a d c a
buraco ímpar de
comprimento 5
a c b a d
b
a
d
c
a
anti-buraco ímpar
de comprimento 7
a b c a d c e
d c e a c b a
a b c a d c e
d
c
e
a
c
b
a
33
Capítulo 3. Formulações e poliedros
Um buraco ímpar é um circuito induzido de comprimento ímpar maior ou igual a 5, e um
anti-buraco ímpar é o complemento de um buraco ímpar. As duas inequações anteriores definem
facetas se o buraco ou anti-buraco ímpar for todo o conjunto de vértices do grafo de conflito [37].
Observe que essas inequações podem deixar o poliedro mais justo: no exemplo do buraco ímpar
dado, uma solução em que todos os casamentos destacados têm valor 12 (e os outros dois zero) é uma
solução fracionária válida para as inequações de estrela estendida que viola inequações de buraco
ímpar. O mesmo pode ser dito para o exemplo do anti-buraco ímpar dado, com uma solução em
que os casamentos destacados têm valor 13 e os outros zero.
Existem outras restrições que podem ser herdadas do problema do conjunto independente
máximo, mas elas costumam ser difíceis de se lidar. Discutiremos mais sobre a restrição de buraco
ímpar na Seção A.1 (apêndice).
3.3.2 Formulação por símbolos distintos
Descreveremos nesta seção uma formulação de programação inteira para um problema equivalente
ao problema do RFLCS.
Denotaremos uma subsequência comum com número máximo de símbolos (do alfabeto) distintos
por MSCS (maximum-symbol common subsequence). Dadas duas sequências X e Y , o problema
do MSCS é encontrar um MSCS de X e Y .
O problema do RFLCS e o problema do MSCS são equivalentes a menos de uma transformação
simples. Mais especificamente,
• Todo RFLCS de X e Y é um MSCS de X e Y .
• Para todo MSCS de X e Y , existe pelo menos um RFLCS de X e Y que é subsequência desse
MSCS (podendo ser ele próprio). Tal RFLCS pode ser obtido removendo símbolos repetidos
desse MSCS de forma a manter apenas uma ocorrência de cada símbolo.
Como consequência, o comprimento de um RFLCS é igual ao número de símbolos distintos de
um MSCS. Isto é, o valor ótimo de ambos os problemas são iguais. Note também que as soluções
viáveis do problema do MSCS contém as soluções viáveis do problema do RFLCS.
Exemplo 3.3.3. A figura ao lado mostra duas
sequências e todos os seus RFLCSs e MSCSs. Note
que todo RFLCS é um MSCS.
a b a c b
c b a a b
RFLCS
MSCS
subseq. comuns
a b c
ab ba cb aa bb
aab bab
Dado que conhecemos a formulação por estrelas para o problema do LCS, a seguinte formulação
é natural para o problema do MSCS.
Para todo (i, j) em C, seja zij uma variável binária como nas formulações anteriores: é 1 se
o casamento (i, j) está na representação da subsequência comum associada a z, ou é 0 em caso
contrário. Para todo σ em Σ, seja xσ uma variável binária igual a 1 se o símbolo σ ocorre na
solução, ou 0 caso contrário (na formulação seguinte, isso vale para uma solução ótima, mas não
necessariamente para qualquer solução viável; explicaremos isso melhor mais adiante). Seja C(σ) o
conjunto de casamentos em C que são do símbolo σ.
34
Capítulo 3. Formulações e poliedros
max
∑
σ∈Σ
xσ
s. a
∑
(i,j)∈S
zij ≤ 1 para toda estrela maximal S ⊆ C,
xσ ≤
∑
(i,j)∈C(σ)
zij para todo σ em Σ,
zij ∈ {0, 1} para todo (i, j) em C,
xσ ∈ {0, 1} para todo σ em Σ.
Obtemos, ao otimizar esse programa inteiro, um conjunto de casamentos que representa um
MSCS, e, se removermos casamentos de símbolos repetidos, o conjunto resultante representa um
RFLCS. De fato, na formulação, a primeira classe de inequações garante que z esteja associada a
uma representação de uma subsequência comum, e a segunda classe de inequações garante que xσ
seja 0 se não houver casamentos de símbolo σ na solução dada por z. Não é necessário forçar que a
variável xσ seja 1 se σ ocorre na solução, pois, ao maximizarmos a soma de todas essas variáveis,
isso sempre valerá já que xσ é limitado superiormente por 1. O poliedro mais adiante leva isso em
consideração.
Além disso, para todo σ em Σ, como zij é binária para todo (i, j) em C, e com a restrição xσ ≤ 1
implícita, xσ é limitado superiormente por um valor inteiro (0 ou 1). Logo, dado que o problema
é de maximização, xσ é binária na solução ótima mesmo sem forçar explicitamente que ela seja
binária. Portanto, para todo σ em Σ, a restrição xσ ∈ {0, 1} pode ser relaxada para as restrições
xσ ∈ R e xσ ≤ 1.
Considere o poliedro associado à formulação acima,
Pmscs := conv{(z, x) ∈ {0, 1}C × {0, 1}Σ | z representa uma subsequência comum de X e Y , e
xσ = 0 se σ não ocorre em z
(podendo ser 0 ou 1 caso contrário)}.
O resultado seguinte nos dá uma noção da força das inequações usadas na formulação anterior.
Lema 3.3.4. As seguintes restrições definem facetas de Pmscs:
(a) zij ≥ 0 para todo (i, j) em C tal que (i, j) não é o único casamento em C de seu símbolo;
(b)
∑
(i,j)∈S
zij ≤ 1 para toda estrela maximal S ⊆ C;
(c) xσ ≥ 0 para todo σ emΣ;
(d) xσ ≤
∑
(i,j)∈C(σ)
zij para todo σ em Σ.
Prova. Para provar que as restrições acima definem facetas, para cada caso, enumeraremos |C|+ |Σ|
vetores afim-independentes em Pmscs que satisfazem as inequações com igualdade. Supomos que
existe pelo menos um casamento em C de cada símbolo em Σ.
Denotamos por eij o vetor unitário para o casamento (i, j) e eσ o vetor unitário para o símbolo σ.
35
Capítulo 3. Formulações e poliedros
(a) zij ≥ 0 para todo (i, j) em C tal que (i, j) não é o único casamento em C de seu símbolo.
• vetor zero (1 vetor);
• vetores ekl para todo (k, l) em C, com (k, l) 6= (i, j) (|C| − 1 vetores);
• vetores eσ + ekl para todo σ em Σ, onde (k, l) é um casamento de símbolo σ diferente
de (i, j) (|Σ| vetores).
Um dos vetores deste último item não existe sem a suposição sobre (i, j) acima. Entretanto,
observe que se (i, j) é o único casamento de seu símbolo σ, a inequação zij ≥ xσ domina
zij ≥ 0 (dado que xσ ≥ 0) e também define faceta por ser uma inequação do tipo (d) (provado
mais adiante).
(b)
∑
(i,j)∈S
zij ≤ 1 para toda estrela maximal S ⊆ C.
• vetores eij para todo (i, j) em S (|S| vetores);
• vetores eij + ekl para todo (i, j) fora de S, onde (k, l) é um casamento de S que não cruza
com (i, j) ((k, l) existe pois S é maximal) (|C| − |S| vetores);
• vetores eσ + eij para todo σ em Σ tal que existe um casamento (i, j) de símbolo σ em S
(|Σ′| vetores para algum Σ′ ⊆ Σ);
• vetores eσ + eij + ekl para todo σ em Σ tal que não existe casamento de símbolo σ em S,
onde (i, j) é um casamento de símbolo σ fora de S e (k, l) é um casamento em S que não
cruza com (i, j) ((k, l) existe pois S é maximal) (|Σ| − |Σ′| vetores).
(c) xσ ≥ 0 para todo σ em Σ.
• vetor zero (1 vetor);
• vetores eij para todo (i, j) em C (|C| vetores);
• vetores eσ′ + eij para todo σ′ 6= σ em Σ, onde (i, j) é um casamento de símbolo σ′ (|Σ|−1
vetores).
(d) xσ ≤
∑
(i,j)∈C(σ)
zij para todo σ em Σ.
• vetor zero (1 vetor);
• vetores eij + eσ para todo (i, j) em C de símbolo σ (|C(σ)| vetores);
• vetores eij para todo (i, j) em C de símbolo diferente de σ (|C| − |C(σ)| vetores);
• vetores eσ′ + eij para todo σ′ 6= σ em Σ, onde (i, j) é um casamento de símbolo σ′ (|Σ|−1
vetores).
Para todos os casos acima, não é difícil ver que os vetores listados são afim-independentes. Nos
casos (a), (c) e (d), subtraímos o vetor zero dos outros vetores, e a matriz formada pelos vetores
como linhas na ordem dada, desconsiderando as colunas de zij , xσ e xσ respectivamente, é uma
matriz triangular com diagonal formada por 1s, o que significa que os vetores são linearmente
independentes. Já no caso (b), isso já vale sem precisar subtrair nenhum vetor de outros. Portanto,
em todos os casos, os vetores são afim-independentes.
36
Capítulo 3. Formulações e poliedros
A seguinte classe de inequações também é válida para Pmscs e define facetas.
Denote por estrela estendida especial (ou simplesmente estrela especial) um conjunto de
casamentos Sˆ de C tal que, para cada (i, j) e (k, l) em Sˆ, ou (i, j) e (k, l) se cruzam, ou (i, j) e (k, l)
não se cruzam mas são do mesmo símbolo σ e todo casamento de símbolo σ pertence a Sˆ (isto é,
C(σ) ⊆ Sˆ). Uma estrela especial maximal é um conjunto maximal desse tipo. Note que uma estrela
especial é uma estrela estendida.
Seja simb(Sˆ) o conjunto de símbolos σ tal que todo casamento de símbolo σ está em Sˆ e
existem pelo menos dois casamentos desse símbolo que não se cruzam. Seja rest(Sˆ) os casamentos
restantes, isto é, rest(Sˆ) = Sˆ r ∪σ∈simb(Sˆ)C(σ). Note que uma estrela é um caso particular de uma
estrela especial em que simb(Sˆ) = ∅ e rest(Sˆ) = Sˆ, e a classe de inequações abaixo inclui todas as
inequações de estrela.
A seguinte inequação é válida para Pmscs:∑
σ∈simb(Sˆ)
xσ +
∑
(i,j)∈rest(Sˆ)
zij ≤ 1 para toda estrela especial maximal Sˆ ⊆ C.
Denominamos a inequação acima de inequação de estrela especial.
É fácil ver que a inequação acima é válida. De fato, se escolhermos um casamento de Sˆ
de símbolo σ, não podemos escolher nenhum casamento em rest(Sˆ) ou de símbolo σ′ 6= σ em
simb(Sˆ) pois eles se cruzam (posso escolher outro casamento de símbolo σ que não cruza com ele se
σ ∈ simb(Sˆ), mas xσ ainda é limitado por 1).
Lema 3.3.5. Para qualquer estrela especial maximal Sˆ, a inequação de estrela especial Sˆ define
faceta de Pmscs.
Prova. Mostraremos |C| + |Σ| vetores afim-independentes em Pmscs que satisfazem a inequação
com igualdade.
Para todo (i, j) em Sˆ, seja
y1(i, j) =
{
eij se (i, j) está em rest(Sˆ), ou
eij + eσ caso contrário, onde σ é o símbolo de (i, j).
Para todo (i, j) em C r Sˆ, seja
y2(i, j) = eij + y1(k, l) tal que (k, l) é um casamento de Sˆ que não cruza com (i, j)
((k, l) existe pois Sˆ é maximal).
Para todo σ em Σr simb(Sˆ), seja
y3(σ) =
{
eij se existe casamento (i, j) de símbolo σ em Sˆ, ou
y2(i, j) caso contrário, onde (i, j) é um casamento de símbolo σ (fora de Sˆ).
Os vetores são os seguintes:
• vetores y1(i, j) para todo (i, j) em Sˆ (|Sˆ| vetores);
• vetores y2(i, j) para todo (i, j) em C r Sˆ (|C| − |Sˆ| vetores);
37
Capítulo 3. Formulações e poliedros
• vetores eσ + y3(σ) para todo σ em Σr simb(Sˆ) (|Σ| − |simb(Sˆ)| vetores);
• vetores eσ + eij + ekl para todo σ em simb(Sˆ), onde (i, j) e (k, l) são dois casamentos de
símbolo σ de Sˆ que não se cruzam ((i, j) e (k, l) existem pela definição de simb(Sˆ)) (|simb(Sˆ)|
vetores).
Provaremos indiretamente que os vetores listados são afim-independentes. Considere um hiper-
plano genérico ∑(i,j)∈C µijzij +∑σ∈Σ µσxσ = µ0. Se, colocando os vetores listados nesse hiperplano,
obtivermos uma única solução µ tal que µij = µ0 para todo casamento (i, j) em rest(Sˆ), µσ = µ0
para todo σ em simb(Sˆ) e µij = µσ = 0 para o restante dos casamentos (i, j) e símbolos σ, então o
único vetor de coeficientes (µ, µ0) possível é um múltiplo do vetor de coeficientes da inequação de
estrela especial, o que significa que os vetores são afim-independentes. Mostraremos que isso vale.
Pelo primeiro grupo de vetores, para todo (i, j) em rest(Sˆ), µij = µ0, e, para todo (i, j) em
Sˆ r rest(Sˆ), µij + µσ = µ0, onde σ é o símbolo de (i, j).
Pelo quarto grupo de vetores, para todo σ em simb(Sˆ), µσ + µij + µkl = µ0, onde (i, j) e (k, l)
são dois casamentos de símbolo σ que não se cruzam. Observe que (i, j) e (k, l) pertencem então
a Sˆ r rest(Sˆ). Logo, reescrevendo a segunda equação do primeiro grupo, µij = µkl = µ0 − µσ.
Aplicando isso na equação, temos que µσ + 2µ0 − 2µσ = µ0, isto é, µσ = µ0.
Voltando ao primeiro grupo de vetores, para todo (i, j) em Sˆ r rest(Sˆ), µij + µ0 = µ0, isto é,
µij = 0, pelo fato do símbolo de (i, j) estar em simb(Sˆ), junto com o fato anterior. Então,
µy1(i, j) = µ0 para todo (i, j) em Sˆ.
Pelo segundo grupo de vetores, para todo (i, j) em C r Sˆ, µij + µy1(k, l) = µ0, onde (k, l) é um
casamento em Sˆ que não cruza com (i, j). Logo, µij + µ0 = µ0, ou seja, µij = 0 para todo (i, j) em
C r Sˆ. Além disso, também obtemos que µy2(i, j) = µ0 para todo (i, j) em C r Sˆ.
Pelo terceiro grupo de vetores, para todo σ em Σr simb(Sˆ), µσ + µij = µ0 se existe casamento
(i, j) de símbolo σ em Sˆ, ou µσ + µy2(i, j) = µ0 caso contrário, para algum (i, j) em C r Sˆ de
símbolo σ. No primeiro caso, como σ /∈ simb(Sˆ), qualquer casamento de símbolo σ em Sˆ deve
estar em rest(Sˆ). Logo, nesse caso, µij = µ0, e, portanto, µσ = 0. No segundo caso, temos que
µσ + µ0 = µ0, isto é, µσ = 0.
Em resumo, temos que, para todo (i, j) em rest(Sˆ), µij = µ0, e, para todo σ em simb(Sˆ), µσ = µ0.
Para qualquer casamento (i, j) e símbolo σ no restante dos casos, µij = µσ = 0. Logo, os vetores
são afim-independentes.
Vale observar que, para qualquer σ em Σ, a inequação xσ ≤ 1 é dominada diretamente por uma
inequação de estrela especial se existir uma estrela especial maximal Sˆ tal que σ está em simb(Sˆ).
Se não existir, todos

Outros materiais