Heuris'ques
« Découverte de la recherche » 2012-‐2013
yu.li@u-‐picardie.fr
Plan
• Problèmes
– Problèmes faciles et problèmes difficiles – P=NP?
– Problème SAT
– Exemple : la planifica'on des examens, la colora'on du graphe et le problème SAT
• Heuris'ques
– Recherche locale – Algorithmes fourmis – Algorithmes géné'ques – Etc.
Problèmes faciles
• Problèmes faciles
– Par exemple,
• Le tri d’un ensemble des en'ers
• La recherche du plus court chemin dans un réseau
• Etc.
– Ces problèmes peuvent être résolus en temps polynomial par un algorithme.
• Classe P
– L’ensemble de problèmes P (Polynomiaux).
Problèmes difficiles
• Problèmes difficiles
– Par exemple,
• La planifica'on des examens
• La colora'on du graphe
• la crypotographie
• Etc.
– Ces problèmes qu’on ne sait pas résoudre en temps polynomial à ce jour, mais on sait vérifier leurs
solu'ons en temps polynomial.
• Classe NP
– L’ensemble de problèmes NP (Nondeterminis'c Polynomial).
P = NP?
• La ques'on : P=NP?
– Exsite-‐il un algorithme polynomial pour résoudre un problème NP?
• C’est l’un des problèmes de recherche les plus étudiés et les plus troublants en informa'que théorique, depuis qu’il a été posé en 1971 par Cook.
Problème SAT
• Le problème de sa'sfiablité SAT est le
représentant de la classe NP, car tous les
autres problèmes NP peuvent être encodés en SAT en temps polynomial.
• Par conséquence, l’étude du problème SAT peut aider à avoir une meilleure
compréhension aux problèmes NP.
Problème SAT
• Instance 1
– A = { x1, x2, x3}, F=(x1∨x2)∧(¬x1∨x3)∧(¬x2∨¬x1)
• F est sa'sfaisable (F = T) puisque, si on pose x1=T, x2=F, x3=T.
• Instance 2
– A = { x1, x2, x3}, F=(x1∨x2)∧(¬x1∨x3)∧(¬x2∨x1) ∧ (¬x2∨x3) ∧(¬x1∨¬x3)
• F n'est pas sa'sfiable.
• Instance 3
– A = { x1, x2, x3, x4}, F = (x1∨¬x2∨¬x3) ∧(¬x1∨x3∨x4)
• F est sa'sfaisable, si on pose x1=T, x2=T, x3=T, x4=T.
Problème SAT
• Le problème SAT est représenté par une formule propos'onnelle sous forme CNF:
– Une formule CNF est une conjonc'on de clauses:
• F=(x1∨x2)∧(¬x1∨x3)∧(¬x2∨¬x1)
– Une clause est une disjonc'on de variables booléennes (posi'fs ou néga'fs):
• x1∨x2, ¬x1∨x3, ¬x2∨¬x1
• Une formule CNF est sa'sfaisable s'il est possible d'associer une valeur logique à chacune de ses variables booléennes de telle manière que cefe formule soit logiquement vraie.
Exemple : planifica'on des examens encodée en SAT (voir le poster)
• Etant donné 4 examens à planifier dans 3 créneaux :
• A = Anglais, B = Base de données,
• C = Langage C, S = Système d’exploita'on.
• On cherche des créneaux horaires où les contraintes sont :
• deux examens reliés dans graphe (1) ne peuvent se dérouler en même temps.
Exemple : planifica'on des examens encodée en SAT (voir le poster)
• Poser des variables booléennes pour représenter si un examen est placé dans un créneau, e.g. pour A :
– a1=T, A est placé dans créneau 1 ; sinon a1=F – a2=T, A est placé dans créneau 2 ; sinon a2=F – a3=T, A est placé dans créneau 3 ; sinon a3=F
• Etablir des clauses pour représenter qu’un examen ne peut que être placé dans un seul créneau en respectant des contraintes, e.g. pour A :
(a1∨a2∨a3) ^ (¬ a1∨¬ a2) ^ (¬ a1∨¬ a3) ^ (¬ a2∨¬ a3) ^ (¬ a1∨¬ c1) ^ (¬ a2∨¬ c2) ^ (¬ a3∨¬ c3)
^ (¬ a1∨¬s1)^ (¬ a2∨¬ s2 ) ^ (¬ a3∨¬ s3)
Exemple : planifica'on des examens encodée en SAT (voir le poster)
• Obtenir ainsi une formule CNF. Si cefe formule est sa'sfaisable, e.g. avec a3=T, b3=T, c2=T, s1=T, et les autres variables booléennes étant égales à F, la planifica'on de ces examens est résolue, représentée par graphe (2) :
• créneau 1 = rouge, créneau 2 = vert, créneau 3
= violet
Heuris'ques
• Une heuris'que est un algorithme qui fournit rapidement (en temps polynomial) une
solu'on réalisable, pas nécessairement op'male, pour un problème difficile.
Heuris'ques
• Etymologie
– En Grec, « heuriskêin » signifie "trouver".
• Histoire du cri "Eureka!" d'Archimède (287-‐212 BC)
– Il y a un peu plus de 2000 ans, le roi Hiéron II de Syracuse a demandé à Archimède de déterminer la quan'té d'argent dans la couronne
royale. Bien que la couronne semblait être faite de l'or, le roi soupçonnait que l'orfèvre pourrait en fait avoir caché un grand pourcentage d'argent dans celle-‐ci. Archimède était perplexe:
"Comment pourrais-‐je savoir le poids du métal dans la couronne?" Un jour, lorsque il prenait son bain, Archimède a remarqué qu'il entrait dans son baignoire rempli d'eau et l'eau y débordait et tombait par terre -‐-‐-‐ et la réponse l'a frappé immédiatement. Il a réalisé qu'une couronne en or pur ferait couler moins d'eau que une couronne en argent du même poids. Il a couru à nu dans la rue, en criant
"eurêka!" (une forme conjuguée de heuriskein, qui signifie "J'ai trouveé").
Heuris'ques
• Recherche locale
– hfp://fr.wikipedia.org/wiki/Recherche_locale_
(op'misa'on)
• Algorithme géné'ques
– hfp://fr.wikipedia.org/wiki/Algorithme_géné'que
• Algorithme fourmis
– hfp://fr.wikipedia.org/wiki/
Algorithme_de_colonies_de_fourmis