Couplage maximal dans un graphe biparti
1. Graphes bipartis
Les graphes bipartis sont une classe de graphes utiles pour modéliser des situations pratiques.
Notation : Si
Définition (graphe biparti)
Un graphe
On rappelle que partition signifie :
: et recouvrent tout l'ensemble à partitionner : les parties et sont disjointes
On peut remarquer que lorsque un graphe est biparti, il peut admettre plusieurs bipartitions valides.
Dans les cas pratiques, la bipartition considérée est souvent imposée par la modélisation du problème. Dans ce cas, on décrit un graphe biparti en donnant la bipartition à considérer, on pourra par exemple écrire : soit
Exemple : un graphe biparti
Exemple : Vocabulaire et textes
On peut considérer le graphe non orienté biparti
Exemples en biologie, en écologie et en médecine
L'image suivante montre plusieurs exemples de modélisations à l'aide de graphes bipartis, en biologie, en écologie et en médecine.

Parfois, un problème traite de graphe biparti sans le dire. Il existe en effet d'autres manières de parler de graphes bipartis sans les nommer. C'est ce que montre la proposition suivante.
Proposition
Soit
est biparti est 2-colorable n'admet aucun cycle de longueur impaire
Démonstration
- (1) implique (2) : il suffit de colorer tous les sommets de
en bleu et tous les sommets de en rouge - (2) implique (3) : si on considère par l'absurde un cycle de longueur impaire
de qui est 2-coloré, alors par imparité, la couleur de est égale à celle de ce qui est absurde. - (3) implique (1) : on travaille composante connexe par composante connexe. Dans une composante connexe, on réalise un parcours de graphe en largeur depuis un sommet
, tous les sommets situés à distance paire de sont placés dans et ceux à distance impaire dans . S'il existe un arc entre et alors et font partie d'un cycle de longueur impaire : c'est absurde.
Cette proposition nous fait aussi remarquer que les graphes acycliques (les arbres et les forêts) sont des graphes bipartis.
2. Couplages
Définition (incidence)
Soit
Définition (couplage)
Soit
Exemple : couplage dans un graphe non orienté
Dans le graphe non orienté ci-dessous,
Cas des graphes bipartis
Exemple : le bal
On considère un bal où il y a
Soit
- Si
alors - Sinon
Exercice
- Écrire une fonction en langage C vérifiant si un couplage représenté avec le codage proposé ci-dessus correct :
Dans ce prototype
MAX
designe une constante supérieure à etadj
est un tableau bi-dimensionnel stockant la matrice d'adjacence du graphe. On suppose que les sommets de sont les sommets numérotés de à et les sommets de les sommets de à . - Que dire du problème de décision dont l'instance est un graphe biparti et une constante entière
, et la question est : existe-t-il un couplage de cardinal ?
3. Couplages maximaux
Je donne la définition générale d'un couplage maximal mais le programme précise qu'on se place dans le cadre des graphes bipartis.
Définition (couplage maximal)
Soit
On dira que
Exemple : crise médicale
Une crise médicale surgit dans laquelle
Attention !
Un couplage peut être maximal au sens de l'inclusion sans être un couplage maximal.
A - Recherche exhaustive
Soit
On peut améliorer l'exploration en élagant les branches dès que deux arêtes choisies dans le couplage sont incidentes à un même sommet. Cependant, la méthode est évidemment très coûteuse dans le pire cas :
B - Chemins augmentants
Les chemins augmentants permettent d'obtenir une méthode efficace pour la recherche d'un couplage maximal.
Définition (chemin alternant)
Soit
Remarque
Dans la définition de chemin alternant, l'alternance peut commencer ou non par une arête dans
Définition (chemin augmentant)
Soit
est un chemin alternant relativement à commence et termine par un sommet qui n'est pas apparié dans le couplage (il n'existe pas d'arête du couplage incidente à ce sommet).
Remarque
Ainsi un chemin est augmentant est un alternant qui commence et finit par un sommet non apparié. Cela implique que l'alternance commence et finit par une arête non choisie et que sa longueur est impaire.
Dans la suite on utilisera l'opérateur de différence symétrique entre deux ensembles :
Pour simplifier les notations, on confondra par abus un chemin avec son ensemble d'arêtes ce qui permettra aussi d'appliquer cet opérateur sur les chemins.
Proposition
Soit
Démonstration
- Comme les sommets de départ et d'arrivée ne sont pas appariés et que
est alternant, contient nécessairement sommets dans et sommets dans . Ainsi contiendra une arete de plus que (on retire arêtes et on en ajoute , d'ou le cardinal . - Il faut maintenant vérifier que c'est bien un couplage. Soit
une arete dans .- Si
: alors (x, y) n'est pas incidente à une autre arête de . En effet, soit ce qui est exclus car est un couplage, soit et alors chacune des extremités de appartiennent à un arc de qui est dans donc différent de , c'est exclus car est un couplge. - Si
: dans le chemin , il apparaît le sous-chemin tel que , et . Soit une arête de incidente à (par exemple) qui n'est pas dans . Alors , c'est absurde car et seraient incidentes à un même sommet et que est un couplage.
- Si
Cette proposition est intéressante car elle donne une méthode pour améliorer un couplage
Théorème (Lemme de Berge, 1953)
Un couplage
Démonstration
- La proposition précédente montre le sens direct par contraposition
- Montrons le sens réciproque : soit
un graphe et un couplage n'admettant pas de chemin augmentant. Supposons par l'absurde que ne soit pas maximal et notons un meilleur couplage. On considère alors le sous-graphe de dont l'ensemble des arêtes est . Dans ce graphe un sommet ne peut être incident qu'à au plus deux arêtes : une de et une de , les composantes connexes de sont donc de trois types possibles :- Un sommet isolé
- Un cycle alternant entre des arêtes de
et de - Un chemin alternant entre des arêtes de
et de de longueur impaire.
- Puisque
est plus grand que , il en découle que contient une composante connexe possédant plus d'arêtes de que d'arêtes de . Cette composante ne peut être que du troisième type : un chemin alternant qui commence par un sommet non apparié dans et qui termine par un sommet non apparié dans . Donc c'est un chemin augmentant, c'est absurde.
On obtient donc une méthode algorithmique pour construire un couplage de cardinal maximal :
- Initialiser avec le couplage vide
- Tant qu'il existe un chemin augmentant
, faire - Retourner
C - Calcul des chemins augmentants avec le graphe résiduel
Dans le cas d'un graphe biparti, la recherche de chemins augmentant est facilitée. Considérons l'exemple suivant :

On souhaite calculer un chemin augmentant c'est-à-dire : qui commence par un sommet non apparié de
- On ajoute un sommet de départ
et un sommet cible . - Le sommet de départ
pointe sur chaque sommet non apparié de - Les sommets non appariés de
pointent sur le sommet cible - Si
on a ajoute un arc pour autoriser le passage de gauche à droite - Si
on ajoute un arc pour autoriser le passage de droite à gauche
1ère itération
Voici initialement (

Un chemin de
Voici un exemple de chemin de

Ainsi, ce chemin augmentant nous donne le nouveau couplage

2e itération
On trouve maintenant le chemin améliorant

qui conduit au couplage

3e itération
On trouve maintenant le chemin améliorant

qui conduit au couplage

4e itération
Enfin, on trouve maintenant le chemin améliorant

qui conduit au couplage

Il n'y a maintenant plus de chemin améliorant. Le couplage obtenu est alors un couplage maximal d'après le théorème de Berge.
Exercice (marché de l'emploi)
Cinq personnes (à gauche sur la figure) sont à la recherche d'un emploi. Il y a aussi cinq offres d'emploi (à droite sur la figure) disponibles. On dessine une arête entre une personne et un emploi lorsque la personne est qualifiée pour effectuer ce travail. Combien de personnes au total pourra-t-on employer au maximum ?
Complexité
Cet algorithme effectue au plus
Si