Théorie des graphes
Cours complet · mathématiques appliquées (ECG 1re année), chapitre 3 · prépa ECG, 1re année
Travailler ce chapitre sur Adloun Exercices corrigés de ce chapitre
Un graphe fini est un outil de modélisation simple et redoutablement efficace : il représente des objets et les liens entre eux. Les sciences sociales s'en servent pour les réseaux d'individus, l'économie pour des modèles d'évolution, l'informatique pour le réseau des pages web — celui-ci compte plusieurs dizaines de milliards de sommets, et c'est un calcul de graphe qui décide de l'ordre des résultats d'une recherche.
L'intérêt de ce chapitre, placé juste après le calcul matriciel, tient en une phrase : un graphe se range dans une matrice, et les puissances de cette matrice répondent à des questions qu'on ne saurait pas traiter autrement.
3.1 Vocabulaire
Un graphe est la donnée d'un ensemble fini de sommets et d'un ensemble d'arêtes reliant certains couples de sommets. Deux sommets reliés par une arête sont dits adjacents. Le graphe est orienté lorsque ses arêtes ont un sens (on parle alors d'arcs), non orienté sinon.
Un réseau d'amitiés est naturellement non orienté : si est ami avec , l'est avec . Un réseau d'abonnements ne l'est pas : peut suivre sans réciproque. Le choix d'orienter ou non n'est pas technique, il traduit la nature du lien modélisé.
Dans un graphe non orienté, le degré d'un sommet est le nombre d'arêtes qui en partent.
Dans un graphe non orienté à arêtes, la somme des degrés de tous les sommets vaut :
Démonstration
Comptons les couples (sommet, arête issue de ce sommet). En regroupant par sommet, ce nombre vaut . En regroupant par arête, chaque arête a exactement deux extrémités et fournit donc deux couples : le total vaut . Les deux comptages portent sur le même ensemble.
Dans une assemblée, chaque poignée de main engage deux personnes : le nombre total de mains serrées est donc le double du nombre de poignées. Il en découle qu'un graphe a toujours un nombre pair de sommets de degré impair, car une somme d'entiers valant ne peut contenir un nombre impair de termes impairs.
3.2 Matrice d'adjacence
Soit un graphe dont les sommets sont numérotés de à . Sa matrice d'adjacence est la matrice définie par
Un graphe est non orienté si et seulement si sa matrice d'adjacence est symétrique.
Démonstration
Une arête entre et sans orientation se lit dans les deux sens : elle impose . Réciproquement, si , tout lien de vers s'accompagne du lien de vers .
Renuméroter les sommets change la matrice, pas le graphe. Deux matrices différentes peuvent donc décrire le même objet — c'est le prix à payer pour disposer d'un tableau de nombres.
Le graphe complet à sommets, noté , relie chaque paire de sommets. Sa matrice d'adjacence a des sur la diagonale et des partout ailleurs ; chaque sommet est de degré , et le nombre d'arêtes vaut d'après la formule d'Euler.
3.3 Chemins et puissances de la matrice
Une chaîne (ou, dans un graphe orienté, un chemin) de à est une suite de sommets dans laquelle deux sommets consécutifs sont reliés par une arête. Sa longueur est , c'est-à-dire le nombre d'arêtes empruntées.
Soit la matrice d'adjacence d'un graphe à sommets. Pour tout , le coefficient de position de est le nombre de chemins de longueur allant du sommet au sommet .
Démonstration
Par récurrence sur . Pour , vaut s'il y a une arête de vers , et sinon : c'est bien le nombre de chemins de longueur .
Supposons la propriété vraie au rang . Un chemin de longueur de à se décompose de façon unique en un chemin de longueur de vers un sommet intermédiaire , suivi d'une arête de vers . En sommant sur toutes les valeurs possibles de , le nombre de tels chemins vaut
puisque compte les chemins de longueur de à par hypothèse de récurrence, et vaut ou selon que la dernière arête existe ou non.
La démonstration ne fait qu'écrire la définition du produit : . Le produit matriciel est exactement le comptage des façons d'aller de à en passant par un intermédiaire. C'est là que le chapitre précédent et celui-ci se rejoignent.
Sur le graphe ci-dessus, a pour coefficient le nombre de chaînes de longueur de à . Il n'y en a qu'une : . Le coefficient de vaut — les chaînes de longueur d'un sommet vers lui-même sont les allers-retours sur chacune de ses arêtes.
De façon générale, pour un graphe non orienté, . La trace de vaut donc : la formule d'Euler se relit sur les matrices.
3.4 Connexité
Un graphe est connexe lorsque, pour tout couple de sommets , il existe une chaîne allant de à . Autrement dit : le graphe est d'un seul tenant.
Soit un graphe à sommets, de matrice d'adjacence . Alors est connexe si et seulement si tous les coefficients de la matrice
sont strictement positifs.
Démonstration
Le coefficient de cette somme compte les chemins de à de longueur , , …, . Il est strictement positif exactement lorsqu'il existe un chemin de à de longueur au plus .
Il reste à voir qu'un chemin de à , s'il en existe, peut toujours être choisi de longueur au plus . Prenons-en un de longueur minimale : s'il repassait deux fois par un même sommet, on pourrait supprimer la portion comprise entre les deux passages et obtenir un chemin plus court, ce qui contredirait la minimalité. Ce chemin visite donc des sommets deux à deux distincts : il en emprunte au plus , donc au plus arêtes.
S'arrêter à ou ne prouve rien : dans un graphe en chaîne à sommets, aller du premier au dernier demande arêtes. C'est le nombre de sommets qui borne la longueur utile, pas l'intuition.
3.5 Un mot sur l'analyse des réseaux sociaux
Le programme signale quelques mesures utilisées pour analyser un réseau, en précisant qu'elles ne sont pas exigibles. Elles montrent bien ce qu'un graphe permet de lire.
- Le degré de centralité d'un sommet est son degré, éventuellement rapporté à . Un sommet de fort degré est directement connecté à beaucoup d'autres — un « influenceur » au sens le plus naïf.
- Le degré d'intermédiarité mesure la fréquence à laquelle un sommet se trouve sur le chemin le plus court entre deux autres. Un sommet peut avoir peu de voisins et une intermédiarité énorme : c'est le pont entre deux communautés, celui dont le retrait coupe le réseau en deux.
Ces deux mesures ne classent pas les sommets dans le même ordre, et c'est tout l'intérêt : « être connecté » et « être incontournable » ne sont pas la même chose.
Python : Compter les chemins, tester la connexité
Une fois le graphe rangé dans un tableau, tout devient du calcul matriciel.
import numpy as np
A = np.array([[0,1,0,0,1],
[1,0,1,0,1],
[0,1,0,1,0],
[0,0,1,0,1],
[1,1,0,1,0]])
n = A.shape[0]
print(np.linalg.matrix_power(A, 2)) # chemins de longueur 2
print(np.diag(A @ A)) # les degres : [2 3 2 2 3]
S = np.eye(n, dtype=int)
P = np.eye(n, dtype=int)
for d in range(1, n):
P = P @ A
S = S + P
print("connexe :", (S > 0).all()) # True
La boucle s'arrête à , conformément au théorème. Aller plus loin ne changerait rien ; s'arrêter plus tôt pourrait conclure à tort.
3.6 L'essentiel du chapitre
- Vocabulaire : sommets, arêtes, adjacence ; orienté ou non ; degré d'un sommet.
- Euler : — donc le nombre de sommets de degré impair est pair.
- Matrice d'adjacence : s'il y a une arête ; symétrique graphe non orienté.
- Théorème des puissances : est le nombre de chemins de longueur de à . Pour un graphe non orienté, .
- Connexité : connexe tous les coefficients de sont . La borne vient de ce qu'un chemin minimal ne repasse jamais par un sommet.
- Réseaux sociaux : centralité (degré) et intermédiarité (être sur les chemins courts) ne classent pas pareil. Non exigibles.