COURS SUR LA THEORIE DES GRAPHES - cours

Download Report

Transcript COURS SUR LA THEORIE DES GRAPHES - cours

COURS SUR LA THEORIE
DES GRAPHES
Hao LI
Laboratoire de Recherche en Informatique
UMR8623, CNRS – Université Paris-sud
1. Couplages
Etant donné un graphe simple G(V, E),
- Un couplage est un sous-ensemble M d’arêtes tel
que deux quelconques des arêtes de M sont nonadjacentes.
x
y
-Un sommet x est saturé par un couplage M s’il existe une
arête de M attaché (incident) à x (on écrira x  S ( M ) )
Si x  S ( M ) , on dira que x est insaturé par M.
x
y
x  S (M )
y  S(M)
- Un complage qui sature tous les sommets du graphe
est appel un couplage parfait.
- 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 1941.
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
Li
Roland
Exemple:
Exemples:
• Problème de l’affectation du personnel.
Dans une organisation utilisant p ouvriers x1,x2,…,xp et q postes de
travail y1,y2,…,yq, 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(xi) l’ensemble des postes pour lequel l’ouvrier xi 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
Roland
Pierre
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.
Roland
Pierre
Li
Yannis
Marie
Xiaohong
Evelyne
Sylvie
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.
Molécule
Carbone
C
hydrogène
H
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).
une chaîne alternée reliant daux sommets x et y insaturés.
x
y
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.
Preuve :
(La part 1 de la preuve)
• S’ il existe une chaîne alternée reliant deux sommets
insaturés distincts,
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 M1,
avec |M1|=|M|+1; donc le couplage M n’est pas maximum.
x
y
x
y
(La part 2 de la preuve)
Supposons que M a la propriété de l’énoncé et M1 est un
couplage maximum quelconque.
Définissons un graphe partiel G[F] induit par F
avec F= (M1-M) U (M-M1) .
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 M1.
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 M1 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 M1.
Chaque cycle dans le sous-graphe induit G[F] contient le
même nombre d’arêtes dans M que dans M1.
Alors, |M|=|M1|.
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|.
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.
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|.
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.
S
x
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.
Pour tout y’ ∈ T, y’ saturé. Il existe x’ dans X tel que x’y’ ∈ M.
Alors x’ ∈ S-{x} et T ⊆ N(S) .
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!
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
x3
x4
y1
y2
y3
y4
x5
y5
1. M0=  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 M0 par M1= (M0-E(P) )∪(E(P)-M0)={x2y2} et
aller à l’etape 1.
x1
x2
x3
x4
y1
y2
y3
y4
x5
y5
1. M1={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 M1 par M2= (M1-E(P) )∪(E(P)-M1)={x2y2,x3y3}
et aller à l’étape 1.
x1
x2
x3
x4
y1
y2
y3
y4
x5
y5
1. M2={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 M2 par
M3= (M2-E(P) )∪(E(P)-M2)={x2y2,x3y3,x5y5}
et aller à l’étape 1.
x1
x2
x3
x4
y1
y2
y3
y4
x5
y5
1. M3={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∈M3. 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 2.
2. 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 M3 par M4= (M3 -E(P) )∪(E(P)-M3)={x3y3,x5y5,x1y2,x2y1} et
aller à l’étape 1.
x1
x2
x3
x4
y1
y2
y3
y4
x5
y5
1. M4={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∈M4. 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 2.
2. 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.
De l’algorithme Hongrois, on obtient un algorithme pour la
recherche d’un couplage maximum dans les graphes bipartis.
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.
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 1.
5. 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
Couplage parfait: Condition nécessaire et suffisante
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.
1917-2002
o(G-v)=3>|{v}|
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.
1884-1944
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.
L. Lovász, M.D. Plummer, Matching Theory, Annals
of Discrete Mathematics 29, North-Holland, 1986
(ISBN 0-444-87916-1) - et aussi Akadémia Kiadó,
Budapest, 1986.
TD No 1
Couplage
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 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 3
Deux personnes jouent le jeu suivant sur un graphe. Elles choisissent
chacune leur tour des sommets v1,v2,v3,… de manière à ce que vi soit
adjacent vi-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 4
Pour tout entier k>1, chercher un graphe k-régulier qui ne possède pas un
couplage parfait.
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, Tv a une composante connexe T1 qui n’a pas un couplage parfait et toutes les
autres composantes connexes ont des couplages parfaits. Donc |T1| est impair
et tous les autres composants connexes ont des ordres pairs. On obtient o(Tv)=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 T1,T2,...,Tp les
composantes connexes de T-u avec T1={v}. Donc |Ti| est pair pour tout i>1. Pour
tout sommet x dans Ti, o(Ti-x) ≠0. Si o(Ti-x) ≥2, o(T-x) ≥2. Donc on obtient o(Ti-x)
=1 et par récurrence, Ti possède un couplage parfait Mi.. C’est évidemment que
∪i=2p Mi∪{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 v1,v2,v3,… de manière à ce que vi soit
adjacent vi-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 u0 sommet insaturé par M. Le premier joueur prend u0 à son premier tour.
Le deuxième joueur doit prendre un sommet v1 ∈N(u0). v1 est un sommet
saturé par M car sinon u0v1 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 u1 avec v1u1∈ M. En suite, le deuxième joueur doit
prendre un sommet v2 ∈N(u1 )-{v1}. V2 est saturé car sinon u0v1u1v2 est une
chaîne alternée reliant deux sommets insaturés distincts. Alors le premier
joueur prend u2 avec v2u2∈ M. … Le premier joueur gagne s’il choisit ui avec
viui ∈ M après le deuxième joueur prend vi 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é Kk+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