0% ont trouvé ce document utile (0 vote)
36 vues5 pages

TP Prolog : Manipulation de Listes et Arbres

Transféré par

Nawress Jedidi
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
36 vues5 pages

TP Prolog : Manipulation de Listes et Arbres

Transféré par

Nawress Jedidi
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Département Année universitaire

Génie Logiciel 2022/2023


Intelligence Artificielle Responsable
4ème Année Yousra Hadj Hassen

TP2 : Intelligence Artificielle


Prolog
Logiciel Nécessaire pour le TP :

 L’interpréteur SWI-PROLOG (ou GNU Prolog) sous Windows ou Linux.

Objectifs du TP :

 Se familiariser avec le langage de programmation PROLOG.


 Utiliser et manipuler des listes et des entiers en PROLOG.

Pré-requis :

 Connaissances de base en prolog.

I. Liste en PROLOG
Pareil à d’autres langages de programmation, les tableaux en PROLOG sont des listes.
Contrairement à la plupart des langages de programmation, les indices des éléments ne sont
pas disponibles.
En revanche, une liste L peut toujours être décomposée en L=[E|R] où E est le premier
élément de la liste (E n’est pas une liste) et R est le reste de la lsite (R est une liste : c’est en
fait la tranche de L qui démarre après E).

La liste vide est [ ].

N.B. En Prolog, on ne définit pas de fonction ou de procédures mais des prédicats (à valeur
dans {0,1}), éventuellement avec 0 argument. Donc, pour faire l’équivalent d’une procédure,
on dit qu’un certain prédicat est vrai à condition qu’un certain nombre d’actions soient faites,
par exemple :

affiche :- write(‘bonjour’).

1 Travaux Pratiques : Intelligence Artificielle


4ème année GL
Département Année universitaire
Génie Logiciel 2022/2023
Intelligence Artificielle Responsable
4ème Année Yousra Hadj Hassen

II. Travail demandé


Exercice1 : Manipulation de Liste

Définir les prédicats suivants :

1. liste(L) : liste est vrai si L est une liste.


2. affiche(L) : est vrai si tous les éléments de la liste L sont écrits.
3. affiche_inverse(L) : est vrai si tous les éléments de la liste L sont écrits en ordre
inverse.
4. premier1(L,X) : est vraie si X est le premier élément de la liste L.
5. premier2(L) : est vraie si le premier élément de L est affiché (et aucun autre).
6. dernier1(L,X) : est vrai si X est le dernier élément de la liste L.
7. dernier2(L) : est vraie si le dernier élément de L est affiché.
8. element(X,L) : est vrai si X est élément de la liste L.
9. nieme(N,L,X) : est vrai si X est le Nième élément de la liste L.
10. compte(L,N) : est vrai si N est le nombre d’éléments de la liste L.
11. somme(L,N) : est vrai si N est la somme des éléments de la liste des entiers L.
12. occurrence(L,X,N) : est vraie si N est le nombre de fois ou X est dans la liste L.
13. sous_ensemble(L1,L2) : est vrai si tous les éléments de la liste L1 font partie de la
liste L2.
14. substitue(X,Y,L1,L2) : est vrai si L2 est le résultat du remplacement de X par Y
dans L1.
15. retourne(L,L1) : est vrai si la liste L1 est l’inverse de la liste L.
16. concat(L1,L2,L3) : concaténation de listes (L1 + L2 = L3).
17. inserer(X, L1, L2) : X est inséré en tête de L1 pour donner L2.
18. ajouter(X,L1, L2) : X est ajout2 en fin de L1 pour donner L2.
19. selection(X, L1, L2) : X est extrait de L1 pour donner L2.
20. supprimer(X, L1, L2) : toutes les occurrences de X sont supprimées de L1 pour
donner L2.
21. inverser(L1,L2) : inverser L1 donne L2.
22. substituer(X,Y,L1,L2) : substituer toutes les occurrences de X par Y dans L1 donne
L2.
23. decaler(L,LD) : LD est la liste L ou les éléments ont été décalés circulairement vers
la droite.
24. permuter(L,LP) : LP est une permutation de la liste L (si n est le nombre
d’éléments de la liste, il y a n! permutations possibles).
25. convertir(L,LC) : LC est la liste L ( = [t1,t2,...,tn] ) écrite sous la forme t1 et t2 et ...
et tn et fin.

