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

Dimension: px
Commencer à balayer dès la page:

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

Transcription

1 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 mars 2011 Olivier Roussel (LIP6) Génération de structures ordonnées ALÉA / 12

2 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 / 12

3 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 / 12

4 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 / 12

5 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 / 12

6 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 / 12

7 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 / 12

8 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 / 12

9 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 / 12

10 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 / 12

11 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 / 12

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 / 12

13 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 / 12

14 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 / 12

15 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 / 12

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

17 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 / 12

18 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 / 12

19 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 / 12

20 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 / 12

21 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 / 12

22 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 / 12

23 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 / 12

24 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 / 12

25 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 / 12

26 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 / 12

27 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 / 12

28 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 / 12

29 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 / 12

30 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 / 12

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

32 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 : 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 / 12

33 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 / 12