Escolar Documentos
Profissional Documentos
Cultura Documentos
Por pesquisa (procura ou busca) entende-se o ato de recuperar uma informao em um conjunto de dados Como a atividade de ordenao, a atividade de busca de grande importncia devido a sua utilizao freqente nos mais diversos tipos de software. Exemplos: Procurar o no de telefone de uma pessoa em uma agenda de telefones. Procurar por uma palavra num texto. Dado um nmero entre 0 e 1000, adivinhar o nmero que se escolheu.
Estrutura de Dados II - Mrcio Bueno 2
Pesquisa
Pesquisa
Numa pesquisa cada unidade de informao armazenada em uma estrutura do tipo registro contendo um campo chave (inteiro, string, etc.) alm de outros campos.
tipo item = registro chave : inteiro {outros campos} fim
O conjunto dos registros de informao normalmente armazenado como: Listas lineares (vetores ou listas encadeadas) rvores binrias Este conjunto usualmente chamado de tabela ("vida curta") ou de arquivo ("vida longa").
Estrutura de Dados II - Mrcio Bueno 3
Pesquisa
O objetivo da pesquisa encontrar uma ou mais ocorrncias de registros com chaves iguais chave de pesquisa Esta operao pode resultar em sucesso ou insucesso.
Algoritmo de Pesquisa
A pesquisa uma tarefa muito utilizada
As rotinas que a executam devem ser eficientes (executar no menor tempo possvel)
Pesquisa Seqencial
Mtodo bastante simples. Utilizado quando os dados no esto ordenados pela chave de pesquisa. Princpio: Inicia a pesquisa pelo primeiro registro, avana seqencialmente (registro por registro) e termina: Com sucesso: chave pesquisada encontrada, ou; Sem sucesso: todos os registros so pesquisados, mas a chave no encontrada.
Estrutura de Dados II - Mrcio Bueno 9
10
Anlise
Pesquisa Seqencial
Para uma pesquisa com sucesso, temos: 1 iterao no melhor caso; N iteraes no pior caso; (N + 1) / 2 iteraes no caso mdio. Para uma pesquisa sem sucesso, temos: N + 1 iteraes. O nmero total de comparaes so: Melhor caso: 2 Pior caso: ( n + 1 ) + n = 2n + 1 Mdio caso: (2n + 1 + 2 ) / 2 = ( 2n + 3 )/ 2
Estrutura de Dados II - Mrcio Bueno 11
Pesquisa Seqencial
Anlise
De forma geral o algoritmo O(n) em complexidade Este algoritmo a melhor soluo para o problema da pesquisa em tabelas desordenadas com poucos registros.
12
No entanto, se o elemento procurado s for encontrado na posio N+1, isto significa que ele no est na tabela.
14
Pesquisa Binria
Pesquisa Binria
A pesquisa em uma tabela pode ser mais eficiente se os registros forem mantidos em ordem. Princpio:
Similar ao utilizado quando se procura o nome de um assinante em um catlogo telefnico impresso. Compara-se a chave procurada com a chave do registro central do conjunto. Esta comparao indica: a chave foi encontrada, ou em qual das metades a pesquisa deve prosseguir, segundo este mesmo princpio.
18
Pesquisa Binria
Algoritmo:
Para saber se uma chave est presente na tabela, compare a chave com o registro que est no meio da tabela. Se a chave menor, ento o registro procurado est na primeira metade da tabela. Se a chave maior, ento o registro procurado est na segunda metade da tabela. Repita o processo at que a chave seja encontrada, ou fique apenas um registro cuja chave diferente da procurada, significando uma pesquisa sem sucesso.
Estrutura de Dados II - Mrcio Bueno 19
20
Anlise:
Pesquisa Binria
A cada iterao o nmero de elementos a serem pesquisados reduzido metade: N, N/2, N/4, N/8, ..., N/2k Queremos que N/2k 1, logo k log2N A chave pesquisada deve ser comparada com o ltimo elemento restante, portanto o nmero mximo de comparaes 1 + log2N. Concluso: Sua ordem de complexidade O(log2N).
Estrutura de Dados II - Mrcio Bueno 21
Anlise:
Pesquisa Binria
Exemplos: Para tabela de 16 elementos 4 iteraes Para 1024 elementos 10 iteraes Para 1000000 elementos 20 iteraes log2n cresce muito devagar com o aumento de n Desempenho muito superior em relao ao algoritmo da pesquisa seqencial
22
23
Anlise
Se as chaves estiverem uniformemente esse mtodo exigir log2(log2n) comparaes Entretanto, se as chaves no estiverem uniformemente distribudas, o mtodo degrada sua eficincia e torna-se ruim No pior caso se compara com a busca seqencial. Em situaes prticas as chaves tendem a se aglomerar em torno de determinados valores e no so uniformemente distribudas Por exemplo, agenda telefnica.
Estrutura de Dados II - Mrcio Bueno
28
Exerccio
1) Apresente um exemplo prtico em que a busca por interpolao ter um melhor desempenho que a busca binria
29
Exerccios
1) Modifique a funo insertionSort apresentada no curso para que a insero dos elementos noordenados no vetor ordenado seja feita usando pesquisa binria. Chame esta nova funo de insertionSortPB. Prottipo da funo: void
2) Mostre, atravs de um exemplo, um caso em que insertioSortPB funciona melhor que insertionSort.
Estrutura de Dados II - Mrcio Bueno 30