Pour compter de nombreux types d'objets combinatoires, comme les arbres dans ce cas, il existe de puissants outils mathématiques (la méthode symbolique) qui vous permettent de dériver mécaniquement de tels nombres à partir d'une description de la façon dont les objets combinatoires sont construits. Cela implique de générer des fonctions.
Une excellente référence est la combinatoire analytique de feu Philipe Flajolet et Robert Sedgewick. Il est disponible à partir du lien ci-dessus.
Le livre de feu Herbert Wilf générant une fonctionnalité est une autre source gratuite.
Et bien sûr, Concrete Mathematics by GKP est un trésor.
Pour les arbres binaires, cela se passe comme suit: vous devez d'abord avoir une définition claire de l'arbre.
Un arbre binaire est un arbre enraciné dans lequel chaque nœud non-feuille a exactement le degré 2.
Ensuite, nous devons convenir de ce que nous voulons appeler la taille d'un arbre.
À gauche, tous les nœuds sont égaux. Au milieu, nous distinguons les feuilles et les non-feuilles. Sur la droite, nous avons un arbre binaire taillé où les feuilles ont été enlevées. Notez qu'il a des branches unaires de deux types (gauche et droite)!
Maintenant, nous devons dériver une description de la façon dont ces objets combinatoires sont construits. Dans le cas des arbres binaires, une décomposition récursive est possible.
Soit l'ensemble de tous les arbres binaires du premier type alors symboliquement nous avons:
A
Il se lit comme suit: "Un objet de la classe des arbres binaires est soit un nœud soit un nœud suivi de deux arbres binaires." Cela peut être écrit comme une équation d'ensembles:
A={∙}∪({∙}×A×A)
En introduisant la fonction de génération qui énumère cette classe d'objets combinatoires, nous pouvons traduire l'équation d'ensemble en une équation impliquant la fonction de génération.A(z)
A(z)=z+zA2(z)
Notre choix de traiter tous les nœuds de manière égale et de prendre le nombre de nœuds dans l'arbre comme notion de sa taille s'exprime en «marquant» les nœuds avec la variable .z
Nous pouvons maintenant résoudre l'équation quadratique pour et obtenir, comme d'habitude, deux solutions, la forme fermée explicite de la fonction génératrice:A ( z )zA2(z)−A(z)+z=0A(z)
A(z)=1±1−4z2−−−−−−√2z
Maintenant, nous avons simplement besoin du théorème binomial de Newton (généralisé):
(1+x)a=∑k=0∞(ak)xk
avec et pour étendre la forme fermée de la fonction de génération en une série de puissance. Nous faisons cela parce que le coefficient à est juste le nombre d'objets combinatoires de taille , typiquement écrits comme . Mais ici, notre notion de «taille» de l'arbre nous oblige à chercher le coefficient à . Après avoir jonglé avec les binômes et les factoriels, nous obtenons:x = - 4 z 2 z n n [ z n ] A ( z ) z 2 n + 1a=1/2x=−4z2znn[zn]A(z)z2n+1
[ z2 n + 1] A ( z) = 1n + 1( 2nn) .
Si nous commençons par la deuxième notion de la taille, la décomposition récursive est:
Nous obtenons une classe différente d'objets combinatoires . Il se lit comme suit: "Un objet de la classe des arbres binaires est soit une feuille soit un nœud interne suivi de deux arbres binaires."B
Nous pouvons utiliser la même approche et transformer en . Seulement cette fois, la variable ne marque que les nœuds internes, pas les feuilles, car la définition «la taille» est ici différente. Nous obtenons également une fonction de génération différente: B = 1 + z B 2 ( z ) zB={□}∪({∙}×B×B)B=1+zB2(z)z
B(z)=1−1−4z−−−−−√2z
Extraire les rendements des coefficients
[zn]B(z)=1n+1(2nn).
Les classes et sont d'accord sur les nombres, car un arbre binaire avec nœuds internes a feuilles, donc nœuds au total.B n n + 1 2 n + 1ABnn+12n+1
Dans le dernier cas, nous devons travailler un peu plus dur:
qui est une description des tentatives binaires d'élagage non vides. Nous étendons ceci à
CD={∙}∪({∙}×C)∪({∙}×C)∪({∙}×C×C)={ϵ}∪({∙}×C×C)
et le réécrire avec des fonctions de génération
C(z)D(z)=z+2zC(z)+zC2(z)=1+zC2(z)
résoudre les équations quadratiques
C(z)D(z)=1−2z−1−4z−−−−−√2z=1−1−4z−−−−−√2z
et encore une fois
[zn]C(z)=1n+1(2nn)n≥1[zn]D(z)=1n+1(2nn)n≥0
Notez que la fonction de génération catalane est
E(z)=1−1−4z−−−−−√2
il énumère la classe des arbres généraux . Ce sont les arbres sans restriction sur le degré du nœud.
E={∙}×SEQ(E)
Il se lit comme suit: "Un objet de la classe des arbres généraux est un nœud suivi d'une éventuelle séquence vide d'arbres généraux."
E(z)=z1−E(z)
Avec la formule d'inversion Lagrange-Bürmann, nous obtenons
[zn]E(z)=1n+1(2nn)
Nous avons donc prouvé qu'il y a autant d'arbres généraux qu'il y a d'arbres binaires. Pas étonnant qu'il y ait une bijection entre les arbres général et binaire. La bijection est connue sous le nom de correspondance de rotation (expliquée à la fin de l'article lié), qui nous permet de stocker deux arbres généraux comme un arbre binaire.
Notez que si nous ne distinguons pas le frère gauche et le frère droit dans la classe nous obtenons encore une autre classe d'arbres :CT
les arbres binaires unaires.
Ils ont aussi une fonction génératrice
mais leur coefficient est différent. Vous obtenez les nombres Motzkin
T={∙}×SEQ≤2(T)
T(z)=1−z−1−2z−3z2−−−−−−−−−−√2z
[zn]T(z)=1n∑k(nk)(n−kk−1).
Oh et si vous n'aimez pas générer des fonctions, il y a aussi beaucoup d'autres preuves. Voir ici , il y en a un où vous pouvez utiliser le codage des arbres binaires comme mots Dyck et dériver une récurrence de leur définition récursive. La résolution de cette récurrence donne également la réponse. Cependant, la méthode symbolique vous évite de trouver la récurrence en premier lieu, car elle fonctionne directement avec les plans des objets combinatoires.