Ce chapitre présente la méthode du double comptage, qui permet de démontrer des résultats théoriques comme la formule de Cayley mais qui se révèle surtout être un outil très puissant pour démontrer des problèmes de combinatoire de haut niveau.
Le
double comptage, aussi appelé
double dénombrement, est une technique qui consiste à calculer une quantité combinatoire de deux manières différentes. Cette méthode permet de prouver des formules combinatoires, mais aussi de résoudre des problèmes d'olympiades a priori très difficiles.
Pour illustrer cette technique, nous allons d'abord examiner un exemple assez simple. Considérons le problème suivant, déjà rencontré précédemment :
Il y a deux façons de résoudre ce problème :
- Pour construire un sous-ensemble E⊆{1,2,…,n}, on peut simplement décider pour chaque élément i entre 1 et n si on le met dans E ou non. On a donc deux choix pour l'élément 1, deux choix pour 2, ... et deux choix pour n. On a donc au total 2n sous-ensembles.
- On peut décider de d'abord compter les sous-ensembles de {1,2,…,n} ayant 0 élément, puis ceux ayant 1 élément, ... jusque ceux ayant n éléments. Pour construire un sous-ensemble E⊆{1,2,…,n} ayant exactement k éléments, on doit simplement choisir ces k éléments et on a dès lors Ckn tels sous-ensembles. Au total, on a donc C0n+C1n+…+Cn−1n+Cnn sous-ensembles.
Nous avons résolu le problème de deux manières et trouvé deux expressions différentes. Puisque nos deux manières de procéder sont correctes, on en déduit que les deux expressions obtenues sont identiques, et nous venons dès lors de prouver la formule
C0n+C1n+…+Cn−1n+Cnn=2n, que nous avions déjà prouvée à l'aide de la formule de Newton.
La technique du double comptage permet par exemple de prouver la
formule de Cayley.
Pour expliquer ce à quoi cette formule s'intéresse, nous devons d'abord définir la notion d'arbre. Par définition, un
arbre est un graphe (non-orienté) connexe qui ne contient aucun cycle. Un exemple d'arbre est donné ci-dessous.
Une propriété fondamentale d'un arbre est que son nombre d'arêtes est exactement égal à son nombre de sommets moins un. L'idée est que, si l'on est en présence de
n sommets, alors il faut au minimum
n−1 arêtes pour être connexe; mais si on prend plus de
n−1 arêtes, alors on créera un cycle. Pour avoir un arbre, il faut donc exactement
n−1 arêtes. Une autre façon de le justifier est d'utiliser la formule d'Euler
s−a+f=2. En effet, comme un arbre ne possède pas de cycle, des arêtes ne délimitent jamais aucune zone du plan et le nombre de faces
f est donc toujours égal à
1. On en déduit que
a=s−1.
Maintenant que la notion d'arbre a été expliquée, nous pouvons nous demander, étant donné
n sommets, combien d'arbres distincts il est possible de créer à partir de ces
n sommets. On sait qu'il faut relier ces sommets avec
n−1 arêtes, mais il y a bien sûr plusieurs manières de placer ces arêtes. La formule de Cayley est la réponse à cette question, que nous reformulons ci-dessous.
On voit directement que
T2=1 et
T3=3 (voir schémas suivants), mais c'est déjà plus fastidieux de calculer
T4.
Il ne semble pas évident de trouver une formule pour
Tn en utilisant les méthodes classiques présentées. En effet, on peut par exemple essayer de placer les arêtes une par une et de compter le nombre de possibilités à chaque placement, mais ce nombre dépendra toujours des choix faits précédemment, ce qui rend le calcul impossible.
Une façon de calculer
Tn (il existe d'autres manières de le faire mais elles sont réputées moins élégantes) est d'utiliser le double comptage. La quantité que nous allons évaluer à deux reprises est le nombre de façons d'ajouter
n−1 arêtes
orientées (l'ordre des ajouts ayant de l'importance) à
n sommets initialement disjoints pour obtenir un
arbre enraciné orienté. Par définition, un
arbre enraciné orienté est un arbre où un sommet est privilégié (on l'appelle la racine de l'arbre) et où les arêtes sont toutes orientées dans la direction opposée à la racine. Un exemple d'arbre enraciné orienté est donné sur la figure suivante : la racine est le sommet numéroté
1.
Nous pouvons calculer cette quantité de deux façons différentes :
- Pour la première méthode, on suppose connaître la valeur de Tn. On connaît donc le nombre d'arbres (non enracinés et non orientés) qu'on peut construire sur n sommets. Pour chacun de ces Tn arbres, il y a n choix possibles de racines. Le choix de la racine détermine par ailleurs directement l'orientation que les arêtes de l'arbre doivent avoir. On a donc exactement n⋅Tn arbres enracinés orientés, et il reste à voir pour chacun le nombre de façons d'ajouter les n−1 arêtes une par une pour obtenir l'arbre. Clairement, cela revient simplement à choisir l'ordre dans lequel on ajoute les arêtes, et il y a (n−1)! tels ordres. Au total, on en déduit que le nombre de façons d'ajouter n−1 arêtes orientées à n sommets pour obtenir un arbre enraciné orienté est égal à
n⋅Tn⋅(n−1)!=n!⋅Tn.
- Pour la deuxième méthode, on adopte une approche classique : on va ajouter les arêtes une par une et voir, à chaque étape, combien il y a de choix possibles. Au départ, il y a n sommets disjoints, qu'on peut voir comme étant n arbres enracinés orientés triviaux (chaque arbre est constitué d'un seul sommet : sa racine). À chaque fois que l'on va ajouter une arête à notre graphe, on va relier deux arbres enracinés orientés existants pour qu'ils ne forment qu'un seul arbre enraciné orienté. Pour ce faire, il faut que l'arête que l'on ajoute aille d'un sommet quelconque de l'un des arbres à la racine d'un autre arbre. De cette façon, après la k-ème arête on sera en présence de n−k arbres enracinés orientés. À la fin du processus, on aura donc n−(n−1)=1 arbre enraciné orienté comme voulu. Il faut noter que cette façon de procéder (ajouter à chaque fois une arête d'un sommet quelconque d'un arbre vers la racine d'un autre arbre) est la seule manière qui permette d'obtenir un arbre enraciné orienté valide à la fin. En effet, si on ajoutait une autre arête, alors on aurait soit plus un arbre soit une orientation contradictoire.
Il reste maintenant à évaluer le nombre de façons de suivre ce processus. Si k−1 arêtes ont déjà été placées, on est en présence de n−k+1 arbres et on désire rajouter la k-ème arête. Nous avons n choix pour l'origine de cette arête comme on peut choisir n'importe quel sommet. Par contre, le point d'arrivée de cette arête doit être une racine d'un arbre autre que l'arbre contenant le point d'origine choisi : il y a donc n−k choix pour celle-ci. Au total, on a donc n⋅(n−k) choix à la k-ème étape, d'où on obtient
(n⋅(n−1))⋅(n⋅(n−2))⋅…⋅(n⋅2)⋅(n⋅1)=nn−1⋅(n−1)!=nn−2⋅n!.
Nous avons donc prouvé que
n!⋅Tn=nn−2⋅n!, ce qui signifie que l'on a la formule suivante pour
Tn.
Formule de Cayley
Le nombre d'arbres différents que l'on peut construire sur n sommets numérotés (n>1) est
Tn=nn−2.
Cette formule est intéressante en tant que telle, mais c'est surtout la méthode utilisée pour la prouver qui est digne d'intérêt.