SlideShare uma empresa Scribd logo
1 de 12
Busca Interpolada
Grupo: Jaine Conceição, Caroline Cruz, Augusto
Cezar, Michael Roan, Fábio de Paula, Rafael
Sena, Luís Felipe, Janelson Luiz, Stênio e Marcel.
Definição:
• Pesquisa de interpolação é uma variante melhorada de busca
binária.
• São requisitos da busca interpolada: dados ordenados e
uniformemente distribuídos.
Na busca binária a chave é comparada sempre
com o elemento do meio
mas e se tivéssemos uma estimativa melhor da
localização da chave?
Por exemplo, no caso de uma lista telefônica,
se quisermos procurar o número de “João”.
Nesse situação a busca interpolada apresenta
melhor desempenho uma vez que podemos
pular diretamente para o espaço de memória
onde os nomes começam com ‘J’.
Implementação:
• A busca interpolada procura um item particular computando uma
posição de sondagem, levando em consideração não só a
quantidade de itens (binária), mas também a distribuição dos
itens.
• Se encontrar o item procurado então retorna o índice.
• Caso contrário divide a lista em duas partes através do método
seguinte:
mid = low + ((high - low) / (A[high] - A[low])) * (x - A[low])
mid = low + ((high - low) / (A[high] - A[low])) * (x - A[low])
• A = lista ou array
• Low = índice mais baixo da lista
• High = índice mais alto da lista
• A[n] = valor armazenado no índice ‘n’ da lista
• x = chave procurada
Índices: 0 1 2 3 4 5 6 7 8 9
mid = 0 + ((9 - 0) / (10 - 1)) * (2 – 1) = 9 / 9 * 1 = 1
BUSCA BINÁRIA:
BUSCA INTERPOLADA:
Set mid = low + ((high - low) / (A[high]
- A[low])) * (X - A[low])
if A[mid] = X
EXIT: Success, Target found at
mid
else
if A[mid] < X
Set low to mid+1
else if A[mid] > X
Set high to mid-1
end if
end if
End While
End Procedure
Pseudo-códigoA → Array list
N → Tamanho de A
X → Chave procurada
Procedure Interpolation_Search()
Set low → 0
Set mid → -1
Set high → N-1
While X does not match
if low equals to high OR A[low]
equals to A[high]
EXIT: Failure, Target not found
end if
Custo:
• Índice de particionamento é calculado em tempo
constante, de acordo com uma distribuição de
probabilidade.
• Utilizando uma entrada com distribuição uniforme, é
obtido um tempo de execução Ω(1) com uma
quantidade média de log (log (n)) comparações.
• No pior caso é obtida a complexidade O(n) quando
uma distribuição uniforme não é aplicada .
Aplicação:
• Em geral tem as mesmas aplicações que a busca binária já
que são quase iguais, no entanto, a condição da
interpolada precisa ser levada em consideração.
• Esta técnica é geralmente utilizada por pessoas na
busca por informações com ordenação, como em
agendas, dicionários ou listas telefônicas.
Comparação com outras
buscas:
• Se as chaves estiverem uniformemente distribuídas:
• Complexidade da busca sequencial: O(n)
• Complexidade da busca binária: O(log(n))
• Complexidade da busca interpolada: O(log(log(n)))
Referências:
• ROSA, João Luís Garcia. Métodos de Busca, 2009. Disponível em:
<http://wiki.icmc.usp.br/images/d/df/ICC2_12.Busca.pdf>. Acesso em: 02 de
jan, 2017.
• MARKOV, Igor. What is interpolation search and what is it used for, 2014.
Disponível em: <https://www.quora.com/What-is-interpolation-search-and-
what-is-it-used-for>. Acesso em: 02 de jan, 2017.
• Estrutura de Dados - interpolação Pesquisa, 2014. Disponível em:
<http://www.w3ii.com/pt/data_structures_algorithms/interpolation_search_al
gorithm.html>. Acesso em: 02 de jan, 2017.
• ANAND, Shivam. What is interpolation search in data structures, 2014.
Disponível em: <https://www.quora.com/What-is-interpolation-search-in-
data-structures>. Acesso em: 02 de jan, 2017.

Mais conteúdo relacionado

Mais procurados

Metodologia orientado a objetos
Metodologia orientado a objetosMetodologia orientado a objetos
Metodologia orientado a objetosGabriel Faustino
 
01 - Microsoft Office Excel Básico
01 - Microsoft Office Excel Básico01 - Microsoft Office Excel Básico
01 - Microsoft Office Excel BásicoRoney Sousa
 
Introducao à Informatica Aplicada
Introducao à Informatica AplicadaIntroducao à Informatica Aplicada
Introducao à Informatica AplicadaClausia Antoneli
 
2009 1 - sistemas operacionais - aula 3 - processos
2009 1 - sistemas operacionais - aula 3 - processos2009 1 - sistemas operacionais - aula 3 - processos
2009 1 - sistemas operacionais - aula 3 - processosComputação Depressão
 
