Recherche binaire multiplicative - Multiplicative binary search

Recherche binaire multiplicative
Recherche binaire multiplicative Depiction.svg
Visualisation de l'algorithme de recherche binaire multiplicative où 7 est la valeur cible.
Classe Algorithme de recherche
Structure de données Tableau
Les pires performances des cas O (log n )
Meilleures performances O (1)
Performance moyenne O (log n )
Complexité de l'espace dans le pire des cas O (1)

En informatique , la recherche binaire multiplicative est une variante de la recherche binaire qui utilise une permutation spécifique de clés dans un tableau au lieu de l'ordre trié utilisé par la recherche binaire ordinaire. La recherche binaire multiplicative a été décrite pour la première fois par Thomas Standish en 1980. Cet algorithme a été initialement proposé pour simplifier le calcul de l'indice médian sur de petits ordinateurs sans division efficace ni opérations de décalage. Sur le matériel moderne, la nature compatible avec le cache de la recherche binaire multiplicative la rend adaptée à la recherche hors cœur sur le stockage orienté bloc comme alternative aux arbres B et aux arbres B + . Pour des performances optimales, le facteur de branchement d'un arbre B ou d'un arbre B + doit correspondre à la taille de bloc du système de fichiers sur lequel il est stocké. La permutation utilisée par la recherche binaire multiplicative place le nombre optimal de clés dans le premier bloc ( racine ), quelle que soit la taille du bloc.

La recherche binaire multiplicative est utilisée par certains compilateurs d'optimisation pour implémenter des instructions switch .

Algorithme

La recherche binaire multiplicative fonctionne sur un tableau trié permuté. Les clés sont stockées dans le tableau dans l'ordre des niveaux de l' arbre de recherche binaire équilibré correspondant . Cela place le premier pivot d'une recherche binaire comme premier élément du tableau. Les seconds pivots sont placés aux deux positions suivantes.

Etant donné une matrice A de n éléments avec des valeurs A 0 ... A n -1 , et la valeur cible T , ce qui suit sous - programme utilise une recherche binaire multiplicatif pour trouver l'indice de T en A .

  1. Mettre i à 0
  2. si in , la recherche se termine sans succès.
  3. si A i = T , la recherche est effectuée; retourner i .
  4. si A i < T , réglez i sur 2 × i + 1 et passez à l'étape 2.
  5. si A i > T , réglez i sur 2 × i + 2 et passez à l'étape 2.

Voir également

Citations