AccueilđŸ‡«đŸ‡·Chercher

Algorithme de RĂ©my

L'algorithme de Rémy est un générateur d'arbres binaires, dont la principale application est un algorithme efficace de génération aléatoire d'arbres binaires.

L'algorithme doit son nom Ă  son inventeur Jean-Luc RĂ©my.

Histoire

L'algorithme de RĂ©my est dĂ» Ă  Jean-Luc RĂ©my, chercheur au Centre de recherche en informatique de Nancy. Il a Ă©tĂ© crĂ©Ă© en 1978 sans ĂȘtre publiĂ© immĂ©diatement[1] et a fait partie du folklore de l'algorithmique et de la combinatoire Ă©numĂ©rative[2] jusqu'Ă  sa parution dans une revue francophone en 1985[3].

Description de l'algorithme

Les arbres binaires sont dénombrés par les nombres de Catalan donnés par les formules de récurrence :

.

Mais ces formules ne permettent pas de dériver un algorithme efficace de génération aléatoire.

L'idĂ©e de RĂ©my consiste Ă  non plus compter les arbres binaires Ă  nƓuds, mais les arbres binaires dĂ©corĂ©s Ă  nƓuds, Ă  savoir les arbres dont les feuilles ont Ă©tĂ© dĂ©corĂ©es par les nombres de Ă  dans un ordonnancement quelconque. Il y a maniĂšres de dĂ©corer un arbre binaire, par consĂ©quent, le nombre d'arbres binaires Ă  nƓuds internes est

Comme le note Knuth, Olinde Rodrigues avait déjà démontré cette formule, en 1838, dans un article du Journal de Liouville[4]. On note au passage que cela correspond à la récurrence linéaire sur les nombres de Catalan :

.

RĂ©my a remarquĂ© qu'il y a moyens de construire un arbre dĂ©corĂ© de taille Ă  partir d'un arbre dĂ©corĂ© de taille . On choisit un nƓud interne ou externe (une feuille) dans cet arbre, appelons le . Comme il y a nƓuds internes et feuilles, il y a choix possibles de . On insĂšre alors un nouveau nƓud interne et une nouvelle feuille dĂ©corĂ©e par , dont elle est la fille droite ou la fille gauche, tandis que en est alors le fils gauche ou le fils droit, comme cela est illustrĂ© dans les dessins ci-dessous.

  • x
    {\displaystyle x}
 Ă  gauche
    Ă  gauche
  • x
    {\displaystyle x}
 Ă  droite
    Ă  droite

La suite d'arbres ci-dessus illustre des insertions de nƓuds conduisant à la construction d'un arbre binaire de taille .

Une suite d'arbres décorés illustrant l'algorithme de Rémy
Une suite d'arbres décorés illustrant l'algorithme de Rémy

On voit que ce processus est unique ; en effet, l'insertion peut ĂȘtre inversĂ©e par la coupe de la feuille de plus grand numĂ©ro. En consĂ©quence, la construction de RĂ©my produit alĂ©atoirement des arbres dĂ©corĂ©s de façon uniforme. Il suffit d'oublier les feuilles pour obtenir une gĂ©nĂ©ration alĂ©atoire des arbres ordinaires (donc non dĂ©corĂ©s).

Implémentation efficace

Pour engendrer alĂ©atoirement un arbre de taille , on peut Ă©crire un algorithme efficace qui utilise un tableau de taille et qui fait tirages alĂ©atoires dans des intervalles d'entiers, de taille respectivement, jusqu'Ă  , d'oĂč une complexitĂ© linĂ©aire de l'algorithme en nombre de tirage uniforme dans un intervalle discret. Il est possible d'amĂ©liorer cet algorithme et d'atteindre un algorithme optimal en nombre de bits alĂ©atoires utilisĂ©s[5].

Extensions

L'algorithme de Rémy est à l'origine de plusieurs échantillonneurs aléatoires efficaces d'arbres non binaires comptés par des nombres qui sont solutions d'équations holonomes (en)[5], notamment d'échantillonneurs aléatoires pour les arbres unaires-binaires.

Références

  1. Jean-Luc Remy, « Un procédé itératif de dénombrement d'arbres binaires et son application à leur génération aléatoire », dans Actes des 3e journées de la RCP Complexité, Nice, , aussi Rapport CRIN n°80-P-053 (1980).
  2. Dominique Foata et Doron Zeilberger, « A Classic Proof of a Recurrence for a Very Classical Sequence », J. Comb. Theory, Ser. A, vol. 80(2),‎ , p. 380-384 (lire en ligne)
  3. Jean-Luc Remy, « Un procĂ©dĂ© itĂ©ratif de dĂ©nombrement d'arbres binaires et son application Ă  leur gĂ©nĂ©ration alĂ©atoire », ITA, vol. 19(2),‎ , p. 179-195 (lire en ligne)
  4. Olinde Rodrigues, « Sur le nombre de moyens d'effectuer un produit de n facteurs », Journal de mathĂ©matiques pures et appliquĂ©es, vol. 3,‎ , p. 549 (lire en ligne)
  5. Axel Bacher, Olivier Bodini et Alice Jacquot, « Efficient random sampling of binary and unary-binary trees via holonomic equations », Theor. Comput. Sci., vol. 695,‎ , p. 42-53.

Bibliographie

  • Jean-Luc Remy, « Un procĂ©dĂ© itĂ©ratif de dĂ©nombrement d'arbres binaires et son application Ă  leur gĂ©nĂ©ration alĂ©atoire », ITA, vol. 19(2),‎ , p. 179-195 (lire en ligne)
  • Donald E. Knuth, The Art of Computer Programming, vol. 4.4 (Generating all Trees), Addison Wesley, p. 18

Voir aussi

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