Exercices Ch10.mcw

Transcription

Exercices Ch10.mcw
EXERCICES SUR LES ALGORITHMES PROBABILISTES
Chapitre 10
Exercice 1
Qu’est-ce qui distingue un algorithme de Sherwood de l’algorithme déterministe dont il est issu ?
Solution
L’algorithme déterministe est efficace en moyenne mais possède un mauvais comportement en
pire cas.
L’objectif d’un algorithme de Sherwood est d’éliminer l’écart entre bons et mauvais exemplaires. L’algorithme de Sherwood peut prendre à l’occasion plus de temps sur un exemplaire x; cela
ne dépend pas alors de x mais des choix probabilistes faits par l’algorithme.
Exercice 2 (problème 8.2.2)
Un problème est dit bien caractérisé s’il est toujours possible de vérifier efficacement
l’exactitude d’une solution présumée d’un exemplaire. Montrez comment obtenir un algorithme de
Las Vegas pour résoudre un problème bien caractérisé pour lequel on dispose déjà d’un algorithme de
Monte-Carlo. Inversement, montrez comment obtenir un algorithme de Monte-Carlo pour résoudre
un problème quelconque pour lequel on dispose déjà d’un algorithme de Las Vegas.
Solution
Si on dispose d’un algorithme de Monte-Carlo, on peut l’utiliser pour générer une solution,
puis vérifier l’exactitude de la solution (c’est possible puisque le problème est bien caractérisé) et la
donner en réponse si et seulement si elle est exacte. On obtient ainsi un algorithme de Las Vegas.
Inversement, si on dispose d’un algorithme de Las Vegas, on peut l’utiliser et s’il fournit une
réponse, on retourne cette réponse, sinon on retourne n’importe quoi comme réponse. On obtient
ainsi un algorithme de Monte-Carlo.
Exercice 3 (problème 8.3.4)
Quelle valeur est estimée si, dans l’algorithme du jet des dards sur une cible carrée, l’on fait
«x ← Uniforme (0, 1); y ← x» au lieu de «x ← Uniforme (0, 1); y ← Uniforme (0, 1)» ?
Solution
On choisit ainsi un point au hasard sur la diagonale du carré. La proportion des points de cette
1 √
2
4k
diagonale qui se trouvent à l’intérieur du cercle est de
= 2 . Dans ce cas, n (la valeur retournée)
2
√
est une estimation de 2√ 2, et non une estimation de π.
Analyse d’algorithmes 2001
EXERCICES SUR LES ALGORITHMES PROBABILISTES
1
* Exercice 4 (théorème 10.6.2 et problème 10.16)
On dispose d’un entier impair n > 4 , et on veut savoir si n est premier ou non. On peut écrire
n–1 = 2st, où t est impair. Pour chaque entier a tel que 2 ≤ a ≤ n–2 , on dit que n est fortement
pseudo-premier (FPP) en base a s’il existe un entier i tel que 0 ≤ i < s et
i
a2 t mod n = n–1,
ou si at mod n = 1. Un théorème nous apprend que, si n est premier, alors il est FPP à n’importe
n–9
quelle base a, tandis que si n est composé, alors il ne peut être FPP à plus de 4 bases différentes.
a) Donnez un algorithme efficace pour tester si n est FPP en base a.
b) Donnez un algorithme probabiliste qui utilise l’algorithme précédent pour tester si n est premier, et
qui ne se trompe qu’avec une probabilité inférieure à 4–k. De quel type d’algorithme s’agit-il ? Si
l’algorithme retourne “n est premier”, quelle est la probabilité que n soit effectivement premier ?
Solution (non vérifiée)
a)
On utilise la technique diviser-pour-régner pour calculer successivement
i
at MOD n, a2t MOD n, ..., a2 t MOD n.
FONCTION FPP (n,a) : BOOLÉEN
{retourne VRAI si n est FPP en base a et FAUX sinon}
{Assert: n–1 = 2s–1 t}
r ← a ; x ← 1 ; s ← 1 ; t ← n–1.
TANT QUE t est pair FAIRE s ← s + 1 ; t ← t DIV 2. {Assert: n–1 = 2s–1 t ET t impair}
TANT QUE t > 0 FAIRE
SI t est impair ALORS x ← x * r MOD n.
r ← r * r MOD n.
t ← t DIV 2.
SI (x = 1 OU x = n – 1) ALORS RETOURNER VRAI.
POUR i ← 1 JUSQU’À s FAIRE
x ← x * x MOD n.
SI x = n – 1 ALORS RETOURNER VRAI.
RETOURNER FAUX.
FIN FPP.
b)
FONCTION Premier (n,k) : BOOLÉEN
POUR i ← 1 JUSQU’À k FAIRE
a ← Uniforme (2 .. n–2).
SI NON FPP (n, a) ALORS RETOURNER FAUX.
RETOURNER VRAI.
FIN Premier.
Il s’agit d’un algorithme de Monte-Carlo. Si n est premier, il retourne toujours VRAI, tandis que
si n n’est pas premier, il retourne VRAI avec une probabilité inférieure à 4–k. S’il retourne VRAI, la
probabilité que n soit effectivement premier dépend de la probabilité a priori que n soit premier. Soit p
cette probabilité. Alors
P( VRAI | n premier) P(n premier)
P(n premier | VRAI) = P(
VRAI | n premier) P(n premier) + P( VRAI | n composé) P(n composé)
p
≥
.
p + 4 –k (1–p)
2
EXERCICES SUR LES ALGORITHMES PROBABILISTES
©2001 R. Lelouche
Exercice 5 (problème 10.11 ou 8.3.9)
Une salle contient 25 personnes choisies aléatoirement. Seriez-vous prêt à parier qu’au moins
deux d’entre elles ont le même anniversaire ?
Exercice 6 (problème 8.4.16)
Que pensez-vous de la solution au problème des collisions dans une table de hashing qui
consisterait à “ignorer” le problème ? Si l’on dispose a priori d’une borne supérieure sur le nombre
d’identificateurs n, suffit-il de choisir la taille N de la table un peu plus grande que n pour que la
probabilité de collision soit négligeable ? (indice: résolvez d’abord l’exercice 5)
Solution
Même si N est beaucoup plus grand que n, la probabilité d’une collision n’est pas du tout
négligeable. Dans le meilleur des cas (si tout est uniforme), la probabilité qu’il n’y ait aucune
collision est
–n2/2N
N!
1– n
≈e
N (N–n)!
Par exemple, pour n = 1000 et N = 5000 , cette probabilité est inférieure à 3,73 × 10–44.
Exercice 7 (problème 8.4.17)
Montrez que n requêtes à la table des symboles peuvent prendre un temps total dans Ω(n2) en
pire cas.
Solution
Il est possible (pire cas) que la fonction de hachage envoie les n identificateurs à la même
adresse. Dans ce cas, si l’on fait une requête par identificateur, le temps requis sera dans
n
Ω (∑ i) = Ω(n 2)
i=1
Exercice 8 (adaptation de la section 8.4.3, ou du problème 10.36)
Vous disposez d’une liste contenant N clefs distinctes en ordre croissant. Cette liste est
représentée sous la forme de deux tableaux Next[1:N] et Val[1:N], ainsi que d’une tête de liste Tete.
Les clefs sont dans le tableau Val. La plus petite clef est dans Val[Tete]. Si Val[I] n’est pas la plus
grande clef de la liste, Next[I] donne l’indice dans Val de la clef suivante. Next[I] = 0 indique la fin
de la liste. Le rang d’une clef est le nombre de clefs inférieures ou égales à celle-ci dans la liste. Voici
par exemple une façon de représenter la liste 1, 2, 3, 5, 8, 13, 21 :
I
1
2
3
4
5
6
7
Val[I]
2
3 13
1
5
21
8
Next[I]
2
5
6
1
7
0
3
Dans cet exemple, Tete = 4 et le rang de 8 est 5.
Il s’agit d’analyser et de développer certains algorithmes pour fouiller dans ce type de liste. Afin
de simplifier les algorithmes et leur analyse, nous supposerons que la clef demandée se trouve
Analyse d’algorithmes 2001
EXERCICES SUR LES ALGORITHMES PROBABILISTES
3
toujours dans la liste. Étant donné une clef X, ces algorithmes doivent retourner un indice I entre 1 et
N tel que Val[I] = X. Notre but est de minimiser le nombre d’accès au tableau Val. L’efficacité sera
donnée en fonction du nombre N de clefs dans la liste et du rang K de la clef cherchée.
Si A est un algorithme déterministe (resp. probabiliste), TA (N, K) dénote le nombre exact
(resp. l’espérance mathématique du nombre) d’accès au tableau Val que fait l’algorithme A pour
rechercher la clef de rang K dans une liste de N clefs. De même, PA (N) dénote le pire cas de l’algorithme A, c’est-à-dire la plus grande valeur possible de TA (N, K), et MA (N) le nombre moyen
d’accès faits par A pour rechercher une clef choisie aléatoirement avec distribution uniforme parmi les
N clefs de la liste. Nous avons donc
PA (N) = Max {TA (N, K) | 1 ≤ K ≤ N}
et
N
1
MA (N) = N ∑ T A (N, K).
K=1
L’algorithme ci-dessous sera utile par la suite. Il sert à trouver une clef X à partir d’une position
I dans la liste, en autant que X ≥ Val[I] et que X se trouve effectivement dans la liste.
FONCTION Util (X, I): position.
TANTQUE X > Val[I] FAIRE I ← Next[I]
RETOURNER I .
FIN Util.
i)
Un algorithme déterministe évident pour résoudre ce problème est le suivant (Val, Next et Tete
sont supposés globaux):
FONCTION A(X): position.
RETOURNER Util (X, Tete).
FIN A.
Déterminez TA(N, K) pour tout entier N et pour tout K ∈ (1, N). Déterminez PA(N) et MA(N)
pour tout entier N.
ii)
Voici un premier algorithme probabiliste:
FONCTION B(X): position.
I ← Uniforme (1, N)
Y ← Val[I]
SI X < Y ALORS RETOURNER Util (X, Tete)
SINON SI X > Y ALORS RETOURNER Util (X, Next[I])
SINON RETOURNER I.
Fin B.
Déterminez TB (N, K) pour tout entier N et pour tout K entre 1 et N. Déterminez PB (N) et
MB(N) pour tout entier N . En fonction de N, quelle(s) valeur(s) de K maximise(nt) TB (N, K) ?
iii) Esquissez le meilleur algorithme probabiliste auquel vous puissiez penser. En particulier, votre
algorithme doit être préférable à celui qui est donné en (ii) si la clef recherchée est la plus grande de la
liste. Une analyse mathématique rigoureuse n’est pas demandée, mais appuyez vos idées sur des
arguments intuitifs. Optionnellement, estimez de votre mieux l’efficacité de votre algorithme.
Solution
i)
4
Le nombre d’accès au tableau Val pour atteindre la clé de rang K ∈ (1, N) est évidemment
TA (N, K) = K.
EXERCICES SUR LES ALGORITHMES PROBABILISTES
©2001 R. Lelouche
Le pire cas s’obtient pour le dernier élément du tableau, soit:
PA (N, K) = Max {K | 1 ≤ K ≤ N} = N
N
1
1 N (N+1) N+1
= 2 .
MA (N) = N ∑ K = N
2
et le cas moyen par:
K=1
Le nombre d’accès au tableau Val pour atteindre la clé de rang K ∈ (1, N) est
si X < Val[I] (cas <)
 1 + K
