![](//s1.studylibfr.com/store/data-gzf/4e73987b0f13cdd7b2aee3bb5ecadfe4/1/004899990.htmlex.zip/bg5.jpg)
Analyse d’algorithmes 2001 EXERCICES SUR LES ALGORITHMES PROBABILISTES 5
Le pire cas s’obtient pour le dernier élément du tableau, soit:
PA (N, K) = Max {K | 1 ≤ K ≤ N} = N
et le cas moyen par: MA (N) = 1
N∑
K=1
N K = 1
N N (N+1)
2 = N+1
2.
ii) Le nombre d’accès au tableau Val pour atteindre la clé de rang K ∈ (1, N) est
TB (N, K) =
1 + K si X < Val[I] (cas <)
1 + K – rang (Val[I]) si X > Val[I] (cas >)
1 si X = Val[I] (cas =)
où le 1 dans chaque cas correspond à l’accès aléatoire initial à la valeur Y. L’espérance mathématique
de ce nombre se calcule en tenant compte des deux faits que:
• d’une part, la clé cherchée X est équiprobable parmi toutes les valeurs de Val (ou, ce qui revient
au même, le rang de cette clé est K avec la probabilité uniforme 1/N);
• d’autre part, le tirage aléatoire de l’indice I fournit chacun des N indices possibles avec la
probabilité uniforme 1/N.
Avant de calculer TB (N, K) quels que soient K et N, tabulons ces valeurs pour une valeur
particulière de N, par exemple N = 7:
Rang de la clé cherchée K = 1234567
11234567
22123456
32312345
I = Uniforme (1, N) 42341234
52345123
62345612
72345671
Somme pour chaque K →13 18 22 25 27 28 28
Moyenne pour chaque K →1,86 2,57 3,14 3,57 3,86 4,00 4,00
La dernière ligne s’obtient en tenant compte que les tirages aléatoires de I sont équiprobables.
Cette table est facilement généralisable dans le cas général. La diagonale vaut 1 (cas merveilleux
où le tirage aléatoire de I tombe immédiatement sur la clé cherchée). Pour un tirage aléatoire I donné,
les valeurs successives de TB sont les entiers successifs à partir de 1 à droite de la diagonale (donc
pour K ≥ I), ce qui correspond à l’appel à Util (X, Next[I]), tandis que les valeurs successives de TB
sont les entiers successifs à partir de 2 à gauche de la diagonale (donc pour K < I), ce qui correspond
à l’appel à Util (X, Tete) (valeurs en italiques dans le tableau–exemple ci-dessus).
Étudions ce tableau, colonne par colonne.
En ce qui concerne sa partie inférieure (éléments en italiques), les colonnes successives sont
formées de: N–1 fois la valeur 2, N–2 fois la valeur 3, ..., 1 fois la valeur N, et la dernière colonne
est vide. Cela donne une somme pour la partie inférieure:
Sinf = ∑
K=1
N–1
(N–K)(K+1) = ∑
i=2
N (N+1–i) i = [∑
i=1
N (N+1–i) i] – N
(le passage de la première expression à la seconde s’obtient en posant i = K+1, soit K = i–1).