INFO-F-302, Cours d’Informatique Fondamentale Logique pour l’Informatique La Logique Propositionnelle INFO-F-302, Cours d’Informatique Fondamentale Logique pour l’Informatique La Logique Propositionnelle Le Problème SAT Le Problème SAT 171 Rappels Satisfaisabilité Soit P un ensemble de propositions. Une formule propositionnelle sur P est satisfaisable si Le Problème SAT INFO-F-302, Cours d’Informatique Fondamentale Logique pour l’Informatique La Logique Propositionnelle INFO-F-302, Cours d’Informatique Fondamentale Logique pour l’Informatique La Logique Propositionnelle Le Problème SAT 171 Rappels de la logique Le Problème SAT 171 Rappels Satisfaisabilité Satisfaisabilité Soit P un ensemble de propositions. Une formule de la logique propositionnelle sur P est satisfaisable si il existe une interprétation V : P ! {1, 0} telle que V |= . Soit P un ensemble de propositions. Une formule de la logique propositionnelle sur P est satisfaisable si il existe une interprétation V : P ! {1, 0} telle que V |= . Par exemple : p, ¬p, p _ (¬p ! q) mais pas p ^ ¬p, ni ¬(p ! p). Validité Une formule sur P est valide si INFO-F-302, Cours d’Informatique Fondamentale Logique pour l’Informatique INFO-F-302, Cours d’Informatique Fondamentale Logique pour l’Informatique La Logique Propositionnelle La Logique Propositionnelle Le Problème SAT 171 Le Problème SAT Rappels 171 Rappels Satisfaisabilité Satisfaisabilité Soit P un ensemble de propositions. Une formule de la logique propositionnelle sur P est satisfaisable si il existe une interprétation V : P ! {1, 0} telle que V |= . Soit P un ensemble de propositions. Une formule de la logique propositionnelle sur P est satisfaisable si il existe une interprétation V : P ! {1, 0} telle que V |= . Par exemple : p, ¬p, p _ (¬p ! q) mais pas p ^ ¬p, ni ¬(p ! p). Par exemple : p, ¬p, p _ (¬p ! q) mais pas p ^ ¬p, ni ¬(p ! p). Validité Une formule sur P est valide siV |= Validité pour toute interprétation V . Une formule sur P est valide siV |= pour toute interprétation V . Par exemple : p _ ¬p, p ! p, p ! q ! p sont valides, mais pas p, ni ¬p. INFO-F-302, Cours d’Informatique Fondamentale Logique pour l’Informatique La Logique Propositionnelle INFO-F-302, Cours d’Informatique Fondamentale Logique pour l’Informatique La Logique Propositionnelle Le Problème SAT 172 Problème SAT Définition ENTREE Un ensemble de clauses S. SORTIE Est-ce que S est satisfaisable ? Dans le cas où S est satisfaisable, on aimerait que l’algorithme nous retourne une valuation V qui satisfait S. Le Problème SAT 173 Pour commencer : le cas particulier 2-SAT Définition 2-SAT ENTREE Un ensemble de clauses S contenant chacune exactement deux littéraux. SORTIE Est-ce que S est satisfaisable ? INFO-F-302, Cours d’Informatique Fondamentale Logique pour l’Informatique La Logique Propositionnelle INFO-F-302, Cours d’Informatique Fondamentale Logique pour l’Informatique La Logique Propositionnelle Le Problème SAT 173 Pour commencer : le cas particulier 2-SAT Le Problème SAT 174 Idée de l’algorithme Dans la suite, les variables `1 , `2 , . . . représente des littéraux. Pour tout littéral `, on note ` le littéral x si ` = ¬x, et ¬x sinon. Définition 2-SAT ENTREE Un ensemble de clauses S contenant chacune exactement deux littéraux. SORTIE Est-ce que S est satisfaisable ? I I Théorème 2-SAT peut être résolu en temps polynomial (2 SAT 2 P). Plus précisément, en temps ✓(m) si S contient m clauses. INFO-F-302, Cours d’Informatique Fondamentale Logique pour l’Informatique La Logique Propositionnelle I Graphe d’Implication Pour S = {x0 _ x2 , x0 _ ¬x3 , x1 _ ¬x3 , x1 _ ¬x4 , x2 _ ¬x4 , x0 _ ¬x5 , x1 _ ¬x5 , x2 _ ¬x5 , x3 _ x6 , x4 _ x6 , x5 _ x6 } on peut alors construire le graphe d’implications : chaque sommet est une variable ou sa négation, et pour toute clause `1 _ `2 on ajoute les deux arêtes (dirigées) (`1 , `2 ) et (`2 , `1 ). voyons un exemple ... INFO-F-302, Cours d’Informatique Fondamentale Logique pour l’Informatique La Logique Propositionnelle Le Problème SAT 175 chaque clause `1 _ `2 est équivalente aux implications suivantes : `1 ! `2 et `2 ! `1 . Le Problème SAT 176 Graphe d’Implication Autre exemple pour S 0 = {x1 _ x2 , ¬x2 _ x3 , ¬x3 _ x1 , ¬x1 _ x4 , ¬x4 _ ¬x1 , x2 _ x4 } Que remarquez-vous ? est-ce satisfaisable ? INFO-F-302, Cours d’Informatique Fondamentale Logique pour l’Informatique La Logique Propositionnelle INFO-F-302, Cours d’Informatique Fondamentale Logique pour l’Informatique La Logique Propositionnelle Le Problème SAT 176 Graphe d’Implication Le Problème SAT 177 Autre exemple pour S 0 = {x1 _ x2 , ¬x2 _ x3 , ¬x3 _ x1 , ¬x1 _ x4 , ¬x4 _ ¬x1 , x2 _ x4 } Graphe d’Implication Donc si on peut aller d’une variable à sa négation, et revenir de sa négation à elle-même, alors S n’est pas satisfaisable. En fait c’est une condition nécessaire et suffisante : Lemme S est insatisfaisable ssi il existe une variable x telle que dans le graphe d’implication de S il existe un chemin de x à ¬x et de ¬x à x. Basé sur ce résultat, on peut définir un algorithme pour tester la satisfaisabilité de S, et construire une valuation si S est satisfaisable. Que remarquez-vous ? est-ce satisfaisable ? Il existe un chemin de x1 à ¬x1 et de ¬x1 à x1 , donc S |= x1 $ ¬x1 , donc S |= ?, donc S est insatisfaisable. INFO-F-302, Cours d’Informatique Fondamentale Logique pour l’Informatique La Logique Propositionnelle INFO-F-302, Cours d’Informatique Fondamentale Logique pour l’Informatique La Logique Propositionnelle Le Problème SAT 178 Algorithme pour 2-SAT Le Problème SAT 179 Algorithme pour 2-SAT Rappels I Une composante fortement connexe (CFC) est en ensemble maximal de sommets tel qu’il existe un chemin entre toute paire de sommets. I Les CFC d’un graphe sont calculables en temps linéaire par un parcours en profondeur. I Soient C1 , C2 deux CFC di↵érentes, on définit la relation C1 C2 s’il existe une arête d’un sommet de C1 vers un sommet de C2 . La relation est acyclique. Pourquoi ? Remarques I si C = {`1 , . . . , `n } est une CFC, alors C = {`1 , . . . , `n } est aussi une CFC, pourquoi ? INFO-F-302, Cours d’Informatique Fondamentale Logique pour l’Informatique La Logique Propositionnelle INFO-F-302, Cours d’Informatique Fondamentale Logique pour l’Informatique La Logique Propositionnelle Le Problème SAT 179 Algorithme pour 2-SAT Le Problème SAT 179 Remarques Remarques I si C = {`1 , . . . , `n } est une CFC, alors C = {`1 , . . . , `n } est aussi une CFC, pourquoi ? I si C = {`1 , . . . , `n } est une CFC, alors C = {`1 , . . . , `n } est aussi une CFC, pourquoi ? I si C est maximale (i.e. il n’existe pas C 0 telle que C C 0 ), alors C est minimale (i.e. il n’existe pas C 00 telle que C 00 C ), pourquoi ? I si C est maximale (i.e. il n’existe pas C 0 telle que C C 0 ), alors C est minimale (i.e. il n’existe pas C 00 telle que C 00 C ), pourquoi ? I Pour satisfaire S, il est nécessaire que pour chaque CFC C , tous les littéraux de C aient la même valeur. INFO-F-302, Cours d’Informatique Fondamentale Logique pour l’Informatique La Logique Propositionnelle INFO-F-302, Cours d’Informatique Fondamentale Logique pour l’Informatique La Logique Propositionnelle Le Problème SAT 180 Algorithme pour 2-SAT Algorithme pour 2-SAT Le Problème SAT 181 Algorithme pour 2-SAT – Exemple Pour S = {x1 _ x2 , x2 _ ¬x3 , ¬x2 _ ¬x4 , x2 _ x4 , x4 _ x1 } 1. construire les composantes fortement connexes (CFC) du graphe d’implication 2. tester qu’il n’existe pas de variables complémentaires au sein d’une même CFC, sinon retourner non satisfaisable 3. choisir une CFC C maximale 4. a↵ecter 1 à tous les littéraux de C (et donc 0 à tous les littéraux de C) 5. retirer C et C (et toutes leurs arêtes adjacentes) et recommencer jusqu’à ce qu’il n’y ait plus de CFC. INFO-F-302, Cours d’Informatique Fondamentale Logique pour l’Informatique La Logique Propositionnelle INFO-F-302, Cours d’Informatique Fondamentale Logique pour l’Informatique La Logique Propositionnelle Le Problème SAT 182 Algorithme pour 2-SAT – Exemple Le Problème SAT 183 Pour S = {x1 _ x2 , x2 _ ¬x3 , ¬x2 _ ¬x4 , x2 _ x4 , x4 _ x1 } INFO-F-302, Cours d’Informatique Fondamentale Logique pour l’Informatique La Logique Propositionnelle Pour S = {x1 _ x2 , x2 _ ¬x3 , ¬x2 _ ¬x4 , x2 _ x4 , x4 _ x1 } INFO-F-302, Cours d’Informatique Fondamentale Logique pour l’Informatique La Logique Propositionnelle Le Problème SAT 184 Algorithme pour 2-SAT – Exemple Pour S = {x1 _ x2 , x2 _ ¬x3 , ¬x2 _ ¬x4 , x2 _ x4 , x4 _ x1 } Algorithme pour 2-SAT – Exemple Le Problème SAT 185 Algorithme pour 2-SAT – Exemple Pour S = {x1 _ x2 , x2 _ ¬x3 , ¬x2 _ ¬x4 , x2 _ x4 , x4 _ x1 } INFO-F-302, Cours d’Informatique Fondamentale Logique pour l’Informatique La Logique Propositionnelle INFO-F-302, Cours d’Informatique Fondamentale Logique pour l’Informatique La Logique Propositionnelle Le Problème SAT 186 Algorithme pour 2-SAT – Exemple Le Problème SAT 187 Algorithme pour 2-SAT – Correction de l’Algorithme Pour S = {x1 _ x2 , x2 _ ¬x3 , ¬x2 _ ¬x4 , x2 _ x4 , x4 _ x1 } D’après ce qu’on a vu précédemment, si l’algorithme retourne non satisfaisable alors S est non satisfaisable. Supposons que l’algo retourne une valuation V et supposons que V 6|= S. Donc il existe une clause `1 ! `2 telle que V (`1 ) = 1 et V (`2 ) = 0. Les deux littéraux ne peuvent appartenir à la même CFC car d’après l’algorithme tous les littéraux d’une CFC reçoivent la même valeur. Soit C1 la CFC de `1 et C2 celle de `2 . On a nécessairement C1 C2 . D’après l’algorithme, la seule manière que V (`1 ) = 1 est que C1 a été choisie comme CFC C dans l’algorithme à une étape i, et donc que C1 était maximale à cette étape. Donc C2 a été choisie comme CFC C à une étape j < i (car les littéraux de C2 sont tous à 0), ce qui est impossible car C2 C1 , donc C2 ne pouvait être maximale à l’étape j. On obtient donc une contradiction et donc V |= S. Remarque : Cela prouve la réciproque du lemme. INFO-F-302, Cours d’Informatique Fondamentale Logique pour l’Informatique La Logique Propositionnelle INFO-F-302, Cours d’Informatique Fondamentale Logique pour l’Informatique La Logique Propositionnelle Le Problème SAT 188 Une Application : emploi du temps On se donne Le Problème SAT 189 Une Application : emploi du temps Modélisation en 2-SAT I un ensemble d’heures H I n enseignants I pour chaque enseignant, deux heures di↵érentes hi,1 et hi,2 où il est disponible I m classes 1. si il existe i 6= i 0 tels que ci,1 = ci 0 ,1 , hi,1 = hi 0 ,1 , alors i et i 0 ne peuvent enseigner en même temps à la même classe : ¬xi _ ¬xi 0 I pour chaque enseignant i, deux classes di↵érentes ci,1 et ci,2 (à qui il doit enseigner une heure chacune I 3. si il existe i 6= i 0 tels que ci,1 = ci 0 ,2 , hi,1 = hi 0 ,1 , on ajoute ¬xi _ xi 0 on cherche un emploi du temps qui respecte toutes les contraintes Pour tout enseignant i, on utilise la variable xi qui sera vraie si l’enseignant i passe l’heure hi,1 avec la classe ci,1 (et l’autre avec ci,2 ), et fausse dans le cas inverse 2. si il existe i 6= i 0 tels que ci,1 = ci 0 ,1 , hi,1 = hi 0 ,2 , on ajoute ¬xi _ xi 0 4. si il existe i 6= i 0 tels que ci,1 = ci 0 ,2 , hi,1 = hi 0 ,2 , on ajoute ¬xi _ ¬xi 0