TB (N, K) =  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.
ii)
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 = 1
2
3
4
5
6
7
 1
1
2
3
4
5
6
7
 2
2
1
2
3
4
5
6
 3
2
3
1
2
3
4
5
I = Uniforme (1, N)  4
2
3
4
1
2
3
4
 5
2
3
4
5
1
2
3
 6
2
3
4
5
6
1
2
 7
2
3
4
5
6
7
1
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:
N–1
Sinf =
∑
K=1
N
(N–K)(K+1) =
∑
i=2
N
(N+1–i) i =
[ ∑ (N+1–i) i] – N
i=1
(le passage de la première expression à la seconde s’obtient en posant i = K+1, soit K = i–1).
Analyse d’algorithmes 2001
EXERCICES SUR LES ALGORITHMES PROBABILISTES
5
En ce qui concerne sa partie supérieure, les colonnes successives sont formées de: la valeur 1,
la somme des 2 premiers entiers, la somme des 3 premiers entiers, ..., la somme des N–1 premiers
entiers, et la somme des N premiers entiers. Cela donne une somme pour la partie supérieure:
N
Ssup =
K
∑∑
K=1 i=1
N
i =
∑ K (K+1)
2
K=1
Cette somme n’est pas facile à calculer telle quelle. Cependant, si on examine cette même partie
supérieure diagonale par diagonale, on retrouve de gauche à droite: N fois la valeur 1, N–1 fois la
valeur 2, N–2 fois la valeur 3, ..., 1 fois la valeur N. Vu ainsi, cela donne:
N
Ssup =N*1 + (N–1)*2 + ... + 1*N = ∑ (N+1–i) i
i=1
La somme totale des éléments du tableau est ainsi S = Sinf + Ssup, soit:
N
N
N
[∑ (N+1–i) i] – N = 2 [(N+1)∑ i – ∑ i2] – N
i=1
i=1
i=1
N(N+1) N(N+1)(2N+1)
= 2 [(N+1) 2
–
] – N = N (N+1) [N+1 – 2N+1
6
3 ]–N
3N+3–2N–1
= N (N+1) [
] – N = N(N+1)(N+2)
– N.
3
3
S =2
Comme il y a dans ce tableau N2 cases (possibilités) équiprobables, cela donne pour la moyenne:
S
(N+1)(N+2) 1
N2+3N–1
N
MB (N) = 2 =
–
=
≈ 3 ,
3N
3N
N
N
N+1
N
ce qui est meilleur que le MB (N) = 2 ≈ 2 de l’algorithme déterministe A.
Quant au pire cas, il s’obtient pour K = N (où le pire tirage est I = 1: l’algorithme explore dans
l’ordre tous les éléments), mais aussi pour K = N–1 (où le pire tirage est I=N: l’algorithme explore le
Ne élément, puis chacun des N–1 premiers). Dans ces deux cas, on obtient, compte tenu de ce que
tous les tirages sont équiprobables:
N
1
1 N (N+1) N+1
= 2 = MA (N),
PB (N) = N ∑ i = N
2
i=1
alors que nous avions PA (N) = N.
iii) Si, au lieu de tirer d’abord un seul élément au hasard, avec l’espoir de couper la liste en deux,
on en tire deux, avec l’espoir de la couper en trois, on obtient un algorithme C. Cet algorithme fera au
minimum deux accès à la liste (l’un des deux tirages aléatoires donne l’élément cherché dans la liste),
et au maximum N+1 accès (on cherche le plus grand élément, et les deux tirages aléatoires donnent
deux fois le premier). Cependant, dans ce dernier cas, comme les tirages aléatoires sont indépendants
1
1
et équiprobables, cette probabilité n’est que de 3 parmi les N3 cases du tableau (au lieu de 2 dans
N
N
le cas précédent à un seul tirage).
6
EXERCICES SUR LES ALGORITHMES PROBABILISTES
©2001 R. Lelouche
FONCTION C(X): position.
I1 ← Uniforme (1, N); Y1 ← Val[I1]; SI X = Y1 ALORS RETOURNER
I2 ← Uniforme (1, N); Y2 ← Val[I2]; SI X = Y2 ALORS RETOURNER
SI Y1 > Y2 ALORS Echanger I1 et I2; Echanger Y1 et Y2; FINSI
I1.
I2.
{la clé maximum tirée est Y2 et son index est I2}
SI X < Y1 ALORS RETOURNER Util (X, Tete).
SI X > Y2 ALORS RETOURNER Util (X, Next[I2]).
RETOURNER Util (X, Next[I1]).
Fin C.
Avec N = 7, le nombre exact d’accès au tableau Val pour trouver la clé de rang N est donné par:
I1 = Uniforme (1, N) →
1
2
3
4
5
6
7
 1
