(Je suis un étudiant avec une formation mathématique et j'aimerais savoir comment compter le nombre d'un type spécifique d'arbres binaires.)
En regardant la page Wikipedia pour les arbres binaires , j'ai remarqué cette affirmation que le nombre d'arbres binaires enracinés de taille serait ce nombre catalan :
Mais je ne comprends pas comment je pourrais arriver à un tel résultat par moi-même? Existe-t-il une méthode pour trouver ce résultat?
Maintenant, que se passe-t-il si l'ordre des sous-arbres (qui est à gauche, qui est à droite) n'est pas considéré? Par exemple, de mon point de vue, je considère que ces deux arbres sont identiques:
/\ /\
/\ /\
Serait-il possible d'appliquer une méthode similaire pour compter combien de ces objets ont exactement nœuds?
la source
Réponses:
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:
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)
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=0 A(z)
Maintenant, nous avons simplement besoin du théorème binomial de Newton (généralisé):
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/2 x=−4z2 zn n [zn]A(z) z2n+1
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
Extraire les rendements des coefficients
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 + 1A B n n+1 2n+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 à
et le réécrire avec des fonctions de génération
résoudre les équations quadratiques
et encore une fois
Notez que la fonction de génération catalane est
il énumère la classe des arbres généraux . Ce sont les arbres sans restriction sur le degré du nœud.
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."
Avec la formule d'inversion Lagrange-Bürmann, nous obtenons
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 :C T
les arbres binaires unaires. Ils ont aussi une fonction génératrice mais leur coefficient est différent. Vous obtenez les nombres Motzkin
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.
la source
Les fonctions de génération sont une baguette magique très puissante et très utile. La solution suivante à la première question (pourquoi existe-t-il des arbres ) est un peu moins magique. Par conséquent, mignon.Cn
Exemple. Pour produire un arbre de nœuds, nous commençons par une séquence dans laquelle se produit fois et se produit fois. Par exemple, . Parmi les préfixes avec la somme la plus petite (et peut-être négative), choisissez la plus longue; dans ce cas, . Prenez ce préfixe depuis le début et mettez-le à la fin; dans ce cas, nous obtenons . Maintenant, changez en et en ; dans ce cas, nous obtenons . Retirez un du début, ajoutez un5 +1 5+1 −1 5 +−++−+−−++− +−++−+−− ++−+−++−+−− + T − E T E à la fin; dans ce cas, nous obtenons (5+65) ±1 5+6
TTETETTETEE
TETETTETEEE
. Ceci est une description de l'arbreT(E,T(E,T(T(E,T(E,E)),E)))
. Vous trouverez ci-dessous une explication de la raison de cette bijection. Une fois que vous en êtes convaincu, le comptage est facile. Il existe des séquences de , puis nous avons divisé par car nous avons choisi l'une des permutations cycliques possibles.Première bijection. Une définition typique des arbres en ML estn n n
type tree = T of tree * tree | E
; c'est-à-dire qu'un arbre a deux sous-arbres (ordonnés) ou qu'il est vide. Voici comment sont construits les arbres:T(T(E,E),T(T(E,E),T(E,E)))
. En laissant tomber les peluches, nous pouvons simplement écrireTTEETTEETEE
. Toutes ces descriptions se terminent par unE
, il est donc inutile:TTEETTEETE
. (Notez que l'arborescence vide correspond maintenant à la chaîne vide.) Ces chaînes ont la propriété que chaque préfixe a au moins autant de Ts que Es, et au total ils ont Ts et Es, où est le nombre de nœuds de l'arbre.Deuxième bijection. Nous remplaçons maintenant T par +1 et E par -1. Donc, nous regardons des séquences avec valeurs +1, avec valeurs -1 et avec les sommes de tous les préfixes .n n ≥0
Troisième bijection. Nous modifions maintenant un peu l'exigence de préfixes: nous demandons que la somme de chaque préfixe non vide soit . Pour que cela soit possible, nous laissons valeurs +1 et valeurs -1. (Sinon, la somme de la chaîne entière serait 0 et ne satisferait pas à la condition des préfixes.) Ces séquences doivent commencer par +1. Donc, ils sont vraiment les mêmes qu'avant, sauf qu'ils ont un +1 bloqué au début.>0 n+1 n
Propriété Raney. Maintenant oublier nos séquences pour un moment et d' envisager une séquence finie d' entiers , , dont la somme est 1. Si tous les préfixes non vides ont des sommes positives, alors permutation pas cyclique de cette séquence a la même propriété. Pourquoi? Eh bien, supposons qu'il existe un tel que ait également tous les préfixes non vides positifs. Puis (propriété de séquence à partir de ) et (propriété de séquence à partir de ); par conséquent,x1 … xm k≠1 xk,…,xm,x1,…,xk−1 x1+⋯+xk−1≥1 x1 xk+⋯+xm≥1 xk x1+⋯+xm≥2 , ce qui contredit l'hypothèse selon laquelle la somme pour la séquence entière est 1.
De plus, étant donné une séquence avec la somme 1, il y a toujours une permutation cyclique qui fait que tous les préfixes non vides ont une somme positive. (Cela est vrai même pour les nombres réels.)
Conclusion. Comptons maintenant les séquences de +1 et -1 qui sont dans une bijection avec des arbres. Sur nombres, nous devons choisir égal à +1, les autres seront -1. Il existe façons de procéder. Mais, seulement séquence sur comptée jusqu'à présent a des préfixes positifs. Ainsi, le nombre d'arbres binaires enracinés et ordonnés est:n + 1 ( 2 n + 12n+1 n+1 12n+1(2n+1n+1) 1 2n+1
la source