Vous êtes sur la page 1sur 10

FACULDADE ANHANGUERA DE BELO HORIZONTE

Sistemas de Informao

CLASSIFICAO E PESQUISA

Unidade Andradas
2014

FACULDADE ANHANGUERA DE BELO HORIZONTE


UNIDADE ANDRADAS

ATPS ETAPA 1,3 e 4


Professor Juliana Santiago

AFONSO RODRIGUES RA 3226019666


BRUNO TIAGO DUARTE PIMENTA RA 3218523299
DIEGO RICHELLY RA 3226040723
FERNANDA LEONCIO RA 3226019669
GLEIZIANE FERNANDA RA 2504108831
MACILENE MARIA DA SILVA RA 3245550171

BELO HORIZONTE, 05 DE JUNHO DE 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:

1 Site SQLAlchemy: http://www.sqlalchemy.org/

Tipo
Instncia
Dados

Algoritimo
Busca Binaria
Busca Linear
Busca Linear
Sentinela

Mdia entre instncias


1,2 e 3
10.000

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

Dados em ordem Aleatria


Mdia entre instncias
Mdia entre instncias
1,2 e 3
1,2 e 3
30.000
50.000

Mdia entre instncias


1,2 e 3
10.000

Algoritimo
Busca Binaria
Busca Linear
Busca Linear
Sentinela

304560

Dados em ordem Decrescente


Mdia entre instncias
Mdia entre instncias
1,2 e 3
1,2 e 3
30.000
50.000

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

Dados em ordem Crescente


Mdia entre instncias
Mdia entre instncias
1,2 e 3
1,2 e 3
30.000
50.000

Mdia entre instncias


1,2 e 3
10.000

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

Tabela 1 - Execuo Etapa 1

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)

Tabela 2 - Complexidade Etapa 2

possvel verificar que quem apresenta a melhor complexidade o algoritmo de busca


binria onde o prprio demonstrado na Tabela 1 com as menores quantidades de
comparaes.

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

A Tabela Execuo Etapa 3 apresenta os valores coletados nesta Etapa:


Tipo

Dados em ordem Aleatria


Mdia entre instncias 1,2 e Mdia entre instncias 1,2 e
Instncia 3
3
Dados
10.000
30.000
N de
N de
Algoriti Comparae N de
Tem Comparae N de
Tem
mo
s
Trocas po s
Trocas po
Arvore
148687
433546
AVL
4098250
0 10
12251510
0 30
Arvore
B-Tree
400000 300000
0
1200000 900000
0
Arvore
160922
557545
Binaria
3882880
0
0
13596680
0 10
Dados em ordem Decrescente
Mdia entre instncias 1,2 e Mdia entre instncias 1,2 e
Instncia 3
3
Dados
10.000
30.000
N de
N de
Algoriti Comparae N de
Tem Comparae N de
Tem
mo
s
Trocas po s
Trocas po
Arvore
104904
314894
AVL
4170550
0 10
13442700
0 30
Arvore
B-Tree
400000 300000
0
1200000 900000
0
Arvore
500050
450015 760
Binaria
1000000000
000 840 9000000000
0000
0

Mdia entre instncias 1,2 e


3
50.000
N de
Comparae N de
Tem
s
Trocas po
19388470 6783110

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

Dados em ordem Crescente


Mdia entre instncias 1,2 e
3
30.000
N de
Comparae N de
Tem
s
Trocas po
374864
13142850
0 30

Mdia entre instncias 1,2 e


3
50.000
N de
Comparae N de
Tem
s
Trocas po
23187240 5248900

40

2000000 1500000 10
2500000000 1250025 212
0
0000 80

Mdia entre instncias 1,2 e


3
50.000
N de
Comparae N de
Tem
s
Trocas po
4070690 1248760

10

1200000 900000
0
400000 300000
0
1349985000 450015 871
5000500
0
0000
0 1499950000
00 930

Tabela 3 - Execuo Etapa 3

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.

Vous aimerez peut-être aussi