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.

Busca interpolada - ED1 - UFS

  • 1.
    Busca Interpolada Grupo: JaineConceiçã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 deinterpolação é uma variante melhorada de busca binária. • São requisitos da busca interpolada: dados ordenados e uniformemente distribuídos.
  • 3.
    Na busca bináriaa chave é comparada sempre com o elemento do meio mas e se tivéssemos uma estimativa melhor da localização da chave?
  • 4.
    Por exemplo, nocaso 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 buscainterpolada 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
  • 7.
  • 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 departicionamento é 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 geraltem 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ãoLuí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.