Vous êtes sur la page 1sur 25

Intelligence Artificielle NFP106 Plan

Année 2012-2013
!  Classification des problèmes
!  Méthodes peu informées
Méthodes de Résolution des !  Méthodes heuristiques: A*, AO*, !"
Problèmes !  Satisfaction de contraintes
!  Modélisation des actions
F.-Y. Villemin (f-yv@cnam.fr)

!  Analyse des buts et des moyens : GPS
http://deptinfo.cnam.fr

(avec un exemple de F. Kabanza, Université de Sherbrooke © F.-Y. Villemin 2012" 2"

Classification des problèmes Classification des problèmes


Problèmes : Nature des connaissances :
!  décomposables " diviser et conquérir !  pour qualifier la solution (obligatoire)
!  non décomposables " solutions approximatives !  pour guider la recherche (sinon recherche aveugle)
Etapes de résolution : !  pour réduire l'espace de recherche
!  ignorables Solution :
!  inversibles !  absolue
!  non inversibles !  relative (en général " connaissances de qualification)

Espace des conséquences : Informations :


!  certain !  contenues dans le problème
!  non certain, avec probabilités !  en conversationnel
!  non certain, sans probabilités

© F.-Y. Villemin 2012" 3" © F.-Y. Villemin 2012" 4"


Problèmes décomposables Problème
ou décomposable
et
en arbre
ET/OU

et/ou

© F.-Y. Villemin 2012" 5" © F.-Y. Villemin 2012" 6"

Classification des connaissances Classification des connaissances


Newell dénonce la confusion entre niveau langage Aspect épistémique des connaissances :
d'implantation et niveau cognitif et distingue 2 !  Connaissances rationnelles (non révisables)
!  Connaissances traditionnelles (révisables éventuellement)
niveaux!:
!  Connaissances empiriques (révisables)
!  niveau connaissance
Aspect fonctionnel des connaissances :
!  niveau implantation (ou représentation) !  Connaissances passives (ou assertionnelles) :
Au niveau connaissance, les connaissances peuvent être Faits et données du domaine, du problème
!  Connaissances actives (ou inférentielles) :
vues sous trois aspects :
Règles ou équations, permettent la génération d'autres
!  épistémique connaissances (assertionnelles)
!  Connaissances stratégiques (ou méta-connaissances, ou contrôle) :
!  fonctionnel
Raisonnement de l'expert, manière d'utiliser les connaissances actives
!  heuristique et passives

© F.-Y. Villemin 2012" 7" © F.-Y. Villemin 2012" 8"


Classification des connaissances Classification des connaissances
ASSOCIATION HEURISTIQUE [CLANCEY 83]
Exemples de connaissances passives :
!  g=9,81m/s2 à Paris Données abstraites Solutions abstraites
!  Le diamant est cher… Abstraction des
données Affinage
Exemples de connaissances actives :
!  Les règles d'une grammaire Données réelles Solutions concrètes
!  Les lois de l'électricité (Kirchoff, Ohm, ...)..
HEURISTIQUE
Exemples de connaissances stratégiques : Infection Infection Gram. neg.

!  Stratégie d'analyse de pannes Généralisation Sous type

!  Stratégie de reconnaissance de mots à partir de phonèmes Immunodéprimé Infection à E. Coli

!  Stratégie de résolution d inéquations : Généralisation


MYCIN
Leucopénie
"Si un système numérique contient des inégalités alors il faut les
transformer en égalités en introduisant des variables auxiliaires" Définition
nb GB bas

Qualification
nb GB < 2500
© F.-Y. Villemin 2012" 9" © F.-Y. Villemin 2012" 10"

Arbres de recherche Générer et tester


Recherche en profondeur d abord Connaissances minimales :
!  génération de l'espace de recherche
1
!  qualification de la solution
Recherche en profondeur d abord :
2
6
!
3 4 5 7
Début!
!Générer une proposition (de solution);!
Recherche en largeur d abord !Tant que proposition ≠ solution faire!
1 2 3 ! !Générer une proposition!
4 !fait!
5
Fin!
Recherche mixte ou branch & bound Avantage : rapidité
1 2
Inconvénient : pas d assurance de trouver une solution
3
4
5

© F.-Y. Villemin 2012" 11" © F.-Y. Villemin 2012" 12"


Recherche ascendante ( hill climbing ) Recherches heuristiques
Amélioration de générer et tester : Amélioration du "branch & bound"
!  connaissance d action pour converger vers la solution Génération de l'espace de recherche!!!espace des conséquences
Début! certain
!Générer une proposition (de solution);! Connaissances pour qualifier la solution!!!solution absolue
!meilleure proposition = proposition;! Informations pour résoudre le problème:
!Tant que proposition ≠ solution faire! #  soit contenues dans le problème : Problèmes solitaires
! si proposition ≥ meilleure proposition! ! !pour les arbres OU : ! algorithme A*
! !alors meilleure proposition := proposition! ! !pour les arbres ET/OU : ! algorithme AO*
is;!
#  fournies par l utilisateur : jeux 2 ou N personnes
! proposition = application des règles(meilleure!
proposition);! " arbres ET/OU (alternés par niveau):
!fait! !! algorithmes MIN-MAX, #-$
Fin! Connaissances pour guider la recherche!!! Heuristiques
Avantage : plus d assurance de trouver une solution (numériques/qualitatives)
Inconvénient : sommets locaux, crêtes, plateaux
" moyens de détection et remèdes
© F.-Y. Villemin 2012" 13" © F.-Y. Villemin 2012" 14"

Algorithme A* Algorithme A*
Algorithme A* du à Hart, Nilsson & Raphael (1968-1972) Taquin : 1 + 5 2+4 3+4
Jeux à une personne sur un arbre OU (Ackerman) 2 8 3 2 8 3 2 3 5+2
1 6 4 1 4 1 8 4 1 2 3
Méthodes de recherche ordonnée du chemin de coût minimal 7 5 7 6 5 7 6 5 7 8 4
entre un nœud initial et un but 65 5
0+4 1+3 2+3 3+2 4+1
Exemple : jeu du taquin " 181 440 états 2 3
2 8 3 2 8 3 2 3 1 2 3
! recherche de la meilleure solution en premier 1 6 4 1 4 1 8 4 1 8 4 8 4
7 5 7 6 5 7 6 5 7 6 5 7 6 5
Heuristique : minimiser F(E) = L + MP avec 5+0
3+4
!  E= état courant 1+5 2+3 2 8 3 1 2 3
!  L= longueur du chemin de l état initial à E 2 8 3 2 8 3 7 1 4 8 4
1 6 4 1 4 6 5 7 6 5
!  MP= le nombre de carrés mal placés par rapport à la 7 5 7 6 5 3+3 BUT
configuration finale (en ignorant la case vide)
8 3
2 1 4
7 6 5
© F.-Y. Villemin 2012" 15" © F.-Y. Villemin 2012" 16"
Fonctions heuristiques Fonctions heuristiques
Fonctions évaluant chaque état de l'espace de g*(n) = coût du chemin de la racine à n
h*(n) = coût du chemin de n à la meilleure solution
recherche en fonction de la distance : f*(n) = g*(n) + h*(n)
!  de l'état actuel à la solution f(n) = estimation du coût du chemin de racine à meilleure solution passant
!  de l'état actuel à l'état initial par n
!
g(n) = coût du chemin minimal de la racine à n (calculé)
f : {état} ! R+! h(n) = estimation statique du coût du chemin de n à la meilleure solution
f*(n) = coût de la meilleure solution passant par n f(n) = g(n) + h(n)

(chemin racine à solution de moindre coût) RACINE


% %!!!f*(n) est minimal

NOEUD N

SOLUTION

© F.-Y. Villemin 2012" 17" © F.-Y. Villemin 2012" 18"

Fonctions heuristiques Algorithme A*


Fonction h admissible si A* donne meilleure solution en premier Début!
G(racine):=0; solution:= faux; FERME:=Ø; OUVERT:= {racine};!
Fonction h minorante si &n h(n) " h*(n) /* OUVERT est la liste des feuilles à considérer triées suivant
f*/!
Théorème (Hart, Nilsson & Raphael) Tantque ¬ solution & OUVERT≠Ø faire!
Choisir n parmi les plus récents avec f minimale dans OUVERT; !
Si h est minorante alors h est admissible Retirer n de OUVERT; !
A* est en O(n2), n nombre d états Mettre n dans FERME;!
Si Tester-solution (n) alors solution:= vrai!
Fonction h coïncidente si h(solution) = 0
Sinon si ¬ n sans successeur alors développer n ! n1, n2,…,np;!
Pour tout i=1 à p faire valuer f(ni);!
Fonction h monotone si &s !&n avec s un successeur de n, ! !Casde ni ' OUVERT & f(ni) < f'(ni) dans OUVERT : !
! !Remplacer ni par le dernier produit avec f(ni);!
h(n) - h(s) " coût du chemin de n à s ! ! ¬ ni ' FERME : ajouter ni à OUVERT !
! !Fincas!
Théorème (Martelli & Montanari) Fait!
Si h est coïncidente et monotone alors h est admissible Is!
Is!
A* est en O(n), n nombre d états Fait;!
Si solution alors imprimer "branche racine-à-n" sinon imprimer
"échec" is!
Fin!
© F.-Y. Villemin 2012" 19" © F.-Y. Villemin 2012" 20"
Fonctionnement Algorithme AO*
de l'algorithme Adaptation par Martelli & Montanari (1972) de A* aux
A* sur le jeu jeux à une personne sur arbre ET/OU (ou hypergraphe
de taquin acyclique orienté et fini)
(Nilsson) Solution: sous-hypergraphe
Soit contenant des nœuds terminaux
Soit dont tous les nœuds frontières sont
terminaux
%! recherche de la meilleure solution (sous-
hypergraphe de moindre coût) en premier
Méthodes de recherche ordonnée du sous-hypergraphe
de coût minimal entre le noeud initial et les buts

© F.-Y. Villemin 2012" 21" © F.-Y. Villemin 2012" 22"

Algorithme AO* Algorithme AO*


f*(n) = g*(n) + h*(n) f heuristique f!:!{état}!!!R+
f*(n) = coût d'une meilleure solution contenant n f(n) = estimation coût meilleure solution (sous-hypergraphe) contenant n
g*(n) = coût du sous-hypergraphe de la racine contenant n f(n) = g(n) + h(n)
h*(n) = coût du sous-hypergraphe de n contenant la meilleure g(n) = coût construction du sous-hypergraphe minimal racine
contenant n (calculé)
solution
h(n) = estimation statique du coût du sous-hypergraphe de n
% %! Connecteurs ET ont un coût donnant meilleure solution (h estimation à priori de h*)
f(G) = valuation hypergraphe G construit par ajout arc s-xi à h admissible si AO* donne meilleure solution en premier
hypergraphe H h minorante si & n h(n) " h*(n)
g(H) = coût de H h monotone si & s & x, s un successeur de x,
S nœud frontière de H h(s) -h(x) " coût du sous-hypergraphe de x à s
Xi ' {x1 x2 … xn} successeurs de s Théorème (Martelli & Montanari)
Si s nœud OU :!!!f(G) = g(H) + coût(s, xi) + h(xi) Si h est coïncidente et monotone alors h est admissible et AO* donne la
Si s nœud ET (de coût n) :!!f(G) = g(H) + coût(s, x1) meilleure solution en O(n2), n nombre d états
+…+coût(s, xn) + n + h(xi)

© F.-Y. Villemin 2012" 23" © F.-Y. Villemin 2012" 24"


Algorithme AO* Exemple
Début! (R. Marcus An application of AI to OR CACM v 27 n° 10, 1984)
!  Problème d ordonnancement
G(racine):=0; solution:= faux; HYPER:= {racine};!
/* HYPER est la liste des hypergraphes à considérer triés suivant
f*/! !  Modification : !!connecteur ET a un coût de 1
Tantque ¬ solution & HYPER≠Ø faire!
Choisir H(n) avec f minimale dans HYPER; retirer H(n) de HYPER! !  Fonction h: ! minimum des valeurs des arcs quittant le
/* n est la feuille de H(n) telle que f(n) = g(H(n)) + h(n) */! nœud
Si Tester-solution H(n) alors solution:= vrai!
Sinon si ¬ (n ' {terminaux} ou n sans successeur) alors !
Développer n ! n1, n2,…,np; /* p hypergraphes créés */!
Si n nœud OU alors!
Pour tout i=1 à p faire construire H(ni); valuer H(ni);!
Ajouter H(ni) dans HYPER fait!
Sinon construire H(n1& n2&…&np); /* n nœud ET */ !
Pour tout i=1 à p faire valuer H(n1& n2&…&np) à ni; !
!ajouter H(n1& n2&…&np) et f(ni) dans HYPER fait!
Is;!
Is;!
Is;!
Fait;!
Si solution alors imprimer H(n) sinon imprimer "échec" is!
Fin!
© F.-Y. Villemin 2012" 25" © F.-Y. Villemin 2012" 26"

Exemple Exemple
Estimations des nœuds: H0 = !
h(deb)=3 h(A)=7 h(B)=9 h(C)=3 H1 = { deb-A, deb-C }
h(D)=5 h(E)=1 h(F)=2 h(fin)=0 8+7 3+3
Le sous-hypergraphe retourné par AO* a un coût de 16 H2 = { deb-A, deb-C-B, deb-C-E }
15 16 6+1
H3 = { deb-A, deb-C-B, deb-C-E }
15 16 13+1+2
F
deb E fin H4 = { deb-A, deb-C-B, deb-C-E }
3 20+1+9 16 16
B plus récent F
3 1
1 2 H4 = { deb-A, deb-C-B, deb-C-E }
C F 30 16 16
6
© F.-Y. Villemin 2012" 27" © F.-Y. Villemin 2012"
B Résultat finalF fin 28"
Min-Max Min-Max
Problèmes conversationnels ou jeu à deux personnes Exemple (Nilsson): jeu de Tic-Tac-Toe
e(p) = - # si la position p est perdante pour le joueur MAX
" arbre ET/OU alterné par niveau: e(p) =!!# si la position p est gagnante pour le joueur MAX
Sinon pour toute autre position
JOUEUR e(p) = (nombre de lignes, de colonnes et diagonales ouverts pour le
joueur MAX) - (nombre de lignes, de colonnes et diagonales ouverts
pour le joueur MIN)
ADVERSAIRE
niveau 1

joueur MAX
joueur MIN
e(p) = 6 - 4 =2
JOUEUR
niveau 2

ADVERSAIRE niveau 3

© F.-Y. Villemin 2012" 29" © F.-Y. Villemin 2012" 30"

Min-Max Min-Max
Fonction heuristique f : {état} ! R
f(joueur) = - f(adversaire)
Fonction (statique) évaluant chaque feuille de l arbre de recherche au niveau
N, estimation de l intérêt de la feuille pour le joueur :
+ # = situation gagnante
- # = situation perdante
> 0 = situation favorable niveaux

0 < = situation défavorable


"
Min-Max de C.Shannon (1950) :
arbre développé au niveau N; feuilles valuées;! #
TANT QUE la racine n est pas valuée FAIRE! ! 3 2 -2 4 -4 1 -3 -1 -4 -4 -2 0 -2 4 -2 1 0 -3 -4 -3 -2 1 2 -2 2 1 -2
! nœud niveau pair (joueur) MAX des valeurs des fils!
! nœud niveau impair (adversaire) MIN des valeurs des fils!
FAIT;!
coup joué = nœud de niveau 1 de même valuation que racine!

© F.-Y. Villemin 2012" 31" © F.-Y. Villemin 2012" 32"


Min-Max Min-Max
Arbre de développement et
valeurs remontées
(Nilsson)
0
MAX
n valeur remontée
niveaux

MIN -1 0 -2
MAX
3 4 -1 0 4 1 -2 2 2

3 2 -2 4 -4 1 -3 -1 -4 -4 -2 0 -2 4 -2 1 0 -3 -4 -3 -2 1 2 -2 2 1 -2

© F.-Y. Villemin 2012" 33" © F.-Y. Villemin 2012" 34"

Min-Max Alpha-Béta
Amélioration du MIN-MAX par J. Mc Carthy (1957)
Principe :
conjonction évaluée jusqu au premier faux
disjonction évaluée jusqu au premier vrai
Application :
Soit nœud est MAX, on cherche une valeur > N
valeur remontée P, P " N ! arrêt
Soit nœud est MIN, on cherche une valeur < N
valeur remontée P, P $ N ! arrêt
La valeur remontée % %! procédure branch & bound
après développement de l'arbre nœuds MAX: valeur # = (MAX des fils) ! ne diminue jamais
est différente de l'heuristique nœuds MIN: valeur $ = (MIN des fils) ! n augmente jamais
(1 au lieu de 2)
© F.-Y. Villemin 2012" 35" © F.-Y. Villemin 2012" 36"
Alpha-Béta Alpha-Béta (Fishburn 83)
procédure alpha-béta (in niveau : entier, pos : position, suite :
chemin, inex alpha, béta : réel, ex meilleur-valeur : réel);!
début!
var : valeur : réel, asuivre : chemin, pi : position;!
! = 10 10
si niveau = n alors meilleur-valeur := évaluation(pos) is;!
si niveau = 0 alors alpha := - ∞; béta := + ∞!
≤9 sinon pour tout pi fils de pos faire valeur := alpha-béta
(alpha, béta, niveau + 1, pi, asuivre);!
" = 10 10 si pair (niveau) alors /* niveau pair */!
! !si (valeur > meilleur-valeur) alors meilleur-
valeur = valeur; !suite = cons( pi, asuivre);!
≥ 11
! !si (valeur > alpha) alors alpha = valeur is is!
! = 10 10 9 ! ! sinon /* niveau impair */!
≤9
! ! si (valeur < meilleur-valeur) alors meilleur-
≤5
" = 10 valeur = ! !valeur; suite = cons(pi, asuivre);!
10 11 9 ! ! ! si (valeur < béta) alors béta = valeur is is !
! ! !is; !
! ! !/* élagage */ !!
10 12
9 5 11 12 9 11 9 ! ! si (alpha >= béta) alors échappement avec !
! ! !meilleur-valeur := valeur is !
fait!
si pair (niveau) alors alpha := meilleur-valeur sinon béta :=
meilleur-valeur is !
© F.-Y. Villemin 2012" 37" © F.-Y. Villemin 2012"
fin! 38"

Alpha-Béta Satisfaction de contraintes


Problème :
Fonctionnement de l'algorithme de Fishburn : S E N D
+ M O R E
---------------------------
M O N E Y
!=0 resultat= 0
!= -1 Contraintes :
2 lettres n'ont pas la même valeur
les lois de l'arithmétique
"<!

"= -1 "<!1
"<!4
"<!5
"= -2 les lettres initiales ne valent pas Ø
"=3
"1=0 "= -1 C4 C3 C2 C1
!0=3
!2= -1 !3=0 !5=1
!6= -2 S E N D
!1=4 !4=4 + M O R E
3 2 -2 4 -3 -1 -4 -4 -2 0 -2 4 1 -4 -3 -2
---------------------------
M O N E Y
Etat initial du problème :
S, M, N, R, D, Y, E, O ' [0 .. 9]
S % ØM % Ø
C1, C2, C3, C4 ' [0 .. 1]
© F.-Y. Villemin 2012" 39" © F.-Y. Villemin 2012" 40"
Satisfaction de contraintes Satisfaction de contraintes
Solution Arbre de propagation des contraintes
C4 = M et C4 ' [0 .. 1] et M % 0
% %! M = C4 = 1
C3 + S + M = 10 * C4 + O
D'où C3 + S + 1 = 10 + O
S % 0 et S % 1 donc S ' [2 .. 9]
M = 1 & C4 = 1
O % 1 donc O ' [0, 2 .. 9]
C3 ' [0 .. 1]
C3 = 1 & S = 8 & O = 0 C3 = 0 & S = 9 & O = 0
D'où: C3 = 0 ! S + 1 = 10 + O
Ou C3 = 1 ! S + 2 = 10 + O
Ou bien C3 = 0 ! S = 9 + O C3=1 & S=8 & O=0 C3=1 & S=8 & O=0 C3=0 & S=9 & O=0 C3=0 & S=9 & O=0
Ou C3 = 1 ! S = 8 + O et O % 1 & C2=1 & & C2=0 & & C2=1 & & C2=0 &
E=9+N E = 10 + N 1+E=N E=N
D'où O = 0 et C3 = 0 et S = 9
Ou C3 = 1 et S = 8 impossible, car N!0 impossible, car valeur de E>10 impossible, car E!N

© F.-Y. Villemin 2012" 41" © F.-Y. Villemin 2012" 42"

Algorithme de Waltz Algorithme de Waltz


Problème: Reconnaître des figures (triédriques) 3D à 4 types de nœuds (sommets) :
partir de contours (fils de fer) en 2D

L T flèche étoile

Principe du marquage!:
( la matière est à droite de la flèche
+ arête saillante
figure non admise (ambiguë) figure reconnaissable - arête en creux
© F.-Y. Villemin 2012" 43" © F.-Y. Villemin 2012" 44"
Algorithme de Waltz Algorithme de Waltz
Sommets possibles : 6 L 4 T 3 flèches 3 étoiles Algorithme d'étiquetage de D. Waltz (1975)!
Début !
+ - + Marquer le contour par une flèche de telle manière que !la
-
matière soit à droite de la flèche; !
L1 L2 L3 L4 L5 L6 Tant que tout sommet n'a pas été examiné faire!
Pendre un des sommets les plus contraints;!
/* plus contraint ou avec moins de choix de marques */!
+ - Propager la ou les marques;!
Vérifier la compatibilité des marques ; !
Eliminer les marques incompatibles deux à deux ;!
T1 T2 T3 T4
Si une arête ne peut être marquée !
- - + + + - - /* ensemble des marques vide */!
+
+ + - Alors Sortie avec échec!
+ - -
Sinon Marquer l'arête avec l'ensemble des marques!
F1 F2 F3 E1 E2 E3 Is!
Fait!
Fin!

© F.-Y. Villemin 2012" 45" © F.-Y. Villemin 2012" 46"

Algorithme de Waltz Algorithme de Waltz


Marquage du contour Reconnaissance des nœuds
L6
Propagation des marquages
F1 F1 L6
+
F1 + F1
T4 T4

E3 E3
F1 F1 -
F1 + F1

L6 +
L6

+
Le contour est étiqueté
L6
F1 L6
Reconnaissance
L6
des nœuds et propagation des marquages
L6
F1
F1 F1
+ +
L6 + F1 + F1
T4 F1 T4 F1
+ E1 E1

+ E1 + + + +
E3
E3 T2 -
- -
F1 F1 + L3 F1
+ F1 E1 - F2
E1 +
+ + +
L6
+
E1
L6
E1 +
+
F3 +
+ L6
L6 F1
Interprétation :Le parallélépipèdeF1
de droite repose sur la partie horizontale de la
Les nœuds sont identifiés Les marques sont propagées structure (marques – en bas), mais ne touche pas la partie verticale de la structure
© F.-Y. Villemin 2012" 47" ©(marques → sur sa gauche).
F.-Y. Villemin 2012" 48"
Satisfaction de contraintes Satisfaction de contraintes
Problème: Soient n variables X1,…, Xn à valeur (respectivement) dans Types de problèmes :
domaines D1,…, Dn
!  CSP avec des domaines finis (et discrets)
Trouver un ensemble d affectations pour les variables {Xi!:!ai }1 " i " n
satisfaisant un ensemble de m contraintes {Cj (Xi1,…, Xik) } 1" j " m !  CSP Booléens: les variables sont vraies ou fausses.
Contrainte k-aire ! k variables : Cj (Xi1,…, Xik) !  CSP avec des domaines continus (et infinis)
Contrainte k-aire évaluable, k variables affectées !!{vrai, faux} # Par exemple, problèmes d’ordonnancement avec des
Contrainte k-aire satisfaite Cj (Xi1,…, Xik) = vrai contraintes sur les durées
Théorème (Rossi, Petrie & Dhar 90):
!  CSP avec des contraintes linéaires
Pour tout ensemble S de contraintes i-aire (i $ 2) il existe un ensemble S
de contraintes binaires (i = 2) qui est équivalent !  CSP avec des contraintes non linéaires
(S équivalent à S : {Xi!:!ai } satisfait S si et seulement si {Xi!:!ai } !  …
satisfait S)

© F.-Y. Villemin 2012" 49" © F.-Y. Villemin 2012" 50"

Satisfaction de contraintes Satisfaction de contraintes


Exemple: Un problème avec 5 variables et 8 contraintes Définitions :
(binaires) Ck(Xi, Xj) = {(ai, bj) | ai ' Di et bj ' Dj} Variable courante: Xi celle que l on cherche à affecter
!!domaine courant Di
Variables anciennes (déjà affectées) : {Xk!:!ak} 1 " k < i-1
C5(X2, X4)
!!domaines anciens
C3(X1, X4) Variables futures (à affecter) : {Xk} i+1 < k " n
X1 X4 !!domaines futurs
!

C2(X1, X3) Procédure vérifier (i, j);!


Début!
Si ¬) contrainte entre Xi et Xj alors vrai !
C1(X1, X2) X3 Sinon si Xi : ai * Xj : bj alors * Ck (ai, bj) is!
C7(X3, X5) C8(X4, X5)
/* {Ck (Xi, Xj)} ensemble des contraintes entre Xi et Xj
*/!
C4(X2, X3) Is!
X2 X5 Fin!
C6(X2, X5) Etiquetage: satisfaction ' {vrai, faux}!
© F.-Y. Villemin 2012" 51" © F.-Y. Villemin 2012" 52"
Satisfaction de contraintes Backjumping
Procédure CSP;! X1
Début ! !!
Satisfaction := vrai; solution := faux; i := 1; ! !!
Tant que 1 ≤ i ≤ n faire ! ! !! X2 Passé
Si satisfaction alors i := étiqueter (i,satisfaction)!
Sinon i := dé-étiqueter (i, satisfaction) Is;!
Fait;! X3
Si i > n alors solution := vrai is;!
Si i = 0 alors sortie avec échec is!
Fin
X4
Backtracking chronologique: première variable ancienne
" Profondeur d abord !!complexité exponentielle X5 variable courante
Amélioration en examinant variables anciennes et futures (Forward-checking)
Backjumping: mémorisation des valeurs des variables anciennes non X6
satisfaisantes conflit et saut à la variable la plus ancienne en conflit avec
la variable courante Futur
X7
© F.-Y. Villemin 2012" 53" © F.-Y. Villemin 2012" 54"

Forward-checking Colorier une carte


X1 On vous donne une carte de l’Australie (F. Kabanza) :

X2 Passé

X3

X4

X5 variable courante Et on vous demande d’utiliser seulement trois couleurs (rouge, vert et bleu)
de sorte que deux états frontaliers n’aient jamais les mêmes couleurs
On peut facilement trouver une solution à ce problème en le formulant comme
X6 un problème CSP et en utilisant des algorithmes généraux pour CSP
Futur
X7
© F.-Y. Villemin 2012" 55" © F.-Y. Villemin 2012" 56"
Colorier une carte Colorier une carte
Formulation du problème CSP : Solution :

Les variables sont les états : V = { WA, NT, Q, NSW, V, SA, T }


Le domaine de chaque variable est l’ensemble des trois couleurs : {R, G, B}
Contraintes : Les régions frontalières doivent avoir des couleurs différentes : {WA = R, NT = G, Q = R, NSW = G, V = R, SA = B, T = G}!
!  WA%NT, …, NT%Q, …

© F.-Y. Villemin 2012" 57" © F.-Y. Villemin 2012" 58"

Graphe de contraintes backtracking-search


Pour des problèmes avec des contraintes binaires (c-à-d., entre
deux variables), on peut visualiser le problème CSP par un
graphe de contraintes.
Un graphe de contraintes est un graphe dont les nœuds sont des
variables (un nœud par variable) et les arcs sont des
contraintes entre deux variables.

NT+Q!
WA+NT!
NT+SA!
Q+NSW!
Q+SA!
WA+SA!
SA+NSW!
SA+V! NSW+V!

© F.-Y. Villemin 2012" 59" © F.-Y. Villemin 2012" 60"


backtracking-search backtracking-search

© F.-Y. Villemin 2012" 61" © F.-Y. Villemin 2012" 62"

backtracking-search Ordre d’affectation des variables


À chaque étape, choisir la variable avec le moins de
valeurs consistantes restantes.

Illustration:

© F.-Y. Villemin 2012" 63" © F.-Y. Villemin 2012" 64"


Ordre d’affectation des variables Ordre d’affectation des variables
Si le critère précédent donnent des variables avec le Pour une variable donnée, choisir une valeur qui
même nombre de valeurs consistants restantes : invalident le moins de valeurs possibles pour les
variables non encore affectées

!  Choisir celle ayant le plus de contraintes impliquant des


variables non encore affectées :
Laisse une seule valeur
pour SA

Ne laisse aucune seule


valeur pour SA

Ces heuristiques permettent de résoudre un problème


de 1000 reines

© F.-Y. Villemin 2012" 65" © F.-Y. Villemin 2012" 66"

Algorithme Forward checking Algorithme Forward checking


L’idée de l’algorithme forward-checking (vérification L’idée de l’algorithme forward-checking (vérification
anticipative) est de : anticipative) est de :
!  Vérifier les valeurs consistantes des variables non encore !  Vérifier les valeurs consistantes des variables non encore
affectées
affectées
!  Terminer la récursivité lorsqu’une variable (non encore
!  Terminer la récursivité lorsqu’une variable (non encore
affectée) a son ensemble de valeurs consistantes qui devient
affectée) à son ensemble de valeurs consistantes qui devient vide
vide
NT
WA Q
SA
NSW
V

© F.-Y. Villemin 2012" 67" © F.-Y. Villemin 2012" 68"


Algorithme Forward checking Algorithme Forward checking
L’idée de l’algorithme forward-checking (vérification L’idée de l’algorithme forward-checking (vérification
anticipative) est de: anticipative) est de :
!  Vérifier les valeurs consistantes des variables non encore !  Vérifier les valeurs consistantes des variables non encore
affectées affectées
!  Terminer la récursivité lorsqu’une variable (non encore !  Terminer la récursivité lorsqu’une variable (non encore
affectée) a son ensemble de valeurs consistantes qui devient affectée) a son ensemble de valeurs consistantes qui devient
vide vide
NT NT
Q WA Q
WA
SA SA
NSW NSW
V
V
T
T

© F.-Y. Villemin 2012" 69" © F.-Y. Villemin 2012" 70"

Propagation de contraintes Arc consistency


Forward checking propage l’information des variables affectées Arc consistency est la forme de propagation de
vers les variables non affectées, mais ne détecte pas les
conflits locaux entre variables : contraintes la plus simple
!  Vérifie la consistance entre les arcs
WA
NT
Q !  C-à-d., la consistance des contraintes entre deux variables
SA
NSW
V L’arc X "Y est consistant si et seulement si pour chaque
T valeur x de X il existe au moins une valeur permise de y

NT et SA ne peuvent pas être en bleu ensemble!


La propagation des contraintes permet de vérifier les WA
NT Q

contraintes localement.
SA
NSW
V
T
© F.-Y. Villemin 2012" 71" © F.-Y. Villemin 2012" 72"
Arc consistency Arc consistency
Arc consistency est la forme de propagation de contraintes la Arc consistency est la forme de propagation de contraintes la
plus simple plus simple
!  Vérifie la consistance entre les arcs !  Vérifie la consistance entre les arcs
!  C-à-d., la consistance des contraintes entre deux variables !  C-à-d., la consistance des contraintes entre deux variables
L’arc X "Y est consistant si et seulement si pour chaque valeur x de X il L’arc X "Y est consistant si et seulement si pour chaque valeur x de X il
existe au moins une valeur permise de y
existe au moins une valeur y de Y
!  consistante avec x

NT Q
WA
SA NT
NSW WA Q
V SA
NSW
T V
Si une variable perd une valeur, ses voisins doivent être revérifiés T
© F.-Y. Villemin 2012" 73" © F.-Y. Villemin 2012" 74"

Arc consistency Algorithme de Prosser


Backjumping + forward-checking ! performance (plusieurs ordres de
Arc consistency est la forme de propagation de magnitude) supérieure au backtracking chronologique
contraintes la plus simple Fonction vérifier-avant (i, j): booléen; !/* Xi variable future
!  Vérifie la consistance entre les arcs */!
!  C-à-d., la consistance des contraintes entre deux variables Début!
Réduction := Ø; !/* réduction est une liste */!
L’arc X "Y est consistant si et seulement si pour chaque valeur x de X il Pour tout élément di ' domaine courant Di faire!
existe au moins une valeur permise de y Si ¬ vérifier(i, j) alors mettre di dans réduction is!
Fait;!
Si réduction ≠ Ø alors Di := Di , réduction;!
Mettre Xi dans var-future(j);!
Mettre Xj dans var-ancienne(i);!
Réduction(i) := cons(réduction, réduction(i))!
Is;!
Vérifier-avant(i, j) := Di ≠ Ø!
NT Q
WA
SA
Fin!
NSW
V
T
© F.-Y. Villemin 2012" 75" © F.-Y. Villemin 2012" 76"
Algorithme de Prosser Algorithme de Prosser
Procédure dé-reduire(i);! Fonction étiqueter (i, situation): entier; !
/* Xj variable courante */! ! !/* Xi variable courante */!
Début!
Début! Situation := faux; !
Pour tout élément di ' Di de var-future(i) faire! Pour tout élément di ' domaine courant Di faire!
Retirer réduction de réduction(i);! Tant que ¬ situation faire pour j := i+1 jusqu à n faire !
Di := Di - réduction;! Tant que situation faire situation := vérifier-avant (i,
j);!
Retirer Xi de var-future(j)! Si ¬ situation alors Di := Di - di; dé-reduire(i) is!
Fait;! Fait;!
Var-future(i) := Ø! Fait;!
Fin! Fait;!
! Si situation alors i+1 sinon i is;!
Procédure maj-domaine-courant(i);! Fin!
!

/* Xi variable courante */! Fonction dé-étiqueter (i, situation): entier; !!


Début! ! !/* Xi variable courante */!
Début!
Pour tout réduction de réduction(i) faire! K :=i-1; !
Di := Di , réduction !! Maj-domaine-courant(i); !
fait;! Dk := Dk -dk;!
Fin! Situation := Dk ≠ Ø;!
Fin!
© F.-Y. Villemin 2012" 77" © F.-Y. Villemin 2012" 78"

Le problème des quatre reines Le problème des quatre reines


Problème: Placer quatre reines (du jeu d échec) sur un Algorithme choisit: A : 1
Anticipation: élimine des valeurs des domaines des autres variables
échiquier 4 X 4 sans que une reine puisse prendre une (figure 1)
autre B est choisie, Anticipation: élimine toutes les valeurs du domaine de C
Conflit ! coupable B : 3 (B : 4 non présentée)
Variable: nom de la colonne A, B, C, D Coupable ! A : 1, la valeur 1 éliminée du domaine de A (figure 2).

Domaine: ensemble des lignes 1, 2, 3, 4


A B C D A B C D

(X : i, signifie une reine en colonne X en ligne i). 1


* 1
*
Contraintes de colonne: implicites 2 2

Contraintes de ligne: X : i . ¬ Y : i
3 3
*
Contraintes de diagonales: X : i . ¬ Y : j
Avec |n°colonne(X) - n°colonne(Y)| % |i - j| 4
4

figure 1 figure 2

© F.-Y. Villemin 2012" 79" © F.-Y. Villemin 2012" 80"


Le problème des quatre reines Le problème des quatre reines
Algorithme choisit: A : 2 D choisi (une seule valeur restante) (figure 5) d où
Anticipation: élimine des valeurs des domaines des solution (figure 6).
autres variables (figure 3).
C choisi (une seule valeur restante) (figure 4) A B C D A B C D

A B C D
A B C D
1
* 1
*
1
1
2 * 2 *
2 * 2 *
3 3
*
3
3
4
* 4
*
4
*
figure 5 figure 6
4

figure 3 figure 4

© F.-Y. Villemin 2012" 81" © F.-Y. Villemin 2012" 82"

Actions Actions
Problème: Notations : G[X] et P[Y] pour G contient X litres et P Y litres.
Situation initiale : G[0] & P[0] But : P[3]
On dispose 2 récipients : G de 7 litres et P de 5 litres Actions :
On n a le droit que de : (A) remplir complètement un récipient non plein :
(A)!remplir complètement un récipient non plein A1 : si G[X] & P[Y] & X<7 alors G[7]
A2 : si G[X] & P[Y] & Y<5 alors P[5]
(B)!vider complètement un récipient non vide (B) vider complètement un récipient non vide :
(C)!transvaser un récipient non vide dans l autre non plein B1 : si G[X] & P[Y] & X> 0 alors G[0]
jusqu'à ce que l'un soit complètement vide ou que l'autre soit B2 : si G[X] & P[Y] & Y> 0 alors P[0]
complètement plein (C) transvaser un récipient non vide dans l autre non plein jusqu'à ce que
L'un soit complètement vide :
Situation initiale : Les 2 récipients sont vides C1 : si G[X] & P[Y] & X>0 & X+Y"5 alors G[0] & P[X+Y]
C2 : si G[X] & P[Y] & Y>0 & X+Y"7 alors G[X+Y] & P[O]
But : On veut avoir 3 litres dans P L'autre soit complètement plein :
C3 : si G[X] & P[Y] & X>0 & X+Y>5 alors G[X+Y-5] & P[5]
C4 : si G[X] & P[Y] & Y>0 & X+Y>7 alors G[7] & P[X+Y-7]

© F.-Y. Villemin 2012" 83" © F.-Y. Villemin 2012" 84"


Actions Systèmes de productions
Inventés par T. Thue en 1902
G[0] & P[0] Montrés équivalents aux fonctions récursives (ou aux grammaires
A1 A2 formelles) par E. Post en 1941
Production:
B1 B2 ! !SI <conditions> ALORS <actions>!
G[7] & P[0] G[0] & P[5]
A2 A1 A1 Conditions = conjonctions de prédicats
C3 C2 C1
B2 B1 Actions = séquences de mise à jour de la base de données
G[2] & P[5] G[7] & P[5] G[5] & P[0] Système de productions:
A1 Une base de données
B2 A2 B2 A2 Un ensemble de productions (règles)
G[2] & P[0] G[5] & P[5] Un interpréteur ("moteur d'inférence")

G[7] & P[3] C4

© F.-Y. Villemin 2012" 85" © F.-Y. Villemin 2012" 86"

Les systèmes de production RETE


Deux mécanismes de base : Méthode due à C. Forgy (1982) de compilation de
!  Chaînage avant : basé sur le modus ponens
productions destinée à améliorer la performance du
!

SI (A " B ET A) ALORS B!
Raisonnement guidé par les données : filtrage
Interpréteur:
Cycle! Principes :
Détecter les règles dont les prémisses sont vérifiées!
(filtrage ou matching) ! {productions applicables}! !  Petit nombre de conditions élémentaires dans les
Si {productions applicables} = Ø alors sortie is! conditions
!  Application d une production !!peu d éléments de
Sélectionner la production à appliquer (résolution des
conflits) par heuristiques et/ou métarègles!
Appliquer la règle(action) ! modification de la base! la base modifiés
Fincycle!
!!peu de nouvelles productions applicables
Chaînage arrière : basé sur le modus tollens
! 
SI (A " B ET ¬B) ALORS ¬A!
!!peu d anciennes productions non-applicables
Raisonnement guidé par les buts !  Création d un réseau : compilation des
Utilisation d'un pile pour le but
productions
!!très gros gain de temps de filtrage
© F.-Y. Villemin 2012" 87" © F.-Y. Villemin 2012" 88"
RETE General Problem Solver
proposition General Problem Solver (GPS), méthode "générale" de résolution des
problèmes inventée par A. Newell & H. Simon (1963)
arité 1 arité 3 Principes :
arité 2 !  Chaînage arrière:
≤ Soit & x P(x) . Q(x)
G P 5 7 Pour prouver Q(a), on va chercher à prouver P(a)
!!d'où pile de sous-buts
!  Expression opérateurs comme productions :
G[x] P[x] < Si <conditions d'application> alors <résultat de l'action>
0
x+y≤5 x+y≤7 !  Comparaison entre but et état :
5 7 Détermination des différences entre but et état
Choix de la plus grande différence
x<5 x<7 x>0 !  Heuristique !!création but "réduire plus grande différence"
!  Buts et opérateurs liés dans table associant à chaque but le ou
A1 A2 B1 B2 les opérateurs utilisables !!d'où, pour but courant, création d'un
autre but "utiliser l'opérateur"

C1 C2 C3 C4
© F.-Y. Villemin 2012" 89" © F.-Y. Villemin 2012" 90"

General Problem Solver Exemple de fonctionnement de GPS


Algorithme GPS :
Exemple de fonctionnement de GPS : Les tours de
Hanoï, jeu inventé par E. Lucas (1883)
Début!
But := être dans "état final"; Etatcourant := {état initial}; !
Etatbut := {état final}; Pile / But;!
Tantque Pile ≠ Ø faire! !  Règles :
Si etatbut = Etatcourant alors retirer But de Pile! $  Un disque à la fois
sinon comparer etatbut et Etatcourant " Différence;!
/* Différence 0 liste ordonnée des différences */! $  on ne peut déplacer que le disque au sommet d'une tour
But := réduire CAR(Différence); !
/* CAR(Différence) 0 la plus grande différence */! $  on ne peut placer qu'un disque sur un plus grand (ou le
Pile / But;!
Si ¬ ) opérateur lié à But alors sortie avec échec!
sol)
sinon si conditions-opérateur vérifiées dans Etatcourant! !  Un langage à 2 types de variables et 5 prédicats
alors Etatcourant := actions-opérateur(Etatcourant);!
Retirer But de Pile! !  4 productions
sinon /* Appliquer l'opérateur devient le but courant */!
But := état de conditions-opérateur; ! !  Heuristique : le plus grand disque non en position finale,
/* Etre dans l'état pour appliquer l'opérateur */! doit être placé en position finale
Pile / But;!
Is Is Is !
Fait !
Fin!
© F.-Y. Villemin 2012" 91" © F.-Y. Villemin 2012" 92"
Langage Etats
Types : disque & position Etat initial et état final :
!  Variables :
#  disque : D1, D2, D3… P P
#  position : X, Y, Z… M
M
!  Constantes :
G G
#  disque : P, M, G (ou sol)
#  position : T1, T2, T3 T1 T2 T3 T1 T2 T3
Prédicats : >(G, M) * >(M, P) * >(G, P) * >(G, M) * >(M, P) * >(G, P) *
!  en(D1, X) 0 vrai ssi le disque D1 est à la position X sommet(P) * en(P, T1) * sommet(P) * en(P, T3) *
!  sommet(D1) 0 vrai ssi le disque D1 est au sommet en(M, T1) * en(G, T1) * vide en(M, T3) * en(G, T3) * vide
!  >(D1, D2) 0 vrai ssi le disque D1 est plus grand que le disque D2! (T2) * vide(T3) * (T1) * vide(T2) *
!  sur(D1, D2/sol) vrai ssi le disque D1 repose sur le disque D2 (ou le sur(P, M) * sur(M, G) * sur(G, sur(P, M) * sur(M, G) * sur(G,
sol) sol)! sol)!
!  vide(X) 0 vrai ssi la position X est vide

© F.-Y. Villemin 2012" 93" © F.-Y. Villemin 2012" 94"

Productions Productions
Production T1 : Production T2 :
T2(D1, Y)!
T1(D1, Y)!

D1!
D1! D1! D2! D2! D1!

X! Y! X! Y!
X! Y! X! Y Si sommet(D1) * en(D1, X) * en(D2, X) * sur(D1, D2) * vide
Si sommet(D1) * en(D1, X) * sur(D1, sol) * vide(Y)! (Y)!
Alors
Alors
retirer [en(D1, X), vide(Y)]!
retirer [en(D1, X), vide(Y), sur(D1, D2)]!
ajouter [en(D1, Y), vide(X)]!
ajouter [en(D1, Y), sommet(D2), sur(D1, sol)]!

© F.-Y. Villemin 2012" 95" © F.-Y. Villemin 2012" 96"


Productions Productions
Production T3 : Production T4 :
T4(D1, Y)!
T3(D1, Y)!

D1! D1!
D1!
D2! D2! D3! D2! D3!
D1! D2!
X! Y! X! Y!
X! Y! X! Y!
Si sommet(D1) * en(D1, X) * sommet(D2) * en(D2, Y) * sur Si sommet(D1) * en(D1, X) * en(D2, X) * sommet(D3) * en(D3,
(D1, sol) * >(D2, D1)! Y) * sur(D1, D2) * >(D3, D1)!
Alors Alors
retirer [en(D1, X), sommet(D2), sur(D1, sol)]! retirer [en(D1, X), sommet(D3), sur(D1, D2)]!
ajouter [en(D1, Y), vide(X), sur(D1, D2)]! ajouter [en(D1, Y), sommet(D2), sur(D1, D3)]!

© F.-Y. Villemin 2012" 97" © F.-Y. Villemin 2012" 98"

Table Buts-Situations-Actions Fonctionnement de GPS


But Situation actions Etat Buts↓!

en(D1, Y)! en(D1, X) * sommet(D1) * T(D1, Y)!


! (vide(Y) 1 (en(D2, Y) * ! 1 2
cas 䙵
! >(D2,D1))! 3

en(D1, Y)! en(D1, X) * en(D2, X) * ! But[en(D2, Z)]!


! sur(D2,D1))!
4 5 6
cas 䙶
!
en(D1, Y)! en(D1, X) * sommet(D1) * But[en(D2, Z)]!
! en(D2, Y) * sommet(D2) * !
8 9
cas 䙷
! >(D1,D2))! 7

10 11 12
© F.-Y. Villemin 2012" 99" © F.-Y. Villemin 2012" 100"

Vous aimerez peut-être aussi