Sei sulla pagina 1di 4

RELATRIO DE ANLISE DE UM ALGORITMO DE BUSCA EM C

Docente: Gleber Nelson Marques Disciplina: Anlise Algoritmos


Discente: Elton Flix de Oliveira Benevides

1. INTRODUO
A anlise de algoritmos estuda a correo e o desempenho de
algoritmos, alm de paradigmas que se fizeram muito teis na soluo de
problemas computacionais atravs de algoritmos. Assim, o intuito deste trabalho,
era a compreenso e observao de um algoritmo que busca o maior valor em
um vetor de n posies para se perceber caractersticas de desempenho em
sua execuo e seu comportamento diante de um nmero gradativo de dados.

2. MATERIAIS E MTODOS
Para a realizao do exerccio proposto, utilizou-se a linguagem de
programao C, por ser bem consolidada e conter diversas bibliotecas que
permitem a manipulao de dados temporais. O sistema operacional escolhido
foi o Linux Mint, verso 18.1, pela praticidade no desenvolvimento e o ambiente
de desenvolvimento utilizado foi o Editor de texto Pluma, tendo como compilador
do cdigo, o GCC.
O trabalho visava analisar o tempo de execuo de um algoritmo de
busca pelo maior valor num vetor de n posies, entretanto, tal vetor necessitava
estar com suas posies ocupadas por valores para que o algoritmo fizesse o
esperado, assim, foi codificado um script para preencher as posies do vetor
com valores aleatrios. Para a busca, um loop for foi utilizado, comparando em
cada lao, os valores do vetor e armazenando o maior deles.
Para calcular o tempo de execuo do algoritmo de busca, utilizou-se da
biblioteca time.h, onde foi armazenado o ciclo de clock no momento do incio da
execuo da busca e o ciclo de clock no momento em que a busca termina. Uma
vez que a busca era o interesse, no foi includo no intervalo de medio de clock
outras partes do cdigo. Foram realizados ao todo, sete testes para observao
do comportamento do algoritmo.
O algoritmo de busca em si, assume que a primeira posio do vetor
contm o maior valor e assim, compara com o valor da posio subsequente.
Caso seja menor, ocorre a atualizao do maior valor na varivel especfica, se
no, o algoritmo l a posio logo em seguida e o processo se repete.
3. RESULTADOS E ANLISES
3.1 Anlise de complexidade terica
Para efeito de comparao, uma anlise inicial foi feita no prprio
algoritmo, para conhecer sua ordem de complexidade. Durante a anlise,
percebeu-se que o algoritmo tinha a funo linear f(n) = 4n + 3, j que o
algoritmo executa 3 instrues antes do lao for, 2 instrues dentro do lao
(em seu pior caso) e mais 2 instrues a cada lao (para comparar outra vez e
incrementar o contador). Assim, pode-se concluir que o a funo do algoritmo
pertence a ordem de complexidade de O(n).

f(n) = 4n + 3
450
400
350
300
250
tempo (em nanossegundos) 200
150
100
50
0
0 20 40 60 80 100 120

Figura 1: Grfico representando a funo de f(n) = 4n + 3

Figura 2: Caracterizao da complexidade do algoritmo de busca.

3.2. Anlise experimental


Quanto ao desempenho, foram realizados 7 testes com intervalos
definidos por n=n0*5, seguido de n=n0*2 para verificar na prtica o
comportamento do algoritmo diante do esperado pelo grfico terico. O grfico
abaixo explicita esse comportamento.

Comportamento do Algoritmo de busca


35000

30000

25000

20000
tempo (em microssegundos)
15000

10000

5000

0
0 2000000 4000000 6000000

Volume de dados

Figura 3: Grfico de comportamento do algoritmo em tempo de clock em


comparao com o numero de posies de n.
A curva experimental paralela curva terica, indicando que o
comportamento real do algoritmo estava de acordo com o comportamento
previsto pela anlise de complexidade. Entretanto, com o maior volume de
dados, o crescimento no tempo de execuo se mostrou bem mais elevado.

Complexidade Terica x Anlise Experimental


300

250

200

150

100

50

0
0 100 1000 10000

Srie 1 Srie 2
4. CONCLUSO

Aps as anlises, pode-se perceber que o algoritmo acompanhou a


curva de complexidade prevista, alm de notar que o mesmo sofre uma
alterao na velocidade apenas para grandes volumes de dados, sendo indicado
ento, para um fluxo pequeno. Tambm se observou uma diferena significativa
entre o aumento no tempo esperado de execuo e o tempo real.

Potrebbero piacerti anche