Comment utiliser l`ordinateur pour faire de la combinatoire?
Transcription
Comment utiliser l`ordinateur pour faire de la combinatoire?
Comment utiliser l’ordinateur pour faire de la combinatoire? Cyril Banderier LIPN – UMR CNRS 7030, Institut Galilée, Université de Paris 13. {Cyril.Banderier}@lipn.univ-paris13.fr Journées tunisiennes de combinatoire et probabilités, Monastir. Cyril Banderier (Univ. Paris 13) Comment utiliser l’ordinateur pour faire de la combinatoire 1 / 18 Algorithmes d’antan et d’aujourd’hui calculs: divisions chez Sumériens, équation du second degré chez les Babyloniens Euclide (≈ -300) : PGCD (simplification de fractions) Archimède (-287 -212) : décimales de π Al Khwarizmi ( ≈ 780-850) : Hisab al jabr w’al muqabala On pourrait vouloir comparer l’efficacité de deux méthodes pour un problème donné... Complexité en pire (avion, voiture), en moyenne (vie au quotidien), en espace, en temps... (et ce, pour un algo donné ou pour une classe d’algo). Indécidable dans l’absolu : Program Diablotin(n)= Si Arrêt(n) then boucle else exit. Diablotin(nDiablotin )=????. (définitions rigoureuses : machine de Turing, codage de Gödel). La conjecture de Syracuse : while n 6= 1 do if n pair then n := n/2 else n := 3n + 1 Heureusement, pour de nombreux algorithmes, on peut borner leur complexité (grand O, Θ, etc.). En particulier, pour des algorithmes ”combinatoires”, on peut décrire précisément leur complexité (notamment via la combinatoire analytique !). Cyril Banderier (Univ. Paris 13) Comment utiliser l’ordinateur pour faire de la combinatoire 2 / 18 Du discret au continu... et réciproquement ! −→ Euler Cauchy Knuth (1707-1783) (1789-1857) (1938–) 1753 1825 1963 • Combinatoire analytique [...,Pólya, Flajolet–Odlyzko 80’s, ...] Dénombrement de structures finies/récursives, établissement des comportements statistiques. Outils : série génératrice & analyse complexe. objet discret (structure combinatoire) −→ objet continu (série de variable complexe) ⇒ analyse (“Majorer, minorer, approcher”, éq. fonctionnelle, forme close) asymptotique (singularités, cols, Mellin...) ⇒ lois du domaine discret (énumératives, lois limites,...) 1. étude de structures récursives −→ combinatoire 2. étude de l’aléa, dégager des lois universelles −→ analyse 3. automatisation de ces études −→ calcul formel ∼ algèbre Cyril Banderier (Univ. Paris 13) Comment utiliser l’ordinateur pour faire de la combinatoire 3 / 18 1963 : et Knuth créa l’analyse d’algorithmes... hachage avec essais linéaires : fonction Q de Ramanujan ! (puis lien avec Airy : Flajolet & al.) ⇒ jolies applications de jolies mathématiques! ⇒ programme: analyse d’algorithmes en moyenne! Philosophie Art of Computer Programming : inutile de hacker mais rentable de prendre du recul ! La complexité d’un algorithme repose sur la compréhension des structures combinatoires en jeu : • arbres (binaires, k-aires, BST, tries, formules logiques, ...) [B. Chauvin] • graphes (connexes, réguliers, dirigés, étiquetés, planaires, couplages, coloriages...) [P. Chassaing] • fonctions contraintes de [1..n] dans [1..m] (permutations, surjections, ...) [P. Flajolet] • mots d’un langage régulier (automate), langage algébrique (grammaire) [F. Bassino, H. Tafat] • pavages, polyominos, empilements, fragmentations [R. Aguech] • partitions d’ensembles (Bell), d’entiers (Ramanujan) [C. Mauduit] • marche aléatoires, files d’attentes [G. Louchard] Questions clefs : probabilité d’un motif, nb de composantes, taille/hauteur typique ? Diablotin : Oui mais on s’en fout d’être subtils, la brute-force suffit de nos jours ! (Kasparov) Loi de Moore : puissance des ordis double en 18 mois Corollaire de Sedgewick : mais la taille des inputs double ! ⇒ on a besoin d’algo rapides ! Cyril Banderier (Univ. Paris 13) Comment utiliser l’ordinateur pour faire de la combinatoire 4 / 18 La suite . . . ,103049,. . . Le plus ancien problème de combinatoire ! Un problème de logique en 150 BC ! Plutarque (50-120) Moralia: Propos de Table cite l’astronome Hipparque de Nicée (-190,-127) : “Il y a 103049 façons de faire des propositions composées à partir de 10 affirmations de base.” Phrase restée mystérieuse jusqu’en 1992... Cyril Banderier (Univ. Paris 13) Comment utiliser l’ordinateur pour faire de la combinatoire 5 / 18 La suite . . . ,103049,. . . Le plus ancien problème de combinatoire ! Un problème de logique en 150 BC ! Plutarque (50-120) Moralia: Propos de Table cite l’astronome Hipparque de Nicée (-190,-127) : “Il y a 103049 façons de faire des propositions composées à partir de 10 affirmations de base.” Phrase restée mystérieuse jusqu’en 1992... or il y a 103049 arbres (arité ≥ 2) avec 10 feuilles. = nb de parenthésages d’un mot. E.g., 11 arbres avec 4 feuilles: xxxx, (xx)xx, x(xx)x, xx(xx), (xxx)x, (xxx)x,((xx)x)x, (x(xx))x,(xx)(xx),x((xx)x),x(x(xx)) Schröder, Vier combinatorische Probleme, 1870: calcul de sn : nb d’arbres avec n feuilles. Comment Hipparque a-t-il pu trouver les nombres de Schröder ? Dessiner les 103049 arbres ??? Cyril Banderier (Univ. Paris 13) Comment utiliser l’ordinateur pour faire de la combinatoire 5 / 18 La suite . . . ,103049,. . . Le plus ancien problème de combinatoire ! Un problème de logique en 150 BC ! Plutarque (50-120) Moralia: Propos de Table cite l’astronome Hipparque de Nicée (-190,-127) : “Il y a 103049 façons de faire des propositions composées à partir de 10 affirmations de base.” Phrase restée mystérieuse jusqu’en 1992... or il y a 103049 arbres (arité ≥ 2) avec 10 feuilles. = nb de parenthésages d’un mot. E.g., 11 arbres avec 4 feuilles: xxxx, (xx)xx, x(xx)x, xx(xx), (xxx)x, (xxx)x,((xx)x)x, (x(xx))x,(xx)(xx),x((xx)x),x(x(xx)) Schröder, Vier combinatorische Probleme, 1870: calcul de sn : nb d’arbres avec n feuilles. Comment Hipparque a-t-il pu trouver les nombres de Schröder ? Dessiner les 103049 arbres ??? X n∈N sn z n = p 1 (1 + z − 1 − 6z + z 2 ) 4 (z − 6z + 1)y 0 (z) − (z − 3)y (z) + z − 1 = 0 2 (n + 2)sn+2 − 3(2n + 1)sn+1 + (n − 1)sn = 0 Cyril Banderier (Univ. Paris 13) Comment utiliser l’ordinateur pour faire de la combinatoire [Maple] 5 / 18 Devinette (le problème de la valise de Flajolet) Peut-on coder les arbres binaires à n feuilles sur 1, 5n bits ? Oui/non ? Comment ? Cyril Banderier (Univ. Paris 13) Comment utiliser l’ordinateur pour faire de la combinatoire 6 / 18 Hauteur des arbres binaires triangulations d’un polygone (Euler) = mots bien parenthésés = (marche sur N à pas ±1) bn := nombre d’arbres binaires avec n feuilles, on leur associe la série génératrice X B(z) = bn z n n≥0 La définition récursive donne directement la série génératrice : B = F + B × N × B ⇒ B(z) = z + B 2 (z) √ 1 − 1 − 4z = z + z 2 + 2z 3 + 5z 4 + 14z 5 + . . . B(z) = 2 On obtient les nb de Catalan : 2n n n+1 ≈ 4n (codage MacroHard sur 1, 5n bits?) Hauteur des arbres binaires (hauteur maximale de la pile pour un parcours d’arbre) itération de Mandelbrot : b[h+1] (z) = z + b[h] (z)2 Flajolet & Odlyzko (1982) arbres √ binaires, t-aires... : hauteur moyenne = n universalité ! Hn := hauteur cumulée des arbres binaires de taille n P P H(z) = n≥0 Hn z n = h≥0 B(z) − b[h] (z) H(z) = −2 ln(1 − 4z) + K + O(|1 − 4z|v ) √ n théorème de transfert Hn ∼ 2 4n ⇒ Hn /Bn = 2 n Cyril Banderier (Univ. Paris 13) Comment utiliser l’ordinateur pour faire de la combinatoire 7 / 18 Combinatoire analytique et théorie des langages Puzzle. (quantitatif) Tirons à pile ou face jusqu’à obtention du motif PFP. Combien de temps cela prend-il ? Plus rapide avec le motif PPP, PFF, FFP ? Indice exposés de Frédérique Bassino, Hanane Tafat Indice (Kleene-Rabin-Scott, 1956) : automate ⇒ série génératrice rationnelle. Cyril Banderier (Univ. Paris 13) Comment utiliser l’ordinateur pour faire de la combinatoire 8 / 18 Combinatoire analytique et théorie des langages Puzzle. (quantitatif) Tirons à pile ou face jusqu’à obtention du motif PFP. Combien de temps cela prend-il ? Plus rapide avec le motif PPP, PFF, FFP ? Indice exposés de Frédérique Bassino, Hanane Tafat le Indice (Kleene-Rabin-Scott, 1956) : automate ⇒ série génératrice rationnelle. En résolvant P système d’équations linéaires, on obtient la série génératrice de probabilité F (z) = pn z n et P donc la longueur moyenne est F 0 (1) = npn PPP: 14, PFP: 10, PFF & FFP : 8 tirages. Puzzle. (qualitatif) Les mots de Lyndon forment-ils une langage context-free ? Indice (Chomsky-Schützenberger, 1963) : context-free ⇒ série génératrice algébrique. Cyril Banderier (Univ. Paris 13) Comment utiliser l’ordinateur pour faire de la combinatoire 8 / 18 Combinatoire analytique et théorie des langages Puzzle. (quantitatif) Tirons à pile ou face jusqu’à obtention du motif PFP. Combien de temps cela prend-il ? Plus rapide avec le motif PPP, PFF, FFP ? Indice exposés de Frédérique Bassino, Hanane Tafat le Indice (Kleene-Rabin-Scott, 1956) : automate ⇒ série génératrice rationnelle. En résolvant P système d’équations linéaires, on obtient la série génératrice de probabilité F (z) = pn z n et P donc la longueur moyenne est F 0 (1) = npn PPP: 14, PFP: 10, PFF & FFP : 8 tirages. Puzzle. (qualitatif) Les mots de Lyndon forment-ils une langage context-free ? Indice (Chomsky-Schützenberger, 1963) P : context-free ⇒ série génératrice algébrique. Preuve: Lyndon 6∈ Alg car L(z) = ln(1 − qz) + ... n’est pas algébrique. En effet, la formule d’inversion de Moebius donne L(z) et ensuite l’analyse de singularité donne une asymptotique en q n /n alors que les coefficients de fonctions algébriques ne peuvent être que du type q n nα (avec −α ∈ Q − N). Cyril Banderier (Univ. Paris 13) Comment utiliser l’ordinateur pour faire de la combinatoire 8 / 18 Propriétés structurelles des permutations nb de permutations de {1, . . . , n} avec k cycles P = Ens(Cyc) X F (z, u) = fn (u) n≥0 P k ≥0 µn = 1 zn = exp u ln n! 1−z kfn,k fn n = [ zn! ]∂u F (z, u)|u=1 n [ zn! ]F (z, 1) n = 1 1 [ zn! ] 1−z ln( 1−z ) n! = ln n + γ + 1 1 + O( 2 ) 2n n “Une permutation a ∼ ln n cycles en moyenne” √ σn = ln n + o(1) √ 1 lim Pr{Xn ≤ ln n + γ + x ln n} = √ n→∞ 2π Cyril Banderier (Univ. Paris 13) Z x exp−t 2 /2 dt −∞ Comment utiliser l’ordinateur pour faire de la combinatoire 9 / 18 Facteurs irréductibles d’un polynôme sur Fq Pn = q n polynômes de degré ≤ n d’où P(z) = factorisation unique =⇒ P = Ens(MultiEns) P(z) = exp 1 1−qz I(z) I(z 2 ) I(z 3 ) + + + ... 1 2 3 ! Inversion de Moebius : I(z) = X k ≥1 P k ≥2 µ(k ) X 1 ln P(z k ) = ln + ... k 1 − qz k ≥2 analytique pour |z| < q −1/2 ⇒ z = 1/q singularité isolée de I(z) µn , σn2 = ln n + O(1) Extension d’Erdős-Kac aux semigroupes arithmétiques (Knopfmacher “Abstract number theory”) cq n + O(q αn ) éléments irréductibles de taille n (axiom A: idéaux, modules finis) =⇒ loi limite gaussienne avec µn = ln n et σn2 = ln n Cyril Banderier (Univ. Paris 13) Comment utiliser l’ordinateur pour faire de la combinatoire 10 / 18 Loi gaussienne des motifs, (tac)(c + g)∗ (cat) Chomsky & Schützenberger (1963) : expression régulière ↔ automate ↔ série gén. rationnelle Xn = nb d’occurrences de R dans un texte de longueur n Guibas & Odlyzko (1981) : loi gaussienne pour R un mot (e.g. R = ababb) Nicodème & Salvy & Flajolet (2000) : loi gaussienne pour R expression rationnelle Preuve : X P(z, u) = Pr(Xn = k ) u k z n n,k ≥0 ~L = zT (u)~L + ~1 =⇒ P(z, u) = B(z, u) det(I − zT (u)) Perron–Frobenius : ∃0 λ(u) de module maximal P(z, u) ∼u→1 c(u) =⇒ Pr(Xn = k ) ∼ c(u)λ(u)n 1 − zλ(u) Hwang : quasi-powers theorem =⇒ loi gaussienne E[Xn ] = µn + c1 + O(An ) Var[Xn ] = σ 2 n + c2 + O(An ) Z x 2 1 Xn − µn √ Pr ≤x → √ exp−t /2 dt σ n 2π −∞ Cyril Banderier (Univ. Paris 13) Comment utiliser l’ordinateur pour faire de la combinatoire 11 / 18 Graphes aléatoires Paul Erdős (1913-1996) & Alfréd Rényi (1921-1970) : les fondateurs de la théorie des graphes aléatoires (1959). • modèle probabiliste : binomial random graph G(n, p) • modèle combinatoire : uniform random graph Γ(n, m) Phénomène de seuil : apparition de la composante géante Évolutions récentes : réseaux sociaux (Erdős number!), graphe du web, téléphonie mobile... Cyril Banderier (Univ. Paris 13) Comment utiliser l’ordinateur pour faire de la combinatoire 12 / 18 Cartes aléatoires carte = graphe planaire dessiné sur la sphère. Tutte voulait infirmer théorème des 4 couleurs, pas réussi mais a pu compter les cartes (années 1960). Notre problème : générer aléatoirement (uniformément) une carte 2-connexe (difficile!). Solution : faire du rejet ! Probabilistic algorithm to reach size n 1. generates a map of size f (n) ; 2. extracts largest component C 3. if its size 6= n, then goto 1 ; 4. output C. Théorème. [C. Banderier/Ph. Flajolet/G. Schaeffer/M. Soria, 2002] L’algorithme le plus rapide est alors donné par f (n) = 3n − x0 × (3n)2/3 . (x0 pic de la distribution d’Airy) Cyril Banderier (Univ. Paris 13) Comment utiliser l’ordinateur pour faire de la combinatoire 13 / 18 La loi d’Airy des cartes George Biddell Airy (1801-1892) (diffraction en optique) Fonction d’Airy y 00 − zy = 0 Ai(z) = 1 2π Z +∞ ei(zt+t 3 /3) dt = −∞ ∞ n+1 2(n + 1)π 1/3 n 1 X Γ( 3 ) sin 3 x 3 π32/3 n=0 n! La distribution d’Airy pour les cartes A(x) = 2 exp − 23 x 3 xAi(x2 ) − Ai0 (x2 ) R +∞ −∞ A(x)dx = 1 Cyril Banderier (Univ. Paris 13) Comment utiliser l’ordinateur pour faire de la combinatoire 14 / 18 Preuve pour l’algo à rejet plus grande composante 2-connexe équation fonctionnelle (Tutte) via la “décomposition par face” carte planaire + racine (arête orientée) : Mn, k := # cartes avec n arêtes et face de degré k . M(z, u) = X Mn,k z n u k = 1 + u 2 zM(z, u)2 + uz M(z, 1) − uM(z, u) 1−u proba qu’une carte de taille n ait un noyau de taille k Pr (Xn = k ) = Z Mn,k 1 = Ck Mn 2iπ Z F (z)G(z)k H(z)n dz γ exp(n(a0 + a1 (z − τ ) + a2 (z − τ )2 + a3 (z − τ )3 + . . . ))dz Γ col double ⇔ a1 = 0 et a2 = 0, et on tombe alors sur Airy. En cadeau bonus : loi stable universelle (seuil pour 2-SAT?), lien avec aire sous Brownien (Louchard, Chassaing... ) Cyril Banderier (Univ. Paris 13) Comment utiliser l’ordinateur pour faire de la combinatoire 15 / 18 méthode de Laplace, méthode du col 1 0.8 0.6 0.4 0.2 –1 –0.8 –0.6 –0.4 –0.2 0 0.2 0.4 x 0.6 0.8 1 (cf exposés de Kamel Mazhouda, Guy Louchard) Cyril Banderier (Univ. Paris 13) Comment utiliser l’ordinateur pour faire de la combinatoire 16 / 18 Holonomie, Bases de Gröbner Manipulation d’une expression : par une “forme close” (mauvais !), par son “polynôme annulateur” (bien !). → calcul formel D-finie (Stanley–Lipshitz) = F (z) vérifie une équa diff à coeff. polynomiaux ⇐⇒ fn vérifie récurrence linéaire à coeff polynomiaux ⇐⇒ dérivées forment C(z)-EV de dim finie Holonomie multivariée (Bernstein 1971): croissance des coefficients de la série de Hilbert : dimC {x α f (β) où α + β ≤ N} = O(N d ) D-finie ↔ holonome (shift, dérivée, q-analogue, Mahler,...) agréable : propriétés de clôture & utile : noethérianité (les algo finissent!) Automatisation : Zeilberger “preuve automatique”, Maple Gfun (Salvy-Zimmerman, 1992) et MGfun (Chyzak, 1998) 2 2 Pn Pk P k 3 ζ(3) 6∈ Q : nk =0 kn n+k = k =0 kn n+k j=0 j k k kif-kif : manipulation de fonctions hypergéométriques, de fonctions spéciales... guess, encyclopédie des suites entières... Cyril Banderier (Univ. Paris 13) Comment utiliser l’ordinateur pour faire de la combinatoire 17 / 18 Conclusion L’analyse d’algorithmes repose souvent sur les structures combinatoires sous-jacentes. L’analyse complexe est un outil puissant. La combinatoire analytique permet d’exhiber des comportements ”universaux”. L’informatique a de nombreux liens avec combinatoire/analyse/proba/algèbre. Bibliographie : Selected Papers on Analysis of Algorithms [Knuth] Selected Papers on Computer Science [Knuth] Analytic Combinatorics. [Flajolet & Sedgewick] (livre disponible on-line !) http://algo.inria.fr/flajolet/Publications/book.pdf https://gforge.inria.fr/frs/download.php/19600/cfmd-20090318.pdf http://sagebook.gforge.inria.fr/ http://www.sagemath.org/ http://www.research.att.com/∼njas/sequences/ Cyril Banderier (Univ. Paris 13) Comment utiliser l’ordinateur pour faire de la combinatoire 18 / 18