62ª Reunião Anual da SBPC
A. Ciências Exatas e da Terra - 5. Matemática - 4. Matemática Aplicada
ANÁLISE E COMPARAÇÃO ENTRE ALGORITMOS DE PERCOLAÇÃO
Isaac Dayan Bastos da Silva 1
Marcelo Gomes Pereira 2
Joaquim Elias de Freitas 2
Antônio Carlos Fonseca Pontes 1
Antônio Carlos Fonseca Pontes Júnior 1
1. CCET,Universidade Federal do Acre/UFAC
2. CCET, Universidade Federal do Rio Grande do Norte/UFRN
INTRODUÇÃO:
Na atualidade, existem muitos trabalhos científicos que utilizam a percolação para modelar diversos problemas, muitas vezes, de difícil solução e que são resolvidos apenas de forma aproximada com a ajuda de computadores. Este trabalho tem como principal finalidade a comparação, utilizando métodos computacionais e teóricos, entre dois algoritmos que simulam o processo de percolação. Um deles foi elaborado por Joaquim Elias de Freitas e o outro por Mark E. J. Newman e Robert M. Ziff, um independente do outro, ambos com muitas diferenças, porém com o mesmo objetivo: modelagem computacional da percolação. Podemos destacar como objetivo secundário o estudo desses algoritmos para utilização dos conhecimentos adquiridos em futuras aplicações práticas, possivelmente em outras áreas do conhecimento.
METODOLOGIA:
O objetivo central deste artigo é efetuar uma comparação entre os algoritmos de Elias (chamaremos de algoritmo A) e de Ziff e Newman (chamaremos de algoritmo B). Para isso utilizamos duas técnicas: Cálculo da complexidade teórica (utilizando a notação de pior caso) da parte mais importante de cada um deles e utilização de um algoritmo mesclando os códigos dos dois para fazer a comparação entre as complexidades temporais desses algoritmos de forma experimental. Estudamos o código de cada algoritmo para conhecer de forma mais completa as rotinas e a forma como cada um deles simula a percolação. Após isso, modificamos os algoritmos para que eles utilizassem as mesmas ferramentas e fossem diferenciados apenas na parte essencial e crítica para o cálculo da complexidade que é a formação dos aglomerados.
RESULTADOS:
A partir do algoritmo resultante da modificação dos algoritmos A e B calculamos o tempo gasto pelo algoritmo de Ziff, que foi de 201,422s enquanto que o de Elias foi de 287,347s (diferença de 85,925s) para 100 execuções com lado da malha igual a 2048 (4.194.304 de sítios). Executamos o algoritmo que efetuou essas medições em um computador com a seguinte configuração: processador AMD Athlon(tm) 64 3800+ 2,4GHz e 512MB de memória RAM. Na estimativa teórica da complexidade os dois algoritmos apresentaram complexidades iguais a O(n). Isso nos diz que a função custo de cada algoritmo possui, no máximo, um comportamento linear e em um ambiente computacional ambos os algoritmos se comportariam de maneira equivalente, o que privilegia o algoritmo A, pois o mesmo possui uma estrutura que consegue efetuar a percolação em casos mais gerais que o algoritmo B. Na comparação experimental do tempo, o algoritmo de Ziff é ligeiramente mais rápido como podemos perceber na pequena diferença de tempo (85,925s) ao executarmos os algoritmos como lado L = 2048.
CONCLUSÃO:
Neste trabalho, foram estudados e comparados dois algoritmos que simulam o processo da percolação. Para isso, utilizamos não só conhecimentos de percolação, como também ferramentas da teoria de complexidade de algoritmos que possibilitaram a obtenção do resultado pretendido nesse estudo. Utilizamos duas técnicas para efetuarmos a comparação: construímos um algoritmo que possibilitasse a comparação do tempo de execução dos algoritmos em estudo que foram executados 100 vezes cada um e a partir do tempo total calculamos o tempo médio; a outra foi a utilização da técnica do pior caso para obtermos uma estimativa teórica do comportamento computacional de cada um deles.
Palavras-chave: percolação, complexidade de algoritmos, algoritmos de percolação.