Génération aléatoire de structures ordonnées



Documents pareils
Transcription:

Génération aléatoire de structures ordonnées Olivier Roussel Équipe APR Laboratoire d Informatique de Paris 6 Université Pierre et Marie Curie ALÉA 2011 7 mars 2011 Olivier Roussel (LIP6) Génération de structures ordonnées ALÉA 2011 1 / 12

Classes combinatoires spécifiables Classes spécifiables Classe définie par une grammaire formelle Langage de spécification : Des briques de bases : les atomes Plusieurs constructeurs : l union : + le produit cartésien : la séquence : Seq... Fonction de taille sur les objets, définie récursivement Olivier Roussel (LIP6) Génération de structures ordonnées ALÉA 2011 2 / 12

Séries génératrices exponentielles Méthode Symbolique On associe une série à toute classe combinatoire C étiquetée Série formelle Série analytique en 0 sur C Si c n est le nombre d objets de C de taille n, alors C(z) = γ C 1 γ! z γ = Compte le nombre d objets de chaque taille n=0 On obtient des équations simples entre les séries c n z n n! Pour plus d informations sur les méthodes symboliques et l analyse d algorithmes, se référer au Livre [Flajolet et Sedgewick 09]. Olivier Roussel (LIP6) Génération de structures ordonnées ALÉA 2011 3 / 12

Générateur de Boltzmann Définition Un générateur de Boltzmann pour une classe combinatoire C noté ΓC est un algorithme qui dépend d un paramètre réel x, et qui produit un objet γ donné de la classe avec probabilité où C est la série génératrice de C. x γ P x (γ) = 1 C(x) γ! Olivier Roussel (LIP6) Génération de structures ordonnées ALÉA 2011 4 / 12

Propriétés des générateurs de Boltzmann Propriétés La taille des objets générés est une variable aléatoire Sur C n, tous les objets ont une probabilité uniforme En ajustant le paramètre x, on peut viser la taille espérée Théorème Le générateur libre de Boltzmann ΓC(x) a une complexité arithmétique linéaire en la taille de l objet de sortie. Pour le générateur approché, et pour une grande catégorie de classes combinatoires, la complexité arithmétique reste linéaire. Voir par exemple [Duchon, Flajolet, Louchard et Schaeffer 04]. Olivier Roussel (LIP6) Génération de structures ordonnées ALÉA 2011 5 / 12

Exemples de générateurs de Boltzmann Générateurs de Boltzmann ΓA(x) Si A = B + C 1: Tirer U uniforme dans [0, 1] 2: si U B(x) A(x) alors 3: retourner ΓB(x) 4: sinon 5: retourner ΓC(x) 6: fin si Si A = B C 1: retourner (ΓB(x), ΓC(x)) Olivier Roussel (LIP6) Génération de structures ordonnées ALÉA 2011 2 / 12

Exemples de générateurs de Boltzmann Générateurs de Boltzmann ΓA(x) Si A = B + C 1: Tirer U uniforme dans [0, 1] 2: si U B(x) A(x) alors 3: retourner ΓB(x) 4: sinon 5: retourner ΓC(x) 6: fin si Si A = B C 1: retourner (ΓB(x), ΓC(x)) Olivier Roussel (LIP6) Génération de structures ordonnées ALÉA 2011 2 / 12

Structures ordonnées Apparition de contrainte d ordre entre les atomes Exemple : pour un arbre, le père est plus grand que ses fils Variétés d arbres croissants Permutations alternantes (arbres croissants binaires complets)... Permet de tenir compte de relation d ordres internes aux objets Fait apparaître des équations différentielles T = F(Z, T ) Olivier Roussel (LIP6) Génération de structures ordonnées ALÉA 2011 3 / 12

Structures ordonnées Apparition de contrainte d ordre entre les atomes Exemple : pour un arbre, le père est plus grand que ses fils Variétés d arbres croissants Permutations alternantes (arbres croissants binaires complets)... Permet de tenir compte de relation d ordres internes aux objets Fait apparaître des équations différentielles T = F(Z, T ) Olivier Roussel (LIP6) Génération de structures ordonnées ALÉA 2011 3 / 12

Structures ordonnées Apparition de contrainte d ordre entre les atomes Exemple : pour un arbre, le père est plus grand que ses fils Variétés d arbres croissants Permutations alternantes (arbres croissants binaires complets)... Permet de tenir compte de relation d ordres internes aux objets Fait apparaître des équations différentielles T = F(Z, T ) Olivier Roussel (LIP6) Génération de structures ordonnées ALÉA 2011 3 / 12

