Вы находитесь на странице: 1из 12

Uma Proposta de Soluo para o Problema do Crculo Cortado

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.

Palavras-chaves: Complexidade, Algoritmo, Problema, Partio, Subconjuntos.

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.

2 - O Problema Clssico da Partio e Soma de Subconjuntos


Os problemas de partio e soma de subconjuntos so bastante investigados e existe uma vasta literatura sobre os assuntos, a exemplo dos trabalhos de: Kerlin e ONeil [3], Ciliebak et al [4] e Martello e Toth [5]. O problema de partio de conjuntos definido por [3] como: dado um conjunto S de inteiros positivos, determinar se S pode ser particionado em dois subconjuntos que possui a mesma soma. Outra definio dada por [4], onde pretende-se conhecer a existncia de um subconjunto A' de um determinado conjunto de nmeros A, tal que os elementos do subconjunto A' sero adicionados exatamente at a metade da soma total de todos os elementos do conjunto A. J o problema da soma de subconjuntos semelhante: dado um conjunto S de inteiros positivos e um inteiro t, determinar se algum subconjunto de S corresponde a soma t [3]. Segundo os autores [3], possvel reformular o problema da partio de conjuntos como um caso especial do problema da soma de subconjuntos, onde dado um conjunto de nmeros inteiros positivos S = {y1, y2, ... yn}, determinar se S tem um subconjunto cuja soma (y1 + y2 + ... + yn) / 2. Em [4], os autores apresentam uma pesquisa extensa com uma variedade de solues para o problema da soma de subconjuntos e em [3] um algoritmo aplicado para resolver qualquer problema de partio ou soma de subconjuntos, segundo os seus autores. Por este motivo, todas as solues utilizaram esses conceitos como referncia para resolver o problema. A prxima seo melhora o entendimento do problema e destaca os principais entraves a serem vencidos, enquanto expe as solues propostas para resolv-los.

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.

Figura 1 Simulao 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.

3.1.1 Soluo 1 - Programao Dinmica e Fora Bruta


A primeira investigao foi tentar obter uma forma padro para satisfazer as 3 definies do desafio (Seo 3), onde a partir de algumas simulaes (Figuras 2 e 4), foi percebido que o problema no possui essa caracterstica. Dessa forma, o estudo procurou desenvolver um algoritmo que pudesse verificar a correo de um primeiro comportamento comum, e aps, realizar buscas exaustivas utilizando um algoritmo de fora bruta.

Figura 2 Soluo Inicial.

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.

Figura 3 Teorema da Cruz.

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; }

Listagem 1 Soluo usando Programao Dinmica.

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).

Figura 4 Alguns Resultados Utilizando o Algoritmo de Fora Bruta.

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.

Figura 5 Soma dos subconjuntos.

3.1.2 Soluo 2 Programao Linear e Fora Bruta


O principal problema encontrado na primeira soluo, utilizando o algoritmo de fora bruta, que todas as situaes so testadas exausto. As condies onde A ou A menor ou maior que K, onde K = A - (A - A) e inverses, resultam em um aumento significativo do custo computacional durante a realizao dos clculos das possveis divises de A. A primeira melhoria foi adicionar limites (superior e inferior) para garantir que o algoritmo no realizasse todas as combinaes possveis desnecessariamente. Os limites foram adicionados com base em um modelo de disperso aps a coleta dos primeiros resultados. O limite superior inicia a partir do ltimo elemento de A at a sua metade e o inferior a partir do antepenltimo at o primeiro. Tambm, toda vez que uma possibilidade encontrada nesse limiar de possibilidades, h uma condio de parada para que o algoritmo prossiga com a prxima. Assim, a otimizao do algoritmo permitiu adicionar um pouco de inteligncia soluo, conforme a exibio do pseudocdigo (Listagem 2).
obterApartirDaForcaBruta(int n) { double somaX=0; double somaY=0; V=preencheVetor(n);

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; }

Listagem 2 Soluo usando Programao Linear.

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).

3.1.3 Soluo 3 Busca Mnima e Busca Mxima


A primeira parte do desafio tinha sido vencida, faltava apenas realizar um ranking das maiores possibilidades de cortes utilizando crculos de tamanhos enormes (2 milhes) e este foi o principal entrave do desafio. Apesar de haver uma mudana significativa em relao ao primeiro algoritmo, at esta etapa do estudo, no havia condies de responder a questo em um tempo tolervel. Por isso, o estudo buscou mais uma melhoria na soluo com base em uma variao de um dos problemas clssicos da mochila [5]. A terceira soluo buscou uma combinao dos algoritmos construdos na primeira e segunda soluo, associando-os a uma das solues do problema da mochila binria em trs etapas: 1) construdo um algoritmo inicial (busca mnima), que possui maior otimizao por no realizar pesquisas exaustivas, o qual executado para procurar por crculos que satisfazem as definies apenas uma nica vez para todo N >= 2 e N <= 2000.000. Aps, cada conjunto N que satisfaz as definies de corte mnimo adicionado em uma mochila. O algoritmo de fora bruta obtm cada conjunto da mochila e procura pelos subconjuntos que satisfazem as definies, porm em um universo maior, buscando todas as combinaes possveis (busca mxima).

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).

Figura 6 Primeira Verso da Soluo 3.

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.

Figura 7 Comparao dos Algoritmos Construdos.

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).

Figura 8 Comparao dos Algoritmos com Tamanhos Maiores.

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.

Figura 9 Reduo do Universo de Busca.

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.

Figura 11 Resultados da Soluo 3 com Algoritmo Otimizado.

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).

Figura 12 Previso de Tempo para Soluo do Desafio.

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.

Вам также может понравиться