AccueilđŸ‡«đŸ‡·Chercher

Algorithme de Flajolet et Martin

L'algorithme de Flajolet et Martin[1] est un algorithme donnant une estimation du nombre d'Ă©lĂ©ments distincts dans un flot, en une seule passe et avec une complexitĂ© logarithmique en mĂ©moire, proportionnelle au nombre maximum d'Ă©lĂ©ments distincts. Cet algorithme a Ă©tĂ© inventĂ© en 1984 par Philippe Flajolet and G. Nigel Martin[2], puis amĂ©liorĂ© par Marianne Durand et Philippe Flajolet[3] - [4]. C'est un algorithme de fouille de flots de donnĂ©es (streaming).

En 2010[5], Daniel M. Kane, Jelani Nelson et David P. Woodruff ont proposĂ© un algorithme avec une complexitĂ© spatiale presque optimale et un coĂ»t de modification en O(1).

L'algorithme

L'algorithme nĂ©cessite une fonction de hashage , associant Ă  une entrĂ©e  un entier dans , dont les images sont uniformĂ©ment rĂ©parties. L'ensemble des entiers de 0 Ă  correspond en fait Ă  l'ensemble des chaĂźnes binaires de longueur .

Étant donnĂ© un entier positif , on note  le -Ăšme bit dans la reprĂ©sentation binaire de , de sorte que :

On dĂ©finit ensuite une fonction  qui associe Ă  y la position du bit de poids faible dans sa reprĂ©sentation binaire :

avec . Par exemple, car le premier bit est non nul, alors que  avec le bit de poids faible en troisiĂšme position. Étant donnĂ© que les images de la fonction de hashage sont uniformĂ©ment rĂ©parties, la probabilitĂ© d'observer un nombre finissant par  (un 1 suivi de  zĂ©ros) est  et correspond Ă  tirer  piles suivi d'un face en lançant une piĂšce de monnaie Ă©quilibrĂ©e.

Description de l'algorithme

Algorithme de Flajolet-Martin — L'algorithme de Flajolet–Martin estime la cardinalitĂ© d'un multiensemble  de la maniĂšre suivante :

  1. Initialiser un vecteur BITMAP contenant  zĂ©ros.
  2. Pour chaque Ă©lĂ©ment  dans , effectuer :
    1. ,
    2. .
  3. On note  le plus petit indice  tel que .
  4. La cardinalitĂ© de  est approchĂ©e par  avec .

Commentaires

Avec  le nombre d'Ă©lĂ©ments distincts de , alors  est accĂ©dĂ© environ  fois, accĂ©dĂ©  fois, etc. Ainsi, si  vaut certainement 0, de mĂȘme que si  vaut certainement 1. Si  alors  vaut soit 1 soit 0.

Les calculs pour obtenir le facteur de correction  sont dĂ©taillĂ©s dans l'article de Flajolet et Martin.

Voir aussi

Références

  1. Référence pour le nom : Claire Mathieu, « Support du cours « Algorithmes pour flux de données » au collÚge de France, le 16 janvier 2018 », sur CollÚge de France.
  2. Philippe Flajolet et G. Nigel Martin, « Probabilistic counting algorithms for data base applications », Journal of Computer and System Sciences, vol. 31, no 2,‎ , p. 182–209 (DOI 10.1016/0022-0000(85)90041-8, lire en ligne)
  3. (en) Marianne Durand et Philippe Flajolet, Algorithms - ESA 2003 : 11th Annual European Symposium, Budapest, Hungary, September 16-19, 2003, Proceedings, vol. 2832, coll. « Lecture Notes in Computer Science », , 605 p. (ISBN 978-3-540-20064-2, DOI 10.1007/978-3-540-39658-1_55, lire en ligne), « Loglog Counting of Large Cardinalities »
  4. Philippe Flajolet, Éric Fusy, Olivier Gandouet et FrĂ©dĂ©ric Meunier, « Hyperloglog: The analysis of a near-optimal cardinality estimation algorithm », Discrete Mathematics and Theoretical Computer Science,‎ , p. 127–146 (lire en ligne)
  5. (en) D. M. Kane, J. Nelson et D. P. Woodruff, Proceedings of the twenty-ninth ACM SIGMOD-SIGACT-SIGART symposium on Principles of database systems of data - PODS '10, (ISBN 978-1-4503-0033-9, DOI 10.1145/1807085.1807094, lire en ligne), « An optimal algorithm for the distinct elements problem », p. 41

Liens externes

Cet article est issu de wikipedia. Text licence: CC BY-SA 4.0, Des conditions supplĂ©mentaires peuvent s’appliquer aux fichiers multimĂ©dias.