Les résultats obtenus Idée du principe Faire varier stochastiquement le paramètre de Boltzmann au cours de l exécution de l algorithme Propriétés 1 Les propriétés des générateurs de Boltzmann restent valables 2 Le théorème suivant est encore valable Théorème Le générateur libre de Boltzmann ΓC(x) a une complexité arithmétique linéaire en la taille de l objet de sortie. Pour le générateur approché, et pour une grande catégorie de classes combinatoires, la complexité arithmétique reste linéaire. Voir par exemple [Duchon, Flajolet, Louchard et Schaeffer 04]. Olivier Roussel (LIP6) Génération de structures ordonnées ALÉA 2011 4 / 12

Les résultats obtenus Idée du principe Faire varier stochastiquement le paramètre de Boltzmann au cours de l exécution de l algorithme Propriétés 1 Les propriétés des générateurs de Boltzmann restent valables 2 Le théorème suivant est encore valable Théorème Le générateur libre de Boltzmann ΓC(x) a une complexité arithmétique linéaire en la taille de l objet de sortie. Pour le générateur approché, et pour une grande catégorie de classes combinatoires, la complexité arithmétique reste linéaire. Voir par exemple [Duchon, Flajolet, Louchard et Schaeffer 04]. Olivier Roussel (LIP6) Génération de structures ordonnées ALÉA 2011 4 / 12

Forme des algorithmes Boltzmann usuel : Si C i dépend de C 1,..., C N ΓC i (x) : 1: Faire des calculs, des tests et autres comparaisons... 2: Appeler récursivement ΓC 1 (x),, ΓC N (x) Boltzmann différentiel : Si C i dépend de C 1,..., C N ΓC i (x) : 1: Faire des calculs, des tests et autres comparaisons... 2: Tirer aléatoirement u selon une distribution δ x C i 3: Appeler récursivement ΓC 1 (ux),, ΓC N (ux) On a toujours u 1 Olivier Roussel (LIP6) Génération de structures ordonnées ALÉA 2011 5 / 12

Forme des algorithmes Boltzmann usuel : Si C i dépend de C 1,..., C N ΓC i (x) : 1: Faire des calculs, des tests et autres comparaisons... 2: Appeler récursivement ΓC 1 (x),, ΓC N (x) Boltzmann différentiel : Si C i dépend de C 1,..., C N ΓC i (x) : 1: Faire des calculs, des tests et autres comparaisons... 2: Tirer aléatoirement u selon une distribution δ x C i 3: Appeler récursivement ΓC 1 (ux),, ΓC N (ux) On a toujours u 1 Olivier Roussel (LIP6) Génération de structures ordonnées ALÉA 2011 5 / 12

Conséquences La valeur successive du paramètre tend toujours vers 0 À une vitesse au moins géométrique : E(x n appels récursifs) µ n avec µ < 1 dépend de x initial (et de la spécification) UPeu d appels récursifs! DBesoin d évaluer les séries génératrices en des points quelconques DTirage aléatoire selon une densité (à peu près) quelconque Pour beaucoup de classes combinatoires : génération approchée en temps encore linéaire Olivier Roussel (LIP6) Génération de structures ordonnées ALÉA 2011 6 / 12

Conséquences 1,0 0,9 0,8 0,7 0,6 0,5 0,4 0,3 0,2 0,1 0,0 10 20 30 40 50 Olivier Roussel (LIP6) Génération de structures ordonnées ALÉA 2011 6 / 12

Problèmes techniques DBesoin d évaluer les séries génératrices en des points quelconques Évaluation approchée via un oracle Résolution par itération simple ou itération de Newton Quid des imprécisions? DTirage aléatoire selon une densité (à peu près) quelconque En fait, la densité a une forme spéciale Méthode adaptée de rejet Méthode ziggurat Mieux : si T ne dépend pas de Z = un seul tirage selon la loi uniforme suffit! Cas des variétés d arbres croissants Olivier Roussel (LIP6) Génération de structures ordonnées ALÉA 2011 7 / 12

Problèmes techniques DBesoin d évaluer les séries génératrices en des points quelconques Évaluation approchée via un oracle Résolution par itération simple ou itération de Newton Quid des imprécisions? DTirage aléatoire selon une densité (à peu près) quelconque En fait, la densité a une forme spéciale Méthode adaptée de rejet Méthode ziggurat Mieux : si T ne dépend pas de Z = un seul tirage selon la loi uniforme suffit! Cas des variétés d arbres croissants Olivier Roussel (LIP6) Génération de structures ordonnées ALÉA 2011 7 / 12