8
7
6
5
4
3
2
 2
7
7
6
5
4
3
2
 3
6
6
6
5
4
3
2
I2 = Uniforme (1, N)  4
5
5
5
5
4
3
2
 5
4
4
4
4
4
3
2
 6
3
3
3
3
3
3
2
 7
2
2
2
2
2
2
2
35 34 32 29 25 20 14
Somme pour chaque I →
ce qui donne 189 accès au total, d’où une espérance de PC (7) = 189/49 = 3,86 accès pour trouver
l’élément le plus grand (pire cas), au lieu de 4 accès avec l’algorithme B.
En généralisant la configuration du tableau précédent à N quelconque, on peut montrer que
[
N
]
1
[1 (N+1) + 3 (N) + 5 (N–1) + ... + (2N–1) 2] = 12 ∑ (2i–1)(N+2–i) .
N2
N i=1
Le calcul de la partie entre crochets se termine de manière comparable à ii), en faisant intervenir la
somme des N premiers entiers et la somme des N premiers carrés. On trouve:
PC (N) =
[]
N
= 2 (N+2) ∑ i
i=1
N
– (N+2) ∑ 1
i=1
N
–2∑
N
+∑ i
i2
i=1
i=1
N (N+1)
= 2 (N+2)
2
N(N+1)(2N+1)
N(N+1)
– (N+2) N
–2
+
6
2
1
2N+1
= N (N+2) N+1 – 1
– N (N+1) 2 – 3
4N–1
4N3
N3
= N2 (N+2) + N (N+1) 6 ≈ N3 – 6 = 3 ,
[
d’où
]
PC (N) =
[
1
N2
]
[] = N3 .
Si maintenant on fait trois tirages aléatoires au départ au lieu de 2 (ou de 1), on devrait encore
améliorer ces résultats (nombre d’accès compris entre 3 et N+2). On améliorera encore plus en faisant
4 tirages, etc. Cependant, il ne faut pas augmenter indûment le nombre de ces tirages préliminaires
destinés à réduire la longueur de la chaîne à explorer en séquence. En effet, le nombre de collisions de
ces tirages augmenterait, et la longueur de la chaîne retant à explorer en bout de ligne ne diminuerait
pas de manière aussi intéressante. Si on admettait que les tirages aléatoires préliminaires sont
idéalement bien répartis (ce qui est faux à cause des collisions), il faudrait effectuer √N tirages, ce qui
donnerait tout aussi idéalement une longueur de chaîne restant à explorer de √N, d’où au total 2√N
accès, ce qui serait significativement mieux que linéaire...
Analyse d’algorithmes 2001
EXERCICES SUR LES ALGORITHMES PROBABILISTES
7
Exercice 9
Soit X un ensemble fini dont le nombre d’éléments est très élevé, mais dans lequel nous
pouvons puiser d’une façon aléatoire, uniforme et indépendante. Soit une fonction f : X → ℜ.
i) Construire un algorithme de Las Vegas qui doit retourner un élément x ∈ X tel que f(x) = f0 (une
valeur donnée). On suppose que {x ∈ X | f (x) = f0} n’est pas un ensemble vide.
ii) Construire une fonction qui nous assure de trouver une solution à ce problème en utilisant
l’algorithme de Las Vegas précédent.
Solution
i)
PROCEDURE LV(X, var y, var Succès).
y ← Uniforme (X).
SI f(y) = f0 ALORS Succès ← VRAI
SINON Succès ← FAUX.
FIN LV.
ii)
FONCTION Obstiné (X): élément de X.
RÉPÉTER
LV(X, y, Succès)
JUSQU’À Succès
RETOURNER y.
FIN Obstiné.
Exercice 10
En reconsidérant l’énoncé de l’exercice 9,
i) Construire un algorithme de Monte-Carlo qui permet de décider s’il existe ou non au moins un
élément x dans X tel que f (x) = f0.
ii) Construire une fonction qui nous permet d’améliorer nos chances de succès de trouver une
réponse exacte, en utilisant l’algorithme de Monte-Carlo précédent.
Solution:
i)
FONCTION MC(X): booléen.
y ← Uniforme (X)
RETOURNER (f(y) = f0)
ii) FONCTION Obstiné (X,k): booléen.
POUR i ← 1 JUSQU’À k FAIRE
SI MC(X) ALORS RETOURNER VRAI.
RETOURNER FAUX.
8
EXERCICES SUR LES ALGORITHMES PROBABILISTES
©2001 R. Lelouche
Exercice 11 (problème 8.6.2 ou 10.22)
Soit MC (x) un algorithme de Monte-Carlo consistant et 75%-correct. Considérez l’algorithme :
FONCTION MC3 (x).
t ← MC (x); u ← MC (x); v ← MC (x).
SI t = u OU t = v ALORS RETOURNER t.
RETOURNER v.
FIN MC3.
27
Prouvez que cet algorithme est consistant et 32 -correct, donc 84%-correct. Montrer que, par
contre, il pourrait ne même pas être 71%-correct si MC, bien que 75%-correct, n’était pas consistant.
Solution
D’abord, il faut voir ici t, u, v comme les valeurs de variables aléatoires. Pour résoudre ce
problème, il faut d’abord faire l’hypothèse que ces variables aléatoires sont indépendantes (cette
hypothèse est nécessaire). Sous cette hypothèse, on aura P[t et u corrects] = P[t correct] × P[u
correct], et ainsi de suite.
Si l’algorithme est consistant, on peut voir que chaque fois qu’au moins 2 des 3 réponses (t, u,
v) sont correctes, l’algorithme va retourner la bonne réponse. Mais la probabilité qu’au moins 2 des 3
réponses soient correctes est égale à
P[t et u corrects] + P[t et v corrects] + P[u et v corrects] – 2 P[t et u et v corrects]
9
9
9
27
= 16 +
+
–
2
16 16
64
27
= 32.
27
Donc, l’algorithme est au moins 32 -correct.
Si l’algorithme n’est pas consistant, supposons que toutes les solutions fausses qu’il peut
retourner sont identiques, c’est-à-dire qu’il n’y a qu’une seule solution fausse. Dans ce cas, lorsqu’au
moins 2 des 3 réponses (t, u, v) seront fausses, l’algorithme va retourner la mauvaise réponse. La
1
1
1
2
5
probabilité qu’au moins 2 des 3 réponses soient fausses est égale à 16 +
16 + 16 – 64 = 32. De plus,
si v est faux et t, u sont corrects et distincts, l’algorithme retournera aussi la mauvaise réponse. Ce
dernier événement est disjoint du précédent et, si les bonnes réponses sont distinctes avec probabilité
1 9
9
proche de 1, sa probabilité est approximativement 4
16 = 64. Ainsi, la probabilité d’une mauvaise
5
9 19
réponse sera approximativement 32 +
64 = 64 ≈ 0.297 > 0.29.
Analyse d’algorithmes 2001
EXERCICES SUR LES ALGORITHMES PROBABILISTES
9
Exercice 12 (problème 8.6.4 ou 10.28)
Soient A et B deux algorithmes de Monte-Carlo efficaces pour résoudre un même problème de
décision. L’algorithme A est p-correct et vrai-biaisé, et l’algorithme B est q-correct et faux-biaisé.
Donnez un algorithme de Las Vegas efficace LV (x, VAR y, VAR Succès) pour résoudre ce même
problème. Quelle est la probabilité de succès en pire cas d’une itération de votre algorithme ?
Solution
L’algorithme A est VRAI-biaisé, donc est toujours correct (retourne toujours la bonne réponse)
sur une certaine sous-classe
XA d’exemplaires, et est tantôt correct et tantôt incorrect sur la sous— pour
classe complémentaire X
laquelle la bonne réponse est VRAI. Ainsi, lorsque la bonne réponse
A
est FAUX, A est correct donc retourne toujours FAUX ; lorsque la bonne réponse est VRAI, A étant pcorrect retourne VRAI avec une probabilité p et FAUX avec une probabilité d’erreur 1–p.
Un raisonnement analogue pour B montre que lorsque la bonne réponse est VRAI, B est correct
et retourne toujours VRAI ; lorsque la bonne réponse est FAUX, A étant q-correct retourne FAUX avec
une probabilité q et VRAI avec une probabilité d’erreur 1–q.
Lorsque la bonne réponse est
l’algorithme A retourne
l’algorithme B retourne
VRAI (p)
VRAI
FAUX
ou FAUX (1–p)
FAUX
VRAI
VRAI (1–q)
ou FAUX (q)
Ainsi, lorsque A retourne VRAI, ou que B retourne FAUX, on est sûr que c’est la bonne réponse.
Algorithme de Las Vegas
Procedure LV (x, var y, var Succès);
Succès ← VRAI.
SI A (x) {A retourne VRAI} ALORS y ← VRAI.
SINON SI ¬B (x) {B retourne FAUX} ALORS y ← FAUX
SINON Succès ← FAUX.
FIN LV.
Probabilité de succès d’une itération
P(Succès) = P(Succès/VRAI) P(VRAI) + P(Succès/FAUX) P(FAUX)
=
p
v
+
q
(1–v)
10
EXERCICES SUR LES ALGORITHMES PROBABILISTES
©2001 R. Lelouche
Exercice 13 (ancien problème 8.6.5)
Considérez la fonction (algorithme de Monte-Carlo)
FONCTION Major (T[1..n]): booléen.
{Tirer un élément x au hasard dans T}
i ← uniforme (1..n).
x ← T[i].
{Compter le nombre k d’éléments égaux à x }
k ← 0.
POUR j ← 1 à n FAIRE
SI T[j] = x ALORS k ← k+1.
RETOURNER (k > n/2).
FIN Major.
indiquant si un tableau est ou non majoritaire.
Montrez que la probabilité que k appels successifs à Major (T) retournent tous la valeur FAUX
est inférieure à 2–k si T est majoritaire. Par contre, dès qu’un appel retourne VRAI, on peut affirmer
avec certitude que T est majoritaire.
Analyse d’algorithmes 2001
EXERCICES SUR LES ALGORITHMES PROBABILISTES
11