Académique Documents
Professionnel Documents
Culture Documents
Exercice 1: (6 pts)
1. L’algorithme A*
Open Closed
(A,10,vide) Ø
(F,9,A) (B,14,A) (A,10,vide)
A → F → G → I→J
3. h admissible ?
Pour chaque sommet n, on a h(n) <h*(n) donc h est admissible
Exercice 2: (5 pts)
1. Résolution du problème: par chaînage avant et chaînage arrière :
a) Chaînage avant :
b) Chaînage arrière :
1/2
Application de R3 Nouveaux buts : C, F ; C est un fait, donc un nouveau but : F
Application de R1 Nouveaux buts : B, D, E ; B est un fait, donc de nouveaux
buts : D, E
Application de R7 Nouveaux buts : C, E ; C est un fait, donc un nouveau but : E
Application de R5 Nouveau but : D
Application de R7 Nouveau but : C ; C est un fait, donc Succès.
2. Le chaînage en avant est connu sous le nom de technique axée sur les données, car nous
atteignons l’objectif en utilisant les données disponibles alors que le chaînage en arrière est
connu sous le nom de technique axée sur les objectifs car nous partons de l’objectif et
atteignons l’état initial afin d’extraire les faits.
Exercice 3: (5 pts)
L’ensemble de variables du problème(X) :
X vaut :{
; ; ... ;
; ; ... ;
. ; . ; ... ; .
; ; ... ; }
D = {1, 2, 3, 4, 5, 6, 7, 8, 9}.
Les contraintes C :
On cherche que toutes les variables présentes sur une même ligne soient différentes, que
toutes les variables présentes sur une même colonne soit différentes, et enfin que toutes les
variables présentes dans un même bloc soit différentes, et ça pour toutes les lignes, colonnes
et blocs de la grille.
On peut modéliser cette contrainte de la façon suivante :
allDifferent( , , , , , , , , ),
allDifferent( , , , , , , , , ),
...
1/2
allDifferent( , , , , , , , , ),
Exercice 4: (4 pts)
a) « occurrence » qui permet de calculer le nombre d’occurrences N d’un nombre X dans
une liste L :
occurrence([],X,0).
([X|T],X,Y):- occurrence(T,X,Z), Y is Z+1.
occurrence([X1|T],X,Z):- X1\=X,occurrence(T,X,Z).
b) ajoute1(L,L1) où L est une liste de nombres, et L1 une liste identique où tous les
nombres sont augmentés de 1.
Ajout1([X],[X1]) :- X1 is X+1.
Ajout1([Y|L],[Y1|L1]) :- Y1 is Y+1, ajout1(L,L1).
Bon courage
1/2