Exemple : arbres binaires T = Z + Z T 2 T (z) = 1 1 4z 2 2z ρ = 1 2 Olivier Roussel (LIP6) Génération de structures ordonnées ALÉA 2011 8 / 12

Exemple : arbres binaires T = Z + Z T 2 T (z) = 1 1 4z 2 2z ρ = 1 2 Olivier Roussel (LIP6) Génération de structures ordonnées ALÉA 2011 8 / 12

Exemple : arbres binaires T = Z + Z T 2 T (z) = 1 1 4z 2 2z ρ = 1 2 T = ε + T 2 T (z) = tan z ρ = π 2 Olivier Roussel (LIP6) Génération de structures ordonnées ALÉA 2011 8 / 12

Exemple : arbres binaires T = Z + Z T 2 T (z) = 1 1 4z 2 2z ρ = 1 2 T = ε + T 2 T (z) = tan z ρ = π 2 Olivier Roussel (LIP6) Génération de structures ordonnées ALÉA 2011 8 / 12

Exemple : arbres ternaires avec deux types de noeuds T = Z + 2Z T 3 T (z) = formule close compliquée 3 3 ρ = 0, 42 2 Olivier Roussel (LIP6) Génération de structures ordonnées ALÉA 2011 9 / 12

Exemple : arbres ternaires avec deux types de noeuds T = Z + 2Z T 3 T (z) = formule close compliquée 3 3 ρ = 0, 42 2 Olivier Roussel (LIP6) Génération de structures ordonnées ALÉA 2011 9 / 12

Exemple : arbres ternaires avec deux types de noeuds T = Z + 2Z T 3 T (z) = formule close compliquée 3 3 ρ = 0, 42 2 T = ε + 2T 3 T (z) = pas de formule close 3 4π ρ = 3 0, 96 3 Olivier Roussel (LIP6) Génération de structures ordonnées ALÉA 2011 9 / 12

Exemple : arbres ternaires avec deux types de noeuds T = Z + 2Z T 3 T (z) = formule close compliquée 3 3 ρ = 0, 42 2 T = ε + 2T 3 T (z) = pas de formule close 3 4π ρ = 3 0, 96 3 Olivier Roussel (LIP6) Génération de structures ordonnées ALÉA 2011 9 / 12

Exemple : arbres planaires T = Z Seq(T ) T (z) = 1 1 4z 2 ρ = 1 4 Olivier Roussel (LIP6) Génération de structures ordonnées ALÉA 2011 10 / 12

Exemple : arbres planaires T = Z Seq(T ) T (z) = 1 1 4z 2 ρ = 1 4 Olivier Roussel (LIP6) Génération de structures ordonnées ALÉA 2011 10 / 12

Exemple : arbres planaires T = Z Seq(T ) T (z) = 1 1 4z 2 ρ = 1 4 T = Seq(T ) T (z) = 1 1 2z ρ = 1 2 Olivier Roussel (LIP6) Génération de structures ordonnées ALÉA 2011 10 / 12

Exemple : arbres planaires T = Z Seq(T ) T (z) = 1 1 4z 2 ρ = 1 4 T = Seq(T ) T (z) = 1 1 2z ρ = 1 2 Olivier Roussel (LIP6) Génération de structures ordonnées ALÉA 2011 10 / 12

Exemple : arbres planaires Olivier Roussel (LIP6) Génération de structures ordonnées ALÉA 2011 10 / 12

Arbres ternaires : résultats expérimentaux Sur un portable à 1Ghz avec 2Go de mémoire vive, avec une implémentation simple en OCaml Temps, en secondes 10 2 10 1 10 0 10 1 10 2 10 3 10 4 10 2 10 3 10 4 10 5 10 6 + : Génération libre ; : Génération approchée (à 10% près) Taille Olivier Roussel (LIP6) Génération de structures ordonnées ALÉA 2011 11 / 12

Résultats et perspectives Résultats Extension du modèle de Boltzmann pour les structures ordonnées On conserve les bonnes propriétés de ce modèle : Uniformité des algorithmes Complexité Perspectives Calculs et complexité binaire Problème de l oracle : infinité de valeurs à connaître et série génératrice non explicite Quantifier l erreur lors des calculs flottants Étendre la classe des objets admissibles pour Boltzmann Systèmes différentiels Olivier Roussel (LIP6) Génération de structures ordonnées ALÉA 2011 12 / 12