Universidade Federal do ABC Centro de Matemática, Computação e Cognição (CMCC) Omar Latorre Vilca

Documentos relacionados
Otimização Combinatória - Parte 4

Técnicas para Programação Inteira e Aplicações em Problemas de Roteamento de Veículos 41

Omar Latorre Vilca Universidade Federal do ABC (UFABC) Rua Santa Adélia, 166. Bairro Bangu. Santo André - SP - Brasil omar.vilca@ufabc.edu.

Aula 13: Branch-and-bound

Métodos Exatos para PI - Parte 1: Branch-and-Bound

3. Resolução de problemas por meio de busca

PCC104 - Projeto e Análise de Algoritmos

Aula 12: Programação Inteira

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

Formulação de Programação Linear Inteira para o Problema de Particionamento em Conjuntos Convexos

Algoritmos Exatos 3.1. Relaxação Lagrangeana

Aula 20: Revisão Otimização Linear e Inteira Túlio A. M. Toffolo

Método de Eliminação de Fourier-Motzkin

MÉTODOS EXATOS E HEURÍSTICOS PARA O PROBLEMA DA SEQUÊNCIA MAIS PRÓXIMA

3 Reformulação de IPs

Método Simplex. Marina Andretta ICMC-USP. 19 de outubro de 2016

Aula 19: Lifting e matrizes ideais

Os Problemas de Optimização Combinatória e a Teoria da Complexidade

3 Extensões dos modelos matemáticos

Notas. Notas. encontrem a solução ótima em tempo polinomial para qualquer instância do problema que estamos trabalhando 2 / 19.

Aula 17: Planos de Corte

Branch-and-Bound para problemas de Otimização Combinatória

Parte II. Aplicações em Roteamento de Veículos

Resolvendo algebricamente um PPL

Prática 00. Total 04. Pré-requisitos. No. De Créditos 04

Otimização. Conceitos Fundamentais. Paulo Henrique Ribeiro Gabriel Faculdade de Computação Universidade Federal de Uberlândia 2016/2

Programação Linear - Parte 5

Algoritmo Branch-and-Price para o Problema de Corte de Estoque Não-Guilhotinado

Codificação de Huffman

DEPARTAMENTO DE CIÊNCIAS DE COMPUTAÇÃO E ESTATÍSTICA

5 VNS com Filtro e Reconexão por Caminhos

Otimização Aplicada à Engenharia de Processos

6 Experimentos realizados

Problemas de otimização

Algoritmos Combinatórios: Introdução

Programação Linear M É T O D O S : E S T A T Í S T I C A E M A T E M Á T I C A A P L I C A D A S D e 1 1 d e m a r ç o a 2 9 d e a b r i l d e

Programação Linear Inteira. C. Requejo (UA) Métodos de Investigação Operacional MIO / 30

4 Implementação Computacional

Problemas Intratáveis ou computação eficiente X computação ineficiente

Quinta-feira, 11 de abril

Teoria da Computação. Complexidade computacional classes de problemas

Programação Matemática

COMPARAÇÃO ENTRE FROTA HOMOGÊNEA E HETEROGÊNEA EM PROBLEMAS DE ROTEAMENTO DE VEÍCULOS CAPACITADOS

Pontos extremos, vértices e soluções básicas viáveis

Aulas 6 / 05 de setembro

Optimização de um Plano de Marketing Directo para o Sector da Banca Daniel Barata

Uma heurística GRASP para o Problema da Sequência mais Próxima

Combinando inequações lineares

Combinando inequações lineares

Otimização Linear. Profª : Adriana Departamento de Matemática. wwwp.fc.unesp.br/~adriana

Um estudo computacional de dois algoritmos de programação dinâmica com utilização eficiente de cache

Um algoritmo pseudo-periférico genérico para a heurística de Snay

CAPÍTULO IV PROGRAMAÇÃO LINEAR INTEIRA (PLI)

Programação Inteira Resolução por Branch and Bound

Problema do Arranjo Linear Mínimo

4 Resolução exata do PAG

Programação Linear/Inteira

Teoria de dualidade. Marina Andretta ICMC-USP. 19 de outubro de 2016

Otimização Linear. Profª : Adriana Departamento de Matemática. wwwp.fc.unesp.br/~adriana

Marina Andretta. 17 de setembro de Baseado no livro Numerical Optimization, de J. Nocedal e S. J. Wright.

Engenharia Industrial

