Graphes bipartis
Un graphe \(G = (N, R)\) est biparti s'il existe une partition \((A, B)\) de \(N\) telle que toutes les arêtes sont incidentes à un nœud de \(A\) et à un nœud de \(B\). On dit que \((A, B)\) est une bipartition de \(G\).
Rappel : un coloriage d'un graphe associe à chaque nœud une couleur, de telle sorte que deux nœuds adjacents ont des couleurs différentes. Un graphe (avec au moins une arête) est biparti si et seulement si son nombre chromatique vaut \(\chi(G) = 2\) : on peut le colorier avec deux couleurs, \(A\) étant l'ensemble des nœuds d'une couleur et \(B\) celui des nœuds de l'autre. C'est aussi le cas si et seulement si le graphe ne contient aucun cycle de longueur impaire (par exemple, \(\chi(C_{2n}) = 2\) et \(\chi(C_{2n+1}) = 3\)).
À gauche, un graphe biparti colorié avec deux couleurs : \(A = \{0, 2, 4\}\) en bleu, \(B = \{1, 3, 5\}\) en orange. À droite, un graphe qui n'est pas biparti : le cycle \((0, 1, 2, 3, 4, 0)\) est de longueur 5.
Couplages
Dans un graphe biparti \((N, R)\), un couplage \(C\) est un sous-ensemble de \(R\) tel que chaque nœud est incident à au plus une arête de \(C\). Un couplage couvrant un ensemble de nœuds \(S \subset N\) est un couplage incident à tous les nœuds de \(S\), et un couplage parfait est un couplage couvrant \(N\) : chaque nœud de \(A\) est relié par une arête de \(C\) à exactement un nœud de \(B\), et inversement. Un couplage parfait ne peut donc exister que si \(|A| = |B|\).
Exemple d'application, l'affectation de tâches : \(A\) est un ensemble d'étudiants, \(B\) un ensemble de projets, et une arête relie chaque étudiant aux projets qui lui conviennent. Un couplage parfait attribue un projet différent à chaque étudiant.
Un couplage parfait (en vert) entre 5 étudiants et 5 projets.
Pour un ensemble de nœuds \(S\), on note \(V(S)\) le voisinage de \(S\) : l'ensemble des nœuds adjacents à un nœud de \(S\).
Théorème de Hall. Un graphe biparti de bipartition \((A, B)\) admet un couplage couvrant \(A\) si et seulement si \(|V(S)| \ge |S|\) pour tout \(S \subset A\). Si de plus \(|A| = |B|\), ce couplage est parfait.
INGInious