TrabalhosGratuitos.com - Trabalhos, Monografias, Artigos, Exames, Resumos de livros, Dissertações
Pesquisar

ATPS Classificação E Pesquisa

Exames: ATPS Classificação E Pesquisa. Pesquise 862.000+ trabalhos acadêmicos

Por:   •  24/11/2013  •  768 Palavras (4 Páginas)  •  578 Visualizações

Página 1 de 4

Faculdade Santa Terezinha – Anhanguera

ATPS Classificação e Pesquisa Etapa 1 e 2

Professor: Marcelo Aguiar

Componentes:

Ariel Pereira Souza – RA 2505004039

Alex Francisco Soares – RA 2547453866

Rafael Bomfim – RA 2504071494

Israel Dillas Soares – RA 11553598887

Francisco Wanderson – RA 1191425998

- Método de busca com o melhor desempenho.

O melhor método de busca sem ordenação de dados será o linear com sentinela, mas se o valor procurado não se encontrar no vetor, a quantidade de testes será igual ao da busca linear.

O testes realizados pode variar de equipamento para equipamento, pois o cálculo o tempo é realizado através do “clock” do processador.

- Desempenho da busca binária x busca linear x busca linear com sentinela

Caso os dados sejam ordenados, o melhor método de busca será a busca binaria, veja na figura 1, neste caso o tempo e o processamento será menor que as demais.

É preciso analisar se é possível a ordenação da base de dados, pois se a base de ordenação for muito grande a ordenação se tornará lenta e pesada.

A bubblesort e seleção apresentaram resultados satisfatórios, mas exigem mais processamento do que a busca em bases não ordenadas.

Tip. de Teste Tam. do Vetor Quant. de Testes

Busca linear 1.000 1.000

Busca Linear com Sentinela 1.000 1.000

Busca Binária 1.000 9

Bubblesort 1.000 244.968

Seleção 1.000 56.738

Figura 1 – Resultados dos testes realizados com os algoritmos de busca após a ordenação da base

Conclusão

Depois de realizados vários testes, podemos concluir que existem diversos métodos eficientes de classificação e pesquisa, sendo que para cada ocasião um se sobressai sobre os outros.

Algoritmos removido do ATPS – Classificação e Pesquisa – Etapa 1

Anexo I

Código completo para realizar a bateria de testes descritas abaixo.

/*

Name: ATPS - Classificação e Pesquisa

Description: Bateria de testes de busca linear, linear com sentinela e binária

Ordenação bubble sort e seleção

*/

#include

#include

#include

#include

#define tempo 2000

#define search_p 87

#define search_s 100001

//prototipos das funções

void bateria_testes(int tam, int t);

void linear(int n, int t, int *p_int, double *p);

void linear_sentinela(int n, int t, int *p_int, double *p);

void binaria(int n, int t, int *p_int, double *p);

void bubblesort(int n, int t, int *p_int, double *p);

void selecao(int n, int t, int *p_int, double *p);

double unif(long int *seed, double low, double high);

int inteiros_unif(long int *seed, int low, int high);

main(){

//declaração de variaveis

int op=0, tipo;

while (op!=5){

system("cls");

//cabeçalho com os parametros de teste

printf("\n ATPS - Classifica%c%co e Pesquisa \n",135,198);

printf(" \n +------+--------+-----+--------+------------+----------+-------------+");

printf(" \n | OP | N | low | high | seed | N. Proc. | S. N. Proc. |");

printf(" \n +------+--------+-----+--------+------------+----------+-------------+");

printf(" \n | 01 | 100 | 0 | 100000 | 1234554321 | 87 | 100001 |");

printf(" \n +------+--------+-----+--------+------------+----------+-------------+");

printf(" \n | 02 | 1000 | 0 | 100000 | 1234554321 | 87 | 100001 |");

printf(" \n +------+--------+-----+--------+------------+----------+-------------+");

printf(" \n | 03 | 10000 | 0 | 100000 | 1234554321 | 87 | 100001 |");

printf(" \n +------+--------+-----+--------+------------+----------+-------------+");

printf(" \n | 04 | 100000 | 0 | 100000 | 1234554321 | 87 | 100001 |");

printf(" \n +------+--------+-----+--------+------------+----------+-------------+");

printf("\n\n Selecione os par%cmetros de teste [ 1 - 4 ]: ",131);

scanf("%d",&op);

if(op5){

printf("\n Opcao invalida !");

getch();

}

break;

}

}

}

/*------------------------------------------------------------------------------

Algoritmo 1 – Gerador de números reais aleatórios

Gerador de distribuicao uniforme retorna um numero

double (real com longa precisão) na faixa low – high,ou seja, [low,high].

------------------------------------------------------------------------------*/

double unif(long int *seed, double low, double high){

double unif_ret;

long int m,a,b,c, k;

double value_0_1;

m = 2147483647;

a = 16807;

b = 127773;

c = 2836;

k = *seed/b;

*seed = a * (*seed % b) - k*c;

if (*seed

Etapa 2 –

Instancia Low High Seed

1 408 96807 640993899

2 490 709992 383429253

3 218 67508 416520389

TIPO Dados Aleatórios

Instância Média entre instâncias 1, 2, e 3 Média entre instâncias 1, 2, e 3 Média entre instâncias 1, 2, e 3

Dados 500 5.000 50.000

Algoritmo N. Comp. N. Trocas Tempo N. Comp N. Trocas Tempo N. Comp. N. Trocas Tempo

QuickSort 6861 754 0,0010004 104532 11035 0,0156142 1212545 150884 0,0156261

Binária 3801 65708 0,0009967 54538 6288012 0,0312514 711283 623952428 4,0485333

MergeSort 4844 4214 0,0039895 65319 59066 0,0312514 817897 756515 1,2656510

Passo 4

Relatório 2 – Métodos de Ordenação

Os resultados com o Quick Sort em casos melhores escolhem um elemento mediano da lista para ser o seu pivô, quando não é porque a escolha do pivô não foi adequada.

O Quick Sort no melhor caso sempre escolhe o elemento mediano da sua lista de entrada.

1 melhor caso: O(n log n), * pior caso: O(n2), 2 caso médio: O(n log n), 3 Não é estável

Outro que em sua melhor utilização é similar ao quicksort é o Mergesort.

Seja qual for o caso a ordem será n log n. Isso acontece porque em todas as situações onde se encontra o vetor, ele irá realizar a divisão e o intercalação.

1 melhor caso: O(n log n)

2 pior caso: O(n log n)

3 caso médio: O(n log n)

4 Estável (Implementado corretamente)

O algoritmo de inserção linear faz uma busca linear para encontrar a posição para fazer a inserção. No entanto, uma vez que o elemento é inserido numa sequência que já está ordenada, o ideal é usar uma pesquisa binária, em vez de uma busca linear. Considerando que uma busca linear requer O(n) comparações no pior caso, uma busca binária requer apenas O(log n) comparações.

1 melhor caso: O(n log n)

2 pior caso: O(n2)

3 caso médio: O(n2)

4 Estável

...

Baixar como  txt (6.2 Kb)  
Continuar por mais 3 páginas »