Sistemas de Informao
CLASSIFICAO E PESQUISA
Unidade Andradas
2014
Sumrio
Introduo................................................................................................................. 4
Sobre o SQLAlchemy................................................................................................ 4
Etapa 1..................................................................................................................... 4
Analise dos Algoritmos de busca.................................................................................. 4
Consideraes Etapa 1............................................................................................... 6
Etapa 3..................................................................................................................... 7
Analise dos Algoritmos de Arvore.................................................................................7
Analise dos Resultados........................................................................................... 7
Arvore Binria...................................................................................................... 8
Arvore AVL......................................................................................................... 8
Arvore B............................................................................................................. 8
Etapa 4..................................................................................................................... 9
Contextualizao das Etapas 1 e 2.................................................................................9
Melhores prticas..................................................................................................... 9
Consideraes finais.................................................................................................. 9
Bibliografia................................................................................................................ 9
Introduo
Este relatrio visa apresentar as analises requerida no ATPS da matria de classificao e
pesquisa.
O trabalho foi implementado na linguagem Python associado ao framework SQLAlchemy.
Os testes foram realizados em uma mquina com processador Intel Core i5, 6 GB de RAM e
Windows 7.
Sobre o SQLAlchemy
Conforme descrito no site do SQLAlchemy1, uma biblioteca Open Source de mapeamento
objeto-relacional desenvolvida em Python. Ela est na verso 0.9.4 (verso utilizada no
trabalho) e est sob a licena MIT.
Ela fornece uma gama de modelos e mtodos para persistncia em Banco de Dados. Em suma
ela uma interface de comunicao com o banco, simplificando e otimizando a sua utilizao.
Neste trabalho este framework foi utilizado para persistir as informaes da coleta de dados
como tempo de execuo, quantidade de trocas e quantidade de comparaes.
Etapa 1
Analise dos Algoritmos de busca
Os algoritmos de busca implementados (Busca Linear, Busca Linear com Sentinela e Busca
Binria) apresentaram-se extremamente eficientes quando utilizados na mquina utilizada
para testes. Demonstraram valores diferentes para o numero de comparaes, porm com
tempo de execuo igual 0 com os valores pr-definidos no ATPS.
Na tabela execuo etapa 1 demonstrado os valores abordados:
Tipo
Instncia
Dados
Algoritimo
Busca Binaria
Busca Linear
Busca Linear
Sentinela
N de
N de
N de
N de
N de
N de
Compara Troc Temp Compara Troc Temp Compara Troc Temp
es
as
o
es
as
o
es
as
o
390
0
0
430
0
0
440
0
0
100000
0
0
300000
0
0
304550
0
0
100020
Tipo
Instncia
Dados
Algoritimo
Busca Binaria
Busca Linear
Busca Linear
Sentinela
Algoritimo
Busca Binaria
Busca Linear
Busca Linear
Sentinela
304560
N de
N de
N de
N de
N de
N de
Compara Troc Temp Compara Troc Temp Compara Troc Temp
es
as
o
es
as
o
es
as
o
370
0
0
400
0
0
410
0
0
99130
0
0
299130
0
0
499130
0
0
99140
Tipo
Instncia
Dados
300020
299140
499140
N de
N de
N de
N de
N de
N de
Compara Troc Temp Compara Troc Temp Compara Troc Temp
es
as
o
es
as
o
es
as
o
370
0
0
400
0
0
370
0
0
880
0
0
880
0
0
880
0
0
890
890
890
Para poder indicar qual algoritmo mais eficiente quanto ao desempenho ser analisado a
complexidade por nmero de comparaes e execuo.
Algoritimo
Busca Binaria
Busca Linear
Busca Linear
Sentinela
Complexidade melhor
Complexidade mdio
Complexidade pior
caso
caso
caso
O(1)
O (n/2)
O(n)
O(1)
O (n/2)
O(n)
O(1)
O (n/2)
O(log n)
Consideraes Etapa 1
Com a realizao desta etapa foi possvel verificar a eficincia do algoritmo de busca binria
quanto ao numero de comparaes e aprimorar a implementao do ATPS.
Etapa 3
Analise dos Algoritmos de Arvore
Analise dos Resultados
50
2000000 1500000
10
23137940 9508120
20
Tipo
Tipo
Mdia entre instncias 1,2 e
Instncia 3
Dados
10.000
N de
Algoriti Comparae N de
Tem
mo
s
Trocas po
Arvore
124876
AVL
4070690
0 10
Arvore
B-Tree
400000 300000
0
Arvore
500050
Binaria
1499950000
000 930
40
2000000 1500000 10
2500000000 1250025 212
0
0000 80
10
1200000 900000
0
400000 300000
0
1349985000 450015 871
5000500
0
0000
0 1499950000
00 930
Arvore Binria
Entre os trs tipos de arvores abordados neste ATPS, a arvore binria a que possui a
implementao mais simples e que se mostra com o maior custo computacional. Na Tabela
Execuo Etapa 3 demonstra os valores realizados por ela.
Tem se como aplicao a utilizao de busca por de contedo.
Arvore AVL
Esta arvore apresentou-se com uma execuo e performance boa, possui uma implementao
um pouco mais complexa. Na Tabela Execuo Etapa 3 demonstra os valores realizados por
ela.
Tem se como aplicao a utilizao de busca por de contedo.
Arvore B
Entre os trs tipos de arvores abordados neste ATPS, a arvore binria a que possui a
implementao mais complexo e que mostra-se com o melhor desempenho. Na Tabela
Execuo Etapa 3 demonstra os valores realizados por ela.
Tem se como aplicao em diversos bancos de dados devido a sua eficincia.
Etapa 4
Contextualizao das Etapas 1 e 2
As etapas 1 e 2 apresentam as analises das performance de algoritmos de busca e ordenao.
Podemos aplica-los nos cenrios mais comumente em analises de bases de dados e
desempenho computacional. Com o aumento da quantidade de dados disponvel possvel
verificar a necessidade meio eficientes de busca e ordenao.
Melhores prticas
Para exemplificar a escolha de uma soluo para o negcio abordado por um possvel cliente,
vamos considerar os pontos abordados neste trabalho.
Podemos considerar a complexidade do algoritmo usado aliado ao desempenho na mquina e
da linguagem escolhida.
Conforme descrito na documentao do Python que implementado um limite na pilha de
recurso, para evitar que o programa entre em recurso infinita.
possvel verificar que na prpria implementao do Python utilizado um algoritmo de
ordenao chamado Tim Sort onde uma mescla do Merge Sort e Insertion Sort tendo
excelente desempenho (O (n log n)), sendo ele o escolhido para implementao padro da
linguagem.
Consideraes finais
Com a realizao deste trabalho, foi possvel verificar as formas de analise de complexidade e
desempenho de um algoritmo relacionado ao seu contexto.
A implementao dos cdigos propostos na linguagem Python associado a um framework de
persistncia.
A busca pelo melhor caminho e consideraes de ambiente e execuo, como a escolha de um
limite para a pilha de recurso.
Bibliografia
Python, Limite de Recurso <https://docs.python.org/2/library/sys.html>, acesso
em 04 de Junho de 2014.
TimSort, Algortimo de Ordenao
<http://svn.python.org/projects/python/trunk/Objects/listsort.txt>, acesso em 04 de Junho de
2014.