Application du théorème de Pólya pour l'énumération
d'une famille de graphes
Mémoire
Anthony Richard
Maîtrise en mathématiques - avec mémoire
Maître ès sciences (M. Sc.)
Application du théorème de Pólya pour l’énumération
d’une famille de graphes
Mémoire
Anthony Richard
Sous la direction de:
Résumé
Dans ce mémoire, nous utiliserons l’approche de Pólya pour dénombrer et énumérer des graphes répondant à certaines conditions. Nous étendons ensuite ce résultat pour des graphes plus spé-cifiques comme des réseaux, et des réseaux de type "feed-forward". Finalement, nous supposons ensuite que deux sommets d’un graphe puissent être connectés ou non, et étant donné une probabilité de connexion donnée, nous étudions, en tant que variables aléatoires, certaines propriétés que l’on aimerait retrouver parmi ces graphes.
Le but de ce mémoire est donc d’étendre la portée du théorème de Pólya afin de dénombrer efficacement plusieurs familles de graphes. Le chapitre 1 servira à l’étude de ce théorème, des rappels nécessaires et suffisants de la théorie des groupes jusqu’à la démonstration du théorème de Pólya. Le chapitre 2 nous permettra de voir la flexibilité du résultat primordial développé au chapitre précédent. Finalement, au chapitre3, nous abordons une approche plus probabiliste du problème d’énumération de graphes.
Abstract
In this memoir, we use Pólya approach to count and enumerate graphs under a set of con-ditions. We then extend the reach of this result for some particular types of graphs, namely networks and feed forward networks. Finally, given probabilistic constraints, e.g. two nodes are connected with probability p, we find the probability that a random graph meets those constraints.
The objective of this memoir is thus to remind necessary and sufficient notions of group theory in order to state and prove Pólya Enumeration Theorem, an extremely efficient theorem as for counting objects. We then use this result throughout chapter 2to enumerate many types of graphs. Chapter 3 is where we get more probabilistic.
Table des matières
Résumé ii
Abstract iii
Table des matières iv
Liste des tableaux v
Liste des figures vi
Remerciements viii
Introduction 1
1 Notions d’algèbre et théorème d’énumération de Pólya 3
1.1 Notions d’algèbre . . . 3
1.2 Lemme de Burnside . . . 8
1.3 Théorème d’énumération de Pólya . . . 15
2 Théorème de Pólya et énumération de graphes 22
2.1 Application du théorème de Pólya pour l’énumération de graphes quelconques 23
2.2 Définition de réseaux . . . 36
2.3 Réseaux de type "Feed-Forward" . . . 45
2.4 Résultats numériques. . . 49
3 Distributions de probabilités et point de vue analyse fonctionnelle 53
3.1 Méthode de maximisation d’entropie . . . 53
3.2 Un peu d’analyse fonctionnelle . . . 62
Conclusion 65
Liste des tableaux
2.1 Nombre de graphes total . . . 50
2.2 Nombre de graphes total avec 5 inter-neurones . . . 51
Liste des figures
1.1 S3 agissant sur les sommets d’un triangle . . . 10
1.2 Axes de symétrie du quadrillage 4 × 4 . . . 14
2.1 Graphe biparti K2,2 complet. . . 24
2.2 Sous-graphes du graphe biparti K2,2 . . . 25
2.3 Action de la permutation (4) sur les arêtes . . . 28
2.4 Action de la permutation (5) sur les arêtes . . . 29
2.5 Graphe complet K5 . . . 30
2.6 Énumération des graphes sur K5 avec ceux qui sont connexes en vert . . . 31
2.7 Graphe non orienté et graphe orienté . . . 33
2.8 Graphe complet dirigé Kd,4 . . . 35
2.9 Énumération des graphes dirigés sur Kd,3avec ceux qui sont faiblement connexes en vert et ceux qui sont fortement connexes en bleu. Bien sûr, fortement connexe implique faiblement connexe. . . 36
2.10 Un réseaux "feed-forward" et un réseau standard . . . 37
2.11 Réseau ayant des neurones non-connectés . . . 41
2.12 Exemple de réseau de type "feed-forward" avec E représentant un ensemble de neurones émetteurs et R représentant un ensemble de neurones récepteurs . . . 45
À toi Maman ! J’espère que tu sais, d’où tu es, que sans toi je n’y serais jamais parvenu.
Remerciements
Je dois tout d’abord remercier très chaleureusement mon professeur Nicolas Doyon, pour tout, mais plus spécifiquement pour sa compréhension et les opportunités qu’il m’a offertes. Sans ses précieux conseils, sa bienveillance et son support, tant financier que mathématique, je ne crois pas que j’aurais poursuivi les études graduées.
Je tiens aussi à remercier ma famille, sans qui je ne me serais jamais rendu jusqu’au bout. Ma mère Nathalie, mon père Donald et ma sœur Catherine, qui ont toujours été présents, et ce, même lors des temps difficiles que nous éprouvons. Sans oublier ma copine Éloïse, qui n’est rien de moins que le bijou le plus précieux à mes yeux.
Introduction
La théorie des réseaux, en particulier les réseaux de grande taille, est un sujet très étudié au XXIesiècle [14,8]. En effet, cette théorie permet l’étude de la relation entre des objets de nature discrète ; pratiquement tout peut être représenté sous une forme de graphe, avec des sommets et des arêtes. Entre autres, les réseaux sociaux, qui facilitent les interactions entre les individus, peuvent être représentés de cette manière. Une personne peut être identifiée à un sommet, et une arête correspond à un lien d’amitié avec une autre personne. Ce mémoire traitera de l’énumération des graphes et des réseaux de neurones à l’aide du théorème d’énumération de Pólya.
George Pólya (1887-1985) a été un mathématicien d’origine hongroise œuvrant bien sûr dans la combinatoire, sujet qui sera le plus abordé dans ce mémoire, mais aussi dans l’analyse complexe ainsi que l’analyse classique. Il s’est également distingué dans l’enseignement et la résolution de problèmes, vaste sujet auquel il a d’ailleurs apporté une approche systématique et inovatrice à l’époque. Une de ses citations les plus connues, issue de son livre [17], reflète bien son approche pour la résolution de problème ainsi que sa passion pour les mathématiques :« If you can’t solve a problem, then there is an easier problem you can solve : find it. » Ses contributions en enseignement ainsi qu’en résolution de problèmes furent si importantes, qu’on fait la distinction entre l’avant et l’après Pólya. Plus relié à ce mémoire, son idée d’utiliser les fonctions génératrices avec les groupes de permutations pour énumérer des isomères en chimie organique a été à la base de l’étude de l’énumération des graphes1.
Le premier chapitre sera consacré à la démonstration du théorème d’énumération de Pólya, et pour ce faire, nous devrons faire un retour sur la théorie des groupes. Ce chapitre sera complet en soi, c’est-à-dire que tout résultat nécessaire à la démonstration du théorème de Pólya sera à tout le moins rappelé. Le deuxième chapitre sera un chapitre développé de façon plus constructive, de sorte qu’un étudiant qui s’amuserait à énumérer des graphes pourrait trouver la même solution générale. On complexifie les exemples pour en venir, avec l’aide de Pólya, à un théorème d’énumération dans le cas des graphes sur des sommets indistinguables. Le cas distinguable sera effleuré et des références y seront laissées. Par la suite, on s’intéresse à la propriété d’un graphe d’être connexe et on propose un algorithme pour compter efficacement
le nombre de graphes connexes sur n sommets. On définit par la suite les réseaux de neurones, objets que l’on peut retrouver tant en biologie qu’en informatique, via l’étude de l’intelligence artificielle. On y donnera un théorème de type Pólya pour dénombrer les graphes répondants aux contraintes imposées par la structure de réseau. On se rend compte que le nombre de graphes augmente excessivement rapidement, à vitesse plus qu’exponentielle, en fonction du nombre de sommets. Bien que l’on ait une expression exacte pour le nombre de graphes (ou de réseaux) à n sommets, les compter à l’aide d’un ordinateur devient une tâche très difficile. En effet, N.J.A. Sloane, fondateur de l’« Online Encyclopedia of Integer Squences » (OEIS) a calculé le nombre de graphes connexes sur n sommets jusqu’à n = 75, pour lequel il y a un nombre de graphes différents de l’ordre de 10726. Ainsi, devant la nature compliquée du problème exact, on étudiera une approche probabiliste sur les réseaux afin de savoir s’ils sont connectés ou non. On terminera ensuite avec un survol d’un article très récent, abordant le même problème sous un angle complètement différent.
Chapitre 1
Notions d’algèbre et théorème
d’énumération de Pólya
Ce premier chapitre vise à énoncer et démontrer le théorème d’énumération de Pólya. Pour ce faire, nous aurons besoin d’un lemme, le lemme de Burnside, qui à son tour nécessite un retour (élémentaire) sur quelques notions d’algèbre. Le présent chapitre consistera donc en trois sections. La première visant à mettre les bases pour démontrer le théorème de Lagrange, la deuxième utilisera la première afin de démontrer le lemme de Burnside, et finalement la boucle sera bouclée dans la troisième et dernière section, où nous démontrerons le théorème de Pólya. Pour les deux premières sections, n’importe quel livre couvrant la théorie des groupes peut être utilisé. Personnellement, je me suis servi de mes notes de cours avec Antonio Lei. Sinon, Abstract Algebra de Dummit et Foote [5] est un livre qui traite d’une multitude de sujets en algèbre, dont les rappels de base dont nous avons besoin.
1.1
Notions d’algèbre
Dans cette section, nous rappelons les notions fondamentales d’algèbre qui seront nécessaires à la démonstration du théorème d’énumération de Pólya. Pour ce faire, nous avons besoin de revenir sur la théorie des groupes, les notions de sous-groupes et d’ordre, afin de terminer avec le théorème de Lagrange.
Définition 1.1.1. Soit G un ensemble et ∗ une loi de composition sur G, on dit que (G, ∗) est un groupe si ∗ : G × G → G est une opération telle que
(i) ∗ est associative
(g ∗ h) ∗ k = g ∗ (h ∗ k) ∀ g, h, k ∈ G, (ii) il existe e ∈ G un élément neutre
(iii) chaque élément de G admet un inverse
∀ g ∈ G, ∃ h ∈ G tel que g ∗ h = h ∗ g = e.
Du même coup, si H ⊆ G est un sous-ensemble, alors on dit que (H, ∗) est un sous-groupe de (G, ∗) si le couple (H, ∗) est lui-même un groupe. On écrit souvent H ≤ G. Aussi, l’élément neutre sur H est le même élément neutre que celui sur G.
Notons que, en général, g ∗ h 6= h ∗ g. Aussi, ajoutons que comme H est lui-même un groupe à l’intérieur de G, alors pour toute paire d’éléments la composition h1∗ h2 reste dans H. On dit souvent que H est fermé sous ∗. Donnons maintenant quelques exemples de groupes et de sous-groupes.
Exemple 1.1.2. (Z, +) est un groupe. En effet, si on additionne deux entiers, le résultat est bien un entier, donc + : Z × Z → Z est une loi de composition. Aussi, étant donné a, b, c ∈ Z, on vérifie un à un que
(i) l’addition est bien associative, (a + b) + c = a + (b + c), (ii) on a l’existence d’un élément neutre e = 0 ∈ Z,
(iii) pour tout élément a ∈ Z, il existe bien un élément inverse −a ∈ Z.
On pourrait aussi vouloir se restreindre au sous-groupe des entiers pairs, que l’on note 2Z. Il vérifie la condition d’être un sous-groupe de (Z, +), car il est fermé sous +, l’associativité découle de celle de Z, l’élément neutre est bien le même et l’inverse d’un élément pair reste pair.
Se restreindre aux entiers pairs, ou aux entiers modulo un certain nombre, peut être très utile en pratique. Les classes d’équivalences seront utilisées plus tard et donc regardons un exemple de base afin de voir de quoi il s’agit.
Exemple 1.1.3. Pour un entier n ≥ 1, on prend la relation d’équivalence donnée par a ∼ b si n | a−b. On dit alors que a ≡ b (mod n), et on a n classes d’équivalence, soit [0], [1], . . . , [n−1]. On note l’ensemble des classes d’équivalences par Z/nZ, et cet ensemble muni de l’addition forme un groupe. C’est bien une loi de composition, elle est associative, ce qui découle de l’associativité de Z. L’élément neutre est la classe d’équivalence [0], et l’inverse de [a] est [n − a]. De plus, pour 0 < m < n tels que m | n on a que Z/mZ est sous-groupe de Z/nZ. Il a été mentionné que, en général, dans un groupe l’opération n’est pas toujours commutative. Les exemples précédents étaient commutatifs. Regardons donc un cas sur lequel l’opération n’est pas commutative.
Exemple 1.1.4. L’ensemble GLn(R) des matrices n × n inversibles avec entrées dans R est un groupe avec l’opération de multiplication matricielle. En effet, AB ∈ GLn(R) pour deux matrices A, B ∈ GLn(R). Aussi, on vérifie les propriétés une par une,
(i) on a l’associativité, car elle est héritée de celle de R, (ii) on a un élément neutre, la matrice identité In,
(iii) pour tout élément dans l’ensemble, il existe un inverse étant donné que c’est un pré-requis pour être dans cet ensemble.
Donc GLn(R) sous la multiplication matricielle est bien un groupe. On vérifie maintenant que ce n’est pas commutatif, par exemple
1 1 0 1 ! 2 0 0 1 ! = 2 1 0 1 ! 6= 2 2 0 1 ! = 2 0 0 1 ! 1 1 0 1 ! .
Si on veut donner un exemple de sous-groupe, l’ensemble des matrices diagonales avec entrées non-nulles en serait un.
Lorsqu’on travaille avec les groupes, il est bien de savoir quel est l’élément neutre du groupe, et si on travaille avec un élément en particulier, il peut être utile de connaître son inverse. Les propositions suivantes nous assurent que l’élément neutre, ainsi que l’inverse d’un élément, sont uniques.
Proposition 1.1.5. (Unicité de l’élément neutre)
Soit (G, ∗) un groupe, alors il existe un unique élément neutre.
Démonstration. Supposons, au contraire, qu’il existe deux éléments neutres, disons e et e0. Alors d’une part,
e ∗ e0= e, car e0 est un élément neutre. D’autre part,
e ∗ e0= e0,
car e est un élément neutre. Les deux équations nous assurent alors que e = e0. Proposition 1.1.6. (Unicité de l’inverse)
Soit (G, ∗) un groupe, alors pour tout g ∈ G, il existe un unique h ∈ G tel que g ∗ h = h ∗ g = e. Démonstration. Supposons encore une fois le contraire, donc qu’il existe deux éléments inverses h et h0. Alors on a g ∗ h = e, h0∗ (g ∗ h) = h0∗ e, (h0∗ g) ∗ h = h0, (par associativité), e ∗ h = h0, h = h0.
Comme l’élément inverse est unique et qu’il n’y a pas d’ambiguïté, on réfère habituellement à l’inverse d’un élément g ∈ G par g−1. Lorsqu’on travaille avec des groupes, il est intéressant de savoir quel est l’ordre de ce groupe, en particulier lorsque ceux-ci sont finis. On définit ainsi l’ordre d’un groupe.
Définition 1.1.7. Soit (G, ∗) un groupe, on définit l’ordre de G par le cardinal de G, noté
G. Le groupe G est de cardinalité finie siG< ∞, et il est de cardinalité infinie sinon.
Parmi les exemples précédents, seul le groupe Z/nZ est d’ordre fini, étant donné qu’il y a n classes d’équivalences. Les autres exemples sont d’ordre infini. On peut aussi parler de l’ordre d’un élément.
Définition 1.1.8. Soit (G, ∗) un groupe et g ∈ G, on définit l’ordre de g comme le plus petit entier positif tel que gn= e, et on écrit ord(g) = n. S’il n’existe pas de tel n, on dit que g est d’ordre infini.
Exemple 1.1.9. Prenons le groupe Z/8Z muni de l’addition et regardons l’ordre de [6]. Un représentant de cette classe pourrait être tout simplement 6, et donc on se demande combien de fois il faut le composer avec lui-même avant de retrouver l’identité. Comme 6·4 = 6+6+6+6 = 24 et que 8 | 24, alors ord([6]) = 4.
Le lemme suivant nous assure que, dans les groupes finis, tous les éléments sont également d’ordre fini. Il pourra être utile pour la suite.
Lemme 1.1.10. Soit (G, ∗) un groupe fini, g ∈ G, alors il existe un entier n > 1 tel que gn= e.
Démonstration. Considérons g, g2, g3, . . . ∈ G. Comme G
< ∞, alors il existe certainement des entiers m1 > m2 tels que
gm1 = gm2 gm1∗ g−m2 = gm1−m2 = e. Il suffit de prendre n = m1− m2, ce qui démontre le lemme.
Nous avons brièvement mentionné les classes d’équivalences. En vue de démontrer le résultat important de la section, nous définissons formellement les classes d’équivalences comme suit. Définition 1.1.11. Soit G un groupe et H un sous-groupe, pour g ∈ G on définit
gH := {g ∗ h : h ∈ H}, Hg := {h ∗ g : h ∈ H},
où gH est une classe d’équivalence à gauche modulo H, et Hg est une classe d’équivalence à droite modulo H. En général, gH et Hg peuvent être différentes, par exemple si G n’est pas abélien, comme il sera le cas dans l’exemple 1.2.4.
Par exemple, si on reprenait le groupe Z/nZ, on a que x + (nZ) = y + (nZ) si et seulement si x ∼ y, et le résultat est le même si l’on fait y ∼ x. Dans ce cas-ci, comme l’opération d’addition commute sur Z, les relations d’équivalence à gauche et à droite sont les mêmes. Sans grande surprise, les relations de congruence (à gauche comme à droite) forment des relations d’équivalence. Ainsi, on obtient une partition de G. Avant de démontrer le théorème de Lagrange, nous avons besoin d’un dernier lemme.
Lemme 1.1.12.
Soit G un groupe d’ordre fini, et H un sous-groupe de G, alors gH= Hg=
H, pour tout g ∈ G.
Démonstration. Comme on le fait souvent pour montrer que deux ensembles ont le même cardinal, définissons une fonction d’un ensemble vers l’autre, et montrons que c’est en fait une bijection. Soit
f : H → gH h 7→ g ∗ h
alors d’une part f est surjective. Soit x ∈ gH, alors x s’écrit comme g ∗ h pour un certain h ∈ H, et par définition, x = f (h). Donc pour tout x dans l’ensemble d’arrivée, il existe un h dans l’ensemble de départ vers lequel f envoie h, et donc f est surjective. D’autre part, f est injective. Soit h1, h2 ∈ H, si f (h1) = f (h2), g ∗ h1 = g ∗ h2. En composant des deux côtés à gauche par g−1, on obtient que h1 et h2 sont les mêmes, et donc f est bijective. Entre autres, cela implique que gH
= H .
Théorème 1.1.13. (Théorème de Lagrange) Soit (G, ∗) un groupe fini, H ≤ G, alors H
G.
Démonstration. Comme on a des classes d’équivalences sur G, le groupe est partitionné sur ces classes d’équivalences. Le lemme 1.1.12 montre que pour tout g ∈ G, on a que gH
=
Hg=
H. Ainsi, G étant déjà partitionné, G= c
H, où c est le nombre de classes d’équivalences.
Définition 1.1.14. On définit l’indice d’un sous-groupe H dans un groupe G, [G : H], par le nombre de classes d’équivalences modulo H qui sont présentes dans G. Si G est fini, le théorème de Lagrange nous permet de dire que
[G : H] = G H .
Exemple 1.1.15. On sait que les entiers sont soit pairs, soit impairs, et donc il y a deux classes d’équivalences et [Z : 2Z] = 2.
1.2
Lemme de Burnside
Dans la section précédente, nous avons fait des rappels de notions élémentaires d’algèbre afin de pouvoir démontrer le théorème de Lagrange qui sera utilisé dans la démonstration du lemme de Burnside. Celui-ci fait référence à l’action d’un groupe sur un ensemble. Il faudra donc rappeler les notions d’action de groupe, d’orbites et de stabilisateur.
Définition 1.2.1. Soit (G, ∗) un groupe et X un ensemble, une action · de G sur X est définie par
G × X → X (g, x) 7→ g · x telle que, pour tout x ∈ X et pour tout g1, g2 ∈ G, on a
(i) e · x = x,
(ii) g1· (g2· x) = (g1∗ g2) · x. On dit alors que G agit sur X.
Un exemple très important, qui sera utilisé abondamment par la suite, est celui du groupe des permutations. Une permutation est une bijection d’un ensemble sur lui-même, qui ne fait qu’échanger l’ordre des éléments.
Exemple 1.2.2. On note (SX, ◦) le groupe des permutations sur un ensemble X, et l’opération est simplement la composition. En effet c’est un groupe, car la composition de deux bijections reste une bijection, pour f1, f2, f3 des bijections de X sur lui-même, on a bien l’associativité
(f1◦ (f2◦ f3)) (x) = ((f1◦ f2) ◦ f3) (x),
la permutation correspondant à l’élément neutre est l’identité, et l’inverse existe toujours puisque l’on a qu’à "défaire" la permutation que l’on a exercée. On sait maintenant que SX est un groupe, mais si on pose X = {1, 2, . . . , n} et que G = Sn, alors on peut donner un
exemple d’action de groupe. En effet, le groupe des permutations agit ici sur X de la façon suivante
G × X → X (σ, x) 7→ σ(x).
C’est bien une action de groupe, car id(x) = x et σ1(σ2(x)) = (σ1◦ σ2)(x).
Définition 1.2.3. Soit G un groupe qui agit sur un ensemble X. Pour un élément x ∈ X, on définit le stabilisateur de x ainsi que l’orbite de x par
StabG(x) := {g ∈ G : g · x = x}, OrbG(x) := {g · x : g ∈ G}.
Reprenons le cas du groupe des permutations, mais cette fois-ci sur l’ensemble {1, 2, 3}. C’est un exemple très classique et très intéressant car on peut le représenter géométriquement. Avant tout, notons queS3
= 6, et plus généralement, Sn
= n!, car on déplace d’abord un élément, et il y a n façons de choisir son nouvel emplacement. On déplace ensuite un deuxième élément, et il y a n − 1 façons de choisir, etc. On voit alors que le nombre de permutations totales est n!.
Exemple 1.2.4. Dans le cas de S3, considérons deux types d’opérations, l’une qui est une rotation (σ), selon laquelle chaque élément change de place, et l’autre la symétrie (τ ), selon laquelle deux éléments permutent ensemble. On écrit alors
σ = 1 2 3 2 3 1 ! τ = 1 2 3 1 3 2 ! ,
où chaque élément sur la première ligne est envoyé vers celui de la deuxième ligne, dans la même colonne. De ces deux opérations, il est possible de générer les 6 permutations qui sont dans S3. Pour l’illustrer, il peut être très convenable de représenter S3comme les permutations sur les sommets d’un triangle.
• • • 1 2 3 σ • • • 2 3 1 • • • 1 2 3 τ • • • 1 3 2 • • • 1 2 3 σ2 • • • 3 1 2 • • • 1 2 3 σ ◦ τ • • • 3 2 1 • • • 1 2 3 τ ◦ σ • • • 2 1 3 • • • 1 2 3 id
Figure 1.1 – S3 agissant sur les sommets d’un triangle
Au passage, on peut apprécier le fait que S3 n’est pas abélien, car la composition n’est pas commutative, comme le montrent σ ◦ τ et τ ◦ σ. Ayant défini l’orbite et le stabilisateur, on peut continuer l’exemple en remarquant que
StabS3(1) = {id, τ }, et OrbS3(1) = {1, 2, 3}.
Avant de terminer avec cet exemple, permettons-nous de revenir avec l’indice d’un sous-groupe, ce qui motivera la suite. Si on regarde le sous-groupe de S3 engendré uniquement par les rotations, H = hσi = {id, σ, σ2}. Comme H = 3, par la définition de l’indice d’un sous-groupe, [G : H] = 2. De plus, comme on l’a fait précédemment, il est possible d’engendrer S3 en ajoutant à H des réflexions, que l’on note comme l’ensemble τ H = {τ, τ ◦ σ, τ ◦ σ2}. Remarquons que τ ◦ σ2 = σ ◦ τ , et donc on a que
G = H t τ H,
où t dénote l’union disjointe des ensembles afin de montrer que H et τ H sont disjoints. Dans une union disjointe, on répète, s’il y a lieu, des éléments autant de fois qu’ils se présentent.
Avant de poursuivre, nous énonçons un résultat très pratique afin de vérifier qu’un sous-ensemble est en fait un sous-groupe. C’est une façon beaucoup plus rapide de vérifier que l’on a un sous-groupe que de passer directement par la définition.
Théorème 1.2.5. (Critère des deux étapes)
Soit (G, ∗) un groupe, H ⊆ G un sous-ensemble. Alors H est un sous-groupe si (i) H 6= ∅,
Démonstration. H a bien le même élément neutre que G. En effet, par (i), il existe un h ∈ H, et par (ii), h ∗ h−1 = e ∈ H. Chaque élément possède un inverse. Comme e ∈ H, pour un élément h ∈ H quelconque, par (ii), e ∗ h−1 = h−1 ∈ H. De plus, H est fermé sous ∗, étant donné h, k ∈ H, on sait que k−1 ∈ H et par (ii), h ∗ (k−1)−1 = h ∗ k ∈ H. L’associativité découle de celle de G, donc H est bien sous-groupe de G.
Proposition 1.2.6.
Soit G un groupe qui agit sur X. Alors StabG(x) est un sous-groupe de G.
Démonstration. On utilise le critère des deux étapes. Par définition d’une action de groupe, pour tout x ∈ X, on a e · x = x donc e ∈ StabG(x). Maintenant, soit g, h ∈ StabG(x),
(g ∗ h−1) · x = g · (h−1· x) (1.1) mais h ∈ StabG(x), donc
h · x = x x = h−1· x.
Donc (1.1) devient g · x = x car g ∈ StabG(x). Ainsi, par le critère des deux étapes, StabG(x) ≤ G.
Comme on a effleuré le sujet précédemment, avec les orbites il y a moyen de partitionner notre groupe G. Bien que la proposition suivante ne soit pas difficile, elle est importante pour le lemme de Burnside ainsi que le théorème de Pólya.
Proposition 1.2.7.
Soit G un groupe qui agit sur X. Alors les orbites partitionnent X.
Démonstration. Pour ce faire, on définit la relation suivante, x ∼ y si y ∈ OrbG(x). Il suffit de montrer que c’est une relation d’équivalence.
(i) Réflexive
x ∼ x si x ∈ OrbG(x). En effet, x = e · x et donc x ∼ x. (ii) Symétrique
Si pour x, y ∈ X, on a x ∼ y, alors y ∈ OrbG(x), donc il existe un g ∈ G pour lequel y = g · x. En composant des deux côtés avec g−1, on voit que x ∈ OrbG(y) donc ∼ est symétrique.
(iii) Transitive
Si pour x, y, z ∈ X, on a x ∼ y et y ∼ z, autrement dit y ∈ OrbG(x) et z ∈ OrbG(y), donc il existe g1, g2 ∈ G tels que y = g1· x et z = g2· y. Il suffit de remplacer y,
z = g2· (g1· x) = (g2∗ g1) · x, donc x ∼ z.
On conclut que ∼ est une relation d’équivalence et donc les classes d’équivalences partitionnent X.
À présent, avec le travail qui a été fait, nous sommes en mesure de démontrer la formule d’orbite-stabilisateur, qui jouera un rôle clé dans la preuve du lemme de Burnside.
Théorème 1.2.8. (Formule d’orbite-stabilisateur)
Soit G un groupe qui agit sur X, un ensemble de cardinalité finie. Alors
OrbG(x)
= [G : StabG(x)] ∀ x ∈ X. Démonstration. Fixons d’abord un x ∈ X et construisons une bijection
φ : G/StabG(x) → OrbG(x) g StabG(x) 7→ g · x.
D’abord, cette application est bien définie, car si on a g1 StabG(x) = g2StabG(x), alors par définition g1 ≡ g2 (mod StabG(x)) et donc g2−1∗ g1 = h pour un certain h ∈ StabG(x). On a donc
(g2−1∗ g1) · x = h · x = x g1· x = g2· x,
et l’application est bien définie. Maintenant, pour montrer l’injectivité, on suppose que l’on a φ(g1StabG(x)) = φ(g2StabG(x)). Si c’est le cas, alors ça implique que
g1· x = g2· x (g2−1∗ g1) · x = g2−1· (g1· x) = x,
et donc il se trouve que g−12 ∗ g1 ∈ StabG(x). Par définition, ça veut dire que g1StabG(x) = g2 StabG(x) et donc φ est injective. Pour montrer la surjectivité, il faut montrer que pour tout élément dans l’ensemble d’arrivée il existe une préimage. Donc soit y ∈ OrbG(x), alors y s’écrit comme y = g · x pour un certain g ∈ G. Mais par définition, φ(g StabG(x)) = g · x = y. Ainsi, φ est bijective. Permettons-nous d’ajouter une remarque importante. On a vu, dans la définition de l’indice d’un sous-groupe, que si le groupe lui-même est fini, le théorème de Lagrange nous permet d’écrire
[G : StabG(x)] = G StabG(x) .
Le théorème que nous venons de démontrer implique que, dans ce cas, G= OrbG(x) StabG(x) . (1.2)
Maintenant, tous les outils sont en place afin de pouvoir énoncer et démontrer le lemme de Burnside. Pour ajouter une note historique à cette section, ce serait en fait Ferdinand Georg Frobenius qui aurait découvert ce lemme. D’ailleurs, William Burnside a lui-même, dans ses travaux, attribué le mérite à ce dernier. Cependant, il semblerait que dans la seconde édition de son livre, l’attribution du résultat à Frobenius se soit perdue [22]. Quoi qu’il en soit, le résultat est reconnu sous le nom du lemme de Burnside. Ici, X/G dénote l’action du groupe G sur l’ensemble des coloriages X. Le lemme de Burnside donne une formule explicite pour calculer le nombre de classe d’équivalence de cet ensemble, noté X/G.
Lemme 1.2.9. (Burnside)
Soit G un groupe fini qui agit sur X. Alors X/G = 1 G X g∈G Xg ,
où le membre de gauche représente le nombre d’orbites, et Xg := {x ∈ X : g · x = x}.
Démonstration. Premièrement, on veut réécrire la somme de droite en fonction des éléments de X. Par la définition de Xg et de StabG(x),
X g∈G Xg= X x∈X StabG(x) . (1.3)
Par la formule d’orbite-stabilisateur, on sait que l’on peut réécrire (1.3) en fonction des orbites sur X, et comme G est fini, (1.2) s’applique et donc
OrbG(x) = G StabG(x) ⇓ X x∈X StabG(x) = G X x∈X 1 OrbG(x) .
Finalement, comme les orbites de X (X/G) partitionnent X, on décompose la somme sur toutes les classes d’équivalences
X x∈X 1 OrbG(x) = X A∈X/G X x∈A 1 A | {z } = 1 =X/G. En combinant le tout, X g∈G Xg = G X/G , et en divisant par le cardinal de G on obtient le résultat
En apparence difficile à utiliser, le lemme de Burnside s’avère un outil puissant pour détec-ter, dans le cadre des graphes, si deux graphes sont isomorphes. En effet, si c’est le cas, ils appartiendront à la même classe d’équivalence, moyennant une permutation sur les sommets. Pour l’instant, regardons un exemple pour voir concrètement comment le lemme de Burnside peut être utilisé dans un autre contexte. Comme plusieurs des exemples classiques impliquent le nombre de façons de colorier les sommets d’un polygone, ou les faces d’un polyèdre, sans compter les coloriages pouvant être obtenus par rotation ou par symétrie, et que ceci ressemble un peu trop à ce qui sera fait par la suite (c’est-à-dire dénombrer des réseaux impliquants des sommets et des arêtes) étudions un exemple un peu plus différent et très intéressant, tiré de Combinatorics for Computer Science de S. G. Williamson [21].
Exemple 1.2.10. Soit une grille 4 × 4, on s’intéresse au nombre de façons de noircir 8 des 16 carrés, mais sans compter les coloriages pouvant être obtenus par une rotation ou par une symétrie. Considérons la figure suivante
τ1 τ2 τ3 τ4
Figure 1.2 – Axes de symétrie du quadrillage 4 × 4
Alors soit σ la rotation anti-horaire d’un quart de tour, et on note τi (pour i = 1, 2, 3, 4) symétries données par les axes correspondants sur la figure 1.2. Notons par X les coloriages possibles du quadrillage, et G le groupe des symétries et rotations possibles. Alors
G = {id, σ, σ2, σ3, τ1, τ2, τ3, τ4},
G= 8.
On cherche à appliquer le lemme de Burnside, lequel nous dit que X/G= 1 G X g∈G Xg.
Dans notre cas, X/G sont les coloriages de notre grille qui sont équivalents, à une rotation ou une réflexion près, et Xg est l’ensemble des coloriages que l’on peut faire à l’aide d’une
transformation de l’ensemble G. Il suffit donc de calculer chacun d’entre eux. Commençons par les coloriages engendrées par des rotations,
Xid= 16 8 , Xσ= Xσ3= 4 2 , Xσ2= 8 4 .
L’identité, si on ne fait rien, laisse 8 cases à noircir parmi 16. Pour la manipulation σ, on cherche à savoir combien de coloriages on peut générer en faisant une rotation de 90 degrés. Autrement dit, comme on veut remplir 8 cases au total, et qu’il faut que la rotation engendre d’autres coloriages, alors ça revient à choisir 2 cases parmi 4, et les autres seront données par une rotation de la grille 2 × 2 ainsi coloriée. De même, la rotation σ3 a le même nombre de possibilités, étant donné qu’elle est équivalente à une rotation horaire de 90 degrés. Finalement, les coloriages engendrés par σ2 sont donnés en choisissant 4 cases parmi 8, et en répliquant la même chose de l’autre côté par une rotation.
Xτ2 = Xτ4 = 8 4 , Xτ1 = Xτ3 = 6 4 +4 2 6 3 +6 2 .
Pour les transformations τ2, τ4, c’est le même raisonnement que pour σ2, à la différence que τ2, τ4 exercent une réflexion alors que σ2 exerce une rotation de 180 degrés. Pour τ1, τ3, il faut expliquer un peu plus. Comme ces axes de symétries coupent des blocs en 2, alors il faut absolument prendre un nombre pair sur la diagonale. Cette situation est bien indiquée avec les blocs gris. Soit on prend 0 bloc de la diagonale indiquée par τ3, et donc il reste 4 choix parmi les 6 cases grises, soit on en prend 2 et il reste 3 choix parmi les cases grises, et la dernière option est qu’on choisit toutes les cases sur la diagonale, auquel cas il reste 2 cases parmi 6. Donc, par Burnside,
X/G= 1 8 h Xid+ 2 Xσ+ Xσ2+ 2 Xτ1 + 2 Xτ2 i = 1 8 16 8 + 24 2 +8 4 + 28 4 + 26 4 +4 2 6 3 +6 2 = 1674.
Cet exemple est aussi intéressant puisqu’il ressemble beaucoup au jeu « binairo » que l’on peut trouver dans la section jeu du Journal de Québec par exemple, où le but est de compléter une grille 10 × 10 partiellement remplie de 1 et de 0, avec les conditions supplémentaires que chaque ligne et colonne doit comporter cinq 1 et cinq 0, et on ne doit jamais avoir plus de deux termes identiques de suite. Ce jeu porte plusieurs noms, tels le « Tic-Tac-Logic » ou le « Takuzu »1. L’exemple aurait pu porter sur le « binairo », mais l’identité comporte 10050 configurations, ce qui représente plus de 1029 possibilités.
1.3
Théorème d’énumération de Pólya
Dans cette section, on s’intéresse à la version la plus générale du théorème d’énumération de Pólya. Pour y arriver, nous devrons faire plusieurs définitions en cours de route. Nous allons
parler du théorème plus général, la version avec poids. Ce théorème nous permet d’obtenir la fonction génératrice d’un graphe soumis à plusieurs conditions, où la permutation des som-mets agit sur les arêtes du graphe. Les définitions et propositions sont tirées du livre Applied Combinatorial Mathematics de N. G. de Bruijn [2]. Bien que, pour la suite, nous n’utiliserons pas la version sans poids, il est tout de même intéressant de la mentionner étant donné qu’on l’obtient directement de la version plus générale.
Définition 1.3.1. On définit le type d’une permutation comme suit. Soit λ une partition d’un entier n fixé, λ = (1a1, 2a2, . . .) où j apparaît a
j fois. Soit s ∈ Sn une permutation, on dit que s est de type λ si s a exactement aj cycles disjoints de longueur j pour tout j. Typiquement, on écrit seulement les entiers j tels que aj > 0.
On remarque donc qu’à chaque permutation on peut associer une partition. Par exemple, si n = 5 et s = (3, 1, 2, 5, 4), que l’on préfère toujours réécrire comme un produit de cycles disjoints, s = (3, 1, 2)(5, 4). Alors λ = type(s) = (21, 31), qui peut se lire comme la permutation s laisse 0 élément fixe, contient un cycle de longueur 2 et un cycle de longueur 3. Un peu plus formellement, type(s) pour s ∈ Sn est une fonction allant de Sn vers, disons Λn, l’ensemble des partitions de l’entier n. Cette fonction n’est nullement bijective (e.g. s1 = (1, 2, 3)(4, 5) 6= (1, 2)(3, 4, 5) = s2 et type(s1) = type(s2)), mais elle est grandement utile lorsqu’il est question de l’action qu’a une permutation sur un ensemble d’objets, et que l’on cherche à déterminer de quelle façon on peut lier une transformation à une autre.
Définition 1.3.2. Pour G un groupe de permutation, on définit l’indice de cycles par l’ex-pression ZG(x1, x2, . . . , xn) := 1 G X g∈G xa1 1 x a2 2 . . . xann, où le type(g) = (1a1, 2a2, . . . , nan).
Pour les prochaines définitions, on suppose que X, Y sont deux ensembles finis, et que G est un groupe de permutations qui agit sur X. De plus, il est habituel de noter l’ensemble des fonctions de X dans Y par YX, autrement dit,
YX := {f : X → Y }.
Cette notation étant motivée par le fait que le nombre de fonctions de X dans Y est donné parY
X . En effet, pour chaque x ∈ X, on a Y
choix d’éléments vers lequel l’envoyer. Avec
Xchoix à faire, on voit bien le nombre total de fonctions dans cet ensemble. De plus, comme G partitionne X, alors il y a une relation d’équivalence naturelle sur YX. On donne un nom particulier à ces classes d’équivalences, étant donné qu’elles nous renseignent sur l’action qu’a le groupe G sur l’ensemble de fonctions YX.
Définition 1.3.3. On dit que f1, f2 deux fonctions de YX sont équivalentes f1∼ f2 ⇔ ∃g ∈ G, f1(gx) = f2(x),
et ce, pour tout x ∈ X. Ainsi, ∼ définit une relation d’équivalence sur YX, et les classes d’équivalences C de YX/ ∼ sont appelées des configurations.
Comme on parle de la version du théorème avec des poids, il faut définir sur Y une fonction qui nous donnera le poids d’un élément y. Pour ce faire, soit R l’ensemble où on trouve les poids, on demande seulement que R soit un anneau commutatif qui contient Q. Le poids d’un élément peut être une variable, un nombre, ou quelque chose de plus général. La condition sur R est simplement pour que l’on puisse sommer et multiplier les poids (ensemble ou par des constantes), et que ça demeure associatif, commutatif, et se distribue avec l’addition.
Définition 1.3.4. La fonction poids est définie par w : Y → R
y 7→ w(y). Aussi, on définit le poids d’une fonction f ∈ YX par
W (f ) := Y x∈X
w (f (x)) .
Ces fonctions ne sont pas uniques, on fait le choix d’une fonction w, ce qui fixe la fonction W . Le poids d’une fonction est bien défini, en tant que fonction sur l’anneau commutatif R, étant donné que si f1 ∼ f2, alors elles ont le même poids. En effet, il est facile de voir que
W (f1) = Y x∈X w(f1(x)) = Y x∈X w(f1(gx)) = Y x∈X w(f2(x)) = W (f2).
On peut donc, sans ambiguïté, définir le poids d’une configuration, W (c), par le poids d’un des représentants de la classe d’équivalence c ∈ C,
W (c) := W (f ).
En effet, on a mentionné que c forme une classe d’équivalence de la relation d’équivalence YX/ ∼.
Les définitions nécessaires maintenant faites, il nous manque un dernier lemme pour être en mesure de démontrer le théorème de Pólya. On s’intéressera à des fonctions qui sont constantes sur certains ensembles, mais plus précisément au poids total de ces fonctions.
Lemme 1.3.5. Soit X = X1 t X2t · · · t Xk, et S ⊂ YX l’ensemble de fonctions suivant : {f : X → Y
f est constante sur Xi ∀i}. Notons que f n’a pas nécessairement la même valeur sur chaque Xi. Alors
X f ∈S W (f ) = k Y i=1 X y∈Y w(y) Xi . (1.4)
Démonstration. On a dit que, pour f ∈ S, f est constante sur chaque Xi individuellement. On peut alors réécrire f comme la composition de deux fonctions f = φ ◦ ψ avec
ψ : X → {1, 2, . . . , k} et φ : {1, 2, . . . , k} → Y. x 7→ i t.q. x ∈ Xi
Notons que ψ est fixée, et que l’on a Y k
possibilités pour définir φ. Ensuite, si on développe le produit dans l’énoncé, alors pour chaque i, on doit choisir un terme dans la somme qui a lieu sur Y , ce qui revient à construire une fonction
φ : {1, 2, . . . , k} → Y,
et donc un terme du développement du membre de droite de (1.4) peut s’écrire comme
w(φ(1)) X1 w(φ(2)) X2 . . . w(φ(k)) Xk = k Y i=1 w(φ(i)) Xi . (1.5)
Rappelons-nous qu’il s’agit de la réécriture d’un seul terme. Et comme les f ∈ S sont de la forme f = φ ◦ ψ, alors w(φ(i)) Xi = Y x∈Xi w(φ(ψ(x))) = Y x∈Xi w(f (x)).
On obtient donc que (1.5) devient k Y i=1 Y x∈Xi w(f (x)) = Y x∈X1 w(f (x)) Y x∈X2 w(f (x)) . . . Y x∈Xk w(f (x)) = Y x∈X w(f (x)) = W (f ).
Donc chaque terme du développement du membre de droite de (1.4) peut se réécrire comme W (f ). En procédant ainsi pour chaque terme, on obtiendra chaque fonction f ∈ S, et en sommant sur tout S, on obtiendra tous les termes du membre de droite de (1.4), ce qui démontre que X f ∈S W (f ) = k Y i=1 X y∈Y w(y) Xi .
On a maintenant tous les outils nécessaires pour énoncer et démontrer le théorème d’énuméra-tion de Pólya. Tel que mend’énuméra-tionné à l’exemple1.2.4, une permutation partitionne un ensemble X en une union disjointe de cycles, et donc le lemme précédent jouera un rôle crucial dans la preuve du théorème de Pólya. En utilisant ensuite le fait que, pour une fonction constante sur chaque Xi, on peut écrire la somme des poids comme dans (1.4), nous serons en mesure d’exprimer correctement la fonction génératrice de configurations. D’ailleurs, afin de rendre les choses un peu plus claires sur cette fonction génératrice, ajoutons une notation avant d’énoncer le théorème de la section.
Définition 1.3.6. Si C est un ensemble de configurations de YX, alors la fonction génératrice de configurations sera donnée par
F (C) :=X c∈C
W (c).
Théorème 1.3.7. (Énumération de Pólya, version avec poids)
Soit X, Y des ensembles finis, X = n, et G un groupe de permutation qui agit sur X. Si w est la fonction poids sur Y , alors la fonction génératrice de configuration est donnée par
F (C) = ZG X y∈Y w(y),X y∈Y w(y)2, . . . ,X y∈Y w(y)n .
Démonstration. Soit l’ensemble
Sw := {f : X → Y W (f ) = w}, et notons
ψw(g) := {f : X → Y W (f ) = w et f (x) = f (gx) ∀x},
alors par le lemme de Burnside, Sw représentant le nombre d’orbites et avec la définition de ψw(g), on obtient que Sw = 1 G X g∈G ψw(g) . (1.6)
Maintenant, comme toutes les configurations dans Sw ont un poids de w, en multipliant (1.6) par w, et en sommant sur tous les poids possibles, on obtient la fonction génératrice de configurations X W (c) =X w wSw = 1 G X w X g∈G wψw(g) . En notant ψ(g) := {f : X → Y f = f g}, on peut réécrire
X w wψw(g) = X f ∈ψ(g) W (f ).
En interchangeant l’ordre des sommations, ce qui est permis étant donné qu’il s’agit de deux sommes finies, on obtient
X W (c) = 1 G X g∈G X f ∈ψ(g) W (f ). (1.7)
Pour poursuivre, il faut évaluer la somme sur ψ(g) de W (f ). Pour ce faire, rappelons-nous que tout g ∈ G permute X de façon cyclique, et disons que X se sépare donc en k cycles disjoints X1, X2, . . . , Xk. Pour une fonction f ∈ ψ(g), on sait que
f (x) = f (gx) = f (g2x) = . . .
Ce qui implique que f est constante sur chaque cycle Xi de X. Ainsi, le lemme1.3.5s’applique et on obtient que X f ∈ψ(g) W (f ) = k Y i=1 X y∈Y w(y) Xi . (1.8)
Comme il a déjà été mentionné, on sait qu’une permutation donne lieu à une partition, donc disons que type(g) = (1a1, 2a2, . . . , kak). Alors, dans les nombresX
1 ,X2 , . . . ,Xk , on a que i apparaît ai fois pour chaque i ∈ {1, 2, . . . , k}. De cette façon, (1.8) devient
X f ∈ψ(g) W (f ) = X y∈Y w(y) a1 X y∈Y w(y)2 a2 . . . X y∈Y w(y)k ak . (1.9)
Finalement, en remplaçant (1.9) dans (1.7), on obtient la fonction génératrice de configuration
X W (c) = 1 G X g∈G X y∈Y w(y) a1 X y∈Y w(y)2 a2 . . . X y∈Y w(y)k ak = ZG X y∈Y w(y),X y∈Y w(y)2, . . . ,X y∈Y w(y)k ou sous forme close
F (C) = 1 G X g∈G k Y i=1 X y∈Y w(y)i ai , (1.10) où type(g) = (1a1, 2a2, . . . , kak).
Le version générale étant démontrée, tel que promis, on obtient en bonus la version sans poids comme corollaire.
Corollaire 1.3.8. (Théorème d’énumération de Pólya, version sans poids)
Sous les mêmes hypothèses que le théorème 1.3.7, sans fonction poids, la fonction génératrice de configurations de YX est donnée par
YX/G= 1 G X g∈G Y c(g) ,
où c(g) est le nombre de cycles de la permutation g.
Démonstration. Ayant les mêmes hypothèses que dans la version générale, X et Y sont des ensembles finis etX= n. G est un groupe qui agit sur X, alors on peut appliquer le théorème précédent. Les hypothèses ne nous donnent pas de fonction poids, mais définissons w telle que w(y) = 1 pour tout y ∈ Y . Alors, par (1.10),
F (C) = 1 G X g∈G k Y i=1 Y ai = 1 G X g∈G Y Pk i=1ai .
Or, pour une permutation g ∈ G, on sait que type(g) = (1a1, 2a2, . . . , kak), et donc P iai représente le nombre de cycles effectués par la permutation g, tel que désiré.
Chapitre 2
Théorème de Pólya et énumération de
graphes
Dans ce chapitre, nous établissons comment utiliser le théorème de Pólya afin d’énumérer un ensemble de graphes. Par la suite, nous définissons une famille de graphes particulière, que nous appellerons réseaux, et nous posons des conditions que l’on peut retrouver dans le cadre d’un réseau de neurones. Nous parlons de leurs propriétés élémentaires et développerons, à l’aide du théorème d’énumération de Pólya, des outils afin de compter le nombre de réseaux existants sous nos conditions. Notons également que, au chapitre précédent, G était utilisé pour un groupe quelconque, et lorsque mentionné explicitement, il pouvait s’agir d’un groupe de permutations. À partir d’ici, le groupe G utilisé sera le groupe de permutations que l’on notera Sn.
Définition 2.0.9. On définit un graphe par la paire, Γ = (V, E), où V est l’ensemble des sommets, "vertices" en anglais, et E est l’ensembles des arêtes, "edges". On utilise également le terme connexions, pour parler d’arêtes. Aussi, E ⊂ V × V , et dans le cas d’un graphe non-orienté, l’arête (v1, v2) fait partie du graphe si et seulement si (v2, v1) en fait parti également. Un chemin est défini comme une suite d’arêtes consécutives. On dit qu’un graphe est connexe si ∀vi ∈ V on peut se rendre à n’importe quel des vj ∈ V , autrement dit, qu’il existe un chemin reliant toute paire d’arêtes. Dans le cas orienté, l’arête (v1, v2) est considérée différente de l’arête (v2, v1). On dit qu’un graphe orienté est fortement connexe si ∀vi ∈ V il existe un chemin orienté se rendant vers n’importe lequel des vj ∈ V . On dit qu’un graphe orienté est connexe, ou faiblement connexe si, en oubliant l’orientation, le sous-graphe non orienté est connexe. Finalement, on dit que deux graphes Γ = (E, V ), ˜Γ = ( ˜E, ˜V ) sont isomorphes s’il existe une bijection f : E → ˜E telle que (e1, e2) ∈ V implique que (f (e1), f (e2)) ∈ ˜V , et vice versa.
2.0.1 Graphes avec sommets distinguables
Bien que l’emphase ne soit pas mise sur le cas où les sommets sont distinguables, il nous faut tout de même en glisser un mot. En effet, plus tard certains de nos sommets seront distinguables. Mais le réel problème survient lorsqu’ils ne le sont pas. On dit que deux sommets sont distinguables si on peut les différencier l’un de l’autre, alors qu’ils sont dit indistinguables si on ne peut les différencier. Dans le cas indistinguable, tous les sommets sont équivalents alors que dans le cas distinguable, il est important de faire la différence entre deux sommets puisqu’ils possèdent de l’information différente l’un de l’autre.
Si on cherche à savoir le nombre de façons dont on peut connecter n sommets distinguables, alors pour chaque paire de sommets, soit ils sont connectés, soit ils ne le sont pas, et on trouve donc que le nombre total de graphes possibles est
2(n2).
Aucun d’entre eux ne sera isomorphe, étant donné que l’arête entre deux sommets n1 et n2 n’est pas considérée comme la même arête que celle entre nk et nk+1. Ainsi, la notion de sommets distinguables fait en sorte qu’il n’y a aucune permutation entre les sommets qui soit admissible. Dans le cas des graphes avec sommets distinguables, Erdős et Rényi ont découvert un fait surprenant sur la connectivité d’un graphe aléatoire [6,7]. Avec chaque arête ayant la même probabilité d’exister, le graphique de la connectivité du graphe par rapport au nombre de connexions change drastiquement de comportement lorsque l’on permet n/2 connexions. En effet, le graphe devient presque certainement connexe, avec probabilité de connexité dans le graphe tendant vers 1 pour n → ∞. Par une démarche que l’on utilisera plus tard, on peut trouver la suite (an)n≥1 où an est le nombre de graphes connectés sur n sommets à isomorphisme près. L’encyclopédie en ligne des suites d’entiers (OEIS) a déjà plusieurs suites du genre, par exemple la suite A001187
1, 4, 38, 728, 26704, . . .
correspond au nombre de graphes connexes à n sommets distinguables. Il est intéressant de dire qu’il n’y a pas de forme close pour compter ces objets.
2.1
Application du théorème de Pólya pour l’énumération de
graphes quelconques
2.1.1 Graphes non orientés
Les graphes sont des objets d’étude classique dans les mathématiques discrètes [6,7,1,10,16]. Ici, on s’intéresse l’effet d’une permutation des sommets sur les arêtes. On étudiera donc les graphes qui seront invariants sous chacune des permutations possibles. Dans cette section, nous
travaillerons par développement sur des exemples, en ajoutant à chaque fois de la complexité pour bien voir de quoi nous avons besoin avant d’écrire un résultat plus général. L’approche sera complètement constructive, comme pourrait le découvrir quelqu’un qui manipulerait les graphes pour la première fois. Nous en viendrons à comment on peut trouver la suite (an)n≥1 de graphes possibles sur n sommets indistinguables.
Pour reprendre le théorème de Pólya, soit V un ensemble de sommets et soit E l’ensemble des arêtes sur le graphe, alors EV représente l’attribution ou non d’une connexion entre deux sommets. En fait, pour respecter la définition d’un graphe, il faut modifier la notation un peu,
f : V × V −→ E (vi, vj) 7−→ 1 si vi et vj sont connectés, 0 sinon.
Maintenant, comme on cherche une fonction génératrice, pour chaque arête dans l’ensemble E, donnons un poids de x0 si aucun lien n’existe, et x1 si un lien existe. Par souci de simplicité, notons EV ×V =: EV. Par le théorème de Pólya, on sait que notre fonction génératrice de graphe aura la forme suivante :
EV/Sn = 1 Sn X s∈Sn k Y i=1 (1 + xi)ai, (2.1)
pour type(s) = (1a1, . . . , kak). Mais avant d’écrire les choses de façon précises, faisons d’abord un exemple pour bien voir comment les choses se déroulent.
Exemple 2.1.1. Considérons la figure 2.1, alors on voudrait savoir combien de sous-graphes ce graphe biparti à 4 arêtes possède ?
• • • • n1 n2 m1 m2 a b c d
Figure 2.1 – Graphe biparti K2,2 complet
Comme on s’intéresse à l’action qu’auront les permutations des sommets sur les arêtes entre ceux-ci, commençons par lister les permutations possibles sur chaque couche du graphe biparti. En fait, comme les seules permutations possibles sont celles sur une même couche, chaque paire peut soit permuter, (1, 2) et (1, 2), ou chaque paire peut ne pas bouger, (1)(2) et (1)(2). Il y a donc quatre combinaisons possibles, soit
Chacune d’entre elle aura un effet sur les arêtes et mènera à un polynôme. Explicitons un exemple parmi les quatres, si on permute les sommets sur les deux couches, l’arête aira vers l’arête b, et en permuttant de nouveau, reviendra sur l’arête a. De même, on aura le cycle
c, d, c. Le mot cycle est bien choisi, étant donné qu’on dira que les permutations (1, 2), (1, 2) donnent lieu à 2 cycles de longueur 2. Il en est de même pour les deux cas où on permute les sommets d’une couche en laissant les deux autres sommets fixes, et dans le cas où on laisse les deux couches fixes, on obtient 4 cycles de longueur 1. En suivant (2.1), on devrait avoir
EV/Sn = 1 4(1 + x 2)2+ (1 + x2)2+ (1 + x2)2+ (1 + x)4 = 1 44 + 4x + 12x 2+ 4x3+ 4x4 = 1 + x + 3x2+ x3+ x4.
Ainsi, par le théorème de Pólya, on sait qu’on aura 1 graphe avec 0 arête, 1 graphe avec 1 arête, 3 graphes avec 2 arêtes, 1 graphes avec 3 arêtes ainsi qu’un graphe avec 4 arêtes. De plus, on sait que ces graphes sont à isomorphisme près. On les liste ici.
• • • • • • • • • • • • • • • • • • • • • • • • • • • •
Figure 2.2 – Sous-graphes du graphe biparti K2,2
En faisant les calculs dans en détail, on voit bien comment trouver le nombre et la longueur des cycles. Or, si on veut en venir à une fonction génératrice pour un graphe quelconque, il nous faut introduire plusieurs outils. D’abord, on a déjà mentionné qu’à une permutation on pouvait associer une partition à l’aide de la fonction type. Or, cette fonction n’est nullement injective et il faut un moyen pour calculer le nombre de permutations associées à une seule partition. Comme nous l’avons fait dans l’exemple illustré à la figure 1.1, nous pouvons énumérer les 6 permutations de S3 de la manière suivante,
{(1, 2, 3)1, (1, 2, 3)2, (1)(2, 3), (2)(1, 3), (3)(1, 2), (1)(2)(3)},
avec un indice sur la permutation qui bouge les trois sommets, étant donné qu’on sait qu’il existe deux telles permutations, soit σ et σ2. Dans ce qui suit, on voudra plutôt écrire que S3 = {(1, 2, 3), (1)(2, 3), (1)(2)(3)}, où chaque permutation s ∈ S3 est en fait une des permu-tations qui agit d’une telle façon. Pour ce faire, il nous faut une façon de compter combien de permutations sont associées à une seule partition.
Définition 2.1.2. Soit n ∈ N et λ ` n, c’est-à-dire λ partitionne l’entier positif n, alors on définit l’indice de permutation par
ω(λ) :={s ∈ Sn: type(s) = λ}.
Lemme 2.1.3. Pour n ∈ N et λ ` n, disons λ = (1a1, 2a2, . . . , kak) pour k ≤ n, on a ω(λ) = n! Y
1≤j≤n 1
jajaj!. (2.2)
Démonstration. Notons que
n! Q
1≤j≤naj!
est le nombre de façons de disposer de n éléments dans k boîtes. Or, de cette façon, on compte des éléments plusieurs fois, car on fait une distinction entre les boîtes contenant un même nombre d’éléments. Cependant, (1)(2), . . . , (k − 1, k) est la même permutation que (2)(1), . . . , (k − 1, k). Il faut donc rediviser par la taille des boîtes, j, ainsi que le nombre de fois qu’elles apparaissent, aj. On obtient donc (2.2).
Le premier graphe de la présente section a été choisi tel que la permutation (1, 2) a un indice de 1. Par contre, comme on l’a vu avec S3, il suffit de trois éléments pour avoir des permutations qui ont un indice plus grand que 1.
Exemple 2.1.4. Si on s’intéresse aux graphes possibles sur 4 sommets, d’abord il faut connaître toutes les permutations possibles sur notre ensemble. Plusieurs choix s’offrent alors à nous, s1 = (1)(2)(3)(4) λ1 = type(s1) = (14), s2 = (1, 2)(3)(4) λ2= type(s2) = (12, 21), s3 = (1, 2)(3, 4) λ3 = type(s3) = (22), s4 = (1, 2, 3)(4) λ4 = type(s4) = (11, 31), s5 = (1, 2, 3, 4) λ5 = type(s5) = (41). Par le lemme 2.1.3, on calcule que
ω(λ1) = 4! 144! = 1, ω(λ2) = 4! 122!211! = 6, ω(λ3) = 4! 222! = 3, ω(λ4) = 4! 111!311! = 8, ω(λ5) = 4! 411! = 6.
On constate qu’on a bien 4! = 24 permutations, et on peut lister les 6 permutations de type(s5), celles qui ne laissent aucun élément fixe et que l’on appelle souvent les dérangements,
(2, 3, 4, 1), (2, 4, 1, 3), (3, 1, 4, 2) (3, 4, 2, 1), (4, 3, 1, 2), (4, 1, 2, 3).
Maintenant que l’on sait exactement combien de permutations donnent lieu à la même par-tition, il faudrait voir le comportement des arêtes entre deux ensembles de sommets qui sont permutés par des permutation différentes. Par exemple, si on étudiait le graphe K5, un graphe très bien connu dans lequel 5 sommets sont tous connectés les uns aux autres, et que l’on s’intéressait au nombre de graphes qu’il est possible de générer, à permutation près, sur 5 sommets, alors on devra gérer le cas où on permute deux sommets ensembles, et les trois autres ensemble. On dit qu’il s’agit de permutations disjointes, puisqu’elles agissent sur des ensembles disjoints. K5 est un graphe très intéressant, étant donné que tous les graphes qui ne sont pas planaires, c’est-à-dire qui ne peuvent se dessiner dans le plan sans croisement entre les arêtes, comprennent soit K5 ou K3,3 comme sous-graphe. Nous aurons l’occasion de repar-ler de K3,3 plus trard, mais pour l’instant, continuons avec les théorèmes suivants qui nous aideront à voir plus clair sur le comportement de deux arêtes à travers deux cycles différents. Définition 2.1.5. Soit deux entiers a et b, on utilisera les notations assez répandues [a, b] := ppcm(a, b) et (a, b) := pgcd(a, b).
Proposition 2.1.6. (Longueur des orbites type I)
Soit deux ensembles disjoints Cn et Cm, respectivement de cardinalité n et m, et que l’on permute le premier ensemble selon la permutation s1 = (1, 2, . . . , n) et le deuxième par s2 = (1, 2, . . . , m), alors une arête allant de Cn vers Cm induira un cycle de longueur [n, m].
Démonstration. SPDG, disons n < m. Soit une arête allant de ni vers mj, 1 ≤ i ≤ n et 1 ≤ j ≤ m, en appliquant chacune des permutations n fois, alors ni sera retourné à sa place, tandis que mj sera en position j + n (mod m). Il faut donc appliquer les permutations m fois pour que mj retrouve son emplacement initial, mais cette fois c’est ni qui sera en position i+m (mod n). On procède ainsi jusqu’à ce que les deux soient à leur place, soit [n, m] fois. Proposition 2.1.7. (Nombre d’orbites type I)
Sous les mêmes hypothèses que la proposition précédente, il y aura (n, m) orbites de longueur [n, m].
Démonstration. Par la proposition précédente, on sait que les orbites seront de longueur [n, m]. Sachant qu’il y a nm arêtes possibles entre ces deux ensembles, on a directement le nombre d’orbites
nm
[n, m] = (n, m).
On appellera des cycles de type I les cycles entre deux ensembles de sommets agissant sous différentes permutations. Les cycles de type II seront les cycles à l’intérieur d’un ensemble agissant sous une même permutation. Dans le cas non dirigé, pour les cycles de type II, on
doit distinguer le cas pair du cas impair, et on verra une manifestation de ce qui se produit dans un tel cas à l’exemple 2.1.11. Afin de bien comprendre les explications, nous ferons à même la démonstration un exemple pour chaque cas.
Proposition 2.1.8. (Nombre et longueur des orbites type II)
Soit un ensemble Cn comportant n sommets, avec n pair, et que l’on permute selon la permu-tation sn = (1, 2, . . . , n), alors il y aura n/2 − 1 cycles de longueur n et 1 cycle de longueur n/2. Pour un ensemble Cm comportant m sommets, avec m impair, que l’on permute selon la permutation sm = (1, 2, . . . , m), alors il y aura (m − 1)/2 cycles de longueur m.
Démonstration. D’abord, imaginons que nos sommets sont arrangés en polygone régulier. Commençons par le cas pair. Si on regarde ce qui se produit avec une arête entre deux som-mets adjacents, disons le sommet 0 et 1, lorsque l’on permute elle fera le tour du polygone en engendrant un cycle de longueur n. En commençant du même sommet, si on saute un sommet et que l’on relie le sommet 0 au sommet 2, en permutant on engendrera un cycle de longueur n encore une fois. Il en sera de même jusqu’à ce qu’on relie deux sommets diamétralement opposés. Autrement dit, on peut sauter jusqu’à n/2 − 1 sommets avant de rejoindre le sommet diamétralement opposé. Pour les sommets diamétralement opposés, en effectuant n/2 fois la permutation, on retombera sur l’arête joignant les deux mêmes sommets, mais dans l’autre "sens". Or, comme nos arêtes sont non orientées, on a terminé ce cycle et il s’agit d’un cycle de longueur n/2. Donc, au total
n
2 − 1 cycles de longueur n et 1 cycle de longueur n
2. (2.3)
Exemple 2.1.9. Si on numérote les sommets de 0 à 3, à partir du sommet supérieur gauche dans le sens horaire, alors la figure de gauche montre l’arête de 0 à 1 qui se permute pour faire le tour du carré. La figure de droite montre l’arête allant de 0 à 2, donc celle qui rejoint les sommets diamétralement opposés, qui mène à un cycle de longueur 2. Une fois permutée, cette arête devient l’arête 2, pour ensuite retomber sur l’arête 1, mais dans l’autre sens. Comme le sens n’a pas d’importance ici, le cycle s’arête ainsi. Le tout vérifie (2.3).
• • • • 0 1 2 3 a b c d • • • • 0 1 2 3 c e f
Figure 2.3 – Action de la permutation (4) sur les arêtes
Maintenant, pour le cas impair, notons d’abord qu’il y a m(m − 1)/2 arêtes possibles. En effet, le premier sommet peut rejoindre m − 1 autres sommets, le deuxième m − 2, etc. jusqu’à l’avant dernier sommet qui n’en rejoint qu’un seul, étant déjà connecté aux autres. Et on sait
très bien que m−1 X k=1 k = m(m − 1) 2 .
Avec la même image en tête que pour le cas pair, en joignant deux sommets adjacents on crée un cycle de longueur m, de même qu’en sautant un sommet, et ainsi de suite. Par contre, cette fois il n’y a pas de sommet diamétrelement opposé. Donc si on relie le sommet 0 à un autre sommet, en sautant (m − 1)/2, on engendrera un autre cycle de longueur m, mais ensuite, on saute de l’autre côté de ce qui serait notre "diamètre". Donc si on relie le sommet 0 à un autre sommet, en sautant (m + 1)/2, cette arête aura déjà été parcourue par une permutation de l’arête précédente. Ainsi,
m − 1
2 cycles de longueur m. (2.4)
Exemple 2.1.10. On voit bien ici à la figure 2.4 que, lorsque l’on dépasse le "diamètre" à partir de notre sommet supérieur gauche, on reforme une arête que l’on a déjà parcourue. De cette façon, (2.4) est bien respectée.
a b c d e 0 1 2 3 4 a b c d e d 0 1 2 3 4 4d 0 1 2 3 4
Figure 2.4 – Action de la permutation (5) sur les arêtes
Il peut sembler que jusqu’ici, ce qui a été fait soit assez simple, or il est toutefois nécessaire de comprendre des cas simples avant de pouvoir écrire un théorème d’énumération global. Suite à l’exemple suivant, nous serons prêts à poser un théorème d’énumération pour les graphes non orientés et non connexes.
Exemple 2.1.11. Si on s’intéresse au nombre de graphes que l’on peut créer sur 5 sommets, bien vite on trouve que le plus grand sera graphe complet K5. Mais combien de graphes peut on créer, à isomoprhisme près, en choisissant une ou plusieurs arêtes de K5?
v1 v2 v3 v4 v5 a b c d e f g h i j
Figure 2.5 – Graphe complet K5
D’abord, les partitions possibles sur un ensemble à 5 éléments auront une des formes suivantes Λ5= {(5), (1)(4), (1)(1)(3), (2)(3), (1)(1)(1)(2), (1)(2)(2), (1)(1)(1)(1)(1)}, et on peut calculer chaque indice de permutation des partitions de Λ5. De cette façon, et en regardant l’action des permutations sur les arêtes, on trouve la fonction génératrice du graphe. Par exemple, si on regarde le cas où quatre sommets permutent ensembles et un sommet est seul, sa contribution à la fonction génératrice sera
5!
111!411!(1 + x
4)2(1 + x2).
En effet, si on permute v1, v2, v3, v5, tel que mentionné dans la proposition 2.1.8 on a deux cycles de longueur 4, soit a, b, j, e, aetc, d, f, i, c, et le cycle de longueur 2h, g, h. Dans le cas des graphes dirigés, nous devrons faire une nouvelle proposition. En effet, comme le sens aura de l’importance, on ne pourra pas s’arrêter lorsque l’on retombera sur une arête dans le sens inverse de celui déjà parcouru. Pour l’interaction entre la permutation (4) et le sommet seul, on se réfère aux propositions 2.1.6 et 2.1.7. En répétant sur toutes les partitions de Λ5, on peut trouver que la fonction génératrice sera
1 5! 24(1 + x5)2+ 30(1 + x4)2(1 + x2) + 20(1 + x3)3(1 + x) + 20(1 + x6)(1 + x3)(1 + x) +15(1 + x2)4(1 + x)2+ 10(1 + x2)3(1 + x)4+ (1 + x)10 = 1 + x + 2x2+ 4x3+ 6x4+ 6x5+ 6x6+ 4x7+ 2x8+ x9+ x10.
Figure 2.6 – Énumération des graphes sur K5 avec ceux qui sont connexes en vert
Remarquons qu’il est facile d’obtenir les graphes ayant 6 arêtes et plus en prenant le complé-ment des graphes que l’on a déjà énumérés. En effet, la relation est symétrique étant donné que choisir n arêtes parmi 10 revient à en choisir 10 − n parmi 10, (n ≤ 5).
Définition 2.1.12. Afin d’avoir la notation la moins confuse possible, définissons α(j, s) le nombre d’orbites de longueur j induit par la permutation s. On sait calculer α(j, s) grâce aux propositions2.1.6,2.1.7 et2.1.8.
Théorème 2.1.13. (Théorème de Pólya pour les graphes) Soit Γ = (V, E) un graphe à V
= n sommets indistinguables, alors la fonction génératrice du nombre de graphes à isomorphisme près est donnée par
H(x) = 1 n! X s∈Sn Y j ω(λs)(1 + xj)α(j,s),
où λs= (1a1, 2a2. . .) est la partition associée à la permutation s.
Démonstration. Il suffit de constater que le théorème utilise tous les résultats de la section, et qui, combinés au théorème d’énumération de Pólya, nous donnent la fonction génératrice désirée.
2.1.2 Graphes non orientés, connexes
Comme on l’a mentionné précédemment, la connexité est une propriété naturellement in-téressante sur les graphes et, selon le contexte, elle peut vouloir dire plusieurs choses. Six degrees of separation, une pièce des années 1990, qui est par la suite devenue un film en
1993, a popularisé l’idée que nous serions séparés de quiconque par seulement 6 connais-sances. Par exemple, si les sommets d’un graphe étaient des personnes et qu’une connexion représentait connaître quelqu’un, alors cela voudrait dire que d’une personne quelconque vi, il suffirait d’un maximum de 6 arêtes pour atteindre n’importe quelle autre personne vj ∈ V = {toutes les personnes sur la terre}.
La stratégie pour compter le nombre de graphes connexes est de retirer toutes les partitions donnant lieu à des composantes connexes mais disjointes. Pour ce faire, il faut utiliser une relation de récurrence, et donc, d’entrée de jeu, si on veut compter efficacement le nombre de graphes connexes à, disons, 100 sommets, il faudrait parler d’optimisation d’algorithme et de programmation. D’ailleurs, N. J. A. Sloane, le fondateur de l’OEIS, a calculé le nombre exact Cn de graphes non orientés connexes à sommets indistinguables pour des valeurs allant jusqu’à n = 75 A001349, représentant un nombre de l’ordre de 10726. Mais pour nous, dans un contexte théorique d’abord, notons Rn le nombre total de graphes, pas nécessairement connexes, alors on aura
Cn= Rn− X λ`n λ6=(n1)
Cλ, (n ≥ 2), (2.5)
où Cλ est défini comme suit. Si λ = (1a1, 2a2, . . . , kak), alors C1 : = 1, Cλ = C1C1· · · C1 | {z } a1fois C2C2· · · C2 | {z } a2fois · · · CkCk· · · Ck | {z } akfois (2.6)
Notons que l’on obtient le nombre total de graphes Rntout simplement en évaluant la fonctions génératrice H(x) en x = 1. Aussi, on peut voir pourquoi il est difficile de calculer le nombre de graphes connexes pour de grands entiers n. En effet, les fonctions récursives demandent beaucoup de temps de calcul, et c’est le cas pour la relation de récurrence (2.6). Il faut d’abord regarder toutes les façons de partitionner n, et retirer toutes les composantes connexes sur chacune des façons de partitionner cet entier. Ensuite, contrairement à la section précédente, nous énonçons d’abord un résultat et nous montrerons ensuite pourquoi il fait du sens. Voyons premièrement comment ça fonctionne avec un exemple. On complètera l’exemple précédent du graphe K5, pour lequel nous avons énuméré tous les graphes et donc nous savons exactement combien de graphes connexes il possède.
Exemple 2.1.14. Si on cherche à connaître le nombre de graphes connexes sur 5 sommets, par (2.5), on doit connaître jusqu’à C4. Pour la récurrence, on définit C1 := 1, et on peut