Université Paul Valéry

UFR IV : Sciences économiques, mathématiques et sociales
Département Mathématiques et Informatique Appliqués

Filière Mathématiques appliquées et sciences sociales (MASS: Cette filière est cohabilitée entre les universités de Montpellier 2 et 3).

DEUG 2ème année

Option Intelligence Artificielle: examen du 17 mai2005.

Soient les clauses suivantes:
kefaije([],X,X).
kefaije([X|Y],Z,[X|R]) :- kefaije(Y,Z,R).

Question 1: De quelle nature sont les arguments du prédicat kefaije?

Ici, le prédicat kefaije a 3 arguments (il est donc d'arité 3, ou ternaire), le prémier (le plus à gauche) est obligatoirement une liste (ou chaine de caractères), et deux autres (à droite) sont quelconques. Comme personne n'a fourni la bonne réponse, j'ai accepté les réponses affirmant que les 3 arguments sont des listes, qui n'est pas fausse, mais n'est qu'à moitié exacte, car incomplète.

On peut le noter ainsi: kefaije(liste, quelconque, quelconque). On peut vérifier que les deux derniers arguments sont bien quelconques au moyen de la requête: kefaije([],aa,X) qui renvoie bien X = aa comme solution.

Question 2: Que fait cet ensemble de clauses? Expliquez la propriété qui est toujours vérifiée entre les arguments du prédicat kefaije.

Cet ensemble de clauses concatène deux listes pour en faire une troisième. la propriété toujours vérifiée entre ses arguments est que le troisième est légal à la concaténation des deux premiers.

Question 3: Quelles sont les réponses aux requêtes suivantes:
kefaije(X,"ir","finir").

X = "fin".

kefaije(A,"ir","finir"), kefaije(A,"issons",B).

A = "fin", B = "finissons".

Questions 4: Quelles sont les réponses à la requête suivante:
kefaije(A,X,"saisir"), kefaije(A,Y,"saisissons").

Attention, il y a 5 solutions, ne vous laissez pas aveugler par l'interprétation grammaticale, restez en logique...

A = "s", X = "aisir", Y = "aisissons".
A = "sa", X = "isir", Y = "isissons".
A = "sai", X = "sir", Y = "sissons".
A = "sais", X = "ir", Y = "issons".
A = "saisi", X = "r", Y = "ssons".

On ajoute alors les clauses suivantes:
akoiserje(I,P,Z) :- fin(X,P,Y),kefaije(A,X,I),kefaije(A,Y,Z).
fin("ir","nous","issons").
fin("ir","vous","issez").

Question 5: Quelle est la réponse à la requête: akoiserje("chérir","nous",Y).?

Etant donnée la définition du prédicat akoiserje, la solution utilise nécessairement fin("ir","nous","issons"). Cela signifie que prolog va chercher d'abord à résoudre kefaije(A,"ir","chérir"), d'où A = "chér" (comme à la question 3). La résolution se termine alors par celle de kefaije("chér","issons",Y), ce qui donne Y = "chérissons".

Question6: Quelle est la réponse à la requête: akoiserje("chérir",Y,Z).?

Nous pouvons reprendre le raisonnement tenu à la question précédente, en remarquant que cette fois ci, il y aura une solution pour chaque solution de la requête fin(X1,X2,X3), c'est à dire au total 2 solutions:
Y = "nous", Z = "chérissons".
Y = "vous", Z = "chérissez".

On ajoute les clauses suivantes:
fin("ir","elles","issent").
fin("ir","ils","issent").

Question 7: Quelle sont alors les réponses à la requête: akoiserje(X,Y,"subissent").?

Cette fois ci, la résolution se fera à la manière de la question 4, mais le nombre de solutions est limité par le fait que le second argument de kefaije, qui doit être contenu dans "subissent", doit apparaitre comme 3e argument du prédicat fin: la seule possibilité est donc "issent". Il en résulte que notre requête a deux solutions:
X = "subir", Y = "ils".
X = "subir", Y = "elles".

On ajoute les clauses suivantes:
fin("er","nous","ons").
fin("er","vous","ez").
fin("er","elles","ent").
fin("er","ils","ent").

Question 8: Quelle sont les réponses à la requête: akoiserje("aimer",Y,Z).?

En reprenant le même raisonnement que dans la question 6, on obtient ici 4 solutions:
Y = "nous", Z = "aimons".
Y = "vous", Z = "aimez".
Y = "elles", Z = "aiment".
Y = "ils", Z = "aiment".

Question 9: Quelle est la réponse à la requête: akoiserje(X,Y,"aimons").?

La réponse à cette question est calquée sur le principe de la question 7. La solution est donc:
X = "aimer", Y = "nous".

Question 10: Quelle est maintenant la réponse à la requête : akoiserje(X,Y,"subissez"). Où faudrait-il mettre un cut (!) et dans quel ordre mettre les clauses définissant le prédicat fin pour que cette réponse soit conforme à la grammaire française?

Ici, bien sûr, apparait le problème que "subissez" sera trouvé à la fois comme conjugaison de "subir" et de "subisser". les solutions sont, en effet:
X = "subir", Y = "vous".
X = "subisser", Y = "vous".

Pour trancher entre ces deux solutions, le critère est que seule la fin la plus longue doit être retenue. Deux points sont à traiter pour atteindre ce but:

On obtient alors le programme suivant: ...(à compléter)...