Metodologia para acelerar a busca por soluções de problemas similares ao Caixeiro Viajante Maria José Pinto Lamosa Instituto de Estudos Avançados (IEAv) - Divisão de Geointeligência (EGI) São José dos Campos, SP E-mail: [email protected] Fernando Nascimento Coelho Nei Yoshiriro Soma Instituto Tecnológico de Aeronáutica (ITA) - Departamento de Engenharia de Computação São José dos Campos E-mails: [email protected] , [email protected] Resumo: Este trabalho apresenta uma metodologia que visa acelerar o tempo de busca por soluções para problemas similares ao Problema do Caixeiro Viajante, utilizando agregação de equações Diofantinas. Além disso, propõe realizar um pré-processamento que, utilizando o limitante de Frobenius, busca reduzir ainda mais o tempo de resolução do problema. Introdução Problemas que envolvem otimização de rotas em uma determinada região são conhecidos como problemas de roteamento e têm despertado o interesse de pesquisadores devido à dificuldade e complexidade de resolução. Além disso, estes problemas possuem aplicação direta na prática e podem trazer economia de recursos aos setores interessados, quando rotas mais elaboradas são geradas. Dentre os problemas de roteamento mais estudados na literatura, podemos citar o problema do caixeiro viajante (TSP, do inglês Traveling Salesman Problem). O objetivo deste trabalho consiste em propor uma metodologia para tratar problemas similares ao TSP, ou seja, que podem ser modelados através de equações matemáticas cujas variáveis devem assumir somente valores inteiros não-negativos. Esses sistemas, em geral, são resolvidos de forma ineficiente, no sentido de que é demandado um tempo muito alto, muitas vezes impraticável para encontrar um conjunto de soluções possíveis. Diante desse impasse surgiu a ideia de agregar as equações desses sistemas em uma única equação que possuísse um conjunto solução que contivesse o mesmo conjunto solução que o sistema original. Com essa única equação advinda do processo de agregação poder-se-ia descobrir de modo rápido (polinomial) a existência ou não de solução para muitos casos através do limitante de Frobenius [7]. Assim, para muitos problemas, seria possível verificar rapidamente a existência ou não de uma solução, que é muito interessante do ponto de vista prático. Problema do Caixeiro Viajante Neste problema, um caixeiro viajante, começando de uma cidade origem, visita exatamente uma vez cada cidade de uma lista pré-definida e retorna para a origem, buscando minimizar a distância percorrida [3]. Formulação matemática Considerando que o problema pode ser modelado como um problema em grafo, seja: n, o número de cidades a serem visitadas (número de vértices do grafo), (i, j) as arestas do grafo e dij o custo (distância) para percorrer a aresta (i, j). Ainda, considere a variável xij indicando o fluxo da rota, ou seja, será igual a 1 se a rota passar pela aresta (i, j) e 0, caso contrário. A formulação matemática do TSP proposta em [5] é dada por: n Minimizar n ∑∑ d (1) ij x ij i −1 j =1 799 n Sujeito a: ∑x ij =1 ∀j ∈ N (2) ∀i ∈ N (3) ∀S ⊂ N (4) ∀(i , j ) ∈ N (5) i =1 n ∑x ij =1 j =1 ∑x ij ≤ S −1 i , j∈S x ij ∈ {0 ,1} A função objetivo (1) busca minimizar o custo total da viagem. As restrições (2) e (3) exigem que o caixeiro chegue e deixe cada nó exatamente uma vez, respectivamente. As restrições (4) evitam a formação de ciclos e as restrições (5) indicam que a variável de decisão é binária, ou seja, indica se a aresta está ou não na rota definida. Agregação de equações diofantinas Uma equação diofantina é uma equação algébrica com coeficientes e variáveis inteiras. Assim, um sistema de equações diofantinas é formado por um conjunto de equações com coeficientes e variáveis inteiras. Transformar um sistema de equações lineares em uma única restrição cujo conjunto solução de inteiros não negativos contém o conjunto de solução do sistema original é interessante do ponto de vista de resolução de problemas de programação linear inteira. Existem métodos descritos na literatura sobre agregação de equações para duas ou mais equações. O trabalho de Mathews [apud 4] permite agregar equações diofantinas com coeficientes inteiros não-negativos, gerando uma única equação. A partir do trabalho de Mathews [apud 4], outros resultados de agregações surgiram na literatura, como os propostos nos trabalhos de Elimam e Elmaghraby [4] e Babayeve e Mardanov [2], que buscam diminuir os coeficientes da equação agregada tornando, em geral, sua resolução mais rápida computacionalmente. Para um melhor entendimento destes métodos e, para facilitar a obtenção da equação agregada para um conjunto de equações lineares inteiras, implementamos um programa em linguagem C. Assim, dado um conjunto de equações como entrada o programa fornece a equação agregada final. Problema de Frobenius para equações Diofantinas Considerando o sistema ax + by = c e d = mdc(a ,b ) , temos que toda combinação linear de a e b é múltipla de d e, portanto, uma condição necessária para existência da solução é que d c . Isso já pode ser utilizado como um pré-processamento, evitando buscas desnecessárias por soluções. Na verdade, essa condição é necessária e suficiente, pois dada uma solução inicial (x0 , y0 ) , ∀k ∈ Z o par ordenado x0 + bk , y0 − ak é também solução. Tal solução inicial d d sempre existe pois, pelo Teorema de Bézout [8], o máximo divisor comum de dois números inteiros é uma combinação linear deles: c c c d = ax0′ + bxy 0′ ⇒ d = a x0′ + b xy0′ d d d c c Tomando x0 = x0′ e y0 = xy0′ é uma solução desde que d c . d d Considerando o caso em que os coeficientes de uma equação diofantina são todos inteiros positivos e as variáveis não-negativas, o fato do máximo divisor comum dividir o termo independente não garante a existência de uma solução. Com isto, surge o questionamento de quais são os valores do termo independente que podem ser escritos como combinação linear não-negativa dos coeficientes positivos da equação. Esse problema é conhecido como o problema de Frobenius para equações Diofantinas, que propõe encontrar, dada uma equação Diofantina linear inteira não-negativa, o maior inteiro que não pode ser escrito como combinação linear inteira não-negativa dos coeficientes da equação. Dessa forma, pode-se 800 afirmar que, a partir de um certo valor, sempre há solução para a equação diofantina nos inteiros não-negativos. Para o caso onde a equação possui somente dois coeficientes inteiros não negativos primos entre si (a1 e a2), o maior número que não pode ser escrito como combinação linear inteira não-negativa destes coeficientes, vale [6]: g (a1 a 2 ) = a1 a 2 − a1 − a 2 O desafio de encontrar o maior valor que não pode ser combinação linear inteira positiva para valores maiores que dois é bem mais complicado e, com isto, não existe uma fórmula fechada para casos maiores que dois [6]. Diversos trabalhos, porém, tratam de encontrar fórmulas do limitante de Frobenius para três e quatro variáveis com certas restrições que possibilitem uma fórmula explícita para o limitante. A seguir serão apresentados alguns teoremas desses trabalhos. Teorema 1 Se a1 , a 2 , a 3 são relativamente primos e a1 (a 2 + a 3 ) , então: a a g (a1 , a 2 , a 3 ) = −a1 + maxai 1 5 −i a 2 + a 3 i =2 ,3 Teorema 2 Seja um inteiro não-negativo. Então: a a + 1 a + 2 g (a , a + 1, a + 2 , a + 4 ) = (a + 1) + + 2 4 − 1 4 4 a + 1 a a + 1 a + 2 a + 3 g (a , a + 1, a + 2 , a + 5 ) = a + 5 + 5 + 5 + 2 5 − 1 5 a a a + 1 a + 2 a + 3 a + 4 a + 5 g (a , a + 1, a + 2 , a + 6 ) = a + 2 + 2 + 5 + + + −1 6 6 6 6 6 6 6 Para o caso geral, o nível de dificuldade é ainda maior, sendo praticamente inviável encontrar o valor exato do limitante mesmo para poucas variáveis [6]. Além disso, o problema é NPCompleto para o caso geral. Assim, passa a ser mais interessante a busca por cotas que indiquem apenas que a partir do valor desta cota sempre haverá solução. Uma cota interessante e simples de encontrar é tentar reduzir o problema ao caso de duas variáveis. Considere que: a 1 x1 + a 2 x 2 + K + a n x n = L (6) Para verificar se esta equação tem ou não solução, primeiro deve-se averiguar se mdc (a1 , a 2 ,K , a n ) L pois, caso contrário, não há solução. Depois pode-se supor, sem perda de generalidade, que a1 ≤ a 2 ≤ K ≤ a n . No caso em que existem dois coeficientes primos entre si, escolhe-se o menor par em que isso ocorre. Supondo que seja o par a1 e a 2 e como xi , i = 1,K , n pertence aos inteiros não-negativos, pode-se se escrever a equação (6) ignorando os termos a 3 , a 4 ,K , a n , como se procurássemos soluções em que x 3 = x4 = K = x n = 0 , resultando na seguinte equação: a 1 x1 + a 2 x 2 = L que possui um limitante de Frobenius, como descrito anteriormente: a1 a 2 − a1 − a 2 . Dessa forma, se L for maior que esse valor, pode-se afirmar que a equação tem solução. Além disso, pode-se afirmar que o limitante de Frobenius dessa equação, L*, tem uma cota superior igual a: L* ≤ a1 a 2 − a1 − a 2 . Por outro lado, se L ≤ a1 a 2 − a1 − a 2 não se pode afirmar nada sobre essa equação em termos de solução. Vale ressaltar que essa análise foi possível, considerando o caso especial em 801 que existem dois coeficientes primos entre si. Isso pode ocorrer mesmo em casos que mdc(a1 , a 2 ,K , a n ) = 1 , ou seja, mesmo que a condição do máximo divisor comum dividir o termo independente ocorra, não há sempre garantia da hipótese feita ser válida. Portanto, o método para propor essa cota superior vale somente nesses casos especiais. Metodologia O modelo (1)-(5) para o TSP permite transformar o problema com várias equações inteiras, que refletem as restrições que são impostas naturalmente pelo problema, utilizando agregação. A ideia principal da resolução proposta para o problema é reduzir as restrições impostas ou um conjunto destas restrições, através de agregações de equações Diofantinas, reduzindo o tempo para a busca de soluções. Há ainda casos em que se pode considerar um préprocessamento, parando a busca por uma solução, pois um conjunto de restrições não apresenta solução. Isso evita, em muitos casos, processamentos desnecessários. A análise descrita anteriormente consiste em agrupar algumas restrições do problema em uma única equação que contenha o conjunto solução do sistema original de restrições, diminuindo o tempo de processamento das mesmas. E ainda, através do limitante de Frobenius, poder afirmar categoricamente em vários casos se há ou não solução para o sistema de forma rápida. Resultados Alguns testes foram realizados para agregar equações Diofantinas que representassem as restrições do TSP. Primeiramente, realizamos testes considerando as restrições (3). Para um grafo com 4 vértices, a seguinte equação agregada foi obtida pelo teorema de Mathews: 26190 x12 + 26190 x13 + 26190 x14 + 47142 x 21 + 47142 x 23 + 47142 x 24 + 10185 x31 + 10185 x32 + 10185 x34 + 581x41 + 581x 42 + 581x43 + 26190 y1 + 47142 y 2 + 10185 y 3 + 581 y 4 = 84098 Observando a cota descrita para o limitante de Frobenius para o caso geral, como o mdc(581,26190 = 1) e são os dois menores com essa característica, temos: L* = 581 × 26290 − 581 − 26190 = 15189619 que é um número maior que o termo independente 84098, portanto nada se pode afirmar para tal equação em termos de existência de solução, mas o número de restrições foi reduzido para apenas uma equação. Este problema com 4 vértices, com e sem agregação, foi resolvido utilizando o pacote GLPK (GNU Linear Programming Kit) e a solução foi obtida no mesmo tempo computacional de 0.0s. Quando o número de vértices foi um pouco maior (oito vértices) o tempo para encontrar a solução ótima no caso com agregação foi bem maior (4.2s) que no caso sem agregação (0.3s), ou seja, não foi bom utilizar agregação. A utilização da agregação também não foi eficiente com 10 vértices, pois o comportamento foi parecido. Com 16 vértices, o resultado com agregação após cerca de 10 minutos não chegou a nenhum resultado e foi encerrado a busca, pois o tempo já estava muito elevado em relação ao tempo sem agregação, que utilizou 1.3s. Assim, percebemos que a agregação de equações para restrições do tipo (3), que tenham apenas coeficientes zeros e uns, não foi eficiente, tornando a busca por soluções mais lenta. Quando restrições que envolvam desigualdades na mesma direção no modelo são substituídas por uma única restrição que é uma combinação linear das anteriores isso tem o efeito de tornar o conjunto de soluções factível maior [5]. Isso pode acarretar em um tempo de busca maior, como foi mostrado nos exemplos anteriores. Entretanto, resolvemos fazer novos testes pensando que, em problemas como o TSP, em geral, podem surgir outros tipos de restrições além das já apresentadas. Por exemplo, existem problemas em que o caixeiro tem capacidade máxima de carregamento ou os vértices 802 têm pesos, indicando importância ou precedência. Assim, uma nova alternativa foi direcionar a agregação para esse tipo de restrição, visto que para restrições com coeficientes zeros e uns as agregações não foram bem sucedidas. Considere que as seguintes restrições de capacidade foram impostas ao TSP: 2 x1 + 5 x 2 + 13 x3 + 12 x4 + 11x 5 + 10 x6 + 9 x7 + 10 x8 = 27 7 x1 + 10 x 2 + 10 x3 + 15 x4 + 21x5 + 10 x6 + 18 x7 + 26 x8 = 35 13 x1 + 8 x 2 + 9 x3 + 10 x4 + 17 x5 + 20 x6 + 11x7 + 5 x8 = 38 Tendo em vista um pré-processamento, pode-se verificar que o limitante de Frobenius garante que há solução para algumas restrições acima, pois utilizando a cota descrita anteriormente, temos: L1 = 2 × 5 − 2 − 5 = 3 < 27 ⇒ Há solução! L2 = 7 × 10 − 7 − 10 = 53 > 35 ⇒ Nada se pode afirmar. L3 = 13 × 8 − 13 − 8 = 83 > 38 ⇒ Nada se pode afirmar. Ao tentar resolver esse problema sem agregação, não foi possível encontrar solução em 20 minutos e a busca foi interrompida. Usando a agregação considerando o agrupamento das duas primeiras restrições, obtivemos o seguinte sistema: 324 x1 + 465 x 2 + 473 x 3 + 702 x4 + 977 x5 + 470 x6 + 837 x7 + 1206 x 8 = 1637 13 x1 + 8 x 2 + 9 x3 + 10 x4 + 17 x5 + 20 x6 + 11x7 + 5 x8 = 38 Neste caso, a resposta foi obtida em 0.0 segundos, ou seja, um ganho de tempo excelente com a agregação. Com a agregação das três restrições obteve-se: 119482x1 + 73793x 2 + 82967 x 3 + 92362x4 + 156799x 5 + 183790x6 + 101663x7 + 47036 x8 = 349945 que forneceu resposta em 1.0 segundos, um ganho também muito bom em comparação ao conjunto de restrições não agregadas. Considerando agora um novo conjunto de restrições impostas ao problema, como o descrito a seguir: 3 x1 + 5 x 2 + 7 x3 + 11x 4 + 13 x5 + 37 x6 = 17 7 x1 + 8 x 2 + 6 x 3 + 5 x4 + 23 x5 + 54 x6 = 22 17 x1 + 13 x 2 + 21x3 + 8 x4 + 31x5 + 7 x6 = 47 23 x1 + 7 x 2 + 41x 3 + 13 x4 + 51x 5 + 37 x6 = 55 Novamente fazendo um pré-processamento, pode-se verificar que a cota do limitante de Frobenius para as restrições anteriores será: L1 L2 L3 L4 = 3 × 5 − 3 − 5 = 7 < 17 ⇒ Há solução! = 5 × 6 − 5 − 6 = 19 < 22 ⇒ Há solução! = 7 × 8 − 7 − 8 = 41 < 47 ⇒ Há solução! = 7 × 13 − 7 − 13 = 71 > 55 ⇒ Nada se pode afirmar. Agregando as quatro equações, teremos: 42700730 x1 + 13137153 x 2 + 75950759 x 3 + 24106275 x 4 + 94563978 x 5 + 68328039 x6 = 102225065 cuja solução foi encontrada em 1.3s. Para um novo conjunto de restrições: 5 x1 + 6 x 2 + 7 x3 + 9 x4 = 8 7 x1 + 8 x 2 + 6 x 3 + 5 x4 = 22 17 x1 + 13 x 2 + 21x 3 + 8 x 4 = 47 23 x1 + 7 x 2 + 41x 3 + 13 x4 = 55 803 Analisando o Limitante de Frobenius para a primeira restrição, pode-se calcular exatamente o limitante de Frobenius da seguinte forma: a a + 1 a + 2 g (a , a + 1, a + 2 , a + 4 ) = (a + 1) + + 2 −1⇒ 4 4 4 5 5 + 1 5 + 2 g (5 ,6 ,7 ,9 ) = (5 + 1) + + 2 −1⇒ 4 4 4 5 6 7 g (5 ,6 ,7 ,9 ) = 6 + + 2 − 1 = 6 + 1 + 2 − 1 = 8 4 4 4 Pode-se afirmar que não existe solução para o sistema, pois o termo independente é igual ao limitante de Frobenius, portanto 8 é o maior inteiro que não pode ser escrito como combinação linear não negativa dos coeficientes 5,6,7 e 9. Esse tipo de pré-processamento pode ser bastante útil, pois evita a busca por uma solução inexistente. Considerações Finais A otimização do tempo de busca para muitos problemas computacionais é algo sempre relevante. Diante disso, esse trabalho teve como enfoque a criação de uma metodologia visando uma busca mais rápida de soluções para problemas de programação linear inteira, como o TSP. A metodologia abordada consistiu em agrupar restrições com a utilização de conceitos de agregação de equações Diofantinas, verificando o impacto desta agregação no tempo de solução do problema, bem como na qualidade da solução e no gasto computacional. Percebeuse que a metodologia não funcionou bem para equações com coeficientes zeros e uns, tornando a busca por solução mais lenta em quase todos os casos. Em contrapartida, ao analisar restrições mais gerais, que geralmente são impostas nesses problemas, verificou-se que o tempo de busca de solução foi bastante reduzido nos casos testados. Além disso foi proposta a utilização de um pré-processamento baseado no limitante de Frobenius, visando uma melhora no tempo de busca. Os tempos computacionais mostraram que esta abordagem pode ser útil em alguns casos particulares. Referências [1] J.L.R. Alfonsín, "The Diophantine Frobenius Problem", Oxford University Press, USA, 2005. [2] D. A. Babayev e S. S. Mardanov, Sequential and simultaneous aggregation of diophantine equations, Discrete Applied Mathematics, vol. 50, pp. 209-220, (1994). [3] R. Diestel, "Graph Teory", Springer-Verlag, New York, 2000. [4] A. A. Elimam e S.E. Elmaghraby, On the reduction method for integer linear programs, II, Discrete Applied Mathematics, vol. 12, pp. 241-260, (1985). [5] M. C. Goldbarg e H. P. L. Luna, "Otimização Combinatória e Programação Linear", Elsevier, São Paulo, 2000. [6] A. Khurana e K. G. Murty, How effective is aggregation for solving 0–1 models?, Opsearch, vol. 49, pp. 78-85, 2012. [7] E.L.Lawler e J.K.Lenstra, "The Traveling Salesman Problem", Wiley, Chichester, 1985. [8] A. C. Muniz Neto, Como Fermat e Bézout podem salvar o dia, Eureka! Olimpíada Brasileira de Matemática, vol. 12, n. 1, pp. 25-30, 2001. 804