ATPS 1-Pesquisa de Dados_001

  • Upload
    paola

  • View
    213

  • Download
    0

Embed Size (px)

Citation preview

  • 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 ;