Combien de tours au maximum pour un tableau de éléments
Exercice de TD · niveau 2 · NSI (première), chapitre 8 — Dichotomie, voisins et gloutons · La recherche dichotomique
Énoncé
Combien de tours au maximum pour un tableau de éléments ? de ? Répondre avec le nombre de bits du chapitre 1, puis vérifier la réponse en comptant les tours pour toutes les valeurs cherchées.
Corrigé
La réponse théorique. Le nombre de tours du pire cas est , c'est-à-dire le nombre de bits de : pour , pour , pour .
La vérification, qui n'est pas une reformulation.
def tours_max(n):
"""Nombre de tours du pire cas, MESURE sur toutes les valeurs possibles."""
t = list(range(n))
pire = 0
for v in range(-1, n + 1): # toutes les presentes ET deux absentes
_, trace = dichotomie_tracee(t, v)
pire = max(pire, len(trace))
return pire
for n in [1, 2, 3, 7, 8, 100, 1000, 1024]:
assert tours_max(n) == n.bit_length()
assert (10**6).bit_length() == 20
assert (10**9).bit_length() == 30
La boucle essaie toutes les valeurs, présentes comme absentes : c'est ce qui en fait une mesure du pire cas et non d'un cas particulier. Le résultat coïncide exactement avec n.bit_length() — la fonction du chapitre 1, retrouvée ici par un tout autre chemin. Ce n'est pas une coïncidence : diviser par deux jusqu'à atteindre , c'est compter les chiffres binaires.
Le contraste avec la recherche séquentielle vaut d'être dit en une phrase : passer de à éléments multiplie le travail séquentiel par mille, et fait passer la dichotomie de à tours.
Les autres exercices de ce chapitre Le cours du chapitre
Un blocage sur cet exercice ? Le tuteur d'Adloun guide par questions, sans donner la réponse.