Problèmes de décision

publicité
1/25
Problèmes de décision
Johanne Cohen1
1 PRISM/CNRS,
Versailles, France.
1
2/25
Référence
2
Plan
Couplage
Couplage
Définition
Un chemin augmentant/alternant
L’algorithme calculant un couplage maximum
Graphe contracté et chemin augmentant
Algorithme calculant un chemin augmentant de M
L’algorithme d’Edmonds (1965)
Graphes hamiltoniens et euleriens
3/25
3
Plan
Couplage
Couplage
Définition
Un chemin augmentant/alternant
L’algorithme calculant un couplage maximum
Graphe contracté et chemin augmentant
Algorithme calculant un chemin augmentant de M
L’algorithme d’Edmonds (1965)
Graphes hamiltoniens et euleriens
4/25
4
5/25
Définition d’un couplage
Soit un graphe simple non orienté G = (V , E )
Un couplage M est un ensemble d’arêtes deux à deux non
adjacentes :
∀(a, a0 ) ∈ M 2 ,
a 6= a0 ⇒ a ∩ a0 = ∅ .
Terminologies :
• Les sommets incidents à une arête de G sont les sommets
couplés, apparié ou couverts par M.
• Le couplage M sature U, si U est un ensemble des sommets
couplés par M.
5
6/25
Les différents couplages
• Un couplage maximal est un couplage M ayant la propriété
que si une arête e est ajoutée, alors M ∪ {e} n’en est pas.
• Un couplage maximum est un couplage contenant le plus
grand nombre possible d’arêtes.
Un graphe peut posséder plusieurs couplages maximum.
Couplage maximal
Couplage maximum
6
7/25
Un chemin augmentant/alternant
Soit un graphe simple non orienté G = (V , E ).
Soit M un couplage de G .
• Un chemin alternant est un chemin dans lequel les arêtes
appartiennent alternativement à M et à E \M.
• Un chemin augmentant est un chemin alternant qui
commence et se finit par un sommet non-apparié.
Les arêtes en rouge sont dans M.
7
8/25
Propriété
Si M un couplage (arêtes en rouge) ayant un chemin augmentant P,
alors le couplage M 0 = M∆P posséde plus d’arêtes
Remarque : S’il y a un chemin augmentant pour M,
alors M n’est pas maximum.
8
Chemin augmentant et couplage maximun
Theorem [Berge 1957]
Soit M un couplage dans un graphe G . M est maximum si et
seulement si il n’existe pas de chemin augmentant
Preuve :
• Soit M et M 0 des couplages non-maximun et maximun resp.
• Soit H le sous-graphe de G induit par les arêtes de M∆M 0 .
Les composantes connexes de H sont des cycles ou des chemins où
les arêtes de M et M 0 alternent. Donc
le graphe G
9/25
9
Chemin augmentant et couplage maximun
Theorem [Berge 1957]
Soit M un couplage dans un graphe G . M est maximum si et
seulement si il n’existe pas de chemin augmentant
Preuve :
• Soit M et M 0 des couplages non-maximun et maximun resp.
• Soit H le sous-graphe de G induit par les arêtes de M∆M 0 .
Les composantes connexes de H sont des cycles ou des chemins où
les arêtes de M et M 0 alternent. Donc
M = arêtes vertes
le graphe G
9/25
9
Chemin augmentant et couplage maximun
Theorem [Berge 1957]
Soit M un couplage dans un graphe G . M est maximum si et
seulement si il n’existe pas de chemin augmentant
Preuve :
• Soit M et M 0 des couplages non-maximun et maximun resp.
• Soit H le sous-graphe de G induit par les arêtes de M∆M 0 .
Les composantes connexes de H sont des cycles ou des chemins où
les arêtes de M et M 0 alternent. Donc
M 0 = arêtes violettes
le graphe G
9/25
9
Chemin augmentant et couplage maximun
Theorem [Berge 1957]
Soit M un couplage dans un graphe G . M est maximum si et
seulement si il n’existe pas de chemin augmentant
Preuve :
• Soit M et M 0 des couplages non-maximun et maximun resp.
• Soit H le sous-graphe de G induit par les arêtes de M∆M 0 .
Les composantes connexes de H sont des cycles ou des chemins où
les arêtes de M et M 0 alternent. Donc
M 0 = arêtes violettes
M = arêtes vertes
le graphe G
9/25
9
Chemin augmentant et couplage maximun
Theorem [Berge 1957]
Soit M un couplage dans un graphe G . M est maximum si et
seulement si il n’existe pas de chemin augmentant
Preuve :
• Soit M et M 0 des couplages non-maximun et maximun resp.
• Soit H le sous-graphe de G induit par les arêtes de M∆M 0 .
Les composantes connexes de H sont des cycles ou des chemins où
les arêtes de M et M 0 alternent. Donc
M 0 = arêtes violettes
M = arêtes vertes
le graphe H
9/25
9
Chemin augmentant et couplage maximun
Theorem [Berge 1957]
Soit M un couplage dans un graphe G . M est maximum si et
seulement si il n’existe pas de chemin augmentant
Preuve :
• Soit M et M 0 des couplages non-maximun et maximun resp.
• Soit H le sous-graphe de G induit par les arêtes de M∆M 0 .
Les composantes connexes de H sont des cycles ou des chemins où
les arêtes de M et M 0 alternent. Donc
• pour chaque cycle : # d’arêtes de M 0 = # d’arêtes de M.
car les cycles sont de longueur paire.
• pour un des chemins P :# d’arêtes de M 0 > # d’arêtes de M.
M 0 a plus d’arêtes que M
P commence et termine par deux arêtes de M 0 .
Donc P est un chemin augmentant pour M.
9/25
9
Plan
Couplage
Couplage
Définition
Un chemin augmentant/alternant
L’algorithme calculant un couplage maximum
Graphe contracté et chemin augmentant
Algorithme calculant un chemin augmentant de M
L’algorithme d’Edmonds (1965)
Graphes hamiltoniens et euleriens
10/25
10
11/25
Graphe contracté
Soit un graphe simple non orienté G = (V , E ).
La contraction G de l’arête e est le graphe obtenu en fusionnant
ses deux extrémités.
La figure a été prise sur le site de wikipedia.
La contraction d’un chemin est le graphe obtenu en effectuant les
contractions de toutes ses arêtes.
11
Blossom
Soit M un couplage dans un graphe G .
Un cycle B est un blossom si
• il possède 2k + 1 arêtes
• k de ses arêtes sont dans M
12/25
12
Couplage et contraction
Theorem [Edmonds 1965]
Soit M un couplage dans un graphe G .
Supposons que B est un blossom de G .
Soit G 0 le graphe obtenu par la contraction de B dans G .
Soit M 0 le couplage de M projeté dans G 0 .
G 0 a un chemin augmentant pour M 0
si et seulement si
G a un chemin augmentant pour M
13/25
13
14/25
Preuve
G0
Soit vM le sommet de
représentant la contraction de B.
Supposons que le chemin P 0 augmentant pour M 0 contient vB .
1. Si vB est couvert par M 0 , alors
Les figures ont été prises sur le site de wikipedia.
14
14/25
Preuve
G0
Soit vM le sommet de
représentant la contraction de B.
Supposons que le chemin P 0 augmentant pour M 0 contient vB .
1. Si vB n’est pas couvert par M 0 , alors
Les figures ont été prises sur le site de wikipedia.
14
14/25
Preuve
G0
Soit vM le sommet de
représentant la contraction de B.
Supposons que le chemin P 0 augmentant pour M 0 contient vB .
Si P 0 est un chemin augmentant pour M 0 and G , alors
il existe un chemin augmentant pour M dans G .
Et réciproquement.
Les figures ont été prises sur le site de wikipedia.
14
arbre alterné
Soit M un couplage du graphe G
Un arbre T dans G est dit alterné si
1. il existe un unique sommet r non-couvert par M (par
convention : c’est la racine)
2. pour tout sommet v couvert par l’arbre T ,
le chemin de la racine vers v est un chemin alternant
Par convention
• un sommet v est interne si sa distance de la racine est impaire
• un sommet v est externe si sa distance de la racine est paire
15/25
15
16/25
Remarque sur les arbres alternés
Soit M un couplage du graphe G . Soit T un arbre alterné.
Remarque 1 : Soit v un sommet de T .
Si v est adjacent à un sommet w dans G de même type (externe,
ou interne), alors le chemin de v vers w dans T plus l’arête (v , w )
forment un blossom.
Remarque 2 : Soit v un sommet de T .
Si v est adjacent à un sommet w n’appartenant pas à T dans G et
non-couvert par M, alors le chemin de r vers v dans T plus l’arête
(v , w ) forment une chaine augmentante.
16
Algorithme Construction chemin(un graphe G ,un couplage M)
17/25
1. F ← ∅ ; ∀v ∈ V non-marqué ; seules les arêtes ∈ M marquées.
Initialisation des variables
2. retourner ∅ ;
17
Algorithme Construction chemin(un graphe G ,un couplage M)
1. F ← ∅ ; ∀v ∈ V non-marqué ; seules les arêtes ∈ M marquées.
2. pour tout sommet v non-couvert par M faire
créer un arbre Tv composé uniquement de v ; F ← F ∪ Tv
Initialisation des arbres alternés (un par sommet non-couvert)
3. retourner ∅ ;
17/25
17
Algorithme Construction chemin(un graphe G ,un couplage M)
1. F ← ∅ ; ∀v ∈ V non-marqué ; seules les arêtes ∈ M marquées.
2. pour tout sommet v non-couvert par M faire
créer un arbre Tv composé uniquement de v ; F ← F ∪ Tv
3. Tant que ∃v ∈ F non-marqué externe faire
3.1 Tant qu’il existe e = (v , w ) non-marqué de F faire
Traitement pour augmenter la forêt
pour trouver un chemin augmentant
4. retourner ∅ ;
il n’existe aucun chemin augmentant
17/25
17
Algorithme Construction chemin(un graphe G ,un couplage M)
1. F ← ∅ ; ∀v ∈ V non-marqué ; seules les arêtes ∈ M marquées.
2. pour tout sommet v non-couvert par M faire
créer un arbre Tv composé uniquement de v ; F ← F ∪ Tv
3. Tant que ∃v ∈ F non-marqué externe faire
3.1 Tant qu’il existe e = (v , w ) non-marqué de F faire
3.1.1 si w ∈
/ F alors soit x le sommet apparié à w
ajouter (v , w ) et (w , x) à l’arbre contenant v
Rencontre pour la première fois w , insertion de w dans F
4. retourner ∅ ;
17/25
17
Algorithme Construction chemin(un graphe G ,un couplage M)
1. F ← ∅ ; ∀v ∈ V non-marqué ; seules les arêtes ∈ M marquées.
2. pour tout sommet v non-couvert par M faire
créer un arbre Tv composé uniquement de v ; F ← F ∪ Tv
3. Tant que ∃v ∈ F non-marqué externe faire
3.1 Tant qu’il existe e = (v , w ) non-marqué de F faire
3.1.1 si w ∈
/ F alors soit x le sommet apparié à w
ajouter (v , w ) et (w , x) à l’arbre contenant v
3.1.2 sinon
si w est interne alors
(i) si r (v ) 6= r (w ) alors retourner {r (v ) → v , w , → r (w )}
Détection d’un chemin entre deux arbres (remarque 2)
4. retourner ∅ ;
17/25
17
Algorithme Construction chemin(un graphe G ,un couplage M)
1. F ← ∅ ; ∀v ∈ V non-marqué ; seules les arêtes ∈ M marquées.
2. pour tout sommet v non-couvert par M faire
créer un arbre Tv composé uniquement de v ; F ← F ∪ Tv
3. Tant que ∃v ∈ F non-marqué externe faire
3.1 Tant qu’il existe e = (v , w ) non-marqué de F faire
3.1.1 si w ∈
/ F alors soit x le sommet apparié à w
ajouter (v , w ) et (w , x) à l’arbre contenant v
3.1.2 sinon
si w est interne alors
(i)
si
r (v ) 6= r (w ) alors retourner {r (v ) → v , w , → r (w )}
(ii) sinon
B ← blossom formé par e et par v → w dans T
G 0 , M 0 ← contacter B dans G et M
P 0 ← Construction chemin(G 0 , M 0 )
retourner P 0 projeté dans G
Détection d’un blossom (traitement comme la remarque 1)
4. retourner ∅ ;
17/25
17
Algorithme Construction chemin(un graphe G ,un couplage M)
1. F ← ∅ ; ∀v ∈ V non-marqué ; seules les arêtes ∈ M marquées.
2. pour tout sommet v non-couvert par M faire
créer un arbre Tv composé uniquement de v ; F ← F ∪ Tv
3. Tant que ∃v ∈ F non-marqué externe faire
3.1 Tant qu’il existe e = (v , w ) non-marqué de F faire
3.1.1 si w ∈
/ F alors soit x le sommet apparié à w
ajouter (v , w ) et (w , x) à l’arbre contenant v
3.1.2 sinon
si w est interne alors
(i)
si
r (v ) 6= r (w ) alors retourner {r (v ) → v , w , → r (w )}
(ii) sinon
B ← blossom formé par e et par v → w dans T
G 0 , M 0 ← contacter B dans G et M
P 0 ← Construction chemin(G 0 , M 0 )
retourner P 0 projeté dans G
3.1.3 marquer e ; Ne plus traiter e
4. retourner ∅ ;
17/25
17
Algorithme Construction chemin(un graphe G ,un couplage M)
1. F ← ∅ ; ∀v ∈ V non-marqué ; seules les arêtes ∈ M marquées.
2. pour tout sommet v non-couvert par M faire
créer un arbre Tv composé uniquement de v ; F ← F ∪ Tv
3. Tant que ∃v ∈ F non-marqué externe faire
3.1 Tant qu’il existe e = (v , w ) non-marqué de F faire
3.1.1 si w ∈
/ F alors soit x le sommet apparié à w
ajouter (v , w ) et (w , x) à l’arbre contenant v
3.1.2 sinon
si w est interne alors
(i)
si
r (v ) 6= r (w ) alors retourner {r (v ) → v , w , → r (w )}
(ii) sinon
B ← blossom formé par e et par v → w dans T
G 0 , M 0 ← contacter B dans G et M
P 0 ← Construction chemin(G 0 , M 0 )
retourner P 0 projeté dans G
3.1.3 marquer e ; Ne plus traiter e
3.2 marquer v ; Ne plus traiter v
4. retourner ∅ ;
17/25
17
Algorithme Construction chemin(un graphe G ,un couplage M)
1. F ← ∅ ; ∀v ∈ V non-marqué ; seules les arêtes ∈ M marquées.
2. pour tout sommet v non-couvert par M faire
créer un arbre Tv composé uniquement de v ; F ← F ∪ Tv
3. Tant que ∃v ∈ F non-marqué externe faire
3.1 Tant qu’il existe e = (v , w ) non-marqué de F faire
3.1.1 si w ∈
/ F alors soit x le sommet apparié à w
ajouter (v , w ) et (w , x) à l’arbre contenant v
3.1.2 sinon
si w est interne alors
(i)
si
r (v ) 6= r (w ) alors retourner {r (v ) → v , w , → r (w )}
(ii) sinon
B ← blossom formé par e et par v → w dans T
G 0 , M 0 ← contacter B dans G et M
P 0 ← Construction chemin(G 0 , M 0 )
retourner P 0 projeté dans G
3.1.3 marquer e ; Ne plus traiter e
3.2 marquer v ; Ne plus traiter v
4. retourner ∅ ;
17/25
17
18/25
L’algorithme d’Edmonds (1965)
Algorithme Couplage MAX(G , M)
Entrée : un graphe G = (V , E ) , et un couplage de M.
Sortie : un couplage M
1. Trouver un chemin P augmentant de M
2. Si il n’en existe pas alors retourner M
3. sinon retourner Couplage MAX(G , M modifié par P)
Complexité : O(|V |4 ) car au pire
• on construit O(|V |) chemins augmentants
• construire un chemin augmentant nécéssite O(|V | × |E |)
opérations
Il existe des améliorations d’algorithmes de construction de
chemins en O(|E |) opérations.
18
Plan
Couplage
Couplage
Définition
Un chemin augmentant/alternant
L’algorithme calculant un couplage maximum
Graphe contracté et chemin augmentant
Algorithme calculant un chemin augmentant de M
L’algorithme d’Edmonds (1965)
Graphes hamiltoniens et euleriens
19/25
19
Graphe eulérien
Problème : Partant d’un point de la ville, peut-on se promener, en
revenant à son point de départ, en passant une seule fois par tous
les ponts ?
Figure: La ville de Konigsberg
Solution : la ville = graphe où les arêtes sont les ponts.
20/25
20
Graphe eulérien
Cycle eulérien
Un cycle eulérien est un cycle qui passe une et une seule fois par
toutes les arêtes.
Graphe eulérien
Un graphe est un graphe eulérien s’il possède un cycle eulérien.
21/25
21
Graphe eulérien : propriété
Théorème Un graphe est eulérien si et seulement si il est connexe
et tous ses sommets sont de degré pair.
Preuve : Supposons que G est un graphe connexe dont tous les
sommets de degré pair. Par induction sur le nombre d’arêtes
• Si G est un unique sommet isolé, alors il est eulérien.
• Sinon tous les sommets de G sont de degré ≥ 2.
• Ceci implique qu’il existe un cycle sur G .
• Considérons le graphe partiel H sans le cycle.
• Chaque sommets de H sont de degré pair, on applique l’HR.
22/25
22
23/25
Graphe eulérien : algorithme
Théorème Reconnaı̂tre si un algorithme est eulérien peut se faire
en un temps polynomial.
Preuve : Considérons l’algorithme suivant
• Entrée : G = (V , E ) un graphe
• Sortie : Un booléen
• Instructions :
1. Pour tout sommet v de G
1.1 si v est de degré impair alors retourner FAUX
2. retourner VRAI
Complexité :
• O(n2 ) (nombre de sommets × le calcul du degré).
• O(m) (nombre d’arêtes)
23
24/25
Graphe hamiltonien
Cycle hamiltonien
Un cycle hamiltonien est un cycle qui passe une et une seule fois
par tous les sommets.
Graphe hamiltonien
Un graphe est un graphe hamiltonien s’il possède un cycle
hamiltonien.
24
Graphe hamiltonien : algorithme
Théorème Savoir si un cycle est hamiltonien peut se faire en un
temps polynomial.
Preuve : Considérons l’algorithme suivant
• Entrée : un graphe G = (V , E ), un cycle C = (c0 , . . . , ck )
• Sortie : Un booléen
• Instructions :
1. Pour tout i allant de 0 à k faire
• Si (ci , ci+1 ) n’est pas une arête alors retourner FAUX
2. Pour tout sommet v faire,
• si ¬ (v apparait une seule fois dans C ) alors retourner FAUX
3. retourner VRAI
Complexité :
• O(m) (nombre d’arêtes)
25/25
25
Téléchargement