Adloun

Python (école d'ingénieur) · Chapitre 6 · Exercice

Complexité de la recherche dichotomique

Complexité algorithmique

Énoncé

Démontrer par récurrence que la recherche dichotomique sur une liste triée de taille effectue au plus comparaisons dans le pire des cas.

def dichotomie(L, x):
    g, d = 0, len(L) - 1
    while g <= d:
        m = (g + d) // 2
        if L[m] == x:
            return m
        elif L[m] < x:
            g = m + 1
        else:
            d = m - 1
    return -1

Corrigé

Soit le nombre maximal de comparaisons effectuées pour une liste de taille .

  • Initialisation : Pour , une seule comparaison suffit. La propriété est vraie.
  • Hérédité : Supposons la propriété vraie pour toutes les tailles strictement inférieures à . Pour une liste de taille , on effectue une comparaison avec l'élément central . Dans le pire des cas, l'élément n'est pas trouvé et on poursuit la recherche dans l'un des deux sous-tableaux, chacun ayant une taille maximale de . La relation de récurrence s'écrit : Par hypothèse de récurrence : Puisque , nous avons : En injectant cette inégalité : La propriété est démontrée au rang .

100 % gratuit

La suite du chapitre est sur Adloun

Exercice suivant et tuteur

Sans compte : le cours et le premier QCM. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.

Le cours du chapitre · Tous les exercices du chapitre

Exercice suivant et tuteur →