Documente Academic
Documente Profesional
Documente Cultură
Raport
Lucrarea de laborator nr. 1
PLIA
Tema: Introducere în limbajul Prolog. Mecanisme de control al procesului de
backtracking.
Chişinău 2015
Scopul lucrării
Însuşirea principiilor fundamentale de programare a limbajului Prolog
Se va citi breviarul teoretic. Se atrage atenția asupra faptului că toate cunoștințele
din această lucrare vor fi necesare și la efectuarea celorlalte lucrări.
Se vor studia exemplele propuse, încercând găsirea altor posibilități de soluționare a
acestora. Se vor utiliza și alte scopuri(interogări) pentru a testa definițiile
predicatelor introduse.
Se va elabora un arbore genealogic şi o bază de cunoştinţe Prolog care ar descrie
relaţiile existente în familia dumneavoastră proprie care ar permite cercetarea
acestor relaţii prin utilizarea scopurilor externe. Arborele genealogic elaborat trebuie
să conţină cel puţin trei niveluri. Pentru cercetarea relaţiilor existente în familie se
vor utiliza nu mai puţin de şase scopuri.
Însușirea noțiunilor privind mecanismele specifice limbajului Prolog pentru
controlul procesului de backtracking: cut și fail
Citiţi breviarul teoretic. Se atrage atenţia asupra faptului că toate cunoştinţele din
această lucrare vor fi necesare şi la efectuarea celorlalte lucrări.
Lansaţi la executare programul elaborat în lucrarea 1 şi cercetaţi schimbările
semanticii procedurale:
o prin schimbarea ordinii propoziţiilor – fapte;
o prin schimbarea ordinii propoziţiilor - reguli; (două variante)
o prin schimbarea subscopurilor în reguli; (două variante)
o trageţi concluzii.
Rezolvaţi următoarele probleme propuse şi urmăriţi execuţia lor corectă.
o Elaboraţi şi testaţi un program pentru determinarea unei valori minime din
două numere (X şi Y), fără utilizarea predicatului cut.
o Elaboraţi şi testaţi un program pentru determinarea unei valori minime din
două numere (X şi Y), utilizând predicatul cut roşu şi cut verde.
o Care vor fi răspunsurile programului
▪ р( 1).
▪ р( 2) :- !.
▪ р( 3).
◦ Efectuaţi o analiză comparativă între utilizarea predicatelor cut în spaţiul bazei de
cunoştinţe şi spaţiul scopurilor pentru întrebările formulate în lista de scopuri ce urmează:
▪ р( X).
▪ р( X), p(Y).
▪ р( X), !, p(Y).
◦ Doi copii pot juca un meci într-un turneu de tenis dacă au aceeaşi vârstă. Fie
următorii copii şi vârstele lor: copil(peter,9). copil(paul,10). copil(chris,9).
copil(susan,9). Definiţi un predicat din care rezultă toate perechile de copii care pot juca
un meci într-un turneu de tenis.
Introduceţi schimbările corespunzătoare în programul din punctul 2., utilizând cut
verde cel puţin în două reguli din baza de cunoştinţe.
Introduceţi schimbările corespunzătoare în programul din punctul 2., utilizând cut
roşu în reguli din baza de cunoştinţe. Trageţi concluzii.
Prezentaţi darea de seamă.
Boris Lidia Gheorghe Elizaveta
barbat(gheorghe).
barbat(boris).
barbat(vladimir).
barbat(ionI).
barbat(ionC).
barbat(gheorgheJunior).
barbat(ionG).
barbat(nicolai).
barbat(stefan).
barbat(mircea).
parinti(boris,lidia,ionC).
parinti(boris,lidia,elena).
parinti(gheorghe,elizaveta,vladimir).
parinti(gheorghe,elizaveta,tatiana).
parinti(ionC,oxana,selena).
parinti(vladimir,elena,gheorgheJunior).
parinti(vladimir,elena,ionG).
parinti(vladimir,elena,nicolai).
parinti(ionI,tatiana,stefan).
parinti(ionI,tatiana,mircea).
tata(X,Z):-parinti(X,_,Z),barbat(X).
mama(Y,Z):-parinti(_,Y,Z),femeie(Y).
bunel(X,Z):-parinti(X,_,Y),(parinti(Y,_,Z);parinti(_,Y,Z)).
bunica(X,Z):-parinti(_,X,Y),(parinti(Y,_,Z);parinti(_,Y,Z)).
parinte(X,Y):-parinti(X,_,Y);parinti(_,X,Y).
frate(X,Y):-parinti(Z,W,X),parinti(Z,W,Y),barbat(X),not(X=Y).
sora(X,Y):-parinti(Z,W,X),parinti(Z,W,Y),femeie(X),not(X=Y).
matusa(X,Y):-parinte(Z,Y),(frate(X,Z);sora(X,Z)),femeie(X).
unchi(X,Y):-parinte(Z,Y),(frate(X,Z);sora(X,Z)),barbat(X).
verisori(X,Y):-parinte(Z,X),parinte(W,Y),(frate(Z,W);sora(Z,W)),not(X=Y).
parinti2(X,Y):-parinti(X, Y, _),!.
pereche(Barbat, Femeie):-parinti(Barbat,Femeie,_),barbat(Barbat),femeie(Femeie).
nora(Parinte, Nora):-femeie(Nora),parinte(Parinte, Sot),barbat(Sot),pereche(Sot, Nora).
ginere(Parinte, Ginere):- barbat(Ginere),parinte(Parinte, Sotie),femeie(Sotie),pereche(Ginere, Sotie).
Baze de cunostinte de calcularea minim si a celor copii care pot sa mearga in turneu.
%lab 2
%calculeaza min fara cut
min(X, Y) :- X =< Y, write(X).
min(X, Y) :- X > Y,write(Y).
copil(peter,9).
copil(paul,10).
copil(chris,9).
copil(susan,9).
Prolog este un limbaj potrivit pentru a putea modela un sistem inteligent artificial.
Mecanismul de backtracking al limbajului Prolog este foarte simplu dar, cum este
organizat acesta poate efectua un șir de operații/algoritmi. În urma creerei acestui laborator
am înțeles mai bine crearea programelor in prolog și crearea unui program inteligent.