atps 1-pesquisa de dados_001
TRANSCRIPT
-
7/24/2019 ATPS 1-Pesquisa de Dados_001
1/13
Classifcao e Pesquisa - Relatrio 1: Pesquisa de Dados 2
1. Busca
A hiptese bsica assumida no processo de busca que o conjunto de dados, dentre o
qual um determinado elemento deve ser procurado, possui tamanho fixo com N posies:
item a[N];
onde itemrepresenta uma estrutura de dados contendo um campo que atua como chave para a
pesquisa eN uma constante indicando o nmero de elementos! No nosso trabalho,
utili"amos de um Arra# $ist para criar a estrutura com a quantidade de elementos %nmeros
aleatrios& escolhida pelo usurio! Aps, convertemos a estrutura para um arra# inteiro de
tamanhoN!
Figura 1 Converso de Array List para array inteiro
' objetivo da busca encontrar a (e# em al)uma posi*o da estrutura:a[i]= = key
+ara fornecer os elementos a estrutura, utili"amos dos dados da abela -! .endoN o nmero
de nmeros )erados, low a faixa inferior de nmero a ser )erado, high a faixa superior,
seed:
N low high seed-// / -///// -01233210--/// / -///// -01233210--//// / -///// -01233210--///// / -///// -01233210-
Tabela 1: Parmetros para a realizao dos testes computacionais.
Atravs destes par4metros, )eramos os nmeros aleatrios:
-
7/24/2019 ATPS 1-Pesquisa de Dados_001
2/13
Classifcao e Pesquisa - Relatrio 1: Pesquisa de Dados 3
Figura 2 Objetos e mtodos utilizados para a gerao e obteno dos nmeros aleat!rios
5rios mtodos e estruturas de dados podem ser empre)ados para se fa"er buscas!
6mplementamos todos eles retornando -1caso n*o encontre o elemento procurado!
2. Tipos de busca
2.1. Busca linear ou sequencial
' mtodo de pesquisa mais simples que existe! 7unciona da se)uinte forma: a partir
do primeiro re)istro, pesquise sequencialmente at encontrar a chave procurada8 ent*o pare!
A fun*o realizaBuscaLinearretorna o 9ndice do re)istro que contm a chave x8 caso n*o
esteja presente o valor retornado -1! 'bserve que esta implementa*o n*o suporta mais de
um re)istro com uma mesma chave! +ara aplicaes com esta caracter9stica necessrio
incluir um ar)umento a mais na fun*o de pesquisa para conter o 9ndice a partir do qual se
quer pesquisar, e alterar a implementa*o de acordo!
2.1.1. Anlise
A )rande vanta)em desse mtodo de busca que, alm de se tratar de um al)oritmo
simples, os dados que ser*o analisados n*o precisam passar por nenhum tipo de preparo
%como a ordena*o, por exemplo& antes de execu*o do al)or9timo, tornando seu uso
extremamente simples e confivel! mais eficiente quando a estrutura possui poucos
elementos!
-
7/24/2019 ATPS 1-Pesquisa de Dados_001
3/13
Classifcao e Pesquisa - Relatrio 1: Pesquisa de Dados 4
2.1.2. Testes
Figura " Teste de busca linear
2.2. Busca linear com sentinela
A idia bsica fa"er com que o elemento procurado %x&sempre seja encontrado! +ara
isso, introdu";se o elemento adicional no final da estrutura %am re)istro sentinela
contendo a chave de pesquisa colocado aps a ltima posi*o do arra#! ?sta tcnica )arante
que a pesquisa sempre termina! Aps a chamada da fun*o +esquisa, se o 9ndice "ero,
si)nifica que a pesquisa foi sem sucesso!
-
7/24/2019 ATPS 1-Pesquisa de Dados_001
4/13
Classifcao e Pesquisa - Relatrio 1: Pesquisa de Dados 5
Figura # $crescentando sentinela e realizando busca
2.2.1. Anlise
' uso da sentinela tem como objetivo acelerar a busca, atravs da simplifica*o da express*o
booleana, ou seja, a sentinela proporciona a oportunidade de polpar a execu*o de um
condicional!
2.2.2. Testes
Figura % Teste de busca linear com sentinela
-
7/24/2019 ATPS 1-Pesquisa de Dados_001
5/13
Classifcao e Pesquisa - Relatrio 1: Pesquisa de Dados 6
2.3. Busca Binria
.e n*o sabemos nada a respeito da ordem em que os itens aparecem no vetor, o melhor
que podemos fa"er uma busca linear! ?ntretanto, se os itens aparecem ordenados3,
podemos usar um mtodo de busca muito mais eficiente! ?sse mtodo semelhante
aquele que usamos quando procuramos uma palavra num dicionrio: primeiro abrimos o
dicionrio numa p)ina aproximadamente no meio8 se tivermos sorte de encontrar a
palavra nessa p)ina, timo8 sen*o, verificamos se a palavra procurada ocorre antes ou
depois da p)ina em que abrimos e ent*o continuamos, mais ou menos do mesmo jeito,
procurando a palavra na primeira ou na se)unda metade do dicionrio!
@omo a cada compara*o reali"ada, o espao de busca redu";se aproximadamente
metade:
Figura & Funcionamento de uma busca bin'ria
@aso a busca tenha que continuar, podemos proceder exatamente da mesma maneira:
verificamos o item existente no meio da metade escolhida e se ele ainda n*o for aquele
que procuramos, continuamos procurando no meio do quarto escolhido, depois no meio
do oitavo e assim por diante at que o item procurado seja encontrado ou que n*o haja
mais itens a examinar!
@omo em cada passo o intervalo de busca redu";se aproximadamente metade,
evidente que o processo de busca binria sempre termina, mesmo que
o item procurado n*o conste do vetor!
-
7/24/2019 ATPS 1-Pesquisa de Dados_001
6/13
Classifcao e Pesquisa - Relatrio 1: Pesquisa de Dados 7
Nesse caso, porm, o processo somente
termina quando n*o h mais itens a examinar, ou seja, quando o intervalo
de busca fica va"io!
No nosso caso, usamos as variveis low, middlee high:
Figura ( )!digo de busca bin'ria
2.3.1. Anlise
Ao contrrio da busca linear, a busca binria somente funciona corretamente se o vetor
estiver ordenado! 6sso pode ser uma desvanta)em! ?ntretanto, medida em que o tamanho do
vetor aumenta, o nmero de comparaes feitas pelo al)oritmo de busca binria tende a ser
muito menor que aquele feito pela busca linear! ?nt*o, se o vetor muito )rande, e a busca
uma opera*o muito requisitada, esse aumento de eficiBncia pode compensar o fato de termos
que ordenar o vetor antes de usar a pesquisa binria!
+ara compreendermos melhor a eficiBncia da busca binria, vamos ima)inar: quantos
itens, no mximo, s*o examinados pelo al)oritmo cujo vetor possui 3/// itensC .eja n o
nmero de itens no vetor! .e n 9mpar, o item do meio divide o vetor em duas partes i)uais de
tamanho %nD-&E0! .e n par, o vetor dividido em uma parte com nE0D- itens e outra com nE0
itensF! .endo assim, medida em que o al)oritmo executa, o nmero de itens vai redu"indo
do se)uinte modo:
5000 2500 1250 625 312 156 78 3 1 ! 2 1 0
-
7/24/2019 ATPS 1-Pesquisa de Dados_001
7/13
Classifcao e Pesquisa - Relatrio 1: Pesquisa de Dados 8
Na seqGBncia acima, cada redu*o implica numa compara*o! $o)o, s*o reali"adas
no mximo -1 comparaes!
2.3.2. Testes
Figura * Teste de busca bin'ria
3. Ordenao
'rdenar corresponde ao processo de rearranjar um conjunto de objetos em uma ordem
ascendente ou descendente! ' objetivo principal da ordena*o facilitar a recupera*o
posterior de itens do conjunto ordenado! @omo exemplo da import4ncia desse processo,podemos ima)inar como seria dif9cil utili"ar um catlo)o telefHnico se os nomes das pessoas
n*o estivessem listados em ordem alfabtica! A atividade de colocar as coisas em ordem est
presente na maioria das aplicaes onde os objetos arma"enados tBm que ser pesquisados e
recuperados, tais como dicionrios, 9ndices de livros, tabelas e arquivos!
's al)oritmos de ordena*o constituem bons exemplos de como resolver problemas
utili"ando computadores! As tcnicas de ordena*o permitem apresentar um conjunto amplo
de al)oritmos distintos para resolver uma mesma tarefa!
-
7/24/2019 ATPS 1-Pesquisa de Dados_001
8/13
Classifcao e Pesquisa - Relatrio 1: Pesquisa de Dados 9
Iependendo da aplica*o, cada al)oritmo considerado possui uma vanta)em particular sobre
os outros, podendo se adequar melhor ou ao n*o a solu*o procurada! Alm disso, os
al)oritmos ilustram muitas re)ras bsicas para manipula*o de estruturas de dados!
's al)oritmos trabalham sobre os re)istros de um arquivo! Apenas uma parte do
re)istro, chamada chave, utili"ada para controlar a ordena*o! Alm da chave podem existir
outros componentes em um re)istro, os quais n*o tBm influBncia no processo de ordenar, a
n*o ser pelo fato de que permanecem com a mesma chave! A escolha do tipo para a chave
arbitrria! Jualquer tipo sobre o qual exista uma re)ra de ordena*o bem;definida pode ser
utili"ado! As ordens numrica e alfabtica s*o as usuais!
>m mtodo de ordena*o dito estvel se a ordem relativa dos itens com chaves
i)uais mantm;se inalterada pelo processo de ordena*o! +or exemplo, se uma lista alfabticade nomes de alunos de uma faculdade ordenada pelo campo notaKdaKprova, ent*o um
mtodo estvel produ" uma lista em que os alunos com a mesma nota aparecem em ordem
alfabtica!
@ertos mtodos de or)ani"a*oEordena*o de dados podem tornar o processo de busca
mais eficiente!
4. Tipo de Ordenaes
4.1. Seleo
A estrat)ia bsica desse mtodo , em cada fase, selecionar um menor item ainda n*o
ordenado e permut;lo com aquele que ocupa a sua posi*o na sequBncia ordenada! Lais
precisamente, isso pode ser descrito assim: para ordenar uma seqGBncia "ai# ai$1# %%%# na&,
selecione uma valor ( tal que a' ( min) ai# ai$1# %%%# an*, permute os elementos aie a'e, se
i$1+n, repita o procedimento para ordenar a subseqGBncia "ai$1# %%%# an&!
Figura + Ordenao da se,u-ncia #&/ %%/ %+/ 1#/ "*/ 2(0 usando seleo. o ndice
do menor elemento en,uanto i percorre o 3etor. Fase marca as trocas.
-
7/24/2019 ATPS 1-Pesquisa de Dados_001
9/13
Classifcao e Pesquisa - Relatrio 1: Pesquisa de Dados 10
6nicialmente, o item a1 assumido como o m9nimo "'(1&%?nt*o a- comparado aos demais
itens da seqGBncia at que a! encontrado! @omo a! + a1, o item a!passa a ser o m9nimo
"'(!&e o processo continua analo)amente!
4.1.1. Anlise
Analisando a ordena*o por .ele*o %.election .ort&, constatamos que ela reali"a o
mesmo nmero de comparaes que a ordena*o Molha %Mubble .ort&!
$o)o, a sua complexidade de tempo ser a mesma! ?ntretanto, como o nmero de elementos
a ordenar diminui de um item a cada troca feita, temos que o nmero
mximo de trocas na ssort%& n,18 um nmero consideravelmente
menor do que aquele encontrado para a rotina bsort%&! +odemos di"er que o
nmero de trocas na bsort%& n0 %n ao quadrado&, enquanto na ssort%& n!
4.1.2. Teste
Figura 14 Teste de ordenao de 144 mil elementos por 5eleo
-
7/24/2019 ATPS 1-Pesquisa de Dados_001
10/13
Classifcao e Pesquisa - Relatrio 1: Pesquisa de Dados 11
4.2. Bubble Sort
alve" seja a estrat)ia mais simples para ordenar um vetor! rata;se de comparar
pares de itens consecutivos e permut;los, caso estejam fora de ordem! .e o vetor for
assim processado, sistematicamente, da esquerda para a direita, um item mximo ser
deslocado para sua ltima posi*o!
Figura 11 6emonstrao da ordenao por bubble sort
medida em que o vetor vai sendo processado, cada nmero vai sendo deslocado para
a direita, at que seja encontrado outro maior! ?videntemente, no final do processo, um
valor mximo estar na ltima posi*o do vetor!
?m cada fase desse mtodo, um item de maior valor deslocado para sua posi*o
definitiva no vetor ordenado! ?nt*o, se um vetor tem n itens, aps a primeira fase haver
nD- itens a ordenar! >sando a mesma estrat)ia, aps a se)unda fase, teremos nD0 itens,
depois nD1 e assim sucessivamente at que reste um nico item!
.e considerarmos os nmeros maiores como mais pesados e os menores como mais
leves, veremos que, durante a ordena*o por esse mtodo, os nmeros mais pesados
OdescemO rapidamente para o OfundoO do vetor, enquanto que os nmeros mais leves
OsobemO lentamente para a Osuperf9cieO! 's nmeros pesados descem como pedras e os
leves sobem como bolhas de ar! +or isto, esse mtodo ser conhecido como mtodo da
bolha ou bubble sort!
-
7/24/2019 ATPS 1-Pesquisa de Dados_001
11/13
Classifcao e Pesquisa - Relatrio 1: Pesquisa de Dados 12
4.2.1. Anlise
?mbora seja um dos mtodos de ordena*o menos eficientes que existem, o mtodo da
bolha )eralmente o primeiro al)oritmo de ordena*o que todo mundo aprende! A sua
popularidade deve;se, principalmente, sua simplicidade e facilidade de codifica*o!
Ltodos mais eficientes, em )eral, s*o tambm mais complicados de entender e de
codificar!
Figura 12 Fazes da ordenao por bubble sort
-
7/24/2019 ATPS 1-Pesquisa de Dados_001
12/13
Classifcao e Pesquisa - Relatrio 1: Pesquisa de Dados 13
4.2.2. Teste
Figura 1" Teste de ordenao de 144 mil elementos por bubble sort
-
7/24/2019 ATPS 1-Pesquisa de Dados_001
13/13
Classifcao e Pesquisa - Relatrio 1: Pesquisa de Dados 14
REFERNCIAS
BAA!A"#$A#% &os' Augusto( "#)(*ispon+ve, e-./ttp.d-(,rp(usp(raugustotea/ingiiiBusase-etores
Apresentaao(pd( Aesso e-. 04 de sete-ro de 2012(
A!% !ivio( Projeto de algoritmos: com implementaes emPascal e C 7 8e3ista e $mpliada( 2: ed( #o )au,o. )ioneira ;