Professional Documents
Culture Documents
Complexidade de Algoritmos
ABSTRACT
This paper presents the conception, project and development of the prototype system ANAC that consists of a tool to be
used in aid to teaching complexity of algorithms. The system has for main objective to guide the user in the process of
analysis of algorithm supplying as result the complexity equations for the average case and worst case.
Key-words: complexity of algorithms, analysis of algorithms, worst case, average case, automatic analysis, aid to
teaching.
RESUMO
Este artigo apresenta a concepo, projeto e desenvolvimento do prottipo de sistema ANAC que consiste de uma
ferramenta a ser utilizada no apoio ao ensino de Complexidade de Algoritmos. O sistema tem por principal objetivo
guiar o usurio no processo de anlise do algoritmo fornecendo como resultado as equaes de complexidade para o pior
caso ou caso mdio.
Palavras Chaves: Complexidade de algoritmos, anlise de algoritmos, apoio ao ensino.
1 INTRODUCO
A anlise de um algoritmo tem por finalidade melhorar, quando possvel, seu desempenho e, quando houver mais de um
algoritmo para a resoluo de um mesmo problema, poder optar pelo melhor dentre os algoritmos existentes. O processo
de anlise, entretanto, uma tarefa que exige conhecimento e percia do analista. Isto tem motivado, ao longo dos anos,
pesquisas com a finalidade de criar mtodos e construir ferramentas que tornem o processo de anlise automtico.
Dentre estes mtodos e ferramentas est o prottipo de sistema ANAC Analisador de Complexidade que o assunto
abordado neste artigo.
O sistema ANAC [2] uma ferramenta de apoio ao clculo da complexidade de algoritmos no recursivos. Os objetivos
deste sistema so:
Fornecer um ambiente que guie o usurio nos passos necessrios ao desenvolvimento do clculo da complexidade
de algoritmos;
Servir como ferramenta de apoio ao ensino de complexidade de algoritmos, constituindo-se num ambiente de
aplicao prtica ao embasamento terico adquirido no ensino de complexidade algortmica;
Calcular a complexidade de algoritmos no Pior Caso ou caso Mdio;
Estimular o clculo da complexidade de algoritmos, como um meio de tornar programas mais eficientes.
Este artigo est dividido em 5 sees. A seo 2 apresenta alguns dos principais conceitos da Teoria da Complexidade.
A seo 3 aborda a automatizao do processo de anlise de algoritmos. Na seo 4 apresentado o prottipo do sistema
ANAC, seus objetivos, projeto e exemplo de utilizao. Na seo 5 so apresentadas as concluses.
4 O SISTEMA ANAC
A construo de algoritmos que, no apenas solucione determinado problema, mas o faa em tempo vivel, alm de
outros fatores j anteriormente citados, constituram-se em motivao para a construo de um sistema que realiza a
anlise algortmica de forma semi-automtica, o Analisador de Complexidade - ANAC.
4
Figura 1 A Interface do Sistema ANAC
No alto da figura 1 pode-se observar no menu de opes os itens Arquivo, Editar, Complexidade, Analisar e Ajuda.
Na opo Arquivo esto presentes os sub-itens: Abrir, Novo, Salvar e Sair. Na opo Editar esto presentes os sub-
itens: Recortar, Copiar e Colar. Na opo Complexidade esto presentes os sub-itens: Pior Caso e Caso Mdio. Para
que o ANAC possa iniciar o seu processo de anlise necessrio que um destes campos seja selecionado. A opo Pior
Caso fica destacada por default. Para iniciar o anlise o usurio deve selecionar a opo Iniciar no menu Analisar.
Finalizando, existe na opo Ajuda os sub-itens Contedo e Sobre. Em Contedo existe uma descrio do sistema,
com informaes sobre a utilizao do sistema e em Sobre existem informaes tcnicas sobre o sistema.
5 CONCLUSO
A anlise automtica de algoritmos tem como principal objetivo tornar o processo de clculo da complexidade mais
acessvel. O surgimento das metodologias de clculo de complexidade, baseado nas estruturas algortmicas para o pior
caso, proposta em [9] e para o caso mdio, proposta em [7] tornaram o processo aplicvel a uma classe maior de
algoritmos, o que no ocorre nos sistemas [11], [6] e [3], o que restringe a utilizao destes sistema.
O sistema ANAC uma ferramenta de apoio ao ensino de complexidade de algoritmos no recursivos, constituindo-se
num ambiente interativo entre o usurio e o sistema de forma que o usurio seja guiado durante o processo de anlise.
O sistema proposto apresenta algumas vantagens em relao aos sistemas citados na seo 3:
fato da linguagem de especificao do algoritmo ser Pascal-like torna o ANAC um sistema mais utilizvel, por ser o
Pascal uma linguagem amplamente difundida no meio acadmico, ao contrrio de um sistema como METRIC que
trabalha com a linguagem Lisp, cuja utilizao mais restrita;
6
possui um ambiente de trabalho mais simples de operar. Em sistemas como o Lambda-Upsilon-Omega o usurio
necessita ter conhecimento do sistema operacional Unix, conhecer a linguagem de programao Lisp e ainda ter
conhecimento do software matemtico Maple;
um sistema interativo que vai guiando o usurio durante o processo de anlise, isto faz com que o usurio v
adquirindo percia no processo de anlise e venha a tornar o processo de anlise um hbito durante o processo de
desenvolvimento de um algoritmo;
com exceo do METRIC, todos os demais sistemas vistos apresentam a anlise segundo uma nica medida, ou no
pior caso ou no caso mdio. O ANAC capaz de fornecer o resultado para ambas;
gera, sempre que possvel, um resultado simplificado o que no visto nos demais sistemas que podem gerar
extensas e complicadas equaes, que podem ser desestimulantes para quem no esteja habituado com o processo
de clculo de complexidade ou para quem est se iniciando no estudo da Teoria da Complexidade.
Ao contrrio dos demais sistemas, que possuem uma abordagem terica com a finalidade de encontrar uma relao
entre a complexidade do algoritmo e a estrutura do algoritmo, o ANAC possui uma preocupao prtica de soluo,
com o objetivo de chegar a uma ordem de complexidade.
Trabalhos futuros: O sistema ANAC anlise algoritmos no recursivos. Um propsito futuro permitir que o
sistema consiga analisar algoritmos recursivos.
Um aspecto limitante do sistema ANAC a sua capacidade de simplificao, que se resume a casos mais gerais, uma
vez que no possui grande capacidade matemtica e por no ser este o objetivo central do sistema. O objetivo do sistema
ANAC conduzir o usurio no processo de anlise pretendendo, com isso, que o usurio v adquirindo percia no
processo de clculo.
A contradio entre a preocupao com a eficincia dos algoritmos e a no preocupao em calcular a complexidade
deles uma situao que deve ser revertida. Assim, um resultado que almeja-se alcanar com esse trabalho o despertar
da necessidade para essa importante tarefa no desenvolvimento de algoritmos, fazendo do clculo da complexidade uma
etapa do projeto do algoritmo, e ento aumentar o nmero de algoritmos analisados e a gerao de algoritmos mais
eficientes.
REFERNCIAS
1. Aho, A.; Hopcroft, J.; Ullman, J. Data Structures and Algorithms. Addison-Wesley. 1982.
2. Barbosa, Marco A. C.; Toscani, Laira; Ribeiro, Leila. Ferramenta para a Automatizao da Anlise da
Complexidade de Algoritmos. In: SBIE2000XI Simpsio Brasileiro de Informtica na Educao/SBC. Anais...,
Macei, 2000.
3. Flajolet, Philippe; Salvy, Bruno & Zimmermann, Paul. : An Assistant Algorithms Analyzer. In Proceedings
AAECC'6, Lecture Notes in Computer Science 357, pg. 201-212, 1988. Also available as INRIA Reserch Report
876, 1988.
4. Horowitz, Ellis & Sahni, Sartaj. Fundamentals of Computer Algorithms. Computer Science Press Inc. 1978
5. Knuth, D. E. The Art of Computer Programming. Addison-Wesley, Menlo Park, California, 1968.
6. Metayer, D. Le. Ace: An Automatic Complexity Evaluator. ACM Transactions on Programming Languages and
Systems, 10(2):248-266,1988.
7. Rosa, Dbora Schuch da. Complexidade Mdia Algortmica: uma Metodologia para o seu clculo. - Dissertao de
Mestrado - CPGCC / UFRGS, 1997.
8. Silveira; Carlos Morelli D. Analisador de Complexidade Mdia Baseado nas Estruturas Algortmicas. UFPEL
Pelotas, 1998.
9. Toscani, Laira. V. & Veloso, Paulo A. S. Uma metodologia para clculo da complexidade de algoritmos. Simpsio
Brasileiro de Engenharia de Software, 4. guas de So Pedro/SP, out. 24-26. Anais, SBC 1990.
10. Toscani, Laira. V. & Veloso, Paulo A. S. Complexidade de Algoritmos: Anlise, Projeto e Mtodos. Editora Sagra,
Porto Alegre, 2001.
11. Wegbreit, B. Mechanical program analysis. Communications of the ACM, 18(9):528-539, 1975.
7