Master MFPI — Complexité algorithmique (Mariou) — Automne 2015 3
rempli son rôle.
Mais on ne doit pas dire que l’on a “résolu le problème pour ce graphe”. Cela n’a pas de sens car une
résolution est une méthode générale qui s’applique à toutes les instances et trouver la réponse associée à
une instance particulière, ce n’est pas résoudre le problème.
Déroulement de l’algorithme pour le graphe proposé.
Le principe est de se donner un sommet au départ (on choisit grâce au numéro : le sommet 0), puis de
colorier de proche en proche.
Cela signifie qu’on colorie les voisins du sommet examiné (de la couleur opposé) et qu’on tient à jour une
liste des sommets coloriés mais pas encore examinés. Lorsqu’on examine un nouveau sommet, c’est parce
qu’il est sur notre liste, et on commence par vérifier qu’il n’a pas été colorié des deux couleurs.
examiné couleur(s) voisins liste L liste M bleus rouges
attribuée(s) (à examiner) (examinés)
initialisation – 0 0
0 bleu 1, 3, 4 1, 3, 4 0 1, 3, 4
1 rouge 0, 2, 5 3, 4, 2, 5 0, 1 2, 5
3 rouge 0, 2, 7 4, 2, 5, 7 0, 1, 3 7
4 rouge 0, 5, 7 2, 5, 7 0, 1, 3, 4
2 bleu 1, 3, 6 5, 7, 6 0, 1, 3, 4, 2 6
5 bleu 1, 4, 6 7,6 0, 1, 3, 4, 2, 5
7 bleu 3, 4, 6 6 0, 1, 3, 4, 2, 5, 7
6 2, 5, 7 0, 1, 3, 4, 2, 5, 7, 6
Attention, l’ordre donné par les numéros est à considérer lorsqu’on liste les voisins du sommet examinés
(par ex. les voisins de 0 sont 1, 3 et 4, dans cet ordre). Mais pour savoir dans quel ordre on examine
les sommets, il faut s’en tenir à la liste fabriqué au fur et à mesure. Car si on établit à l’avance l’ordre
d’examen des sommets, cela signifie qu’on ne tient pas compte de la coloration progressive (de proche en
proche) des sommets. En procédant de cette façon, on peut être conduit à des impossibilités abusives : si
on avait colorier de proche en proche, on aurait pu finir la coloration.
Exemple. Graphe 0 — 2 — 3 — 1. Si on examine dans l’ordre des numéros, on pourra attribuer la même couleur aux
sommets 0 et 1, ce qui conduira à une impasse. Tandis que de proche en proche, on colorie 0 d’une couleur, 2 de l’autre,
puis on examine 2 (et pas 1) et donc on colorie 3 de la seule couleur possible, puis on examine 3, et on colorie 1 de la seule
couleur possible, puis on examine 1.
5L’algorithme, vu en cours, qui résout efficacement le problème 2-SAT, associe à la famille de clauses
considérée un graphe orienté, construit selon des règles précises.
Il faut rappeler quels sont ses sommets et ses arcs, en expliquant comment on les obtient.
Une fois ce graphe fabriqué, on calcule ses composantes fortement connexes selon une méthode qu’il faut
un peu décrire. Cela donne :
5a Quatre variables propositionnelles a,b,c,ddonc huit sommets pour le graphe associé : a,¯a,b,¯
b,c,¯c,
d,¯
d. Et chaque clause du type α∨βfournit deux arcs ¯α→βet ¯
β→α. On a donc ici 14 arcs :
clause arcs clause arcs
a∨ ¬b¯a→¯
b b →a b ∨ ¬c¯
b→¯c c →b
¬a∨c a →c¯c→¯a¬b∨d b →d¯
d→¯
b
¬a∨ ¬d a →¯
d d →¯a c ∨ ¬d¯c→¯
d d →c
a∨d¯a→d¯
d→a
liste (alphabétique) des arcs
de avers c,¯
dde ¯avers ¯
b,d
de bvers a,dde ¯
bvers ¯c
de cvers bde ¯cvers ¯a,¯
d
de dvers ¯a,cde ¯
dvers a,¯
b
Attention, par construction du graphe, on n’a jamais d’arc direct de uvers ¯uou l’inverse, mais il peut
exister un chemin orienté.
Calcul des composantes fortement connexes.
Pour le sommet a. On calcule, grâce aux arcs D(a), l’ensemble des sommets qu’on peut atteindre en partant
de a(i.e. les sommets utq il existe un chemin orienté de avers u) et l’ensemble des sommets d’où on peut
partir pour arriver à a(i.e. les sommets utq il existe un chemin orienté de uvers a).