Sunteți pe pagina 1din 8

MINISTERUL EDUCAŢIEI, CULTURII ȘI CERCETĂRII AL

REPUBLICII MOLDOVA
UNIVERSITATEA TEHNICĂ A MOLDOVEI
FACULTATEA CALCULATOARE, INFORMATICĂ ŞI
MICROELECTRONICĂ
DEPARTAMENTUL INFORMATICĂ ȘI INGINERIA
SISTEMELOR

RAPORT
pentru lucrarea de laborator nr.1
la disciplina: Sisteme de inteligență artificială
cu tema: Însuşirea ideilor fundamentale de
programare în Prolog.

A elaborat: A verificat:
st. gr. IA-161, Conf.univ.dr.
Cosciug Sergiu Lazu Victoria

CHIŞINĂU 2018
Scopul: Însuşirea ideilor fundamentale de programare în Prolog.

Desfaşurarea lucrării:

1. Se va citi breviarul teoretic. Se atrage atenţia asupra faptului că toate cunoştinţele din această
lucrare vor fi necesare şi în derularea celorlalte lucrări.

2. Se vor studia exemplele propuse , încercând găsirea altor posibilităţi de soluţionare a acestora.
Utilizaţi şi alte scopuri (interogări) pentru a testa definiţiile predicatelor introduse

3. Se va elabora un arbore genealogic şi o bază de cunoştiţe Prolog care descrie relaţiile existente
în familia proprie D-stră şi o să permite cercetarea acestor relaţii prin utilizarea scopurilor.
Arbore genealogic elaborat trebuie să conţină cel puţin trei nivele. Pentru cercetarea relaţiilor
existente în familie sa fie utilizate nu mai puţin de şase scopuri.

4. Se va prezenta darea de seamă .

Figura 1. Arborele genealogic al familiei mele

Codul sursă:

% Student exercise profile

:- set_prolog_flag(occurs_check, error). % disallow cyclic terms

:- set_prolog_stack(global, limit(8 000 000)). % limit term space (8Mb)

:- set_prolog_stack(local, limit(2 000 000)). % limit environment space

% My program goes here

%toate femeile din familie

femeie(maria).

femeie(elena).
femeie(ana).

femeie(alexandra).

femeie(mariaDimitriu).

femeie(vasilita).

femeie(ioana).

femeie(zinaida).

femeie(valentina).

femeie(viorica).

femeie(mariana).

femeie(ionela).

femeie(nicoleta).

%toti barbatii din familie

barbat(nichifor).

barbat(vasile).

barbat(ion).

barbat(haralampie).

barbat(boris).

barbat(costantin).

barbat(vitalie).

barbat(vladimir).

barbat(iurie).

barbat(alexandruTapes).

barbat(alexandruCodreanu).

barbat(ionel).

barbat(petru).

%parintii

parinte(alexandra,mariaDimitriu).

parinte(costantin,mariaDimitriu).
parinte(viorica,mariaDimitriu).

parinte(alexandra,haralampie).

parinte(costantin,haralampie).

parinte(viorica,haralampie).

parinte(nichifor,vasilita).

parinte(ioana,vasilita).

parinte(petru,vasilita).

parinte(nichifor,ion).

parinte(ioana,ion).

parinte(petru,ion).

parinte(maria,alexandra).

parinte(elena,alexandra).

parinte(ana,alexandra).

parinte(maria,nichifor).

parinte(elena,nichifor).

parinte(ana,nichifor).

parinte(nicoleta,elena).

parinte(nicoleta,vasile).

parinte(iurie,ioana).

parinte(iurie,alexandruTapes).

parinte(ionela,petru).

parinte(alexandruCodreanu,petru).

parinte(ionel,petru).

parinte(ionela,zinaida).

parinte(alexandruCodreanu,zinaida).

parinte(ionel,zinaida).

parinte(mariana,viorica).

parinte(mariana,boris).
parinte(vitalie,costantin).

parinte(vladimir,costantin).

parinte(vitalie,valentina).

parinte(vladimir,valentina).

%scopuri

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

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

bunica(X,Z):-parinte(X,Y),parinte(Y,Z),femeie(Z).

bunel(X,Z):-parinte(X,Y),parinte(Y,Z),barbat(Z).

frate(X,Y):-mama(X,Z),tata(X,Q),mama(Y,Z),tata(Y,Q),barbat(Y),X\=Y.

sora(X,Y):-mama(X,Z),tata(X,Q),mama(Y,Z),tata(Y,Q),femeie(Y),X\=Y.

matusa(X,Z):-parinte(X,Y),sora(Y,Z),femeie(Z).

unchi(X,Z):-parinte(X,Y),frate(Y,Z),barbat(Z).

verisor(X,Y):-((unchi(X,Z);matusa(X,Z)),(mama(Y,Z);tata(Y,Z))),barbat(Y).

verisoara(X,Y):-((unchi(X,Z);matusa(X,Z)),(mama(Y,Z);tata(Y,Z))),femeie(Y).

sotie(X,Y):-mama(Z,Y),tata(Z,X),femeie(Y),X\=Y.

sot(X,Y):-tata(Z,Y),mama(Z,X),barbat(Y),X\=Y.

%cumnat(X,Y):-sot(Z,Y),sora(X,Z);sot(Z,Y),sora(Q,Z),sot(X,Q).

%cumnata(X,Y):-sotie(Z,Y),frate(X,Z);sotie(Z,Y),frate(Q,Z),sotie(X,Q).

socru(X,Y):-parinte(Z,Y),sot(X,Z),barbat(Y);parinte(Z,Y),sotie(X,Z),barbat(Y).

soacra(X,Y):-parinte(Z,Y),sot(X,Z),femeie(Y);parinte(Z,Y),sotie(X,Z),femeie(Y).

socrii(X,Y,Z):-sotie(Q,X),tata(Q,Y),mama(Q,Z); sot(Q,X),tata(Q,Y),mama(Q,Z).

Rezultatele:
Y este mama lui X.

Y este bunica lui X.


Y este fratele lui X.

Y este matusa lui X.


Y este sotia lui X.

Observăm că relația de soți se repetă de un număr de ori egal cu numărul de copii comuni pe care
îi au X și Y.

X și Y sunt socrii lui Vasile.

Y este soacra șui Nichifor.

Concluzie:

În această lucrare de laborator am aflat entitățile limbajului de programare PROLOG.


Studierea sintaxei de bază a limbajului și structura “cunoștintelor” sunt principiale pentru
înțelegerea funcționării acestui limbaj. S-a făcut schema arborelui genealogic a familiei după o
ramură după care s-a completat cunoștintele cu membrii respectivi și întrebările care urmau a fi
puse.

Astfel dupa introducerea unei intrebari, PROLOG extrage din cunostinte intrebarea si
continutul de evaluare a expresiei si evalueaza datele conform argumentelor date in intrebare. In
final am obtinut un sistem de arbore genealogic in limbajul de programare PROLOG. Teoria
propusa in laborator a fost utila si a servit ca repere pentru efectuarea laboratorului.

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