Considere a função f(x). Para algum x a f (x) pode não existir. Suponha que. Max f(x) s. a a x b

João Paulo de Freitas Araujo. Algoritmos para acelerar a computação de Árvores de corte de Gomory e Hu. Dissertação de Mestrado

Algoritmos e Estrutura de Dados. Algoritmos Prof. Tiago A. E. Ferreira

Teoremas de dualidade

Cálculo Numérico BCC760

UMA HEURÍSTICA PARA O PROBLEMA DE REDUÇÃO DE CICLOS DE SERRA

Branch and Bound - Ramicar e Limitar

Resolução de problemas difíceis de programação linear através da relaxação Lagrangeana

Método Simplex dual. Marina Andretta ICMC-USP. 24 de outubro de 2016

Representação de poliedros

Códigos perfeitos e sistemas de Steiner

O Algoritmo Talus para Otimização Global

Prof. Lorí Viali, Dr. PUCRS FAMAT: Departamento de Estatística. Curso: Engenharia de Produção

Programação Inteira. Solução com o método Branch-and-Bound

Primeiro Exercício programa: Como o Google ordena páginas. MAP-2121 para EPUSP

Ciclos hamiltonianos e o problema do caixeiro viajante

O problema da Máxima Interseção de k-subconjuntos

Projeto e Análise de Algoritmos

Um algoritmo sem derivadas para otimização restrita

PCC173 - Otimização em Redes

DEPARTAMENTO DE ENGENHARIA MECÂNICA

Resolução do problema do caixeiro viajante assimétrico (e uma variante) através da relaxação Lagrangeana

Aula 22: Formulações com número exponencial de variáveis

Técnicas de Concepção de Algoritmos: Branch and Bound

Algoritmos de aproximação - Problema do caixeiro viajante

2 Definição do Problema

Números Reais. Víctor Arturo Martínez León b + c ad + bc. b c

Simplex. Transparências de apoio à leccionação de aulas teóricas. c 2011, 2009, 1998 José Fernando Oliveira, Maria Antónia Carravilla FEUP

Teoria da Complexidade Computacional

UM ESTUDO COMPUTACIONAL DE MODELOS MATEMÁTICOS PARA O PROJETO DE REDES DE TELECOMUNICAÇÕES COM TOPOLOGIA EM ANEL

Algoritmo Aproximação. Prof. Anderson Almeida Ferreira [DPV]9.2 [ZIV]9.2.2 e 9.2.3

Análise de Desempenho da Paralelização do Problema de Caixeiro Viajante

Programação Inteira. Algoritmo Branch-and-Bound (ou enumeração implícita)

ANÁLISE DE ALGORITMOS (INF 1721)

5COP096 TeoriadaComputação

II Seminário da Pós-graduação em Engenharia Elétrica

Lista 1 - PMR2300. Fabio G. Cozman 3 de abril de 2013

Técnicas de análise de algoritmos