2 Travaux Pratiques : Intelligence Artificielle


4ème année GL
Département Année universitaire
Génie Logiciel 2022/2023
Intelligence Artificielle Responsable
4ème Année Yousra Hadj Hassen

26. aplatir(L,LA) : LA est la liste L qui ne contient plus qu’un seul niveau de crochets (
[...] ). transposer(L,LT): LT est la matrice transposée de la matrice L.
27. creerListe(X,N,L) : L est la liste créée à partir de N occurrences du terme X.
28. univ(F,L) : L est la liste dont la tête est le nom du terme F et la queue est composée
des arguments de F. Chacun des arguments peut être libre, mais pas les deux
simultanément.

Exercice2: Entiers naturels

Traduire en Prolog les axiomes définissant les nombres entiers non négatifs (∈ ℕ) et les
principales opérations les concernant.
Le vocabulaire initial de la théorie des entiers non négatifs comprend :

 une constante z qui représente l’entier 0 (zéro) ;


 une fonction unaire S(X) qui traduit la notion de successeur d’un entier x ; /*une
fonction unaire est une fonction qui a un seul argument, dans notre exemple c'est le
X.*/
 un prédicat unaire entier(x) (x est un entier).

1. Génération:
2. Addition:
3. Multiplication:
4. Exponentiation:
5. Prédécesseur:
6. Soustraction:
7. Inférieur ou égal:

8. Strictement inférieur :
9. Quotient et reste :

10. Division:
11. Plus grand diviseur commun :

12. Factorielle :

3 Travaux Pratiques : Intelligence Artificielle


4ème année GL
Département Année universitaire
Génie Logiciel 2022/2023
Intelligence Artificielle Responsable
4ème Année Yousra Hadj Hassen

Exercice3: Traduction Prolog

1. Traduire par un fait Prolog une fiche d’état-civil du type :


Etat civil :

Personne 1 2 3

Nom Ngaoundere Martin Strauss

Prénom Richard Jean Louise

Date de naissance 01/05/1988 18/10/1990 01/01/1982

Nationalité camerounais française allemande

Sexe masculin masculin féminin

Adresse :

Rue 4 rue 35 bd 6 Mario


Leclerc Invalides Rossi

Ville Brest Paris Rome

Région Finistère Ile-de- Lazio


(29) france

2. On suppose que la base de faits contient un certain nombre de fiches d’état-civil.


Traduire par des buts Prolog les questions suivantes :

(a) Quels sont les individus (nom,prénom) de nationalité française ?

(b) Quels sont les individus (nom,prénom,nationalité) de nationalité étrangère (qui


ne sont pas des français) ?

(c) Quels sont les individus (nom,prénom,nationalité) de nationalité étrangère


habitant Brest dans le Finistère ?

(d) Y a-t-il des individus habitant la même adresse ?

4 Travaux Pratiques : Intelligence Artificielle


4ème année GL
Département Année universitaire
Génie Logiciel 2022/2023
Intelligence Artificielle Responsable
4ème Année Yousra Hadj Hassen

Exercice4: Arbre binaire

Arbres binaires : structure soit vide, soit composée de trois éléments :

 une racine Val,


 un sous–arbre binaire Gauche,
 un sous–arbre binaire Droite.

Un arbre binaire vide sera représenté ici par le terme atomique [], un arbre non vide par le
terme composé bt(Gauche,Val,Droite) (bt comme binary tree).
Exemple : bt(bt(bt([],3,[]),5,bt([],7,[])),9,bt([],12,[]))

Définir les prédicats suivants concernant les arbres binaires :


1. arbreBinaire(T) % T est un arbre binaire
2. dansArbre(X,A) % X est un élément de l’arbre binaire A
3. profondeur(A,N) % N est la profondeur de l’arbre binaire A

5 Travaux Pratiques : Intelligence Artificielle


4ème année GL

Vous aimerez peut-être aussi