Sunteți pe pagina 1din 4

Universitatea de Stat din Moldova

Facultatea de Matematică și Informatică

Specialitatea "Informatică aplicată"

Cursul "Inteligența artificială"

Lucrare de laborator Nr.1


”Fapte,reguli și interogari în limbajul
PROLOG”

Elaborat de:

Grupa:

Profesor:

Chișinău,2018
Scurt istoric:
Limbajul Prolog este un limbaj declarativ sustinut de o componenta procedurala. Spre
deosebire de limbajele procedurale, cum ar fi C sau Pascal, in care rezolvarea problemei
este specificata printr-o serie de pasi de executie sau actiuni, intr-un limbaj declarativ
problema este specificata prin descrierea universului problemei si a relatiilor sau
functiilor existente intre obiecte din acest univers. Exemple de astfel de limbaje sunt cele
functionale, de exemplu Lisp, Scheme, ML, si cele logice, de exemplu Prolog.
Desi initial a fost gandit pentru un set restrans de probleme, Prolog a devenit cu timpul
un limbaj de uz general, fiind o unealta importanta in aplicatiile de inteligenta artificiala
aCM84, Bra88, SS86i. Pentru multe probleme, un program Prolog are cam de 10 ori mai
putine linii decat echivalentul lui in Pascal.
In 1983, cercetatorii din Japonia au publicat un plan ambitios de creare a unor
calculatoare de generatia a 5 a pentru care Prolog era limbajul de asamblare. Planul nu a
reusit, dar acest proiect a marcat o dezvoltare deosebita a interpretoarelor si
compilatoarelor de Prolog, precum si o crestere mare a numarului de programatori in
acest limbaj.
Multe clase de probleme poate fi rezolvate in Prolog, existand anumite categorii care
sunt rezolvabile mult mai usor in Prolog decat in orice alt limbaj procedural. Astfel de
probleme sunt in principal cele dedicate prelucrarii simbolice sau care necesita un pro ces
de cautare a solutiei intr-un spatiu posibil de transformari ale problemei.
Prezentarea limbajului Prolog ce urmeaza este in principal orientata pe descrierea
limbajului Prolog standard. Exemplele de programe din aceasta parte cat si din partea a
doua sunt rulate utilizand interpretorul ARITY Prolog pe microcalculatoare de tip IBM/PC,
mediul de programare ARITY Prolog si particularitatile lui sintactice fiind prezentate in
partea a doua.

LISTINGUL PROGRAMULUI:

domains

s=symbol

predicates

barbat(s)

femeie(s)

parent(s,s)
tata(s,s)

mama(s,s)

copil(s,s)

frate(s,s)

sora(s,s)

nepot(s,s)

bunica(s,s)

bunel(s,s)

parent_parent(s,s)

stramos(s,s)

clauses

barbat("Grigore").

barbat("Alex").

barbat("Timur").

barbat("Grisa").

femeie("liuda").

femeie("Patricia").

femeie("Silvia").

femeie("Victoria").

femeie("Alina").

parent("Grigore","Silvia").

parent("Grigore","Victoria").

parent("Liuda","Silvia").

parent("Liuda","Victoria").

parent("Silvia","Grisa").

parent("Alex","Grisa").

parent("Silvia","Alina").

parent("Alex","Alina").

parent("Timur","Patricia").
parent("Victoria","Patricia").

mama(X,Y):-parent(X,Y),femeie(X).

tata(X,Y):-parent(X,Y),barbat(X).

copil(Y,X):-parent(X,Y).

frate(X,Y):-parent(Z,X),parent(Z.Y),barbat(X).

sora(X,Y):-parent(Z,X),parent(Z.Y),femeie(X).

bunica(X,Y):-parent_parent(X,Y),femeie(X).

bunel(X,Y):-parent_parent(X,Y),barbat(X).

nepot(X,Z):-copil(X,Y),copil(Y,Z).

parent_parent(X,Y):-parent(X,Y),parent(Y,X).

stramos(X,Z):-parent(X,Z).

stramos(X,Z):-parent(X,Y),stramos(Y,Z).

S-ar putea să vă placă și