Universidade Federal do ABC Centro de Matemática, Computaç˜ao

Transcrição

Universidade Federal do ABC Centro de Matemática, Computaç˜ao
Universidade Federal do ABC
Centro de Matemática, Computação e Cognição (CMCC)
Pós-Graduação em Ciência da Computação
Omar Latorre Vilca
MÉTODOS PARA PROBLEMAS DE SELEÇÃO DE CADEIAS DE CARACTERES
Dissertação de Mestrado
Santo André - SP
2013
Omar Latorre Vilca
MÉTODOS PARA PROBLEMAS DE SELEÇÃO DE CADEIAS DE CARACTERES
Dissertação de Mestrado
Dissertação de Mestrado apresentada ao Curso de Pós-Graduação da Universidade
Federal do ABC como requisito parcial para obtenção do grau de Mestre em Ciência da
Computação
Orientador: Prof. Dr. Cláudio Nogueira de Meneses
Santo André - SP
2013
Ficha Catalográfica
Vilca, Omar Latorre.
Métodos para Problemas de Seleção de Cadeias de Caracteres /
Omar Latorre Vilca.
Santo André, SP: UFABC, 2013.
31 p.
Omar Latorre Vilca
MÉTODOS PARA PROBLEMAS DE SELEÇÃO DE CADEIAS DE CARACTERES
Essa Dissertação de Mestrado foi julgada e aprovada para a obtenção do grau
de Mestre em Ciência da Computação no curso de Pós-Graduação em Ciência da
Computação da Universidade Federal do ABC.
Santo André - SP - 2013
Prof. Dr. Ronaldo Cristiano Prati
Coordenador do Curso
BANCA EXAMINADORA
Prof. Dr. Cláudio Nogueira de Meneses
Profa. Dra. Maristela Oliveira dos Santos
Prof. Dr. João Paulo Gois
Prof. Dr. Ronaldo Cristiano Prati
AGRADECIMENTOS
À DEUS, por ter me dado condições de lutar e alcançar os objetivos pretendidos.
Ao Prof. Dr. Ronaldo Cristiano Prati, coordenador do Programa de Pós-Graduação
em Ciência da Computação, pelo esforço e dedicação e por estar sempre presente e sempre
disposto a resolver os problemas com os quais tivemos que vivenciar.
Ao Prof. Dr. Claudio Nogueira de Meneses, ogrigado pela oportunidade, pela orientação, pelos ensinamentos, ajuda e colaboração com o meu trabalho e pelas conversas e
conselhos ao longo do perı́odo do mestrado.
Ao Centro de Matemática, Computação e Cognição (CMCC) da Universidade Federal
do ABC (UFABC), pelo apoio na realização deste trabalho.
Agradeço a CAPES e UFABC pelos financiamentos, em bolsas, para o desenvolvimento
desta pesquisa.
E por fim, agradeço a todos que um dia acreditaram em mim.
Este trabalho contou com o auxı́lio financeiro das seguintes entidades:
• Universidade Federal do ABC - UFABC (bolsa de mestrado, institucional), de fevereiro/2011 a outubro/2011;
• Coordenação de Aperfeiçoamento de Pessoal de Nı́vel Superior - CAPES (bolsa de
mestrado, demanda social), de novembro/2011 a fevereiro/2013.
Resumo
Nesta pesquisa propomos métodos para resolver um problema de seleção de cadeias de
caracteres (strings) que surge na área de bioinformática. Este problema é conhecido pelo
nome Closest String Problem (CSP) e pode ser definido assim: dado um conjunto finito
S = {s1 , s2 , · · · , sn } com n strings, todas de mesmo tamanho m, sobre um alfabeto A,
deseja-se encontrar uma string x, de tamanho m, sobre A que minimiza o valor de d tal
que para cada string si ∈ S tem-se dH (x, si ) ≤ d. Por dH (x, s) queremos dizer a distância
de Hamming entre as strings x e s e ela é calculada tendo em conta o número de posições
em que as duas strings diferem. Por exemplo, se x = AT T e s = AT C, então dH (x, s) = 1,
pois x e s diferem apenas na última posição. O CSP pertence a classe de complexidade
computacional NP-difı́cil e são conhecidos algoritmos de aproximação e métodos exatos
para resolver esse problema. Como objetivo principal da pesquisa, desejamos desenvolver
métodos exatos baseados em programação linear inteira.
Palavras-chave: seleção de cadeias de caracteres, programação linear inteira, branchand-cut
1
Abstract
In this work we design methods to solve a string selection problem that arises in bioinformatics. This problem is called Closest String Problem (CSP) and is defined as: given
a finite set S = {s1 , · · · , sn } with n strings, every string of size m, over an alphabet A,
we want to find a string x, of size m, over A that minimizes the value d such that for
each string si ∈ S we have dH (x, si ) ≤ d. By dH (x, s) we mean the Hamming distance
between the strings x and s and it represents the number of positions the two strings differ.
For example, if x = AT T and s = AT C then dH (x, s) = 1, since x and s differ at the
last position. The CSP is NP-hard and several methods have been proposed to solve the
problem. Our main goal in this work is to design exact methods based on integer linear
programming.
Keywords: string selection, integer linear programming, branch-and-cut
2
Sumário
1 Introdução
4
2 Definições e Conceitos Básicos
6
2.1
Problemas de Seleção de Strings . . . . . . . . . . . . . . . . . . . . . . . .
6
2.2
Distância de Hamming . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9
2.3
Conceitos Básicos em Programação Linear . . . . . . . . . . . . . . . . . .
9
2.4
Programação Linear Inteira (PLI) . . . . . . . . . . . . . . . . . . . . . . . 10
2.4.1
Algoritmo de Cutting Planes . . . . . . . . . . . . . . . . . . . . . . 11
2.4.2
Algoritmo de Branch-and-Bound . . . . . . . . . . . . . . . . . . . 11
2.4.3
Algoritmo de Branch-and-Cut . . . . . . . . . . . . . . . . . . . . . 12
3 Trabalhos Anteriores
3.1
14
Heurı́stica para o CSP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
4 Estudo em Combinatória Poliédrica
16
4.1
Formulação em Programação Inteira . . . . . . . . . . . . . . . . . . . . . 16
4.2
Nova Classe de Planos de Corte e sua Separação . . . . . . . . . . . . . . . 18
4.3
Limitante Inferior Combinatório . . . . . . . . . . . . . . . . . . . . . . . . 21
5 Resultados Computacionais
23
5.1
Ambiente dos Experimentos . . . . . . . . . . . . . . . . . . . . . . . . . . 23
5.2
Instâncias de Teste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
5.3
Análise dos Resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
6 Comentários Finais
29
3
Capı́tulo 1
Introdução
Robert E. Bixby, em [2], define um problema de otimização combinatória como: Sejam E
um conjunto finito, S uma famı́lia de subconjuntos de E e w ∈ R|E| uma função peso de
valores reais definida sobre os elementos de E. O problema de otimização combinatória
associado é encontrar um conjunto S ∗ ∈ S tal que
w(S ∗ ) = max w(S)
S∈S
onde w(S) =
P
e∈S
w(e).
Nesta pesquisa desenvolveu-se métodos para resolver um problema de seleção de strings
(cadeia de caracteres), conhecido por Closest String Problem (CSP). O CSP é um relevante problema de otimização combinatória da área de bioinformática e tem aplicações
no desenvolvimento de remédios, conforme [5].
A definição do CSP é baseada no conceito de distância de Hamming: Dadas duas
strings quaisquer, s e t, de mesmo tamanho (número de caracteres), a distância de Hamming, denotada por dH (s, t), mede o número de posições em que s e t diferem. Por
exemplo, se s =CCACT e t =TACCA, então dH (s, t) = 4.
O CSP consiste em: dado um conjunto finito S ={s1 , s2 , · · · , sn } com n strings, todas
de mesmo tamanho m, sobre um alfabeto A, deseja-se encontrar uma string x, de tamanho
m, sobre A, que minimiza o valor de d tal que para cada string si ∈ S tenha dH (x, si ) ≤ d.
Em outras palavras, desejou-se encontrar uma string x que é mais próxima a todas as
strings em S, considerando como medida de proximidade a distância Hamming.
Em termos de complexidade computacional, o CSP pertence a classe N P-difı́cil, conforme provado na referência [5]. Existem alguns algoritmos de aproximação para resolver
o CSP, que podem ser vistos nas referências [1, 5, 6]. Em termos de resolução exata do
CSP, é do nosso conhecimento que existe apenas a abordagem descrita na referência [8],
que usa programação linear inteira.
4
Em [7] são apresentados modelos matemáticos para problemas de seleção de strings,
que mantêm uma estreita ligação com o CSP. Estes problemas são definidos formalmente
na subseção 2.1. Decidimos estudar o CSP porque:
• Ele é um problema que surge durante o processo de criação de certos remédios;
• Métodos desenvolvidos para resolver o CSP podem ajudar na compreensão de como
resolver os problemas listados na subseção 2.1;
• Acredita-se que é possı́vel desenvolver um método exato que é melhor do que o
atualmente melhor método ([8]) para o CSP.
As contribuições com esta pesquisa são as seguintes:
• Identificou-se uma classe de inequações válidas (cortes) para o poliedro apresentado
em [8]. Criou-se um algoritmo de tempo polinomial em n, que separa essas inequações;
• Criou-se uma fórmula para o cálculo de limitante inferior no valor de uma solução
ótima.
No capı́tulo 2 definimos alguns problemas associados ao CSP e conceitos básicos sobre
programação linear inteira. No capı́tulo 4 é apresentada uma formulação em programação
linear inteira para o CSP, tal como descrita em [8], bem como uma nova classe de inequações e uma rotina de separação destas inequações. No capı́tulo 5 mostramos experimentos
computacionais. No capı́tulo 6 apresentamos os comentários finais desta pesquisa.
5
Capı́tulo 2
Definições e Conceitos Básicos
Neste capı́tulo define-se cinco problemas associados ao Closest String Problem e métodos
que podem ser utilizados para resolvê-los. Além disso, são lembrados vários conceitos e
técnicas usadas para solucionar problemas de otimização combinatória.
2.1
Problemas de Seleção de Strings
Nesta seção define-se formalmente cinco problemas de seleção de strings associados ao
CSP, cujas versões de decisão pertencem a classe de complexidade NP-Completo, conforme
provado em [5]. Cada problema é exemplificado por uma instância e uma solução. Como
ficará claro no próximo capı́tulo, o estudo realizado para resolver instâncias do CSP é útil
para resolver instâncias daqueles problemas. As definições formais desses problemas são
as seguintes:
Farthest String Problem (FSP)
Dado um conjunto finito S ={s1 , s2 , · · · , sn } com n strings, cada uma de tamanho
m, sobre um alfabeto A, deseja-se encontrar uma string x de tamanho m sobre A, que
maximiza d tal que para qualquer string si ∈ S, tem-se dH (x, si ) ≥ d.
Como exemplo de uma instância do Farthest String Problem considere o conjunto de
strings S = {AAACA,GTCTA,AATGC,CTTAC}. Uma solução ótima é dada pela string
x =TCGAG com d = 4.
Closest Substring Problem (CSubSP)
Dado um conjunto finito S = {s1 , s2 , · · · , sn } com strings de tamanho no mı́nimo
m sobre um alfabeto A, deseja-se encontrar uma string x de tamanho m sobre A, que
minimiza d tal que para toda string si in S, a relação dH (x, y) ≤ d é verdadeira para
alguma substring y, de tamanho m, de si .
6
Como exemplo considere S = {AAT,CCAA,CCTA,TCA}. Uma solução viável é dada
pela string ACA com d = 2.
Farthest Substring Problem (FSubSP)
Dado um conjunto finito S ={s1 , s2 , . . . , sn } com strings de tamanho no mı́nimo m
sobre um alfabeto A, deseja-se encontrar uma string x de tamanho m sobre A, que
maximiza d tal que para toda string si in S e toda substring y, de tamanho m, de si ,
tem-se dH (x, y) ≥ d.
Como exemplo considere S = {AAT,CCAA,CCTA,TCA}. Uma solução viável é a
string ACA com d = 1.
Close to Most String Problem (CMSP)
Dado um conjunto finito S = {s1 , s2 , . . . , sn } com strings de tamanho m sobre um
alfabeto A e um limiar k > 0, deseja-se encontrar uma string x de tamanho m sobre A,
que maximiza o número de strings si ∈ S tal que dH (x, si ) ≤ k.
Como exemplo considere S = {AATCC,CCAAT,CCTAC,TCACC}. Se k = 3, então
uma solução ótima é CCTCT com quatro strings satisfazendo dH (x, si ) ≤ 3. Se k = 2,
então uma solução ótimza é ACAAC e três strings respeitam dH (x, si ) ≤ 2.
Distinguishing String Selection Problem (DSSP)
Dados dois conjuntos finitos de strings Sc e Sf , todas as strings de tamanho no mı́nimo
m, sobre um alfabeto A, e dois números inteiros positivo kc e kf , deseja-se encontrar uma
string x de tamanho m sobre A tal que para cada string sc ∈ Sc , existe alguma substring
yc , de tamanho m, de sc satisfazendo dH (x, yc ) ≤ kc , e para toda substring yf , de tamanho
m, de sf ∈ Sf tem-se dH (x, yf ) ≥ kf .
Como exemplo, considere Sc = {AATCC,CCAAT,CCTAC,TCACC} e o conjunto
Sf = {AATAA,CCACT,GGTAC,TCAAC}. Se kc = 3 e kf = 2, então ACACC é uma
solução viável.
Observe que os quatro primeiros problemas acima são problemas de otimização, enquanto o último é um problema de decisão. Como dito no inı́cio deste capı́tulo, estes cinco
problemas mantêm estreita relação com o CSP.
A figura a seguir mostra as relações entre os problemas, em termos das reduções, e
consequentes complexidades computacionais. Por 2SAT, 3SAT e ISP queremos indicar
os problemas 2-satisfatibilidade, 3-satisfatibilidade e Independent Set Problem, respectivamente. Lembre que é conhecido um algoritmo determinı́stico de tempo polinomial para
o 2SAT e que os problemas 3SAT e ISP pertencem a classe NP-Completo.
–
7
3SAT
[5]
[5]
DSSP
[5]
FSP
FSubSP
[5]
CSP
[5]
[5]
CSubSP
DSSP
ISP
[3]
FFMSP
[3]
[3]
2SAT
CMSP
Figura 2.1: Reduções entre problemas definidos nesta seção e problemas clássicos de
otimização combinatória
8
2.2
Distância de Hamming
Uma métrica em um conjunto X é uma função, chamada função de distância ou simplesmente distância, dada por:
d : X × X → <,
onde < é o conjunto dos números reais. Para todo x, y, z ∈ X, esta função precisa
satisfazer as seguintes condições:
1. d(x, y) ≥ 0 (não-negatividade)
2. d(x, y) = 0 se e somente se x = y (identidade)
3. d(x, y) = d(y, x) (simetria)
4. d(x, z) ≤ d(x, y) + d(y, z) (desigualdade triangular).
Seja (Fm )n o conjunto de todas as n-tuplas ordenadas a = a1 a2 ...an onde cada ai ∈ Fm .
Fm é um alfabeto, o m-ésimo elemento é obtido do conjunto de sequências de sı́mbolos
onde cada sı́mbolo é escolhido do conjunto Fm = {λ1 , λ2 , ..., λm } de m elementos diferentes. A distância de Hamming entre dois vetores x e y de (Fm )n é o número de posições
nas quais eles diferem. Isto é denotado por dH (x, y). Por exemplo, no (F2 )5 temos
dH (00111, 11001) = 4, enquanto em (F3 )4 obtemos dH (0122, 1220) = 3.
A distância de Hamming é uma função distância legı́tima ou uma métrica que deve satisfazer as seguintes condições, para todo x, y, z ∈ (Fm )n :
(i) dH (x, y) ≥ 0
(ii) dH (x, y) = 0 se e somente se x = y
(iii) dH (x, y) = dH (y, x)
(iv) dH (x, z) ≤ dH (x, y) + dH (y, z).
2.3
Conceitos Básicos em Programação Linear
Como é pretendido resolver instâncias do CSP utilizando uma abordagem baseada em
combinatória poliédrica, esta seção relembra alguns conceitos básicos em Programação
Linear. Os teoremas e definições abaixo foram compilados de [4, 9, 12].
Um problema de Programação Linear (PL) pode ser definido como o problema de
maximizar ou minimizar uma função linear sobre uma região descrita por um conjunto
9
de inequações e equações lineares. Os pontos nesta região formam o conjunto de soluções
viáveis do problema PL. Tal problema pode ser escrito na forma de matriz como:
min {cx : Ax ≥ b, x ∈ Rn+ },
onde c ∈ Rn , A é uma matriz m × n de constantes reais e b ∈ Rm .
Teorema 2.1. O conjunto de soluções viáveis X = {x : Ax ≥ b, x ∈ Rn+ } para o problema
é um conjunto convexo, i.e., qualquer ponto, exceto um vértice, em X é uma combinação
linear convexa de outros dois pontos em X .
Definição 2.1. O conjunto convexo X = {x : Ax ≥ b, x ∈ Rn+ } é denominado poliedro.
Se X é limitado, i.e., X ⊆ {x : −w ≤ xj ≤ w, ∀ j ∈ {1, 2, · · · , n}} para algum w ∈ R+ ,
então X é chamado de politopo.
Definição 2.2. Um vértice de um poliedro X é qualquer ponto x ∈ X o qual não pode
ser expresso como uma combinação convexa de outros pontos de X \{x}.
Teorema 2.2. Se o valor ótimo de uma função linear num poliedro X ⊆ Rn é finito, então
ele é atingido em pelo menos um vértice. Se este for obtido em mais que um vértice, então
pode ser obtido também por qualquer ponto que seja uma combinação linear convexa destes
vértices.
Teorema 2.3. Um problema de PL pode ser resolvido em tempo polinomial sobre n, m
e θ, onde n é o número de variáveis do problema, m é o número de restrições, e θ é o
maior coeficiente da matriz A.
2.4
Programação Linear Inteira (PLI)
Nesta seção discutimos alguns métodos normalmente utilizados na resolução de problemas,
que admitem uma formulação em programação linear, onde exige-se soluções inteiras. Os
conceitos discutidos nesta seção foram compilados de [4, 10, 13].
Considere o problema de programação linear abaixo:
min {cx : Ax ≥ b, x ∈ Rn+ },
onde c ∈ Rn , A é uma matriz m × n de constantes reais e b ∈ Rm .
Se as variáveis são restritas a inteiros, x ∈ Zn+ , ao invés de x ∈ Rn+ , o problema é
chamado de problema de Programação Linear Inteira. Além disso, se as variáveis são
restritas a valores 0 ou 1, temos um problema PLI 0-1. As soluções do problema PLI 0-1
são pontos em {0, 1}n satisfazendo o sistema linear Ax ≥ b.
10
Geralmente problemas PLI 0-1 pertencem a classe NP-difı́cil. Uma maneira de resolver
estes problemas é utilizando suas relaxações lineares. Numa relaxação linear as restrições
de integralidade são substituı́das por restrições lineares. Existem duas abordagens clássicas para resolver problemas PLI 0-1 utilizando relaxações lineares: (a) algoritmo de
Cutting Planes Fracionário (ACPF) e o algoritmo de branch-and-bound ou (b) enumeração implı́cita. Denotaremos por S o conjunto de soluções viáveis de um problema PLI
0-1.
2.4.1
Algoritmo de Cutting Planes
ACPF são baseados no uso de inequações válidas (cortes) para S, i.e, inequações que são
satisfeitas por todos os pontos de S.
A cada iteração i de ACPF, uma relaxação LP i do problema P LI é resolvida. Seja
xi uma solução ótima obtida ao se resolver a relaxação linear LP i . Se xi está em S, o
algoritmo pára, retornando xi como uma solução ótima do problema P LI. Caso contrário,
a relaxação deve ser melhorada. Para isto, encontra-se uma desigualdade válida πx ≥ π0
para S que é violada por xi . Uma nova iteração é executada para a relaxação LP i+1 ,
obtida de LP i incluindo-se a desigualdade πx ≥ π0 .
Sejam z i e z i+1 os valores das soluções ótimas de LP i e LP i+1 respectivamente, isto
é, z i = cxi e z i = cxi+1 . Assumindo que o P LI é um problema de minimização, tem-se
que z i+1 ≥ z i , ou seja, o limitante inferior fornecido pelo valor ótimo da relaxação linear
cresce monotonicamente a cada iteração, aproximando-se do valor ótimo do P LI.
O estudo inicial de adição de desigualdades válidas para problemas PLI gerais foi feito
por Gomory na década de 50. Embora o algoritmo proposto por ele sempre termine em
tempo finito, as desigualdades que ele sugeriu para adicionar à formulação (cortes de
Gomory) não eram eficientes na prática, pois o algoritmo torna-se muito lento.
Mais tarde, percebeu-se que o motivo do insucesso obtido pela aplicação dos cortes de
Gomory, era decorrente do seu excesso de generalidade. Independente do problema P LI
que se esteja resolvendo, sempre é possı́vel gerar um corte de Gomory que elimina uma
solução contı́nua. No entanto, esse corte pode não ser suficiente para capturar a estrutura
da envoltória convexa das soluções inteiras do P LI. Cortes com essa propriedade são o
objeto de estudo da Combinatória Poliédrica que fez ressurgir, principalmente a partir da
década de 80, o interesse pelos algoritmos de corte.
2.4.2
Algoritmo de Branch-and-Bound
Branch-and-Bound são esquemas enumerativos fundamentados em duas operações básicas.
11
A primeira é a decomposição do problema original em subproblemas. A segunda operação
envolve o cálculo de limites inferiores (ou superiores) ao valor da função objetivo. O
propósito é acelerar o processo de descarte de subproblemas que não podem gerar soluções
promissoras, diminuindo, consequentemente, a enumeração.
Normalmente, a decomposição é construı́da recursivamente. Isto permite uma representação gráfica de todo o processo em termos de uma árvore de enumeração. Nesta
representação, os filhos de um dado nó formam a decomposição da região viável de seu
pai.
Em geral, para problemas P LI 0-1, a árvore de enumeração é uma árvore binária.
Cada nó i da árvore corresponde a uma relaxação linear LP i do problema P LI definido
em um subconjunto S i de S. Seja xi uma solução ótima encontrada para LP i e z i = cxi .
Dependendo do valor de z i (bound), o nó i pode ser expandido (branching) para outros dois
nós (seus filhos) ou pode ser cortado (ou podado), i.e, o subconjunto de soluções viáveis do
nó i é particionado em dois novos subconjuntos ou ele não será mais particionado durante
os passos seguintes do algoritmo. O algoritmo termina quando todos os nós estiverem
podados. Retorna-se como solução do P LI, a solução inteira do nó da árvore com menor
valor (para um problema de minimização) de função objetivo.
2.4.3
Algoritmo de Branch-and-Cut
Seja Conv(S) a envoltória convexa do conjunto viável S. A envoltória convexa de S é
um poliedro e portanto, pode ser descrita por um sistema de desigualdades e igualdades
lineares. Se o sistema linear que descreve completamente Conv(S) está disponı́vel, o
problema P LI pode, em princı́pio, ser resolvido eficientemente por programação linear,
visto que todos os pontos extremos são soluções viáveis inteiras em S (veja definição 2.2 e
teorema 2.3). Infelizmente, para problemas que pertencem a classe N P -difı́cil, geralmente
o número de desigualdades de tal sistema é exponencial, no tamanho da entrada, e somente
algumas desigualdades da descrição de Conv(S) são conhecidas.
Assuma, portanto que uma certa classe F de desigualdades válidas para Conv(S) são
conhecidas. Além disso, dado um ponto qualquer x ∈ Rn+ assuma que dispõe-se de um
algoritmo que procura por uma desigualdade em F que é violada por x. Tal algoritmo é
chamado uma rotina de separação para F.
Branch-and-Cut é um método para resolver problemas PLI, que incorpora uma fase
de cutting plane ao algoritmo de branch-and-bound. Na fase de cutting plane o algortimo
só irá gerar desigualdades que pertençam à classe F, definida anteriormente.
Para cada nó i da árvore de enumeração, P i = {x ∈ Rm+n : Ai x ≥ b, 0 ≤ x ≤ 1} é o
politopo correspondente a relaxação linear LP i . Se xi é a solução ótima desta relaxação
12
linear e ela tem variáveis fracionárias, a rotina de separação é chamada para procurar
uma desigualdade violada em F. Se a rotina de separação retorna uma desigualdade
πx ≥ π0 , esta desigualdade é incluı́da no sistema de desigualdades definindo P i , e LP i é
resolvido novamente. Continuamos fazendo isto até xi ser inteiro ou z i ser maior do que
o atual upper bound disponı́vel, ou a rotina de separação falhar em produzir uma nova
desigualdade em F que corte o ponto xi . Neste último caso, uma variável é escolhida para
fazer um branching.
Uma aplicação bem sucedida de método de branch-and-cut para resolver problemas
difı́ceis de P LI 0-1 é a relatada em [11], neste caso para o Traveling Salesman Problem.
O sucesso de algoritmos de branch-and-cut depende muito do conhecimento da estrutura
de Conv(S).
13
Capı́tulo 3
Trabalhos Anteriores
Neste capı́tulo descrevemos um trabalho encontrado na literatura cientı́fica que trata o
CSP. Este trabalho propõe uma heurı́stica e três modelos matemáticos para o CSP e
mostra vários resultados computacionais.
3.1
Heurı́stica para o CSP
A heurı́stica proposta em [8] gera soluções iniciais viáveis para o CSP e realiza uma busca
local nessas soluções. Verifica-se que o algoritmo 1 gera resultados iniciais e posteriormente
no algoritmo 2 constroem-se as soluções a partir da solução inicial. Impressionantemente,
este algoritmo é capaz de produzir resultados de excelente qualidade, conforme comprovam
os experimentos computacionais mostrados no capı́tulo 5.
O algoritmo 1 seleciona uma das strings em S e a modifica até que uma solução localmente ótima seja encontrada. Conforme provado em [8], o algoritmo 1 tem complexidade
de tempo O(nmN ), para N ≥ n.
No primeiro passo, o algoritmo procura por uma solução s ∈ S que seja a mais próxima
a todas as demais strings em S. No segundo passo, as distâncias d entre s e o resto das
strings são calculadas. No último passo do algoritmo um procedimento de busca local é
aplicado como segue:
• Seja r uma string em S tal que para dH (r, si ), onde i ∈ {1, · · · , n}, seja a máxima,
e seja s uma solução atual. Logo, para i ∈ {0, ..., m}, se si 6= ri então trocamos os
valores si por ri cuja solução s tende a melhorar. A seguir tal troca é efetuada e a
distância Hamming entre s e as demais strings em S são atualizadas.
• Após analisar as m posições, uma nova string r é selecionada entre as strings em S,
que é a mais afastada das s soluções atuais logo,
14
Input: Instância S = {s1 , · · · , sn }
Output: String s, distância d
s ← {y ∈ S | minsi ∈S dH (y, si )}
d ← maxi∈{1,...,n} dH (s, si )
Melhora Solução(s, d, N )
Algoritmo 1: Gera soluções viáveis para o CSP
Input: instância S, solução corrente s, distância d e parâmetro N (número de
iterações)
Output: solução resultante s e distância d
for k ← 1 to n do
d0k ← dk ← dH (sk , s)
end
for i ← 1 to N do
b ← i tal que dH (si , s) = d /* resolva o empate aleatoriamente */
for j ← 1 to m tal que sbj 6= sj do
max ← −1
for k ← 1 to n tal que k 6= b do
if (sj = skj ) e (sbj 6= skj ) then dk ← dk + 1
else if (sj 6= skj ) e (sbj = skj ) then dk ← dk − 1
if (max < dk ) then max ← dk
end
if d ≥ max /* não é pior */ then
d ← max; tj ← sbj
for k ← 1 to n do d0k ← dk
else
for k ← 1 to n do dk ← d0k
end
end
end
Algoritmo 2: Terceiro passo do Algoritmo 1: Melhora Solução
• O processo se repete continuamente. O número de repetições é controlado pelo
parâmetro N . Os passos em detalhe da busca local são apresentados no algoritmo 2
15
Capı́tulo 4
Estudo em Combinatória Poliédrica
Focados no estudo poliédrico do Closest String Problem (CSP), alcançamos os seguintes
resultados:
(a) Uma classe de inequações válidas para uma formulação proposta em [8] e
(b) Um algoritmo de complexidade polinomial que separa as inequações daquela classe.
Os resultados mostrados neste capı́tulo fazem parte de uma colaboração com o Prof.
Giuseppe Lancia, que trabalha no Department of Mathematical and Computer Science,
University of Udine, Italy.
Começamos o estudo relembrando uma formulação em programação Linear Inteira 0-1
(PLI 0-1) para o CSP, descrita em [8], em seguida apresentamos uma nova classe de planos
de corte e então um algoritmo de branch-and-cut.
4.1
Formulação em Programação Inteira
Em [8] são apresentadas três formulações em PLI 0-1 para o CSP. A terceira delas é baseada no teorema a seguir, que reduz o espaço das soluções viáveis para qualquer instância
do CSP.
Teorema 4.1. [8] Dada uma instância do Closest String Problem, existe uma solução
ótima onde o caracter ótimo na posição k está também na posição k em uma das strings
no conjunto S = {s1 , s2 , . . . , sn } de strings.
Exemplo 4.1. Seja S = {AATCC,CCAAT,CCTAC,TCACC}. Defina Vk = ∪ni=1 {sik }
para k = 1, . . . , m. Então os conjuntos Vk são: V1 = {A, C, T }, V2 = {A, C}, V3 =
{A, T }, V4 = {A, C}, V5 = {C, T }. O Teorema 4.1 garante que para encontrar uma solução
16
ótima, x = (x1 , x2 , x3 , x4 , x5 ), é suficiente atribuir ao componente xk , um elemento do
conjunto Vk para j = 1, . . . , 5. Assim, x =ACTAT é, por exemplo, uma solução viável. A partir da seguinte definição para as variáveis binárias xj,k
(
xj,k =
1 se o caracter j é usado na posição k em uma solução
0 caso contrário
os autores em [8] propuseram a formulação:
min d
X
s.a.:
xj,k = 1
(4.1)
k = 1, . . . , m
(4.2)
i = 1, . . . , n
(4.3)
j ∈ Vk ; k = 1, . . . , m
(4.4)
j∈Vk
d≥m−
m
X
xsik ,k
k=1
xj,k ∈ {0, 1}
d ≥ 0 e inteiro
(4.5)
P
Note que esta formulação tem m + n restrições e 1 + m
k=1 |Vk | variáveis de decisão. A
restrição (4.2) faz com que cada vetor solução x tenha na posição k um dos caracteres em
Vk . A restrição (4.3) calcula a distância de Hamming entre o vetor solução x e as strings
em S. A restrição (4.4) faz com que as variáveis xj,k assumam valores 0 ou 1, enquanto
que a restrição (4.5) garante que a variável d seja um número inteiro não negativo. Por
motivo óbvios, desejamos minimizar o valor de d.
Conforme relatado em [8], a formulação mostrada acima é muito forte. Isto é, os
valores das relaxações lineares, para as várias instâncias testadas, tiveram valores muito
próximos aos valores das soluções ótimas encontradas.
Os resultados descritos naquela referência mostraram evidências de que o método
branch-and-bound, lá utilizado, teve mais dificuldades para resolver instâncias com alfabetos com poucos caracteres. Por exemplo, instâncias com alfabeto binário mostraram-se
mais difı́ceis, para o branch-and-bound, do que instâncias cujo alfabeto tinha quatro caracteres. Esta relação é investigada no capı́tulo 5, Experimentos Computacionais.
Com o intuito de melhorar ainda mais a formulação descrita acima, decidimos procurar
por novas classes de cortes. Na seção a seguir propõe-se uma classe de cortes e um
algoritmo que tem complexidade de tempo polinomial em n e m. Ressalta-se que esta é
a principal contribuição do nosso trabalho.
17
4.2
Nova Classe de Planos de Corte e sua Separação
Considere o Programa Linear (PL) obtido a partir da relaxação da formulação descrita
na seção anterior. Isto é, considere

min d



P


k = 1, . . . , m

j∈Vk xj,k = 1
 s.a.:
Pm
PL :
d ≥ m − k=1 xsik ,k i = 1, . . . , n




0 ≤ xj,k ≤ 1
j ∈ Vk ; k = 1, . . . , m



d≥0
Note os domı́nios das variáveis xj,k e d no programa linear acima.
Assuma que temos uma solução viável, de valor D, para uma instância do CSP. Possivelmente uma boa solução viável, assim que D é provavelmente ótimo. Esta boa solução
viável poderia, por exemplo, ser obtida utilizando um procedimento de arredondamento
a partir da solução da relaxação linear da formulação acima ou a heurı́stica descrita na
seção 3.1.
Seja S = {s1 , s2 , ..., sn }, com |si | = m para i = 1, . . . , n. Tome qualquer string si ∈ S
e considere qualquer subconjunto B de si consistindo de D caracteres. Comparando-se
as correspondentes posições de B em si , tem-se que uma solução ótima para S não pode
ser diferente em todos os caracteres em B, caso contrário esta solução teria valor maior
ou igual a D. Como já tem-se uma solução de valor D, então procura-se por uma solução
de valor menor ou igual D − 1. Portanto, concluı́-se que
X
xsik ,k ≥ 1
(4.6)
k∈Ind(B)
é uma inequação válida (corte) para o PL, onde Ind(B) é o conjunto das ı́ndices de B em
si .
Exemplo 4.2. Seja S = {s1 , s2 , s3 }, onde s1 = ACT , s2 = CCG e s3 = T CA. Considerando o resultado no Teorema 4.1, tem-se que uma solução ótima x = (x1 , x2 , x3 ) para S
satisfaz x1 ∈ V1 = {A, C, T }, x2 ∈ V2 = {C} e x3 ∈ V3 = {A, G, T }. Observe que a string
x = ACG é uma solução viável e tem valor 2.
Para s1 = ACT , as subsequências de comprimento dois são AC, AT, CT . A partir destas subsequências, obtemos os seguintes conjuntos de ı́ndices Ind(AC) = {1, 2},
Ind(AT ) = {1, 3} e Ind(CT ) = {2, 3}. Assim, os cortes obtidos ao considerar s1 = ACT
18
são:
xA,1 + xC,2 ≥ 1
xA,1 + xT,3 ≥ 1
xC,2 + xT,3 ≥ 1
Aplicando-se a mesma ideia para s2 = CCG, obtemos os cojuntos de ı́ndices Ind(CC) =
{1, 2}, Ind(CG) = {1, 3} e Ind(CG) = {2, 3} e portanto os cortes:
xC,1 + xC,2 ≥ 1
xC,1 + xG,3 ≥ 1
xC,2 + xG,3 ≥ 1
Finalmente, para s3 = T CA obtem-se os cojuntos de ı́ndices Ind(T C) = {1, 2}, Ind(T A) =
{1, 3} e Ind(CA) = {2, 3} e portanto os cortes:
xT,1 + xC,2 ≥ 1
xT,1 + xA,3 ≥ 1
xC,2 + xA,3 ≥ 1
Com isto concluı́-se o exemplo.
m
Existem n × D inequações possı́veis (isto é um número exponencial, visto que D
pode ser proporcional a m). Agora mostra-se como encontrar um corte violado (se ele
existe) em tempo polinomial.
Teorema 4.2. Inequações (4.6) podem ser separadas em tempo polinomial, nominalmente
em O(nm log m).
Demonstração. Suponha que x∗ é uma solução fracionária ótima obtida pela relaxação
linear. Considere cada string si ∈ S, uma por vez. Para k = 1, . . . , m defina
aj = x∗si ,k
k
Por exemplo, para s1 temos
a1 = x∗s1 ,1 , a2 = x∗s1 ,2 , a3 = x∗s1 ,3 , . . . , am−1 = x∗s1
1
2
m−1 ,m−1
3
, am = x∗s1m ,m .
Considerando o Exemplo 4.2, temos para s1 = ACT : a1 = x∗A,1 , a2 = x∗C,2 , a3 = x∗T,3 .
Agora ordene os aj em ordem não decrescente, ap(1) ≤ ... ≤ ap(m) , e denote por B o
conjunto dos primeiros D valores nesta ordem dos aj (isto é, B = {p(1), ..., p(D)}). Então
19
B alcança a mı́nima soma possı́vel de x∗ com relação a si . Se esta soma for menor que 1,
então teremos encontramos uma inequação (4.6) violada; caso contrário não há inequações
P
violadas para si , e então passamos para a análise de si+1 . Ou seja, se D
k=1 ap(k) < 1 então
PD
a inequação k=1 xsi [p(k)],p(k) ≥ 1 precisa ser incluı́da no modelo linear.
Para mostrar como ocorre o funcionamento do algoritmo considere o seguinte exemplo.
Exemplo 4.3. Seja S = {AT T GGA, CT GAT G, CT GACT, AGT CGA, GCCT GT } uma
instância do CSP. A partir do conjunto S contrua os conjuntos Vi da seguinte maneira:
V1 = {A, C, G}, V2 = {C, G, T }, V3 = {C, G, T }, V4 = {A, C, G, T }, v5 = {C, G, T } e
v6 = {C, G, T }. O correspondente modelo em programação linear é:
min
s.a. :
d
xA,1 + xC,1 + xG,1 = 1
xC,2 + xG,2 + xT,2 = 1
xC,3 + xG,3 + xT,3 = 1
xA,4 + xC,4 + xG,4 + xT,4 = 1
xC,5 + xG,5 + xT,5 = 1
xA,6 + xG,6 + xT,6 = 1
d + xA,1 + xT,2 + xT,3 + xG,4 + xG,5 + xA,6 ≥ 6
d + xC,1 + xT,2 + xG,3 + xA,4 + xT,5 + xG,6 ≥ 6
d + xC,1 + xT,2 + xG,3 + xA,4 + xC,5 + xT,6 ≥ 6
d + xA,1 + xG,2 + xT,3 + xC,4 + xG,5 + xA,6 ≥ 6
d + xG,1 + xC,2 + xC,3 + xT,4 + xG,5 + xT,6 ≥ 6
0 ≤ xj,k ≤ 1
j ∈ Vk ; k = 1, . . . , 6
d≥0
Uma solução ótima para o programa linear acima é dada por: d = 3.666667, xA,1 =
0.75, xC,1 = 0.25, xT,2 = 0.583333, xG,2 = 0.416667, xG,3 = 1.0, xC,4 = 0.166667, xT,4 =
0.833333, xG,5 = 1.0, xG,6 = 0.5, xT,6 = 0.5 e todas as outras variáveis têm valores iguais
a zero. Sendo d = 3.666667 segue que, em uma solução ótima inteira, o valor de d
precisa ser maior ou igual a 4. Adicionando o plano de corte d ≥ 4 ao programa linear e
resolvendo-o novamente, obtemos a solução: d = 4.0, xA,1 = 0.5, xC,1 = 0.5, xT,2 = 0.5,
xG,2 = 0.5, xG,3 = 1.0, xT,4 = 1.0, xG,5 = 1.0, xG,6 = 1.0 e todas as outras variáveis têm
valores iguais a zero.
Precisamos encontrar uma solução viável com D = 5. Pode-se fazer isto por tentativa
e erro. Considere a seguinte solução para S, x = AT GT CG. Assim, as distâncias de
20
Hamming de x para as strings em S são:
d(x, s1 ) = d(AT T GGA, AT GT CG) = 4
d(x, s2 ) = d(CT GAT G, AT GT CG) = 3
d(x, s3 ) = d(CT GACT, AT GT CG) = 3
d(x, s4 ) = d(AGT CGA, AT GT CG) = 5
d(x, s5 ) = d(GCCT GT, AT GT CG) = 5
Consideramos agora a classe de cortes (4.6): para D = 5 as seguintes inequações são
violadas:
xG,2 + xT,3 + xC,4 + xG,5 + xA,6 ≥ 1
(4.7)
xG,1 + xC,2 + xC,3 + xG,5 + xT,6 ≥ 1
(4.8)
As inequações (4.7) e (4.8) foram determinadas a partir de s4 e s5 , respectivamente.
Incluindo estas inequações no programa linear, junto com d ≥ 4, e resolvendo o programa
linear novamente obtemos uma solução ótima inteira dada por x = CT CCGG e d = 4.
Comparando x com as strings em S vemos:
d(x, s1 ) = d(AT T GGA, CT CCGG) = 4
d(x, s2 ) = d(CT GAT G, CT CCGG) = 3
d(x, s3 ) = d(CT GACT, CT CCGG) = 4
d(x, s4 ) = d(AGT CGA, CT CCGG) = 3
d(x, s5 ) = d(GCCT GT, CT CCGG) = 4
4.3
Limitante Inferior Combinatório
Agora estabelece-se um limite inferior no valor de qualquer solução ótima para qualquer
instância do CSP. Para cada posição j da string si ∈ S, denote por Sjα o subconjunto de
strings de S que têm o caracter α na posição j. Defina djα = n − |Sjα |. Em palavras, djα
é o número de sı́mbolos diferentes de α na posição j nas strings de S. Defina para cada
posição j
dj = min djα
α∈A
e
l Pm d j m
j=1
L=
n
Então obtemos
21
Lema 4.1. L é um limitante inferior válido para o CSP.
Demonstração. Independentemente de qual caracter aparece na posição j em uma solução,
ele entrará em conflito com no mı́nimo dj strings naquela posição. Somando sobre todas
as posições, este é o número total de conflitos (i.e., a soma das distâncias de Hamming)
da solução com relação as strings da instância, e dividindo por n obtemos
que a média da
Pm
d
j
e. Mas como o
distância de Hamming de qualquer solução precisa ser no mı́nimo d j=1
n
máximo é no mı́nimo a média (e podemos também arredondar para o primeiro número
inteiro), obtemos o lema.
No próximo capı́tulo, de resultados computacionais, mostra-se os resultados dos experimentos são realizados com uma implementação de um branch-and-cut. Testa-se esta
implementação em dois cenários: com o uso da classe de cortes e sem o seu uso. Após
realizar diversos experimentos com esta implementação, percebe-se que há uma redução
no tempo de execução da implementação quando a classe de cortes é utilizada.
22
Capı́tulo 5
Resultados Computacionais
Neste capı́tulo apresentamos os experimentos computacionais realizados sobre instâncias
do CSP.
5.1
Ambiente dos Experimentos
Todas as implementações foram desenvolvidas em C++ e utilizou-se o compilador Gnu
C++ sem otimizações. Os testes foram realizados em um computador com a seguinte
configuração: Dell processador Intel Core I5 3.33 Ghz com 4 GB de memória RAM e
sistema operacional Linux Ubuntu 11.04 com endereçamento de 32 bits. O solver IBM
ILOG CPLEX versão 12.4 foi utilizado para resolver relaxações lineares e na implementação do branch-and-cut. Deste ponto em diante do texto trata-se por CPLEX o solver
IBM ILOG CPLEX versão 12.4.
5.2
Instâncias de Teste
Noventa e uma instâncias do CSP foram geradas utilizando o gerador de instâncias descrito na referência [8]. Estas instâncias consideram alfabetos com dois, quatro e vinte
caracteres.
5.3
Análise dos Resultados
Testou-se duas abordagens para solucionar as 91 instâncias do CSP. A primeira abordagem
é um método padrão de Planos de Cortes com um branch-and-bound, onde todos os planos
de cortes são gerados somente no nó raiz da árvore de enumerção do branch-and-cut. Ou
23
seja, o modelo de programação linear correspondente a uma instância é resolvido e caso a
sua solução seja fracionária, então são gerados todos os cortes válidos para esta solução.
Utilizando a classe de inequações, discutida no capı́tulo anterior, para aquela solução,
cortes são inseridos no modelo de programação linear, e a relaxação linerar é novamente
computada. Caso a nova solução seja inteira o método para, caso contrário novos cortes
são inseridos ao modelo e o processo é repetido.
A segunda abordagem é simplesmente resolver os modelos de programação linear inteira correspondentes às instâncias, utilizando o CPLEX.
Os resultados obtidos com as implementações são apresentados nas Tabelas 5.1 a 5.4.
Os cabeçalhos nas tabelas indicam:
• Instância: o tamanho da instância (n, m) e a semente utilizada para gerá-la;
• Relaxação linear: (OPT: valor ótimo, CPU: tempo de CPU, em horas, minutos e
segundos, para calcular a relaxação linear);
• Plano de Cortes: (Método padrão de planos de cortes), informando o número de
planos de cortes inseridos no nó raiz da árvore de enumeração, o valor de uma
solução ótima obtido com esta técnica e o tempo de CPU, e
• Programação Inteira: (OPT: valor ótimo, CPU: tempo de CPU, em horas, minutos
e segundos, para encontrar uma solução ótima inteira).
Foram realizados diversos experimentos com instâncias de diferentes tamanhos. Dos
resultados mostrados nas tabelas conclui-se:
(a) O modelo em programação linear fornece excelentes limitantes inferiores aos valores
de soluções ótimas inteiras;
(b) Foram encontradas relativamente muitas inequações violadas no nó raiz da árvore
de eumeração do branch-and-cut;
(c) Devido o modelo ser muito forte, todas as instâncias testadas puderam ser resolvidas
em pouco tempo (menos de duas horas de tempo de CPU).
24
Tabela 5.1: Instâncias do CSP considerando um alfabeto com dois caracteres
n
10
10
10
10
10
10
10
10
10
10
10
15
15
15
15
15
15
15
15
15
15
15
Instância
m
Semente
1000
543
1250
65743
1500
65743
1750
4432
2000
543
2500
344
3000
34567
3500
344
4000
4432
4500
543
5000
34567
1000
344
1250
543
1500
34567
1750
4432
2000
344
2500
65743
3000
34567
3500
4432
4000
34567
4500
344
5000
543
Relaxação
OPT
375,9
473
566,4
650,8
750,8
945,1
1128
1309,8
1516
1696,6
1892,6
396,6
498,7
591,6
690,2
797,9
987,7
1186,5
1381,1
1588
1779
1985,5
linear
CPU
< 1s
< 1s
< 1s
< 1s
< 1s
< 1s
< 1s
< 1s
< 1s
< 1s
< 1s
< 1s
< 1s
< 1s
< 1s
< 1s
< 1s
< 1s
< 1s
< 1s
< 1s
< 1s
Planos de Corte
NumPC OPT
CPU
0
377
< 1s
0
474
< 1s
10
567
< 1s
0
652
1s
0
752
< 1s
20
946
< 1s
0 1129
< 1s
16 1311
1s
0 1517
< 1s
0 1697
< 1s
20 1893
1s
231
397
6s
282
500
13s
335
592
7s
414
691
6s
796
799
31s
889
989
1m17s
710 1187
32s
1208 1382
1m13s
1057 1589
2m13s
6125 1780 30m56s
4232 1986 20m35s
Programação Inteira
OPT
CPU
377
1s
474
1s
567
< 1s
652
2s
752
1s
946
< 1s
1129
1s
1311
2s
1517
1s
1697
< 1s
1893
1s
397
12s
500
14s
592
13s
691
6s
799
34s
989
1m19s
1187
38s
1382
1m14s
1589
2m15s
1780
31m3s
1986
20m42s
Figura 5.1: Gráficos das diferenças dos tempos de CPU, mostrados nas Tabelas 5.1 a 5.4,
considerando as duas abordagens testadas.
25
Tabela 5.2: Instâncias do CSP considerando um alfabeto com quatro caracteres
n
10
10
10
10
10
15
15
15
15
15
20
20
20
20
20
25
25
25
25
25
30
30
30
30
30
Instância
m Semente
100
1542
200
7121
300
6874
400
8465
500
7212
100
5419
200
6172
300
2454
400
6487
500
3454
100
1464
200
7121
300
6874
400
1985
500
9415
100
5419
200
4212
300
6874
400
1985
500
9415
100
14644
200
3544
300
68747
400
3454
500
62452
Relaxação Linear
OPT
CPU
58,3
< 1s
114,7
< 1s
172,3
< 1s
230,4
< 1s
290,7
< 1s
61,5
< 1s
124,4
< 1s
181,2
< 1s
245,9
< 1s
305,7
< 1s
64,7
< 1s
126,5
< 1s
190,6
< 1s
253,4
< 1s
317,5
< 1s
65,9
< 1s
129,0
< 1s
194,3
< 1s
257,9
< 1s
324,4
< 1s
65,8
< 1s
130,8
< 1s
196,2
< 1s
264,0
< 1s
325,9
< 1s
Planos de Corte
NumPC OPT
CPU
100
59
< 1s
197
115
< 1s
99
173
< 1s
113
231
< 1s
219
291
1s
15
62
< 1s
26
125
< 1s
229
182
1s
52
246
5s
38
306
1s
15
65
1m1s
7
127
< 1s
14
191
21s
10
254
< 1s
14
318
1s
3
67
18s
17
130
< 1s
1
195
< 1s
3
259
7s
3
325 2m32s
2
67
4s
1
132 1m27s
7
197
10s
3
265
< 1s
1
327
1s
26
Programação
OPT
59
115
173
231
291
62
125
182
246
306
65
127
191
254
318
67
130
195
259
325
67
132
197
265
327
Inteira
CPU
< 1s
< 1s
< 1s
< 1s
1s
< 1s
< 1s
1s
9s
1s
2m29s
6s
27s
1s
2s
36s
< 1s
< 1s
14s
2m34s
9s
2m50s
1m30s
1s
3s
Tabela 5.3: Instâncias do CSP considerando um alfabeto com quatro caracteres
n
10
10
10
10
10
10
10
10
10
10
10
15
15
15
15
15
15
15
15
15
15
15
Instância
m
Semente
1000
65743
1250
34567
1500
4432
1750
543
2000
344
2500
4432
3000
344
3500
34567
4000
344
4500
543
5000
543
1000
4432
1250
543
1500
543
1750
4432
2000
4432
2500
65743
3000
34567
3500
34567
4000
344
4500
543
5000
4432
Relaxação Linear
OPT
CPU
577,6
< 1s
722,8
< 1s
873,9
< 1s
1013,8
< 1s
1157,9
< 1s
1446,7
< 1s
1746
< 1s
2033,3
< 1s
2306,2
< 1s
2604
< 1s
2909
< 1s
610,7
< 1s
765,0
< 1s
915,7
< 1s
1070,9
< 1s
1225,9
< 1s
1526,6
< 1s
1826,8
< 1s
2137
< 1s
2447,6
< 1s
2754,1
< 1s
3057,1
< 1s
Planos de Corte
NumPC OPT
CPU
169
578
3s
295
723
10s
344
874
15s
208 1014
10s
721 1158
51s
563 1447
48s
24 1746
12s
477 2034 1m10s
19 2307
13s
93 2604
36s
10 2909
9s
70
611
7s
119
766
8s
31
916
4s
1 1071
11s
0 1226
7s
0 1527
7s
3 1827
10s
1 2137
26s
1 2448
28s
3 2755
11s
0 3058
8s
27
Programação Inteira
OPT
CPU
578
4s
723
11s
874
16s
1014
12s
1158
53s
1447
52s
1746
17s
2034
1m13s
2307
17s
2604
42s
2909
18s
611
13s
766
9s
916
5s
1071
15s
1226
13s
1527
12s
1827
19s
2137
52s
2448
33s
2755
14s
3058
14s
Tabela 5.4: Instâncias do CSP considerando um alfabeto com vinte caracteres
n
10
10
10
10
10
10
10
10
10
10
10
15
15
15
15
15
15
15
15
15
15
15
Instância
m
Semente
1000
543
1250
4432
1500
4432
1750
34567
2000
543
2500
344
3000
65743
3500
344
4000
543
4500
4432
5000
34567
1000
4432
1250
65743
1500
34567
1750
65743
2000
543
2500
344
3000
34567
3500
4432
4000
65743
4500
34567
5000
65743
Relaxação
OPT
780
975,7
1175,7
1370,6
1565,7
1957,2
2343,2
2737,6
3136,3
3517,7
3915,2
819,1
1026,0
1229,7
1434,4
1643,8
2048,9
2455,0
2869,4
3276,3
3688
4095,2
linear
CPU
< 1s
< 1s
< 1s
< 1s
< 1s
< 1s
< 1s
< 1s
1s
1s
1s
< 1s
< 1s
< 1s
< 1s
< 1s
1s
1s
1s
1s
2s
2s
Planos de Corte
NumPC OPT
CPU
145
780
4s
126
976
4s
113 1176
6s
135 1371
8s
110 1566
11s
174 1958
19s
238 2344
27s
40 2738
14s
122 3137
36s
135 3518
43s
86 3916
35s
2228
820
2m54s
923 1027
46s
403 1230
26s
2311 1435
9m51s
477 1644
39s
1058 2049
3m2s
3500 2456
44m5s
1603 2870
1m17s
1559 3277
11m7s
3417 3688 1h16m21s
1395 4096
11m39s
28
Programação Inteira
OPT
CPU
780
5s
976
6s
1176
9s
1371
11s
1566
14s
1958
23s
2344
31s
2738
18s
3137
41s
3518
49s
3916
41s
820
2m55s
1027
47s
1230
28s
1435
9m55s
1644
44s
2049
3m8s
2456
44m12s
2870
1m24s
3277
11m14s
3688
1h16m31s
4096
11m47s
Capı́tulo 6
Comentários Finais
Esta dissertação é a respeito do Closest String Problem (CSP), um problema de otimização
combinatória que aparece na área de Biologia Computacional. Dada a sua importância,
dezenas de artigos foram publicados sobre este problema. O CSP pertence a classe de complexidade NP-difı́cil e diversas técnicas foram aplicadas para desenvolver algoritmos para
o mesmo. São também conhecidos algoritmos de aproximação, heurı́sticas sem comprovação de garantia de otimalidade e métodos exatos (branch-and-cut) para resolver instâncias
do problema.
Na referência [8] foram propostos três formulações em programação linear inteira para
o CSP. Nesta dissertação continuou-se o trabalho iniciado em [8] e propomos uma classe de
inequações válidas (planos de corte) juntamente com um algoritmo de separação destas.
Provou-se que embora o número destas inequações seja exponencial em n e m, respectivamente número de strings e o tamanho destas strings, o problema de separação é resolvido
em tempo polinomial em n e m. Este é um importante resultado teórico e prático alcançado.
Com o intuito de verificar o quão útil é a nova classe de planos de corte, foram realizados experimentos computacionais com a implementação de um branch-and-cut. A
implementação utilizou o solver IBM ILOG CPLEX 12.4 para calcular as relaxações lineares dos modelos. Como já era esperado o modelo matemático descrito em [8] fornece
excelentes limites inferiores nos valores de soluções ótimas.
Os experimentos computacionais, obtidos com a implementação de um branch-andcut, dão evidências claras de que esta implementação é mais rápida quanto maior for o
número de planos de corte gerados.
Ainda como resultado desta pesquisa, criamos uma fórmula para calcular limites inferiores nos valores de soluções ótimas. Essas contribuições serão utilizadas em pesquisas
futuras.
29
Referências Bibliográficas
[1] A. Ben-Dor, G. Lancia, J. Perone, and R. Ravi, Banishing bias from consensus sequences, Proceedings of the 8th Annual Symposium on Combinatorial Pattern Matching (Aarhus, Denmark) (A. Apostolico and J. Hein, eds.), Lecture notes in computer science, no. 1264, Springer-Verlag, 1997, pp. 247–261.
[2] R. E. Bixby, Notes on combinatorial optimization, Tech. report, Rice University,
Department of Computational and Applied Mathematics, 1987.
[3] C. Boucher, G. M. Landau, A. Levy, D. Pritchard, and O. Weimann, On approximating string selection problems with outliers, CoRR abs/1202.2820 (2012), 427–438.
[4] C. C. de Souza, The graph equipartition problem: Optimal solutions, extensions and
applications, Ph.D. thesis, Université Catholique de Louvain, 1993.
[5] K. Lanctot, M. Li, B. Ma, S. Wang, and L. Zhang, Distinguishing string selection
problems, Information and Computation 185 (2003), no. 1, 41–55.
[6] M. Li, B. Ma, and L. Wang, On the closest string and substring problems, Journal of
the ACM 49 (2002), no. 2, 157–171.
[7] C. N. Meneses, P. M. Pardalos, M. G. C. Resende, and A. Vazacopoulos, Modeling
and solving string selection problems, BIOMAT 2005 International Symposium on
Mathematical and Computational Biology – Selected Contributed Papers, 2005.
[8] C.N. Meneses, Z. Lu, C.A.S. Oliveira, and P.M. Pardalos, Optimal solutions for the
closest string problem via integer programming, INFORMS Journal on Computing
16 (2004), no. 4, 419–429.
[9] M. Minoux, Mathematical programming: Theory and algorithms, Wiley-Interscience,
1986.
[10] G. L. Nemhauser and L. A. Wolsey, Integer and combinatorial optimization, John
Wiley and Sons, New York, 1988.
30
[11] M. W. Padberg and M. Grötschel, Polyhedral computations, John Wiley and Sons,
1985.
[12] A. Schrijver, Theory of linear and integer programming, John Wiley and Sons, 1986.
[13] H. A. Taha, Operations research - an introduction, fourth edition, Macmillan Publishing Company, 1987.
31

Documentos relacionados