Transcrição:

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 = {s 1, s 2,, s n } 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 s i S tem-se d H (x, s i ) d. Por d H (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 d H (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 = {s 1,, s n } 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 s i S we have d H (x, s i ) d. By d H (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 d H (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 14 3.1 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 S S w(s) onde w(s) = 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 d H (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 d H (s, t) = 4. O CSP consiste em: dado um conjunto finito S ={s 1, s 2,, s n } 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 s i S tenha d H (x, s i ) 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 ={s 1, s 2,, s n } 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 s i S, tem-se d H (x, s i ) 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 = {s 1, s 2,, s n } 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 s i in S, a relação d H (x, y) d é verdadeira para alguma substring y, de tamanho m, de s i. 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 ={s 1, s 2,..., s n } 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 s i in S e toda substring y, de tamanho m, de s i, tem-se d H (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 = {s 1, s 2,..., s n } 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 s i S tal que d H (x, s i ) k. Como exemplo considere S = {AATCC,CCAAT,CCTAC,TCACC}. Se k = 3, então uma solução ótima é CCTCT com quatro strings satisfazendo d H (x, s i ) 3. Se k = 2, então uma solução ótimza é ACAAC e três strings respeitam d H (x, s i ) 2. Distinguishing String Selection Problem (DSSP) Dados dois conjuntos finitos de strings S c e S f, todas as strings de tamanho no mínimo m, sobre um alfabeto A, e dois números inteiros positivo k c e k f, deseja-se encontrar uma string x de tamanho m sobre A tal que para cada string s c S c, existe alguma substring y c, de tamanho m, de s c satisfazendo d H (x, y c ) k c, e para toda substring y f, de tamanho m, de s f S f tem-se d H (x, y f ) k f. Como exemplo, considere S c = {AATCC,CCAAT,CCTAC,TCACC} e o conjunto S f = {AATAA,CCACT,GGTAC,TCAAC}. Se k c = 3 e k f = 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] DSSP [5] FSP [5] [5] FSubSP CSP [5] CSubSP [5] DSSP ISP [3] FFMSP [3] 2SAT [3] 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 R, onde R é o conjunto dos números reais. satisfazer as seguintes condições: Para todo x, y, z X, esta função precisa 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 (F m ) n o conjunto de todas as n-tuplas ordenadas a = a 1 a 2...a n onde cada a i F m. F m é um alfabeto, o m-ésimo elemento é obtido do conjunto de sequências de símbolos onde cada símbolo é escolhido do conjunto F m = {λ 1, λ 2,..., λ m } de m elementos diferentes. A distância de Hamming entre dois vetores x e y de (F m ) n é o número de posições nas quais eles diferem. Isto é denotado por d H (x, y). Por exemplo, no (F 2 ) 5 temos d H (00111, 11001) = 4, enquanto em (F 3 ) 4 obtemos d H (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 (F m ) n : (i) d H (x, y) 0 (ii) d H (x, y) = 0 se e somente se x = y (iii) d H (x, y) = d H (y, x) (iv) d H (x, z) d H (x, y) + d H (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 R n +}, onde c R n, A é uma matriz m n de constantes reais e b R m. Teorema 2.1. O conjunto de soluções viáveis X = {x : Ax b, x R n +} 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 R n +} é denominado poliedro. Se X é limitado, i.e., X {x : w x j 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 R n é 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 R n +}, onde c R n, A é uma matriz m n de constantes reais e b R m. Se as variáveis são restritas a inteiros, x Z n +, ao invés de x R n +, 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 x i uma solução ótima obtida ao se resolver a relaxação linear LP i. Se x i está em S, o algoritmo pára, retornando x i 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 x i. 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 = cx i e z i = cx i+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 x i uma solução ótima encontrada para LP i e z i = cx i. 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 R n + 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 R m+n : A i x b, 0 x 1} é o politopo correspondente a relaxação linear LP i. Se x i é 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é x i 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 x i. 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 d H (r, s i ), onde i {1,, n}, seja a máxima, e seja s uma solução atual. Logo, para i {0,..., m}, se s i r i então trocamos os valores s i por r i 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 = {s 1,, s n } Output: String s, distância d s {y S min s i S d H (y, s i )} d max i {1,...,n} d H (s, s i ) 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 d k d k d H (s k, s) end for i 1 to N do b i tal que d H (s i, s) = d /* resolva o empate aleatoriamente */ for j 1 to m tal que s b j s j do max 1 for k 1 to n tal que k b do if (s j = s k j ) e (s b j s k j ) then d k d k + 1 else if (s j s k j ) e (s b j = s k j ) then d k d k 1 if (max < d k ) then max d k end if d max /* não é pior */ then d max; t j s b j for k 1 to n do d k d k else for k 1 to n do d k d k 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 = {s 1, s 2,..., s n } de strings. Exemplo 4.1. Seja S = {AATCC,CCAAT,CCTAC,TCACC}. Defina V k = n i=1{s i k } para k = 1,..., m. Então os conjuntos V k são: V 1 = {A, C, T }, V 2 = {A, C}, V 3 = {A, T }, V 4 = {A, C}, V 5 = {C, T }. O Teorema 4.1 garante que para encontrar uma solução 16

ótima, x = (x 1, x 2, x 3, x 4, x 5 ), é suficiente atribuir ao componente x k, um elemento do conjunto V k 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 x j,k { 1 se o caracter j é usado na posição k em uma solução x j,k = 0 caso contrário os autores em [8] propuseram a formulação: min s.a.: d (4.1) x j,k = 1 k = 1,..., m (4.2) j V k m d m x s i k,k i = 1,..., n (4.3) k=1 x j,k {0, 1} j V k ; k = 1,..., m (4.4) d 0 e inteiro (4.5) Note que esta formulação tem m + n restrições e 1 + m k=1 V k 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 V k. 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 x j,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 s.a.: P L : d j V k x j,k = 1 k = 1,..., m d m m k=1 x s i k,k i = 1,..., n 0 x j,k 1 j V k ; k = 1,..., m d 0 Note os domínios das variáveis x j,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 = {s 1, s 2,..., s n }, com s i = m para i = 1,..., n. Tome qualquer string s i S e considere qualquer subconjunto B de s i consistindo de D caracteres. Comparando-se as correspondentes posições de B em s i, 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 k Ind(B) x s i k,k 1 (4.6) é uma inequação válida (corte) para o PL, onde Ind(B) é o conjunto das índices de B em s i. Exemplo 4.2. Seja S = {s 1, s 2, s 3 }, onde s 1 = ACT, s 2 = CCG e s 3 = T CA. Considerando o resultado no Teorema 4.1, tem-se que uma solução ótima x = (x 1, x 2, x 3 ) para S satisfaz x 1 V 1 = {A, C, T }, x 2 V 2 = {C} e x 3 V 3 = {A, G, T }. Observe que a string x = ACG é uma solução viável e tem valor 2. Para s 1 = 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 s 1 = ACT 18

são: x A,1 + x C,2 1 x A,1 + x T,3 1 x C,2 + x T,3 1 Aplicando-se a mesma ideia para s 2 = CCG, obtemos os cojuntos de índices Ind(CC) = {1, 2}, Ind(CG) = {1, 3} e Ind(CG) = {2, 3} e portanto os cortes: x C,1 + x C,2 1 x C,1 + x G,3 1 x C,2 + x G,3 1 Finalmente, para s 3 = 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: x T,1 + x C,2 1 x T,1 + x A,3 1 x C,2 + x A,3 1 Com isto concluí-se o exemplo. Existem n ( m 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 s i S, uma por vez. Para k = 1,..., m defina a j = x s i k,k Por exemplo, para s 1 temos a 1 = x s 1 1,1, a 2 = x s 1 2,2, a 3 = x s 1 3,3,..., a m 1 = x s 1 m 1,m 1, a m = x s 1 m,m. Considerando o Exemplo 4.2, temos para s 1 = ACT : a 1 = x A,1, a 2 = x C,2, a 3 = x T,3. Agora ordene os a j em ordem não decrescente, a p(1)... a p(m), e denote por B o conjunto dos primeiros D valores nesta ordem dos a j (isto é, B = {p(1),..., p(d)}). Então 19

B alcança a mínima soma possível de x com relação a s i. 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 violadas para s i, e então passamos para a análise de s i+1. Ou seja, se D k=1 a p(k) < 1 então a inequação D k=1 x s i [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 V i da seguinte maneira: V 1 = {A, C, G}, V 2 = {C, G, T }, V 3 = {C, G, T }, V 4 = {A, C, G, T }, v 5 = {C, G, T } e v 6 = {C, G, T }. O correspondente modelo em programação linear é: min d s.a. : x A,1 + x C,1 + x G,1 = 1 x C,2 + x G,2 + x T,2 = 1 x C,3 + x G,3 + x T,3 = 1 x A,4 + x C,4 + x G,4 + x T,4 = 1 x C,5 + x G,5 + x T,5 = 1 x A,6 + x G,6 + x T,6 = 1 d + x A,1 + x T,2 + x T,3 + x G,4 + x G,5 + x A,6 6 d + x C,1 + x T,2 + x G,3 + x A,4 + x T,5 + x G,6 6 d + x C,1 + x T,2 + x G,3 + x A,4 + x C,5 + x T,6 6 d + x A,1 + x G,2 + x T,3 + x C,4 + x G,5 + x A,6 6 d + x G,1 + x C,2 + x C,3 + x T,4 + x G,5 + x T,6 6 0 x j,k 1 j V k ; k = 1,..., 6 d 0 Uma solução ótima para o programa linear acima é dada por: d = 3.666667, x A,1 = 0.75, x C,1 = 0.25, x T,2 = 0.583333, x G,2 = 0.416667, x G,3 = 1.0, x C,4 = 0.166667, x T,4 = 0.833333, x G,5 = 1.0, x G,6 = 0.5, x T,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, x A,1 = 0.5, x C,1 = 0.5, x T,2 = 0.5, x G,2 = 0.5, x G,3 = 1.0, x T,4 = 1.0, x G,5 = 1.0, x G,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, s 1 ) = d(at T GGA, AT GT CG) = 4 d(x, s 2 ) = d(ct GAT G, AT GT CG) = 3 d(x, s 3 ) = d(ct GACT, AT GT CG) = 3 d(x, s 4 ) = d(agt CGA, AT GT CG) = 5 d(x, s 5 ) = 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: x G,2 + x T,3 + x C,4 + x G,5 + x A,6 1 (4.7) x G,1 + x C,2 + x C,3 + x G,5 + x T,6 1 (4.8) As inequações (4.7) e (4.8) foram determinadas a partir de s 4 e s 5, 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, s 1 ) = d(at T GGA, CT CCGG) = 4 d(x, s 2 ) = d(ct GAT G, CT CCGG) = 3 d(x, s 3 ) = d(ct GACT, CT CCGG) = 4 d(x, s 4 ) = d(agt CGA, CT CCGG) = 3 d(x, s 5 ) = 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 s i S, denote por S α j o subconjunto de strings de S que têm o caracter α na posição j. Defina d jα = n S α j. Em palavras, d jα é o número de símbolos diferentes de α na posição j nas strings de S. Defina para cada posição j e Então obtemos d j = min α A d jα m j=1 L = d j n 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 d j 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 distância de Hamming de qualquer solução precisa ser no mínimo m j=1 d j n. Mas como o 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 Instância Relaxação linear Planos de Corte Programação Inteira n m Semente OPT CPU NumPC OPT CPU OPT CPU 10 1000 543 375,9 < 1s 0 377 < 1s 377 1s 10 1250 65743 473 < 1s 0 474 < 1s 474 1s 10 1500 65743 566,4 < 1s 10 567 < 1s 567 < 1s 10 1750 4432 650,8 < 1s 0 652 1s 652 2s 10 2000 543 750,8 < 1s 0 752 < 1s 752 1s 10 2500 344 945,1 < 1s 20 946 < 1s 946 < 1s 10 3000 34567 1128 < 1s 0 1129 < 1s 1129 1s 10 3500 344 1309,8 < 1s 16 1311 1s 1311 2s 10 4000 4432 1516 < 1s 0 1517 < 1s 1517 1s 10 4500 543 1696,6 < 1s 0 1697 < 1s 1697 < 1s 10 5000 34567 1892,6 < 1s 20 1893 1s 1893 1s 15 1000 344 396,6 < 1s 231 397 6s 397 12s 15 1250 543 498,7 < 1s 282 500 13s 500 14s 15 1500 34567 591,6 < 1s 335 592 7s 592 13s 15 1750 4432 690,2 < 1s 414 691 6s 691 6s 15 2000 344 797,9 < 1s 796 799 31s 799 34s 15 2500 65743 987,7 < 1s 889 989 1m17s 989 1m19s 15 3000 34567 1186,5 < 1s 710 1187 32s 1187 38s 15 3500 4432 1381,1 < 1s 1208 1382 1m13s 1382 1m14s 15 4000 34567 1588 < 1s 1057 1589 2m13s 1589 2m15s 15 4500 344 1779 < 1s 6125 1780 30m56s 1780 31m3s 15 5000 543 1985,5 < 1s 4232 1986 20m35s 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 Instância Relaxação Linear Planos de Corte Programação Inteira n m Semente OPT CPU NumPC OPT CPU OPT CPU 10 100 1542 58,3 < 1s 100 59 < 1s 59 < 1s 10 200 7121 114,7 < 1s 197 115 < 1s 115 < 1s 10 300 6874 172,3 < 1s 99 173 < 1s 173 < 1s 10 400 8465 230,4 < 1s 113 231 < 1s 231 < 1s 10 500 7212 290,7 < 1s 219 291 1s 291 1s 15 100 5419 61,5 < 1s 15 62 < 1s 62 < 1s 15 200 6172 124,4 < 1s 26 125 < 1s 125 < 1s 15 300 2454 181,2 < 1s 229 182 1s 182 1s 15 400 6487 245,9 < 1s 52 246 5s 246 9s 15 500 3454 305,7 < 1s 38 306 1s 306 1s 20 100 1464 64,7 < 1s 15 65 1m1s 65 2m29s 20 200 7121 126,5 < 1s 7 127 < 1s 127 6s 20 300 6874 190,6 < 1s 14 191 21s 191 27s 20 400 1985 253,4 < 1s 10 254 < 1s 254 1s 20 500 9415 317,5 < 1s 14 318 1s 318 2s 25 100 5419 65,9 < 1s 3 67 18s 67 36s 25 200 4212 129,0 < 1s 17 130 < 1s 130 < 1s 25 300 6874 194,3 < 1s 1 195 < 1s 195 < 1s 25 400 1985 257,9 < 1s 3 259 7s 259 14s 25 500 9415 324,4 < 1s 3 325 2m32s 325 2m34s 30 100 14644 65,8 < 1s 2 67 4s 67 9s 30 200 3544 130,8 < 1s 1 132 1m27s 132 2m50s 30 300 68747 196,2 < 1s 7 197 10s 197 1m30s 30 400 3454 264,0 < 1s 3 265 < 1s 265 1s 30 500 62452 325,9 < 1s 1 327 1s 327 3s 26

Tabela 5.3: Instâncias do CSP considerando um alfabeto com quatro caracteres Instância Relaxação Linear Planos de Corte Programação Inteira n m Semente OPT CPU NumPC OPT CPU OPT CPU 10 1000 65743 577,6 < 1s 169 578 3s 578 4s 10 1250 34567 722,8 < 1s 295 723 10s 723 11s 10 1500 4432 873,9 < 1s 344 874 15s 874 16s 10 1750 543 1013,8 < 1s 208 1014 10s 1014 12s 10 2000 344 1157,9 < 1s 721 1158 51s 1158 53s 10 2500 4432 1446,7 < 1s 563 1447 48s 1447 52s 10 3000 344 1746 < 1s 24 1746 12s 1746 17s 10 3500 34567 2033,3 < 1s 477 2034 1m10s 2034 1m13s 10 4000 344 2306,2 < 1s 19 2307 13s 2307 17s 10 4500 543 2604 < 1s 93 2604 36s 2604 42s 10 5000 543 2909 < 1s 10 2909 9s 2909 18s 15 1000 4432 610,7 < 1s 70 611 7s 611 13s 15 1250 543 765,0 < 1s 119 766 8s 766 9s 15 1500 543 915,7 < 1s 31 916 4s 916 5s 15 1750 4432 1070,9 < 1s 1 1071 11s 1071 15s 15 2000 4432 1225,9 < 1s 0 1226 7s 1226 13s 15 2500 65743 1526,6 < 1s 0 1527 7s 1527 12s 15 3000 34567 1826,8 < 1s 3 1827 10s 1827 19s 15 3500 34567 2137 < 1s 1 2137 26s 2137 52s 15 4000 344 2447,6 < 1s 1 2448 28s 2448 33s 15 4500 543 2754,1 < 1s 3 2755 11s 2755 14s 15 5000 4432 3057,1 < 1s 0 3058 8s 3058 14s 27

Tabela 5.4: Instâncias do CSP considerando um alfabeto com vinte caracteres Instância Relaxação linear Planos de Corte Programação Inteira n m Semente OPT CPU NumPC OPT CPU OPT CPU 10 1000 543 780 < 1s 145 780 4s 780 5s 10 1250 4432 975,7 < 1s 126 976 4s 976 6s 10 1500 4432 1175,7 < 1s 113 1176 6s 1176 9s 10 1750 34567 1370,6 < 1s 135 1371 8s 1371 11s 10 2000 543 1565,7 < 1s 110 1566 11s 1566 14s 10 2500 344 1957,2 < 1s 174 1958 19s 1958 23s 10 3000 65743 2343,2 < 1s 238 2344 27s 2344 31s 10 3500 344 2737,6 < 1s 40 2738 14s 2738 18s 10 4000 543 3136,3 1s 122 3137 36s 3137 41s 10 4500 4432 3517,7 1s 135 3518 43s 3518 49s 10 5000 34567 3915,2 1s 86 3916 35s 3916 41s 15 1000 4432 819,1 < 1s 2228 820 2m54s 820 2m55s 15 1250 65743 1026,0 < 1s 923 1027 46s 1027 47s 15 1500 34567 1229,7 < 1s 403 1230 26s 1230 28s 15 1750 65743 1434,4 < 1s 2311 1435 9m51s 1435 9m55s 15 2000 543 1643,8 < 1s 477 1644 39s 1644 44s 15 2500 344 2048,9 1s 1058 2049 3m2s 2049 3m8s 15 3000 34567 2455,0 1s 3500 2456 44m5s 2456 44m12s 15 3500 4432 2869,4 1s 1603 2870 1m17s 2870 1m24s 15 4000 65743 3276,3 1s 1559 3277 11m7s 3277 11m14s 15 4500 34567 3688 2s 3417 3688 1h16m21s 3688 1h16m31s 15 5000 65743 4095,2 2s 1395 4096 11m39s 4096 11m47s 28

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