COURS SUR LA THEORIE DES GRAPHES Hao LI Laboratoire de Recherche en Informatique UMR8623, CNRS – Université Paris-sud
- Un couplage est un sous-ensemble M d’arêtes tel que deux quelconques des arêtes de M sont non- adjacentes. 1. Couplages x y Etant donné un graphe simple G(V, E),
- Un complage qui sature tous les sommets du graphe est appel un couplage parfait. x y -Un sommet x est saturé par un couplage M s’il existe une arête de M attaché (incident) à x (on écrira ) Si, on dira que x est insaturé par M. y S(M)
- Considérons un couplage M dans G(V,E); on appelle chaîne alternée une chaîne simple (c’est-à-dire l’utilisant pas deux fois la même arêtes) dont les arêtes sont alternativement dans M et dans E – M. x z
Exemple: La bataille d’Angleterre en Certains pilotes ne pouvaient pas faire équipe dans le même avion biplace en raison de différences de langues ou d’habitudes. Avec ces contraintes, quel est le nombre maximum d’avions que l’on peut utiliser simultanément? Il s’agit de rechercher le couplage maximum d’un graphe dont les sommets représentent les pilotes, deux sommets étant joints si les pilotes correspondants peuvent faire équipe. Pierre Roland Li
Exemples: Problème de l’affectation du personnel. Dans une organisation utilisant p ouvriers x 1,x 2,…,x p et q postes de travail y 1,y 2,…,y q, chaque ouvrier est qualifié pour un ou plusieurs de ces postes. Est-il possible d’affecter chacun à un poste pour lequel il est qualifié? Si l’on désigne par N(x i ) l’ensemble des postes pour lequel l’ouvrier x i se trouve qualifié, le problème revient à considérer un graphe bibartit (X ∪ Y, E) et à chercher si le couplage maximum sature tous les sommets de X Pierre Roland Li Yannis Poste 1 Poste 2 Poste 3 Poste 4 Exemple:
Exemples: Problème des collégiens et des collégiennes. Dans un collège mixte, toute jeune fille a k boy-friends, et tout garçon a k girl-friends; Est-il possible de faire danser simultanément chaque jeune fille avec un de ses boy-friends, et chaque garçon avec une de ses girl-friends? La réponse est OUI pour k>0! Considérons un graphe bibartit (X ∪ Y, E) tel que chaque sommet a exactement k voisin. Chercher un couplage qui sature tous les sommets de X et tous les sommets de Y. Pierre Roland Li Yannis Marie Xiaohong Evelyne Sylvie Exemple:
A hexagonal is a connected plane graph without cut vertices, in which each interior face is a regular hexagon of side of length one. The carbon--atom skeleton of a benzenoid hydrocarbon is a hexagonal system. C Carbonehydrogène H Molécule
Problèmes: Couplage maximum Couplages disjoints; décomposer les arêtes d’un graphe aux couplages disjoints. Dans un graphe coloré, cherche un couplage maximum tel que deux arêtes du couplage ait des couleurs distinctes. Etant donné un couplage M, existe il un cycle C tel que M ⊆ E(C).
Théorème de Berge (1957). Un couplage M est maximum si et seulement si il n’existe pas de chaîne alternée reliant deux sommets insaturés distincts. une chaîne alternée reliant daux sommets x et y insaturés. x y
S’ il existe une chaîne alternée reliant deux sommets insaturés distincts , Preuve : en interchangeant les arêtes dans M et les arêtes dans E-M le long de cette chaîne, on obtient un nouveau couplage M 1, avec |M 1 |=|M|+1; donc le couplage M n’est pas maximum. x y x y (La part 1 de la preuve)
Supposons que M a la propriété de l’énoncé et M 1 est un couplage maximum quelconque. Définissons un graphe partiel G[F] induit par F avec F= (M 1 -M) U (M-M 1 ). Dans le graphe partiel G[F], le degré de chaque sommet est soit 1, soit 2, car il est adjacent au plus à une arêtes de M et au plus à une arêtes de M 1. (La part 2 de la preuve) Chaque composant connexe est soit un cycle soit un chemin.
Il n’existe pas une chaîne alternée de M reliant deux sommets insaturés distincts. (par la condition de la théorème) Il n’existe pas une chaîne alternée de M 1 reliant deux sommets insaturés distincts. (par la part 1 de la preuve) Chaque chemin dans le sous-graphe induit G[F] contient le même nombre d’ arêtes dans M que dans M 1. Chaque cycle dans le sous-graphe induit G[F] contient le même nombre d’arêtes dans M que dans M 1. Alors, |M|=|M 1 |. M est aussi un couplage maximum!
Couplages dans les graphes bipartis Un graphe (dénoté par G(X ∪ Y, E)) est biparti si l’ensemble de ses sommets peut être partitionné en deux classes X et Y de sorte que deux sommets de la même classe ne soient jamais adjacents. Théorème de Hall (1935). Un graphe biparti G(X ∪ Y, E)) admet un couplage M qui sature tous les sommets de X si et seulement si pour tout S ⊆ X quelconque, |N(S)| ≥ |S|.
S N(S) Car les sommets de S sont saturés par M aux sommets distincts dans N(S), alors on a |N(S)|≥ |S|. Preuve. Supposons qu’il y a un couplage M qui sature tous les sommets de X et que S est un sous ensemble de X.
Soit G(X ∪ Y, E) un graphe biparti tel que pour tout S ⊆ X quelconque, |N(S)|≥ |S|. A l’inverse, supposons que G n’a pas un couplage qui sature tous les sommets de X. Soit M un couplage maximum de G. Par hypothèse, M ne sature pas tous les sommets de X. Soit x un sommet de X, qui est insaturé par M. Soit Z l’ensemble de tous les sommets qui est connecté à x par une chaîne alternée de M. Comme M est un couplage maximum, par le théorème de Berge, on a que x est le seul sommet insaturé dans Z.
Nous posons que S=Z∩X et T=Z∩Y. x S T=N(S)
Les sommets de S-{x} sont saturés par M. Pour tout x’ ∈ S-{x} et y’ ∈ Y tels que x’y’ ∈ M, y’ est le sommet juste devant x’ dans une chaîne alternée à partir de x. Alors y’ ∈ T. Il implique que |T|=|S|-1. Parce que tout sommet de N(S) est connecté à x par une chaîne alternée, on obtient N(S) ⊆ T. Alors, N(S)=T. Donc |N(S)|=|T|=|S|-1 < |S|. C’est une contraduction! Pour tout y’ ∈ T, y’ saturé. Il existe x’ dans X tel que x’y’ ∈ M. Alors x’ ∈ S-{x} et T ⊆ N(S).
Corollaire. Tout graphe biparti k-régulier avec k>0 possède un couplage parfait. Preuve. - G(X ∪ Y, E)) est k-régulier → k|X|=|E|=k|Y| → |X|=|Y|. - Pour tout S ⊆ X quelconque, dénoté par E’ l’ensemble des arêtes incidents aux sommets de S et dénoté par E” l’ensemble des arêtes incidents aux sommets de N(S). - Alors E’ ⊆ E” et k|N(S)|=|E”|≥|E’|=k|S|. On a |N(S)|≥ |S|. - D’après le théorème de Hall (1935), G(X ∪ Y, E)) admet un couplage M qui sature tous les sommets de X. - Car |X|=|Y|, M est un couplage parfait.
Algorithmes pour la recherche du couplage qui sature tous les sommets de X. The Hungarian method (Egerváry, 1931) Etant donné un graphe biparti, commençons par un couplage quelconque M. 1. Si M sature tous les sommets de X, stop. Sinon, prendre un sommet u de X insaturé par M. Poser S={u} et T= 2. Si N(S)=T, alors |N(S)|<|S| car |T|=|S|-1. Par le Théorème de Hall, il n’y a pas un couplage qui sature tous les sommets de X. Stop. Si N(S)≠T, prendre un sommet y ∈ N(S)-T. 3. Si y est saturé, soit yz ∈ M. Remplacer S par S ∪ {z} et T par T ∪ {y}. Aller à l’étape 2. ( Après ce remplacement, on garde |T|=|S|-1 !) Sinon, soit P (u,y) une chaîne alternée connectant u et y. Remplacer M par M*=M △ E(P)= (M-E(P) ) ∪ (E(P)-M) et aller à l’etape 1.
Exemple x1 x2 x3x4x5 y1 y2y3y4y5 1. M 0 = qui ne sature pas tous les sommets de X. Prendre x2 ∈ X insaturé. Poser S={x2} et T=. 2. Car N(S)={y1,y2,y4,y5}≠T, prendre un sommet y2 ∈ N(S)-T. 3. y2 n’est pas saturé. P =x2y2 est une chaîne alternée connectant x2 et y2. Remplacer M 0 par M 1 = (M 0 -E(P) ) ∪ (E(P)-M 0 )={x2y2} et aller à l’etape 1.
x1x2 x3 x4x5 y1 y2y3y4y5 1. M 1 ={x2y2} qui ne sature pas tous les sommets de X. Prendre x3 ∈ X insaturé. Poser S={x3} et T=. 2. Car N(S)={y2,y3}≠T, prendre un sommet y3 ∈ N(S)-T. 3. y3 n’est pas saturé. P =x3y3 est une chaîne alternée connectant x3 et y3. Remplacer M 1 par M 2 = (M 1 -E(P) ) ∪ (E(P)-M 1 )={x2y2,x3y3} et aller à l’étape 1.
x1x2x3x4 x5 y1 y2y3y4y5 1. M 2 ={x2y2,x3y3} qui ne sature pas tous les sommets de X. Prendre x5 ∈ X insaturé. Poser S={x5} et T= 2. Car N(S)={y4,y5}≠T, prendre un sommet y5 ∈ N(S)-T. 3. y5 n’est pas saturé. P =x5y5 est une chaîne alternée connectant x5 et y5. Remplacer M 2 par M 3 = (M 2 -E(P) ) ∪ (E(P)-M 2 )={x2y2,x3y3,x5y5} et aller à l’étape 1.
x1 x2x3x4x5 y1 y2y3y4y5 1. M 3 ={x2y2,x3y3,x5y5} qui ne sature pas tous les sommets de X. Prendre x1 ∈ X insaturé. Poser S={x1} et T= 2. Car N(S)={y2,y3}≠T, prendre un sommet y2 ∈ N(S)-T. 3. y2 est saturé et x2y2 ∈ M 3. Remplacer S par S ∪ {x2}={x1,x2} et T par T ∪ {y2}={y2}. Aller à l’étape 2. ( Après ce remplacement, on garde |T|=|S|-1 !) 2. N(S)={y1,y2,y3,y4,y5} ≠T= {y2}. On prend un sommet y3 ∈ N(S)-T. 3. y3 est saturé et x3y3 ∈ M3. Remplacer S par S ∪ {x3}={x1,x2,x3} et T par T ∪ {y3}={y2,y3}. Aller à l’étape N(S)={y1,y2,y3,y4,y5} ≠T= {y2,y3}. On prend un sommet y1 ∈ N(S)-T. 3. y1 n’est pas saturé. P =x1y2x2y1 est une chaîne alternée connectant x1 et y1. Remplacer M 3 par M 4 = (M 3 -E(P) ) ∪ (E(P)-M 3 )={x3y3,x5y5,x1y2,x2y1} et aller à l’étape 1.
x1x2x3x4x5 y1 y2y3y4y5 1. M 4 ={x3y3,x5y5,x1y2,x2y1} ne sature pas tous les sommets de X. Prendre x4 ∈ X insaturé. Poser S={x4} et T= 2. Car N(S)={y2,y3}≠T, prendre un sommet y2 ∈ N(S)-T. 3. y2 est saturé. y2 est saturé et x1y2 ∈ M 4. Remplacer S par S ∪ {x1}={x1,x4} et T par T ∪ {y2}={y2}. Aller à l’étape 2. ( Après ce remplacement, on garde |T|=|S|-1 !) 2. N(S)={y2,y3} ≠T= {y2}. On prend un sommet y3 ∈ N(S)-T. 3. y3 est saturé et x3y3 ∈ M3. Remplacer S par S ∪ {x3}={x1,x3,x4} et T par T ∪ {y3}={y2,y3}. Aller à l’étape N(S)={y2,y3}=T. alors |N(S)|<|S| car |T|=|S|-1. Par le Théorème de Hall, il n’y a pas un couplage qui sature tous les sommets de X. Stop.
Théorème de Berge (1957). Un couplage M est maximum si et seulement si il n’existe pas une chaîne alternée reliant deux sommets insaturés distincts. De l’algorithme Hongrois, on obtient un algorithme pour la recherche d’un couplage maximum dans les graphes bipartis. Donc, M est un couplage maximum ssi l’il n’existe pas une chaîne alternée reliant un sommet quelconque insaturé de X et l’un l’autre sommets insaturé de Y.
D’algorithme Hongrois Commencer par un couplage quelconque M. 1. Si M sature tous les sommets de X, stop. Sinon, prendre un sommet u de X insaturé par M. Poser S={u} et T= 2. Si N(S)=T, alors |N(S)|<|S| car |T|=|S|-1. Par le Théorème de Hall, il n’y a pas un couplage qui sature tous les sommets de X. Stop. Si N(S)≠T, prendre un sommet y ∈ N(S)-T. 3. Si y est saturé, soit yz ∈ M. Remplacer S par S ∪ {z} et T par T ∪ {y}. Aller à l’étape 2. Sinon, soit P (u,y) une chaîne alternée connectant u et y. Remplacer M par M*=M △ E(P)= (M-E(P) ) ∪ (E(P)-M) et aller à l’étape 1. Commencer par un couplage quelconque M. 1 Poser S= et T= 2.Si X-S est saturé, stop. Sinon, prendre un sommet u de X-S insaturé par M. Remplacer S par S ∪ {u}. 3. Si N(S)=T, aller à l’étape 5. Si N(S)≠T, prendre un sommet y ∈ N(S)-T. 4. Si y est saturé, soit yz ∈ M. Remplacer S par S ∪ {z} et T par T ∪ {y}. Aller à l’étape 3. Sinon, soit P (u,y) une chaîne alternée connectant u et y. Remplacer M par M*=M △ E(P)= (M-E(P) ) ∪ (E(P)-M) et aller à l’étape Si X-S=, stop; Sinon aller à l’étape 2
Un bon algorithme pour la recherche du couplage maximum dans tout graphe a été donné par Edmonds en 1965.
Quelques résultats importants Théorème de Tutte (1947). Un graphe admet un couplage parfait si et seulement si o(G-S) ≤|S| pour tout S ⊆ V. Où o(G-S) est le nombre de composantes connexes de G-S d’ordre impair. Couplage parfait: Condition nécessaire et suffisante
v o(G-v)=3>|{v}|
Couplage maximum et recouvrement minimum Definition. Etant donné un graphe G(V,E), on appelle recouvrement une famille F des sommets telle que toute arête e ∈ E soit l’extrémité d’au moins un sommet de F. Théorème de Konig (1931). Pour un graphe biparti G(X ∪ Y, E), le nombre maximum d’ arêtes d’ un couplage est égal à le nombre de sommets dans un recouvrement minimum
La théorie du couplage est très riche, voir par exemple le livre de Lovász & Plummer.Lovász & Plummer L. Lovász, M.D. Plummer, Matching Theory, Annals of Discrete Mathematics 29, North-Holland, 1986 (ISBN ) - et aussi Akadémia Kiadó, Budapest, 1986.
TD No 1 Couplage Exercice 2 Montrer qu’un arbre a au plus un couplage parfait. Montrer qu’un arbre T a un couplage parfait ssi o(T-v)=1 pour tout sommet v Exercice 4 Pour tout entier k>1, chercher un graphe k-régulier qui ne possède pas un couplage parfait. Exercice 3 Deux personnes jouent le jeu suivant sur un graphe. Elles choisissent chacune leur tour des sommets v 1,v 2,v 3,… de manière à ce que v i soit adjacent v i-1 pour i>0. Le dernier joueur capable de choisir un sommet convenable gagne. Montrer que le premier joueur a une stratégie gagnante si et seulement si le graphe n’a pas de couplage parfait. Exercice 1 Dans le graphe ci-contre : a) trouver deux couplages b) trouver un couplage parfait c) donner un couplage à 3 arêtes et une chaîne alternée relativement à ce couplage.
Exercice 5* Soit G un graphe k-régulier (k-1)-arête-connexe. Alors G possède un couplage parfait. o(G-S) est le nombre de composantes connexes de G-S d’ordre impair.
Exercice 1 Dans le graphe ci-contre : a) trouver deux couplages b) trouver un couplage parfait b) donner un couplage à 3 arêtes et une chaîne alternée relativement à ce couplage.
Exercice 2 Montrer qu’un arbre a au plus un couplage parfait. Si un arbre T a deux couplages parfaits distincts M’ et M”, -alors le degré de tout sommet dans (M’-M”) ∪ (M”-M’) est soit 0 soit 2 -et au moins un sommet de degré 2. Il implique que (M’-M”) ∪ (M”-M’) admet un cycle, une contraduction.
Montrer qu’un arbre T a un couplage parfait ssi o(T-v)=1 pour tout sommet v Supposons que T est un arbre avec un couplage parfait M. Pour un sommet v, T- v a une composante connexe T 1 qui n’a pas un couplage parfait et toutes les autres composantes connexes ont des couplages parfaits. Donc |T 1 | est impair et tous les autres composants connexes ont des ordres pairs. On obtient o(T- v)=1. Par récurrence sur |T|=2n. Le résultat est vraie pour |T|=2. Supposons maintenant le résultat est vraie pour tout |T|≤2(k-1). Démontrons le pour p. Soit v un sommet avec d(v)=1 et u est le voisin de v. Soit T 1,T 2,...,T p les composantes connexes de T-u avec T 1 ={v}. Donc |T i | est pair pour tout i>1. Pour tout sommet x dans T i, o(T i -x) ≠0. Si o(T i -x) ≥2, o(T-x) ≥2. Donc on obtient o(Ti-x) =1 et par récurrence, T i possède un couplage parfait M i.. C’est évidemment que ∪ i=2 p M i ∪ {uv} est un couplage parfait de T.
Exercice 3 Deux personnes jouent le jeu suivant sur un graphe. Elles choisissent chacune leur tour des sommets v 1,v 2,v 3,… de manière à ce que v i soit adjacent v i-1 pour i>0. Le dernier joueur capable de choisir un sommet convenable gagne. Montrer que le premier joueur a une stratégie gagnante si et seulement si le graphe n’a pas de couplage parfait. Supposons que le graphe possède un couplage parfait M. Après que le premier joueur choisit un sommet v, le second joueur à son tour prend le sommet u avec uv ∈ M. Le second joueur est toujours gagnant! Donc le premier joueur a une stratégie gagnante seulement si le graphe n’a pas de couplage parfait. Supposons que un couplage maximum M n’est pas parfait dans le graphe. Soit u 0 sommet insaturé par M. Le premier joueur prend u 0 à son premier tour. Le deuxième joueur doit prendre un sommet v 1 ∈ N(u 0 ). v 1 est un sommet saturé par M car sinon u 0 v 1 est une chaîne alternée reliant deux sommets insaturés distincts et c’est une contradiction par le théorème de Berge. Alors le premier joueur prend u 1 avec v 1 u 1 ∈ M. En suite, le deuxième joueur doit prendre un sommet v 2 ∈ N(u 1 )-{v 1 }. V 2 est saturé car sinon u 0 v 1 u 1 v 2 est une chaîne alternée reliant deux sommets insaturés distincts. Alors le premier joueur prend u 2 avec v 2 u 2 ∈ M. … Le premier joueur gagne s’il choisit u i avec v i u i ∈ M après le deuxième joueur prend v i pour i>0.
Exercice 4 Pour tout entier k>1, chercher un graphe k-régulier qui ne possède pas un couplage parfait. Pour K pair, on prend le graphe complexé K k+1. Il a un nombre impair de sommets et donc il n’a pas un couplage parfait. Pour k impair, Définir un graphe G comme suit: K=5 K copies