Algorithmes et structures probabilistes

publicité
Conception d’algorithmes et applications (LI325)
Cours 10: Algorithmes et structures probabilistes
Ana Bušić
http://www.di.ens.fr/~busic/LI325.html
[email protected]
Algorithmes Probabilistes
Algorithme probabiliste est un algorithme dans lequel on utilise
l’instruction de la forme
“tirer un entier selon la loi uniforme entre 1 et n”.
Algorithmes Probabilistes
Algorithme probabiliste est un algorithme dans lequel on utilise
l’instruction de la forme
“tirer un entier selon la loi uniforme entre 1 et n”.
Deux usages principaux du aléatoire :
I
RandQuickSort : pour assurer que sur toute instance la complexité
moyenne est égale à la complexité moyenne (sous l’hypothèse
uniforme) d’un algorithme déterministe correspondant. Technique de
randomisation.
Algorithmes Probabilistes
Algorithme probabiliste est un algorithme dans lequel on utilise
l’instruction de la forme
“tirer un entier selon la loi uniforme entre 1 et n”.
Deux usages principaux du aléatoire :
I
RandQuickSort : pour assurer que sur toute instance la complexité
moyenne est égale à la complexité moyenne (sous l’hypothèse
uniforme) d’un algorithme déterministe correspondant. Technique de
randomisation.
I
RandMinCut : algorithme plus simple que l’algorithme déterministe
pour le même problème.
Algorithmes Probabilistes
Algorithme probabiliste est un algorithme dans lequel on utilise
l’instruction de la forme
“tirer un entier selon la loi uniforme entre 1 et n”.
Deux usages principaux du aléatoire :
I
RandQuickSort : pour assurer que sur toute instance la complexité
moyenne est égale à la complexité moyenne (sous l’hypothèse
uniforme) d’un algorithme déterministe correspondant. Technique de
randomisation.
I
RandMinCut : algorithme plus simple que l’algorithme déterministe
pour le même problème.
L’analyse faite est valable sur toutes les instances du problème (pas
d’hypothèse probabiliste sur les instances).
Las Vegas vs. Monte Carlo
Deux types d’algorithmes probabilistes :
I
Las Vegas : donne un résultat toujours correct.
Exemple : RandQuickSort.
La complexité est une variable aléatoire.
I
Monte Carlo : donne un résultat qui peut être incorrect.
Exemple : RandMinCut.
Il est impératif de majorer la probabilité d’erreur.
Las Vegas vs. Monte Carlo
Deux types d’algorithmes probabilistes :
I
Las Vegas : donne un résultat toujours correct.
Exemple : RandQuickSort.
La complexité est une variable aléatoire.
I
Monte Carlo : donne un résultat qui peut être incorrect.
Exemple : RandMinCut.
Il est impératif de majorer la probabilité d’erreur.
Un algorithme Monte Carlo d’erreur λ : si pour toute entrée la
probabilité qu’il retourne un résultat faux est au plus λ.
Algorithmes Monte Carlo
Dans le cas des problèmes de décision (la réponse OUI ou NON) deux
sous-classes :
I
Algorithme Monte Carlo à erreur unilatérale : pour toute instance
pour laquelle la réponse est OUI, l’algorithme répond OUI avec
probabilité 1.
I
Algorithme Monte Carlo à erreur bilatérale : pour au moins une
instance positive et au moins une instance négative la probabilité
qu’il réponde OUI est strictement comprise entre 0 et 1.
Algorithmes Monte Carlo
Dans le cas des problèmes de décision (la réponse OUI ou NON) deux
sous-classes :
I
Algorithme Monte Carlo à erreur unilatérale : pour toute instance
pour laquelle la réponse est OUI, l’algorithme répond OUI avec
probabilité 1.
I
Algorithme Monte Carlo à erreur bilatérale : pour au moins une
instance positive et au moins une instance négative la probabilité
qu’il réponde OUI est strictement comprise entre 0 et 1.
RandMinCut (avec répetition) transformé en algorithme de décision (en
ajoutant à l’entrée un entier k et en demandant de décider si toute coupe
du graphe a un poids strictement supérieur à k) est un algorithme à
l’erreur unilaterale.
Algorithmes Monte Carlo
Dans le cas des problèmes de décision (la réponse OUI ou NON) deux
sous-classes :
I
Algorithme Monte Carlo à erreur unilatérale : pour toute instance
pour laquelle la réponse est OUI, l’algorithme répond OUI avec
probabilité 1.
I
Algorithme Monte Carlo à erreur bilatérale : pour au moins une
instance positive et au moins une instance négative la probabilité
qu’il réponde OUI est strictement comprise entre 0 et 1.
RandMinCut (avec répetition) transformé en algorithme de décision (en
ajoutant à l’entrée un entier k et en demandant de décider si toute coupe
du graphe a un poids strictement supérieur à k) est un algorithme à
l’erreur unilaterale.
La probabilité d’erreur peut être rendue aussi petite que l’on veut en
changeant le nombre de répetitions.
Chiffrement RSA
RSA (Rivest, Shamir et Adleman, 1977) :
système cryptographique à clé publique dont la sécurité est fondée sur la
difficulté de la factorisation des grands entiers.
I
Soit n = pq, où p et q sont deux nombres premiers impairs distincts.
Soient a, b tels que ab ≡ 1 (mod φ(n)), où φ(n) = (p − 1)(q − 1).
Notons K = (n, p, q, a, b).
I
Chiffrement :
eK (x) = x b mod n, x ∈ Zn .
I
Dechiffrement :
dK (y ) = y a mod n, y ∈ Zn .
I
Les valeurs n et b forment la clé publique et les valeurs p, q et a la
clé privée.
Exemple
I
Supposons que Bob choisisse p = 101 et q = 113. On a n = 11413
et φ(n) = 100 × 112 = 11200.
I
Soient a = 6597 et b = 3533. Alors :
ab = 23307201 = 2081 × 11200 + 1,
donc on a bien ab ≡ 1 (mod φ(n)).
I
K = (n, p, q, a, b) = (11413, 101, 113, 6597, 3533).
Exemple
I
Supposons que Bob choisisse p = 101 et q = 113. On a n = 11413
et φ(n) = 100 × 112 = 11200.
I
Soient a = 6597 et b = 3533. Alors :
ab = 23307201 = 2081 × 11200 + 1,
donc on a bien ab ≡ 1 (mod φ(n)).
I
K = (n, p, q, a, b) = (11413, 101, 113, 6597, 3533).
I
Bob publie n = 11413 et b = 3533.
Exemple
I
Supposons que Bob choisisse p = 101 et q = 113. On a n = 11413
et φ(n) = 100 × 112 = 11200.
I
Soient a = 6597 et b = 3533. Alors :
ab = 23307201 = 2081 × 11200 + 1,
donc on a bien ab ≡ 1 (mod φ(n)).
I
K = (n, p, q, a, b) = (11413, 101, 113, 6597, 3533).
I
Bob publie n = 11413 et b = 3533.
I
Si Alice souhaite chiffrer le message 9726 pour l ’envoyer à Bob, elle
calcule :
97263533 mod 11413 = 5761
et envoie le message chiffré 5761.
Exemple
I
Supposons que Bob choisisse p = 101 et q = 113. On a n = 11413
et φ(n) = 100 × 112 = 11200.
I
Soient a = 6597 et b = 3533. Alors :
ab = 23307201 = 2081 × 11200 + 1,
donc on a bien ab ≡ 1 (mod φ(n)).
I
K = (n, p, q, a, b) = (11413, 101, 113, 6597, 3533).
I
Bob publie n = 11413 et b = 3533.
I
Si Alice souhaite chiffrer le message 9726 pour l ’envoyer à Bob, elle
calcule :
97263533 mod 11413 = 5761
et envoie le message chiffré 5761.
I
Lorsque Bob reçoit 5761, il calcule : 57616597 mod 11413 = 9726.
Sécurité de RSA
Repose sur la clé privée a. Supposons que Martin intercepte le message
chiffré 5761 :
Sécurité de RSA
Repose sur la clé privée a. Supposons que Martin intercepte le message
chiffré 5761 :
I
S’il connait a, il peut obtenir le message clair comme Bob :
57616597 mod 11413 = 9726.
Sécurité de RSA
Repose sur la clé privée a. Supposons que Martin intercepte le message
chiffré 5761 :
I
S’il connait a, il peut obtenir le message clair comme Bob :
57616597 mod 11413 = 9726.
I
S’il connait φ(n), il peut calculer a = b −1 mod φ(n).
Calcul d’inverse par l’algorithme d’Euclide étendu en O(k 2 ) où
k = log(max(a, b)).
Sécurité de RSA
Repose sur la clé privée a. Supposons que Martin intercepte le message
chiffré 5761 :
I
S’il connait a, il peut obtenir le message clair comme Bob :
57616597 mod 11413 = 9726.
I
S’il connait φ(n), il peut calculer a = b −1 mod φ(n).
Calcul d’inverse par l’algorithme d’Euclide étendu en O(k 2 ) où
k = log(max(a, b)).
I
S’il connait p et q, alors φ(n) = (p − 1)(q − 1).
La sécurité de RSA est donc fondée sur la difficulté de la factorisation
de n. Les nombres premiers p et q doivent être très grands (512 bits).
Test de primalité de Miller-Rabin
I
Test de Miller-Rabin (1976) : un algorithme probabiliste du type
Monte Carlo à erreur unilatérale 1/4.
I
Idée : l’algorithme cherche une preuve de non-primalité et s’il n’en
trouve pas déclare le nombre premier.
Test de primalité de Miller-Rabin
I
Test de Miller-Rabin (1976) : un algorithme probabiliste du type
Monte Carlo à erreur unilatérale 1/4.
I
Idée : l’algorithme cherche une preuve de non-primalité et s’il n’en
trouve pas déclare le nombre premier.
I
Repose sur la propriété suivante :
Soit p un nombre premier impair et a ∈ {1, ..., p − 1}, on note r
l’unique entier impair tel que p − 1 = 2s r alors :
I
I
soit ar = 1 mod p
j
soit a2 r = −1 mod p pour un entier j, 0 ≤ j ≤ s − 1.
Témoins forts de non-primalité
I
Soient n impair et a ∈ {1, ..., n − 1}. Alors n − 1 = 2s r , où r impair.
6 1
On dit que a est un témoin fort de non-primalité pour n, si ar =
j
mod n et ∀j, 0 ≤ j ≤ s − 1, a2 r 6= −1 mod n.
I
Un nombre premier n’a donc pas de témoin fort de non-primalité.
I
Propriété : Tout entier n, impair et non premier, a au moins
3(n − 1)/4 témoins forts de non-primalité.
I
Le test de Miller-Rabin cherche des témoins de non-primalité forts :
si n est un entier impair et non premier alors un entier
a ∈ {1, . . . , n − 1} choisi de manière uniforme a une probabilité d’au
moins 3/4 d’être un témoin fort de non-primalité.
1
2
3
4
5
6
7
Test de Miller-Rabin
Entrées : Un entier n impair.
Sorties : Composé ou (probablement) Premier
r := n − 1 ; s := 0 ;
tant que r est pair faire
r := r /2 ; s := s + 1 ;
Tirer un entier a uniformément dans {1, ..., n − 1};
x := ar mod n;
si x = 1 ou x = n − 1 alors
retourner Premier
13
j := 1;
tant que j < s faire
x := x 2 mod n;
si x = n − 1 alors retourner Premier ;
si x = 1 alors retourner Composé;
j := j + 1;
14
retourner Composé
8
9
10
11
12
Introduction
Un ensemble S d’objets. A chaque x ∈ S on associe une clé k(x).
On suppose que toutes les clés sont distinctes et que l’ensemble K de
clés est totalement ordonné.
Les opérations élémentaires :
I
creer(S) : crée un nouvel ensemble vide S ;
I
trouver(k, S) : retourne l’objet de clé k de l’ensemble S, s’il
existe ;
I
inserer(k, S) : ajoute l’objet de clé k à l’ensemble S ;
I
supprimer(k, S) : retire l’objet de clé k de l’ensemble S.
Autres opérations : union, separer, premier, suivant . . .
Introduction
Un ensemble S d’objets. A chaque x ∈ S on associe une clé k(x).
On suppose que toutes les clés sont distinctes et que l’ensemble K de
clés est totalement ordonné.
Les opérations élémentaires :
I
creer(S) : crée un nouvel ensemble vide S ;
I
trouver(k, S) : retourne l’objet de clé k de l’ensemble S, s’il
existe ;
I
inserer(k, S) : ajoute l’objet de clé k à l’ensemble S ;
I
supprimer(k, S) : retire l’objet de clé k de l’ensemble S.
Autres opérations : union, separer, premier, suivant . . .
Question : quelle structure de données pour représenter S ?
Arbres binaires de recherche
I
Un arbre binaire de recherche (ABR) est un arbre binaire étiqueté
dont les étiquettes vérifient :
Pour tout noeud x, la clé de x est supérieure à toutes les clés du
sous-arbre gauche de x et inférieure à toutes les clés du sous-arbre
droit de x.
I
La complexité des opérations élémentaires :
creer : en Θ(1) ; trouver, inserer, supprimer : en O(h) où h
est la hauteur de l’arbre.
Problème : pire cas h = |S|.
Arbres binaires de recherche
I
Un arbre binaire de recherche (ABR) est un arbre binaire étiqueté
dont les étiquettes vérifient :
Pour tout noeud x, la clé de x est supérieure à toutes les clés du
sous-arbre gauche de x et inférieure à toutes les clés du sous-arbre
droit de x.
I
La complexité des opérations élémentaires :
creer : en Θ(1) ; trouver, inserer, supprimer : en O(h) où h
est la hauteur de l’arbre.
Problème : pire cas h = |S|.
I
Solution deterministe : les ABR auto-équilibrants.
Exemples : arbres AVL, arbres rouge et noir, arbres splay.
trouver, inserer, supprimer : en O(log |S|)
(dans le pire des cas pour les arbres AVL et les arbres rouge et noir ;
en analyse amortie pour les arbres splay).
Nécessitent d’effectuer des rééquilibrages.
Treaps
En anglais : tree (arbre) & heap (tas).
Rappels :
I
un arbre binaire de recherche (ABR) est un arbre binaire étiqueté
dont les étiquettes vérifient :
Pour tout noeud x, la clé de x est supérieure à toutes les clés du
sous-arbre gauche de x et inférieure à toutes les clés du sous-arbre
droit de x.
I
un tas est un arbre étiqueté dont les étiquettes vérifient :
Pour tout noeud x, la clé de x est la plus grande clé parmi toutes les
clés du sous-arbre dont la racine est x.
Treaps
Treap : un arbre binaire tel que
I
7, 30
chaque noeud interne contient 2
informations : une clé k(u) et
une priorité p(u) ;
I
les clés forment un ABR ;
I
les priorités forment un tas.
4, 26
2, 13
On suppose les clés et les priorités distinctes.
11, 27
6, 19
9, 14
12, 22
Existence et unicité
Soit S ⊂ K × P un ensemble fini de couples (ki , pi ) où K et P sont
totalement ordonnés, avec des éléments distincts. Alors il existe un
unique treap dont les sommets sont étiquetés par les éléments de S.
Existence et unicité
Soit S ⊂ K × P un ensemble fini de couples (ki , pi ) où K et P sont
totalement ordonnés, avec des éléments distincts. Alors il existe un
unique treap dont les sommets sont étiquetés par les éléments de S.
Preuve. Par récurrence sur n = |S|.
Existence et unicité
Soit S ⊂ K × P un ensemble fini de couples (ki , pi ) où K et P sont
totalement ordonnés, avec des éléments distincts. Alors il existe un
unique treap dont les sommets sont étiquetés par les éléments de S.
Preuve. Par récurrence sur n = |S|.
I
n = 0 évident.
Existence et unicité
Soit S ⊂ K × P un ensemble fini de couples (ki , pi ) où K et P sont
totalement ordonnés, avec des éléments distincts. Alors il existe un
unique treap dont les sommets sont étiquetés par les éléments de S.
Preuve. Par récurrence sur n = |S|.
I
n = 0 évident.
I
Supposons la propriété (d’existence et d’unicité) vraie pour tout
m ≤ n. Soit S un ensemble de taille n + 1.
Existence et unicité
Soit S ⊂ K × P un ensemble fini de couples (ki , pi ) où K et P sont
totalement ordonnés, avec des éléments distincts. Alors il existe un
unique treap dont les sommets sont étiquetés par les éléments de S.
Preuve. Par récurrence sur n = |S|.
I
n = 0 évident.
I
Supposons la propriété (d’existence et d’unicité) vraie pour tout
m ≤ n. Soit S un ensemble de taille n + 1.
Soit (k, p) l’élément de S de priorité maximale et soient
S< = {(k 0 , p 0 ) : k 0 < k} et S> = {(k 0 , p 0 ) : k 0 > k}.
Existence et unicité
Soit S ⊂ K × P un ensemble fini de couples (ki , pi ) où K et P sont
totalement ordonnés, avec des éléments distincts. Alors il existe un
unique treap dont les sommets sont étiquetés par les éléments de S.
Preuve. Par récurrence sur n = |S|.
I
n = 0 évident.
I
Supposons la propriété (d’existence et d’unicité) vraie pour tout
m ≤ n. Soit S un ensemble de taille n + 1.
Soit (k, p) l’élément de S de priorité maximale et soient
S< = {(k 0 , p 0 ) : k 0 < k} et S> = {(k 0 , p 0 ) : k 0 > k}.
S< et S> sont de taille au plus n et admettent chacun un unique
treap (T< et T> ). L’arbre binaire T avec racine (k, p), sous-arbre
gauche T< et sous-arbre droit T> est un treap pour S.
Existence et unicité
Soit S ⊂ K × P un ensemble fini de couples (ki , pi ) où K et P sont
totalement ordonnés, avec des éléments distincts. Alors il existe un
unique treap dont les sommets sont étiquetés par les éléments de S.
Preuve. Par récurrence sur n = |S|.
I
n = 0 évident.
I
Supposons la propriété (d’existence et d’unicité) vraie pour tout
m ≤ n. Soit S un ensemble de taille n + 1.
Soit (k, p) l’élément de S de priorité maximale et soient
S< = {(k 0 , p 0 ) : k 0 < k} et S> = {(k 0 , p 0 ) : k 0 > k}.
S< et S> sont de taille au plus n et admettent chacun un unique
treap (T< et T> ). L’arbre binaire T avec racine (k, p), sous-arbre
gauche T< et sous-arbre droit T> est un treap pour S.
T est unique treap pour S.
Operations élémentaires
I
I
trouver(k,S) : de la même manière que dans un ABR ;
inserer(k,S) : en 2 étapes
Etape 1 (comme dans un ABR) : effectuer un trouver(k,S) puis
ajouter le nouveau nœud interne à la place de la feuille où la
recherche se termine par un échec.
Operations élémentaires
I
I
trouver(k,S) : de la même manière que dans un ABR ;
inserer(k,S) : en 2 étapes
Etape 1 (comme dans un ABR) : effectuer un trouver(k,S) puis
ajouter le nouveau nœud interne à la place de la feuille où la
recherche se termine par un échec.
Etape 2 (si la condition de tas n’est pas verifiée après l’insertion) :
effectuer des rotations successives pour remonter le nouveau nœud
de clé k, tant que sa priorité est supérieure de celle de son père.
Rotations élémentaires
b
a
a
b
C
A
B
A
B
C
Operations élémentaires
I
supprimer(k,S) :
effectuer une rotation entre le nœud de clé k et celui de ses fils qui a
la plus grande priorité ;
répéter cette opération jusqu’à ce que le sommet de clé k n’ait que
des feuilles comme fils ;
puis éliminer le nœud de clé k et le remplacer par une feuille.
Operations élémentaires
I
supprimer(k,S) :
effectuer une rotation entre le nœud de clé k et celui de ses fils qui a
la plus grande priorité ;
répéter cette opération jusqu’à ce que le sommet de clé k n’ait que
des feuilles comme fils ;
puis éliminer le nœud de clé k et le remplacer par une feuille.
I
Opérations trouver(k,S), inserer(k,S) et supprimer(k,S) en
temps O(h), où h la hauteur de l’arbre.
Treap probabiliste
La priorité associée à un objet :
I
est une variable aléatoire uniforme sur [0, 1], indépendante des
autres priorités (et de la clé !) ;
I
est fixée lors de l’insertion et n’est pas modifiée tant que l’objet
reste dans l’arbre.
Treap probabiliste
La priorité associée à un objet :
I
est une variable aléatoire uniforme sur [0, 1], indépendante des
autres priorités (et de la clé !) ;
I
est fixée lors de l’insertion et n’est pas modifiée tant que l’objet
reste dans l’arbre.
Propriété d’unicité implique que :
I
le treap obtenu après une suite d’insertions/suppressions ne dépend
que des priorités des objets qui restent dans l’arbre (et non pas de
l’ordre de ces opérations ni des objets supprimés).
I
en particulier, le treap obtenu est identique à celui que l’on aurait
obtenu en insérant les clés dans l’ordre décroissant des priorités
(note : dans cet ordre il n’y a pas de rotations).
Complexité des opérations élémentaires
I
Les priorités sont choisies indépendaments des clés.
I
En regardant que les clés :
un ABR aléatoire = ABR obtenu en insérant les clés dans un ordre
aléatoire avec toutes les permutations équiprobables.
I
Toute grandeur probabiliste calculée sur un ABR aléatoire reste vrai
pour le modèle de treaps.
Complexité des opérations élémentaires
I
Les priorités sont choisies indépendaments des clés.
I
En regardant que les clés :
un ABR aléatoire = ABR obtenu en insérant les clés dans un ordre
aléatoire avec toutes les permutations équiprobables.
I
Toute grandeur probabiliste calculée sur un ABR aléatoire reste vrai
pour le modèle de treaps.
I
Propriété. La hauteur hn d’un ABR aléatoire de n nœuds vérifie :
E(hn ) = O(log(n)).
Complexité des opérations élémentaires
I
Les priorités sont choisies indépendaments des clés.
I
En regardant que les clés :
un ABR aléatoire = ABR obtenu en insérant les clés dans un ordre
aléatoire avec toutes les permutations équiprobables.
I
Toute grandeur probabiliste calculée sur un ABR aléatoire reste vrai
pour le modèle de treaps.
I
Propriété. La hauteur hn d’un ABR aléatoire de n nœuds vérifie :
E(hn ) = O(log(n)).
I
Dans le treap probabiliste de n objets, les opérations élémentaires
trouver, inserer et supprimer s’effectuent en temps moyen
O(log(n)).
(note : ne dépend pas des clés !)
Structures de données probabiliste
I
La représentation en mémoire de la structure n’est pas une fonction
déterministe de la séquence d’opérations qui ont servi à sa création.
I
La partie aléatoire sert à “éviter” les cas pathologiques.
Bien évidemment, ils sont toujours possibles, mais cela ne dépend
plus de la séquence d’opérations donnée : on a le même
comportement en moyenne pour tout ensemble S de taille n.
Hachage
I
U l’univers des clés et K l’ensemble des clés utilisées pour les objets
dans S. Soit m = |S|.
I
Soit h une fonction d’hachage h : U → {0, . . . , n − 1}.
I
Hypothèse : hachage uniforme simple
a) pour tout x ∈ U, probabilité que h(x) = j égale à 1/n, 0 ≤ j ≤ n ;
b) les valeurs de h(x) sont indépendantes pour des x différents.
(note : pour un x donné, la valeur de h(x) est deterministe !)
I
Si n < m on a toujours des collisions (clés k1 6= k2 et
h(k1 ) = h(k2 )).
Hachage avec chaı̂nage
U
K
Hachage avec chaı̂nage
U
K
trouver(k,S)
Nombre moyen d’objets dans la même “boı̂te” :
I
si x 6∈ K : m/n ;
I
si x ∈ K : 1 + (m − 1)/n.
Hachage avec chaı̂nage
U
K
trouver(k,S)
Nombre moyen d’objets dans la même “boı̂te” :
I
si x 6∈ K : m/n ;
I
si x ∈ K : 1 + (m − 1)/n.
Si m = n, alors le temps moyen en O(1). Pire de cas ?
Hachage avec chaı̂nage
U
K
trouver(k,S)
Nombre moyen d’objets dans la même “boı̂te” :
I
si x 6∈ K : m/n ;
I
si x ∈ K : 1 + (m − 1)/n.
Si m = n, alors le temps moyen en O(1). Pire de cas ?
Complexité en espace mémoire : O(m).
Hachage par empreintes
Exemple : le dictionnaire des mots de passe trop faibles.
I
La valeur h(x) est une empreinte de x. Ex. un mot de 32 bits.
I
Pour chaque mot dans x ∈ S, calculer son empreinte h(x). On garde
les empreintes des mots dans x ∈ S dans une liste triée L
(la recherche en O(log m)).
I
Pour verifier si un mot de passe est trop faible :
calculer son empreinte h(x),
puis chercher h(x) dans L.
I
Plusieurs mots peuvent avoir la même empreinte (collisions) !
Erreur unilatérale (si l’empreinte du mot x n’est pas dans L, alors
x 6∈ S).
Probabilité d’erreur
I
Soit b le nombre de bits utilisés pour les empreintes.
I
Soit x ∈ S fixé. La probabilité qu’un élément y 6∈ S a la même
empreinte que le mot x est 1/2b .
Probabilité d’erreur
I
Soit b le nombre de bits utilisés pour les empreintes.
I
Soit x ∈ S fixé. La probabilité qu’un élément y 6∈ S a la même
empreinte que le mot x est 1/2b .
I
Il y a m mots dans S. La probabilité d’erreur :
m
b
1
1− 1− b
≈ 1 − e −m/2 .
2
Probabilité d’erreur
I
Soit b le nombre de bits utilisés pour les empreintes.
I
Soit x ∈ S fixé. La probabilité qu’un élément y 6∈ S a la même
empreinte que le mot x est 1/2b .
I
Il y a m mots dans S. La probabilité d’erreur :
m
b
1
1− 1− b
≈ 1 − e −m/2 .
2
I
Si on veut une probabilité d’erreur p, alors on doit prendre b tel que
b
e −m/2 ≥ 1 − p,
m
b ≥ log2
ln(1/(1 − p))
i.e. b = Θ(log m) bits.
Filtres de Bloom
I
Soit A un tableau de n bits. A[0], . . . , A[n − 1] initialisés à 0.
I
h1 , . . . , hk fonctions d’hachage indépendantes
hi : U → {0, . . . , n − 1}.
I
Soit S = {s1 , . . . , sm } un ensemble de m éléments de U
(note : |U| >> m).
I
Pour chaque s ∈ S, les bits A[hi (s)] sont mis à 1, pour 1 ≤ i ≤ k.
I
Pour vérifier si x ∈ S, vérifier si tous les A[hi (x)] sont égaux à 1. Si
oui, alors on suppose que x ∈ S.
I
Erreur unilatérale possible (il est possible que x 6∈ S soit declaré
dans S, mais pas le contraire).
Probabilité d’erreur
I
La probabilité qu’un bit fixé est toujours à 0 après qu’on a considéré
les m éléments dans S :
km
1
≈ e −km/n .
1−
n
I
Pour vérifier si un x ∈ U est dans S on fait k tests. La probabilité
qu’il sont tous à 1 (la probabilité d’erreur) peut être approximée par :
perr =
1
1− 1−
n
km !k
Note : Pour perr fixé, n = Θ(m).
k
≈ 1 − e −km/n
Remarques
I
Si m %, alors perr %.
I
Si n %, alors perr &.
I
Si k % ?
Pour m et n fixés :
plus k est grand plus la probabilité qu’un bit reste à 0 est petite,
mais aussi dans trouver(x, S) on a plus de tests “est-ce que
A[hi (x)] = 1 ?” à faire (et donc plus de chance qu’un donne 0)...
Optimisation : k =
elle est égale à
n
m
ln 2 donne la probabilité d’erreur minimale et
perr = 2−k ≈ 0.6185n/m .
I
Pour avoir une probabilité d’erreur perr fixée :
n=−
m ln perr
.
(ln 2)2
(sous condition d’utiliser le k optimal)
Téléchargement