Estrutura de Dados - Aula 12 - Pesquisa de Dados (Sequencial e Binária)
Estrutura de Dados - Aula 12 - Pesquisa de Dados (Sequencial e Binária)Estrutura de Dados - Aula 12 - Pesquisa de Dados (Sequencial e Binária)
Estrutura de Dados - Aula 12 - Pesquisa de Dados (Sequencial e Binária)Leinylson Fontinele
 
Estrutura de Dados em Java (Funções e Procedimentos)
Estrutura de Dados em Java (Funções e Procedimentos)Estrutura de Dados em Java (Funções e Procedimentos)
Estrutura de Dados em Java (Funções e Procedimentos)Adriano Teixeira de Souza
 
Arquitetura 6 exercícios
Arquitetura 6   exercíciosArquitetura 6   exercícios
Arquitetura 6 exercíciosPaulo Fonseca
 
Descoberta de Conhecimento em Bancos de Dados e Mineração de Dados
Descoberta de Conhecimento em Bancos de Dados e Mineração de DadosDescoberta de Conhecimento em Bancos de Dados e Mineração de Dados
Descoberta de Conhecimento em Bancos de Dados e Mineração de DadosEduardo de Lucena Falcão
 
Aula1-Conceitos de SGBD
Aula1-Conceitos de SGBDAula1-Conceitos de SGBD
Aula1-Conceitos de SGBDCris Fidelix
 
Desenhando Componentes de Software com UML
Desenhando Componentes de Software com UMLDesenhando Componentes de Software com UML
Desenhando Componentes de Software com UMLRildo (@rildosan) Santos
 
Sistema operacional introdução
Sistema operacional introduçãoSistema operacional introdução
Sistema operacional introduçãoCleber Ramos
 
Introducao redes
Introducao redesIntroducao redes
Introducao redesErikHR
 
Resolução da Lista de exercícios - Conversão de bases e aritmética computacional
Resolução da Lista de exercícios - Conversão de bases e aritmética computacionalResolução da Lista de exercícios - Conversão de bases e aritmética computacional
Resolução da Lista de exercícios - Conversão de bases e aritmética computacionalVitor Hugo Melo Araújo
 

Mais procurados (20)

Metodologia orientado a objetos
Metodologia orientado a objetosMetodologia orientado a objetos
Metodologia orientado a objetos
 
01 - Microsoft Office Excel Básico
01 - Microsoft Office Excel Básico01 - Microsoft Office Excel Básico
01 - Microsoft Office Excel Básico
 
Introducao à Informatica Aplicada
Introducao à Informatica AplicadaIntroducao à Informatica Aplicada
Introducao à Informatica Aplicada
 
Bibliotecas c
Bibliotecas cBibliotecas c
Bibliotecas c
 
2009 1 - sistemas operacionais - aula 3 - processos
2009 1 - sistemas operacionais - aula 3 - processos2009 1 - sistemas operacionais - aula 3 - processos
2009 1 - sistemas operacionais - aula 3 - processos
 
Diagramas de pacotes
Diagramas de pacotesDiagramas de pacotes
Diagramas de pacotes
 
Algoritmo 04 - Estruturas de decisão
 Algoritmo 04 - Estruturas de decisão Algoritmo 04 - Estruturas de decisão
Algoritmo 04 - Estruturas de decisão
 
Python - Introdução
Python - IntroduçãoPython - Introdução
Python - Introdução
 
Estrutura de Dados - Aula 12 - Pesquisa de Dados (Sequencial e Binária)
Estrutura de Dados - Aula 12 - Pesquisa de Dados (Sequencial e Binária)Estrutura de Dados - Aula 12 - Pesquisa de Dados (Sequencial e Binária)
Estrutura de Dados - Aula 12 - Pesquisa de Dados (Sequencial e Binária)
 
Matrizes em c#
Matrizes em c#Matrizes em c#
Matrizes em c#
 
Introducao as rede de computadores
Introducao as rede de computadoresIntroducao as rede de computadores
Introducao as rede de computadores
 
Estrutura de Dados em Java (Funções e Procedimentos)
Estrutura de Dados em Java (Funções e Procedimentos)Estrutura de Dados em Java (Funções e Procedimentos)
Estrutura de Dados em Java (Funções e Procedimentos)
 
Arquitetura 6 exercícios
Arquitetura 6   exercíciosArquitetura 6   exercícios
Arquitetura 6 exercícios
 
Descoberta de Conhecimento em Bancos de Dados e Mineração de Dados
Descoberta de Conhecimento em Bancos de Dados e Mineração de DadosDescoberta de Conhecimento em Bancos de Dados e Mineração de Dados
Descoberta de Conhecimento em Bancos de Dados e Mineração de Dados
 
