Sie sind auf Seite 1von 2

SIN 213 - Projeto de Algoritmos · 2019-2 · Relatório Lab.

no 01

Nádia A. de O. Silva - Matrı́cula: 5162


23 de Agosto de 2019

1 Introdução e Objetivos
Na área de programação de computadores se faz presente diversas maneiras para se chegar a resolução de um
dado problema. Entretanto, como saber qual a melhor forma em quesito desempenho computacional ? Neste
sentido, com o intuito de analisar e compreender três algoritmos diferentes que buscam encontrar o maior e o
menor valor de um vetor, foram reportadas a análise de tempo e comportamento destes distos algoritmos diante
de um número progressivo de dados.

2 Materiais e Métodos
Os algoritmos analisados neste trabalho foram implementados na linguagem de programação Python pelo fato
da mesma possuir simplicidade, recursos que facilitam a análise dos dados e além disto, a maximização da
produtividade em relação as outras linguagens existentes. Os códigos foram avaliados em um hardware composto
por um processador Intel c CoreTM i3-5005U, 300GB de HDD, 4GB de RAM, tendo o Linux Mint como sistema
operacional vigente, tais dados são mostrado na imagem abaixo. Para analisar os algoritmos foram utilizados

Figura 1: Configurações do Sistema

vários casos de teste de tamanhos diversos:

Tamanho da entrada (n)


10 1000 10000 100000 1000000 10000000

3 Pré Requisitos
Para a execução destes códigos se faz necessário a instalação da biblioteca matplotlib, responsável por gerar os
gráficos da aplicação. Para instalá-la, digite no terminal:
$ pip3 install matplotlib
Os algoritmos implementados também estão disponı́veis no github

4 Resultados
Os resultados da execução mediante a uma dada entrada estão disponı́vel na tabela abaixo, os dados também
foram plotados em um gráfico que compara os tempos dos três algoritmos.

1
Algoritmos Tamanho da entrada (n)
* 10 1000 10000 100000 1000000 10000000
min max1 0,0000057s 0,000185s 0,0018248s 0,0130169s 0,1223227s 1,2681517s
min max2 0,0000057s 0,0001873s 0,0011558s 0,0117018s 0,1166255s 1,1783337s
min max3 0,0000064s 0,0001313s 0,0013365s 0,0134937s 0,1352157s 1,3551416s

Figura 2: Comparação dos resultados

5 Conclusões
Ambos os algoritmos possuem complexidade de O(n), o que faz com que seus tempos sejam bem próximos. O
fator que leva a diferença se faz em relação ao número de comparações que cada um faz mediante ao melhor caso,
pior caso e caso médio. O algoritmo min max2 foi superior aos demais com 10000,100000,1000000 e 10000000
elementos. O min max3 teve sucesso com 1000 elementos. E por fim, com 10 elementos houve um empate entre
min max1 e min max2, ambos com tempo de 0,0000057 segundos. Percebe-se através disto que há inúmeras
formas de se chegar a um mesmo resultado, porém, através da análise da complexidade é possı́vel tomar uma
decisão sábia sobre qual algoritmo escolher.

Das könnte Ihnen auch gefallen