Академический Документы
Профессиональный Документы
Культура Документы
Jaguaraci Batista Silva Instituto de Cincia e Tecnologia, Universidade Federal de So Paulo Campus So Jos dos Campos, So Paulo-SP jaguaracisilva@gmail.com
Resumo: O problema do circulo cortado pode ser divido em dois desafios principais,
quando os nmeros de 1 a n so ordenados em forma circular. O primeiro encontrar dois nmeros (a e b) no crculo, de forma que se uma linha for desenhada ligando esses nmeros, cortando o crculo, a soma dos nmeros de um lado do crculo igual soma dos nmeros do outro lado. O segundo, executar todas as combinaes possveis que satisfaam as condies do primeiro desafio para todos os crculos de tamanho 2 at 2 milhes. O presente trabalho apresenta trs propostas de soluo: (i) algoritmo hbrido baseado nas tcnicas de programao dinmica e fora bruta, (ii) programao linear combinada com a tcnica de fora bruta e (iii) estratgia de busca mnima e mxima para otimizao das solues anteriores e assim vencer os dois principais desafios do problema.
1 - Introduo
Dado por uma situao em que os nmeros de 1 a n so ordenados em forma circular, o problema proposto possui dois grandes desafios. O primeiro encontrar dois nmeros (a e b) no crculo, de forma que se uma linha for desenhada ligando esses nmeros, cortando o crculo, a soma dos nmeros de um lado do crculo igual soma dos nmeros do outro lado. O segundo, executar todas as combinaes possveis que satisfaam as condies do primeiro desafio para todos os crculos de tamanho 2 at 2 milhes. O estudo relacionou os conceitos envolvidos com os desafios, a partir dos problemas clssicos de partio e soma de subconjuntos [1][3][4], propondo trs solues. A primeira combina os algoritmos de fora bruta e seu refinamento [1][3]. A segunda prope a melhoria da primeira soluo combinando o algoritmo de fora bruta com a tcnica de programao linear [1]. A terceira cria uma estratgia de busca mnima e mxima de subconjuntos com base em uma variao do problema da mochila [5] (knapsack problems) para resolver o desafio em tempo hbil. O artigo apresenta, de forma breve, os conceitos relacionados com os problemas clssicos de partio e soma de subconjuntos, suas definies e algumas solues encontradas na literatura na seo 2. Apresenta um maior detalhamento do problema e as trs solues propostas neste trabalho na seo 3. Em seguida so apresentados
os resultados encontrados nas abordagens e uma breve anlise da complexidade dos algoritmos na seo 4. Por fim, a concluso e referncias utilizadas neste trabalho.
3 Soluo
O problema descrito por uma situao em que os nmeros de 1 a n so ordenados em forma circular. Aps, necessrio encontrar dois nmeros (a e b) no crculo, de forma que se uma linha for desenhada ligando esses nmeros, cortando o crculo, a soma dos nmeros de um lado do crculo igual soma dos nmeros do outro lado. A Figura 1 ilustra um exemplo com 15 nmeros.
possvel notar na ilustrao (Figura 1), que a linha desenhada entre os nmeros 7 e 13 divide o crculo em 2 sub-conjuntos: A = {8,9,10,11,12} e B= {6,5,4,3,2,1,15,14} e que a soma dos elementos dos subconjuntos possuem o mesmo valor em ambos os lados (Definio 1). Tambm, que os elementos que formam a linha so excludos dos subconjuntos (Definio 2). O desafio , principalmente, desenvolver um algoritmo que determine, para os valores de n, quais os dez conjuntos que possuem mais subconjuntos formados entre 2 e 2 milhes que atendam as seguintes definies, conforme o teorema geral: Definio 1 O algoritmo construdo deve assegurar que soma dos elementos dos subconjuntos possveis (lados do crculo) possuem o mesmo valor em ambos os lados. Definio 2 Quando da formao dos possveis subconjuntos, a partir da diviso do crculo, todos os seus elementos sero formados, excluindo os pares que entrecortam o crculo (linha de diviso). Definio 3 Um subconjunto formado a partir dos nmeros ordenados contidos em um crculo de tamanho n, no deve conter qualquer elemento oriundo de outro subconjunto quando da partio do crculo em subconjuntos. Teorema Geral - Dado um conjunto A com elementos ordenados de forma circular em uma matriz, a serem agrupados em 3 subconjuntos distintos (A, Ae A). A soma dos elementos dos subconjuntos A e A so iguais (Definio 1) e no constam os pares que formam a linha que entrecorta o circulo (subconjunto A) (Definio 2) e os elementos dos subconjuntos so distintos (Definio 3). Prova do Teorema Geral - Todo crculo pode ser dado pela seguinte frmula A = A + A + A. Se A a soma dos elementos consecutivos de um subconjunto, a mesma frmula pode ajudar a encontrar a soma dos elementos no consecutivos, atravs da seguinte equao: A = A - (A - A). Assim, a soma de todos os elementos do crculo (A), subtraindo os elementos pares que o entrecortam (A) e os elementos consecutivos j calculados (A), resulta na soma dos elementos do outro lado do crculo (A). Por conseqncia, se igual soma dos elementos consecutivos, estas condies satisfazem todas as definies de corte do crculo. Assim A = A + A + A. Tambm, A} (Definio 2) e A/3 subconjuntos possveis, A = A (Definio 1), A = {x A = {x A A} e suas inverses (Definio 3). A
3.1 Solues
Com base no estudo realizado sobre os problemas clssicos de partio e soma de subconjuntos (Seo 2), o estudo construiu trs solues para vencer os desafios. A primeira utiliza programao dinmica [1] e prope melhorias na primeira verso do algoritmo empregando a tcnica da fora bruta [1]. A segunda soluo suscita melhorias na primeira utilizando a programao linear [1]. Aps, foi construda uma terceira soluo, que se beneficia das solues anteriores, e cria uma estratgia
baseada em uma variao do problema da mochila [5] para realizar buscas mnimas e mximas de subconjuntos.
A soluo inicial foi encontrada com base no teorema da cruz, a ser detalhado mais adiante nesse estudo. De acordo com a Figura 2, possvel notar que alguns conjuntos com valores de n >=2 at e que possuem elementos ordenados em forma circular em uma matriz de largura [2, n/2], podem ser divididos em 2 subconjuntos, conseqentemente, direita e a esquerda das colunas centrais das matrizes (CC). Alm disso, essas colunas podem ser encontradas facilmente atravs do seguinte clculo: ((n/2)/2)+1. E por sua vez, as colunas centrais, que dividem as matrizes (destacadas em azul), possuem elementos superiores e inferiores que formam as extremidades das linhas que cortam os crculos.
Teorema da Cruz O teorema da cruz (Figura 3 direita) define a primeira condio comum a ser considerada na busca exaustiva por subconjuntos. Ao organizar os elementos em uma matriz onde: na primeira linha superior consta a indicao dos nmeros de elementos do crculo, em seguida, cada coluna da segunda linha existe a soma dos elementos contidos nas linhas inferiores, inclusive os elementos que formam
a linha que divide o crculo (em azul). Esses elementos centrais formam uma cruz e dividem os lados do crculo satisfazendo todas as definies (Seo 3). Prova do Teorema da Cruz Dado um crculo com o nmero de elementos n = 5, formando um conjunto A = {0, 1, 2, 3, 4, 5}, onde A Z. Este ser sempre dividido em 3 subconjuntos possveis: A = {0, 5} , A = {2, 3} e A {1, 4}. Assim se A = {5}, A = {5} e A = {5}, A = {15}, pois 15 = 5 + 5 + 5 (Teorema Geral). Tambm A = A ou 5 = 5 (Definio 1), A = {x (Definio 3). A A} (Definio 2) e A = {x A A} e suas inverses
obterPossibilidadesApartirDoTeoremadaCruz(int n) { double ladoDireito = 0; double ladoEsquerdo = 0; possibilidade = 0; Para j=0 at j<2 faa{ Para i=0 at i<limite/2 faa{ R[i+1][j] = M[j][i]; ladoEsquerdo = ladoEsquerdo + R[i+1][j]; } } R[0][0]= ladoEsquerdo; Para j=0 at j<2 faa{ Para i=limite/2 at i<M[1].tamanho-1 faa{ R[i+1][j] = M[j][i+1]; ladoDireito = ladoDireito + R[i+1][j]; } } R[0][1]= ladoDireito; Se (R[0][0] == R[0][1]) possibilidade++; retorne possibilidade; }
A Listagem 1 apresenta a implementao do teorema da Cruz, entretanto apenas o teorema da cruz no foi suficiente para verificar todas as possibilidades. Durante outras simulaes foram encontrados diversos casos em que as definies foram satisfeitas, porm o padro de formao dos subconjuntos no seguiu a soluo apresentada no teorema. Desta forma, o algoritmo no poderia ser considerado uma soluo tima para o problema. Para alcanar essa condio, foi necessrio utilizar a tcnica de fora bruta [1], verificando todas as combinaes possveis que satisfizessem as definies (Figura 4).
Com o apoio da combinao das tcnicas de programao dinmica e fora bruta, cada partio de um conjunto foi verificada, testando todas as possibilidades possveis. Para comparar a somas dos lados, aps o corte do circulo, medida que o algoritmo realizava a busca por elementos e agrupando-os em subconjuntos. Uma tabela foi adicionada para guardar os resultados e comparar, a partir de uma escolha tima, se os totais de cada lado eram iguais e se todas as definies haviam sido satisfeitas, conforme exibio dos dados na Figura 5.
Para j=n at j>=n/2 decremente j-1) Para i=n-2 at i>=1 decremente i-1){ somaX = somaPA(V[i+1],V[j-1]); somaZ = somaPA(1,n); somaY = ((somaZ-(j+i))-somaX); Se (somaX==somaY && somaX>0 && somaY>0) possibilidade++; break; } retorne possibilidade; }
A segunda melhoria foi baseada na reduo da complexidade quando da soma dos termos dos elementos (linhas 7-9) dos subconjuntos (A e A). Foi utilizada a frmula de clculo de uma Progresso Aritmtica (PA) [6], adaptada a frmula geral demonstrada na seo 3 (Teorema Geral), o que possibilitou reduzir a complexidade do trecho das somas dos elementos (somaX e somaY) de O( ) para O(1).
2) 3)
A combinao das buscas (mnimas e mximas) foi bastante promissora para reduo do tempo de processamento, porm no pde ser considerada tima na sua primeira verso. Houve casos em que o algoritmo baseado no teorema da cruz
(busca mnima) no encontrou conjuntos que poderiam ser cortados, devido ao seu limite de pesquisa ser reduzido, ao testar essa amostra com o algoritmo de fora bruta (busca mxima) houve uma contradio a idia formulada na soluo 3 (Figura 6 em amarelo).
Em uma nova simulao com o valor de N igual a 6.222, a busca mnima, utilizando o algoritmo melhorado da segunda soluo (fora bruta), reduziu para 64% ou 3.982 o universo de busca exaustiva, evitando que a busca mxima fosse empregada em 36% dos conjuntos que no tinha nenhuma possibilidade de diviso. Os resultados de todas as simulaes e comparaes entre as verses melhoradas dos algoritmos sero apresentados na prxima seo.
4 - Resultados
O estudo utilizou um notebook de 32 bits, com processador Intel Core2 Duo (1.83 GHz) e memria de 3GB (667 MHz DDR2), sistema operacional Microsoft Windows Vista Business (Verso 6.0, Compilao 6002, Service Pack 2) o ambiente de desenvolvimento Eclipse 3.5.1 (Buid 20090920-1017), com o Java Development Kit (JDK) 1.6 e linguagem de programao Java. A anlise dos resultados demonstra que houve realmente uma melhoria significativa em relao s verses dos algoritmos propostos nas solues. A primeira soluo (T. Cruz) possui complexidade O(n/2), sua implementao foi baseada no teorema formulado nesta pesquisa e conseguiu o melhor tempo para realizar as buscas. Entretanto, a segunda soluo (FBc/PL) tima, pois verifica todas as possibilidades
realizando buscas exaustivas, por isso sua complexidade O(n/2*n), o que justifica o seu tempo de soluo ser muito maior que o da primeira. A segunda verso do algoritmo (FBc/PL*), utilizando programao linear e as otimizaes citadas (Seo 3.1.2), reduziu drasticamente o tempo de busca em relao a primeira verso (FBc/PL). possvel notar claramente (Figura 7) que ele muito mais rpido que o anterior, mesmo com a utilizao da tcnica de fora bruta.
A Figura 8 apresenta uma anlise realizada com aumento do volume de dados, o que apresenta uma idia da eficincia da soluo 2 quando comparada com o primeiro algoritmo desenvolvido. A primeira soluo (T. Cruz) segue com o melhor tempo entre todos, porm sem efetividade na busca. A verso otimizada da soluo 2 (FBc/PL*) conseguiu encontrar todas as possibilidades com uma melhoria significativa em relao a primeira verso e pode ser considerada uma soluo tima para conjuntos de dados com tamanho grandes (e.g. milhares).
Conforme relatado (Seo 3.1.3) a ltima soluo buscou uma estratgia de busca mnima e mxima de subconjunto. Apresentou melhorias significativas na soluo,
reduzindo em 36% a quantidade de conjuntos a serem verificados (Figura 9). Com base nesse resultado, o estudo utilizou a verso tima do algoritmo construdo na soluo 2 (FBc/PL*) adaptado para realizar buscas mnimas e mximas.
Embora o ltimo algoritmo desenvolvido tenha melhorias significativas, com base nos testes para valores ainda maiores que os anteriores (Figura 11), a ltima soluo no conseguiria resolver uma grande quantidade de dados em tempo hbil. Conforme demonstram os dados, o tempo de soluo de cada conjunto separadamente baixo (linha em branco), porm, o tempo total da soluo (linha em azul) ainda intolervel para soluo do problema. Com base nessa ltima anlise dos resultados, a principal dvida seria responder em quanto tempo o algoritmo seria capaz de resolver o desafio para valores de n >= 2 milhes.
Aps realizar diversas simulaes e clculo da complexidade total do algoritmo, foi possvel estimar o tempo de soluo dos algoritmos de busca mnima e mxima de subconjuntos combinados (FBc/PL*). A Figura 12 exibe a projeo de alguns valores utilizando uma frmula de previso [8] at o limite proposto no desafio. De posse dessa previso, foi possvel conhecer o tempo de soluo para conjuntos de dados enormes, o que reduziu o tempo de anlise e simulao de experimentos. Tambm, facilita a comparao dos resultados com outras solues para o mesmo problema, alm de demonstrar claramente, quais os limites do algoritmo proposto. No entanto, a projeo foi realizada com os resultados dos experimentos realizados em um computador especfico, desta forma, alm da possibilidade de erros por desvios nos
resultados coletados, pode haver tambm diferenas quando o mesmo algoritmo for executado em computadores com maior ou menor poder de processamento que o utilizado neste estudo (Seo 4).
Um novo experimento poderia ser proposto para construo de um algoritmo hbrido combinando uma estratgia gulosa [1] e outra variao do problema da mochila [5]. Por realizar uma busca mnima comeando por 2 milhes e reduzindo o universo das buscas (36%) de forma iterativa (e.g. 1.000.000, 640.000, 409.600, 262.144) a cada iterao. O algoritmo guloso iria buscar um mnimo possvel (1, 2, 3, 4, 5... n), armazenando na mochila apenas os valores de n com possibilidades n+1. Com o conjunto de dados sempre reduzindo e buscando apenas o prximo maior valor uma nica vez, acredita-se que essa estratgia teria uma reduo significativa no tempo total de processamento.
5 - Concluso
O problema do crculo cortado dado por um crculo composto por nmeros de 1 a n ordenados em forma circular, onde se deseja encontrar dois nmeros no crculo, de forma que se uma linha for desenhada ligando esses nmeros, cortando o crculo, a soma dos nmeros de um lado do crculo igual soma dos nmeros do outro lado. Aps, devem ser listados os crculos com as maiores possibilidades de cortes a partir de uma configurao (n>=2 e n<=2 milhes). Este trabalho associou o desafio ao problema clssico de partio e soma de subconjuntos e apresentou trs solues. A primeira soluo utilizou tcnicas de programao dinmica e fora bruta e necessitou de melhorias significativas para resolver o desafio. O algoritmo proposto na
segunda soluo utilizou tcnicas de programao linear e fora bruta e os seus resultados foram melhores, porm no conseguiu obter xito no processamento de todas as possibilidades at o limite proposto de 2 milhes de crculos. A terceira soluo reduziu o tempo final de processamento, utilizando uma estratgia de busca mnima e mxima, conseguiu diminuir para 64% o universo de busca. Conforme os resultados apresentados, o algoritmo timo para resolver conjuntos de dados com tamanhos grandes, porm no possvel resolver o desafio em tempo hbil. Embora no tenha sido provado com um experimento completo (por limitao de tempo), acredita-se que o algoritmo proposto na ltima soluo poderia resolver o problema em aproximadamente 23 dias. Todo o estudo foi realizado em um computador de uso domstico, e se fosse utilizado um equipamento projetado especificamente para este tipo de trabalho (prprios de institutos de pesquisa), acredita-se que a soluo poderia ser dada em tempo muito inferior ao previsto neste estudo. Tambm o estudo sugeriu outras melhorias (Seo 4), que combinadas ou no s outras tcnicas de otimizao [2][7], podem adicionar maior inteligncia aos algoritmos de busca mnima e mxima, reduzindo o tempo total de processamento de dias para talvez horas.
Referncias
[1] Cormen, T.H., Leiserson, C.E., Rivest, R.L., Stein, C.. "Introduction to Algorithms", MIT Press, Cambridge, Massachusetts, London, 2nd Ed, 2001. [2] Gurari, E. M.. Backtracking Algorithms. CIS 680: Data Structures Course Notes, Ohio state University, Columbus, Ohio, 1999. Acessado em 29 de maio de 2012, http://www.cse.ohiotate.edu/~gurari/course/cis680/cis680Ch19.html. [3] Neil, T. E., Kerlin, S.. A Simple 2 ^0(sqrt(x)) Algorithm for PARTITION and SUBSET SUM. Computer Science Department, University of North Dakota. Acessado em 29 de maio de 2012, http://people.aero.und.edu/~oneil/pubs/fcs10.pdf. [4] Ciliebal, M., Eidebenz, S., Pagourtzis, A., Schlude, K.. Equal Sum subsets: Complexity of Variations. Institute of Theoretical Computer Science. ETH Zurich,2002 . [5] Martello, S., Toth P.. Knapsack Problems Algorithms and Computer Implementation. Wiley-Interscience Series in Discrete Mathematics and Optimization. ISBN 0471924202, John Wiley & Sons, Canada, 1990. [6] Wikipedia. Frmula do Termo Geral, seo: Somatrio da PA. Acessado em 01 de junho de 2012, http://pt.wikipedia.org/wiki/F%C3%B3rmula_do_termo_geral. [7] Constantino, A. A., Dos Reis, P. A., Neto, C. F. X. M., Figueiredo, M. F.. Aplicao de Algoritmos Genticos Ao Problema de Cobertura de Conjunto. Anais do XXXV Simpsio Brasileiro de Pesquisa Operacional (SBPO). Natal-RN, 2003.
[8] Microsoft. "Description of the Forecast Function in Excel". Acessado em 01 de junho de 2012, http://support.microsoft.com/kb/828236.