Aula1-Conceitos de SGBD
Aula1-Conceitos de SGBDAula1-Conceitos de SGBD
Aula1-Conceitos de SGBD
 
Desenhando Componentes de Software com UML
Desenhando Componentes de Software com UMLDesenhando Componentes de Software com UML
Desenhando Componentes de Software com UML
 
Introdução ao CSS
Introdução ao CSSIntrodução ao CSS
Introdução ao CSS
 
Sistema operacional introdução
Sistema operacional introduçãoSistema operacional introdução
Sistema operacional introdução
 
Introducao redes
Introducao redesIntroducao redes
Introducao redes
 
Resolução da Lista de exercícios - Conversão de bases e aritmética computacional
Resolução da Lista de exercícios - Conversão de bases e aritmética computacionalResolução da Lista de exercícios - Conversão de bases e aritmética computacional
Resolução da Lista de exercícios - Conversão de bases e aritmética computacional
 

Busca interpolada - ED1 - UFS

  • 1. Busca Interpolada Grupo: Jaine Conceição, Caroline Cruz, Augusto Cezar, Michael Roan, Fábio de Paula, Rafael Sena, Luís Felipe, Janelson Luiz, Stênio e Marcel.
  • 2. Definição: • Pesquisa de interpolação é uma variante melhorada de busca binária. • São requisitos da busca interpolada: dados ordenados e uniformemente distribuídos.
  • 3. Na busca binária a chave é comparada sempre com o elemento do meio mas e se tivéssemos uma estimativa melhor da localização da chave?
  • 4. Por exemplo, no caso de uma lista telefônica, se quisermos procurar o número de “João”. Nesse situação a busca interpolada apresenta melhor desempenho uma vez que podemos pular diretamente para o espaço de memória onde os nomes começam com ‘J’.
  • 5. Implementação: • A busca interpolada procura um item particular computando uma posição de sondagem, levando em consideração não só a quantidade de itens (binária), mas também a distribuição dos itens. • Se encontrar o item procurado então retorna o índice. • Caso contrário divide a lista em duas partes através do método seguinte: mid = low + ((high - low) / (A[high] - A[low])) * (x - A[low])
  • 6. mid = low + ((high - low) / (A[high] - A[low])) * (x - A[low]) • A = lista ou array • Low = índice mais baixo da lista • High = índice mais alto da lista • A[n] = valor armazenado no índice ‘n’ da lista • x = chave procurada Índices: 0 1 2 3 4 5 6 7 8 9 mid = 0 + ((9 - 0) / (10 - 1)) * (2 – 1) = 9 / 9 * 1 = 1
  • 8. Set mid = low + ((high - low) / (A[high] - A[low])) * (X - A[low]) if A[mid] = X EXIT: Success, Target found at mid else if A[mid] < X Set low to mid+1 else if A[mid] > X Set high to mid-1 end if end if End While End Procedure Pseudo-códigoA → Array list N → Tamanho de A X → Chave procurada Procedure Interpolation_Search() Set low → 0 Set mid → -1 Set high → N-1 While X does not match if low equals to high OR A[low] equals to A[high] EXIT: Failure, Target not found end if
  • 9. Custo: • Índice de particionamento é calculado em tempo constante, de acordo com uma distribuição de probabilidade. • Utilizando uma entrada com distribuição uniforme, é obtido um tempo de execução Ω(1) com uma quantidade média de log (log (n)) comparações. • No pior caso é obtida a complexidade O(n) quando uma distribuição uniforme não é aplicada .
  • 10. Aplicação: • Em geral tem as mesmas aplicações que a busca binária já que são quase iguais, no entanto, a condição da interpolada precisa ser levada em consideração. • Esta técnica é geralmente utilizada por pessoas na busca por informações com ordenação, como em agendas, dicionários ou listas telefônicas.
  • 11. Comparação com outras buscas: • Se as chaves estiverem uniformemente distribuídas: • Complexidade da busca sequencial: O(n) • Complexidade da busca binária: O(log(n)) • Complexidade da busca interpolada: O(log(log(n)))
  • 12. Referências: • ROSA, João Luís Garcia. Métodos de Busca, 2009. Disponível em: <http://wiki.icmc.usp.br/images/d/df/ICC2_12.Busca.pdf>. Acesso em: 02 de jan, 2017. • MARKOV, Igor. What is interpolation search and what is it used for, 2014. Disponível em: <https://www.quora.com/What-is-interpolation-search-and- what-is-it-used-for>. Acesso em: 02 de jan, 2017. • Estrutura de Dados - interpolação Pesquisa, 2014. Disponível em: <http://www.w3ii.com/pt/data_structures_algorithms/interpolation_search_al gorithm.html>. Acesso em: 02 de jan, 2017. • ANAND, Shivam. What is interpolation search in data structures, 2014. Disponível em: <https://www.quora.com/What-is-interpolation-search-in- data-structures>. Acesso em: 02 de jan, 2017.