Programarea cu constr angeri n Prolog [618105]

Programarea cu constr^ angeri ^ n Prolog
Boico Ion
2019

Rezumat
Programarea logic a cu constr^ angeri ^ mbin a programarea logic a s ,i programa-
rea cu constr^ angeri, s ,i anume stilul declarativ al program arii logice ^ mpreun a
cu e cient ,a satisfacerii constr^ angerilor. Acest referat are scopul de a prezenta
o introducere general a ^ n programarea logic a cu constr^ angeri, precum s ,i pre-
zentarea unor not ,iuni introductive despre Prolog s ,i programarea logic a cu
constr^ angeri (Constraint Logic Programming – CPL).
Lucrarea dat a este ^ mp art ,it a ^ n trei capitole:
Primul capitol cont ,ine not ,iuni introductive despre Prolog.
Al doilea capitol cont ,ine at^ at not ,iuni introductive despre programa-
rea logic a cu constr^ angeri, c^ at s ,i abordarea problemei satisfacerii con-
str^ angerilor.
Al treilea capitol cont ,ine concluziile obt ,inute ^ n urma analizei pro-
gram arii logice cu constr^ angeri (Constraint Logic Programming – CPL).

Cuprins
Introducere . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1 Limbajul Prolog 4
1.1 Entit at ,ile limbajului Prolog . . . . . . . . . . . . . . . . . . . 5
1.2 Sintaxa limbajului Prolog . . . . . . . . . . . . . . . . . . . . 8
1.3 Limbajul Prolog  si logica cu predicate de ordinul I . . . . . . . 8
2 Programarea cu constr^ angeri 12
2.1 Satisfacerea constr^ angerilor . . . . . . . . . . . . . . . . . . . 13
2.2 Rezolvarea problemelor de satisfacere a constr^ angerilor . . . . 15
2.3 Utilizarea limbajului Prolog ca limbaj de programarea logic a
a constr^ angerilor . . . . . . . . . . . . . . . . . . . . . . . . . 16
3 Concluzii 18
1

Bibliogra e 20
2

Introducere
Programarea logic a se bazeaz a pe principiile logicii formale. Cer-
cet arile ^ n domeniul logicii formale au fost init iate de Aristotel ^ n secolul al
IV-lea ^ .e.n. El a creat o oper a pre stiint i c a ^ n domeniul logicii, a elaborat
teoria rat iunii  si formele ei, ^ nv at  atura despre silogisme, a formulat legile lo-
gicii. Logica lui Aristotel, cunoscut a  si sub denumirea de logic a tradit ional a,
este str^ ans legat a de limbajul natural. ^In secolul al XIX-lea a ap arut primul
limbaj formal al logicii { logica propozit ional a, iar put in mai t^ arziu un limbaj
mai avansat { logica predicatelor.
Leibniz G. W. (1646 – 1716) este considerat nu numai unul dintre
fondatorii analizei matematice, dar s ,i a informaticii s ,i logicii formale. ^In lo-
gic a el s – a ocupat de metodele ce permit descompunerea tuturor not ,iunilor
umane ^ n astfel de not ,iuni care ar constitui "alfabetul rat ,iunii umane", sco-
pul ind ^ mbinarea lor ^ n mod automat pentru a obt ,ine toate a rmat ,iile
adev arate. La baza proiectului s au a fost pus a Logica simbolic a sau cum
o numea el "Calculul care genereaz a rat ,ionamente". De ment ,ionat c a Pro-
log este unul dintre primele limbaje care a produs trecerea de la prelucrarea
numeric a la cea simbolic a.
^In limitele acestor formalisme, ideile promovate de J. Robinson, R.
Kowalski  si alt ii, predominant din Marea Britanie, ^ n anii `60 ai secolului
trecut au pus bazele teoriei program arii logice.
3

Capitolul 1
Limbajul Prolog
La ^ nceputul anilor '70, Kowalski a formulat o astfel de formul a
logic a:
S1^S2^: : : S n!S
care are, ^ n logica cu predicate de ordinul ^ nt^ ai semini cat ,ia declarativ a con-
form c areia S1^S2^: : : S n!Simplic a S, adic a dac a S1s,iS2: : :s,iSn
sunt ecare adev arate atunci s ,iSeste adev arat, s ,i a propus o interpretare
procedural a asociat a. Conform acestei interpret ari, formula de mai sus poate
scris a sub forma:
Sdac a S1s,iS2: : :s,iSn
s,i poate executat a ca o procedur a a unui limbaj de programare recursiv,
unde Seste antentul procedurii s ,iS1; S 2; : : : S ncorpul acesteia. Deci, pe
l^ ang a interpretarea declarativ a, logic a, a unei astfel de formule, formula poate
interpretat a procedural astfel: pentru a executa Sse execut a S1; S2; : : : S n.
^In aceeas ,i perioad a, francezul A. Colmerauer, lingvist de speciali-
4

tate a elaborat prima versiune a limbajului de programare logic a Prolog. ^In
anul 1971 ^ n Marsilia a fost demonstrat primul interpretator al limbajului de
programare Prolog. Denumirea limbajului Prolog este format a din pre xele
cuvintelor"PROgramare LOGic a".
La baza limbajului de programare logic a stau elementele logicii.
Procesul deducerii unei concluzii ^ n baza unor condit ii prealabile se nume ste
deduct ie logic a. ^In deduct ia logic a, mult imea predicatelor unei concluzii
se pun ^ n concordant  a cu mult imea subiectelor altei concluzii. ^In procesul
deducerii, pe baza subiectului unei concluzii  si a predicatului altei concluzii,
se formeaz a o concluzie nou a. ^In a sa fel, deduct ia logic a poate determinat a
 si ca un proces de rat ionament. [1]
Prologul este mai adaptat pentru rezolvarea problemelor inteligent ei
arti ciale. ^Ins a, a-l considera unic pentru acest domeniu ar incorect. LISP-
ul este nu mai put in cunoscut ^ n domeniul inteligent ei arti ciale.
1.1 Entit at ,ile limbajului Prolog
Limbajul Prolog este un limbaj logic, descriptiv, care permite spe-
ci carea problemei de rezolvat ^ n termenii unor fapte cunoscute despre obiec-
tele universului problemei  si a relat iilor existente^ ntre aceste obiecte. Execut ia
unui program Prolog const a ^ n deducerea implicat iilor acestor fapte  si relat ii,
programul de nind astfel o mult ime de consecint e ce reprezint a ^ nt elesul sau
semni cat ia declarativ a a programului.
Un program Prolog cont ine urm atoarele entit at i:
5

fapte despre obiecte  si relat iile existente ^ ntre aceste obiecte;
Un fapt este un adev ar necondit ,ionat s ,i speci c a o a rmat ,ie despre o
anumit a relat ,ie. Relat ,iile pot unare, binare, etc.
Forma general a este:
nume predicat ( arg 1; arg 2; : : : ; arg m):(m1)
Numele unui predicat este un identi cator care ^ ncepe cu o liter a mic a.
Argumentele sunt constante. Faptul este urmat de un punct.
Exemplu:
Faptul plus(3;4;7):descrie relat ,ia "3 plus 4 este egal cu 7".
reguli despre obiecte  si relat iile dintre ele, care permit deducerea (in-
ferarea) de noi fapte pe baza celor cunoscute;
Regulile sunt a rmat ,ii, adev arul c arora este determinat de c atre adev arul
mai multor factori. Regulile sunt nis ,te rat ,ionamente (deduct ,ii).
Forma general a a regulilor este:
nume predicat ( arg 1; arg 2; : : : ; arg m) :
nume predicat1 ( arg 11; arg 12; : : : ; arg 1m);
nume predicat2 ( arg 21; arg 22; : : : ; arg 2l);
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;
nume predicatK ( arg k1; arg k2; : : : ; arg kp):
Num arul argumentelor din paranteze poate s ,i nul. ^In acest caz pa-
rantezele se omit. Predicatele pot cont ,ine variabile.
^ ntreb ari, numite  si scopuri , despre obiecte  si relat iile dintre ele, la
care programul r aspunde pe baza faptelor  si regulilor existente.
Dup a ce s – au declarat faptele s ,i regulile, poate declarat s ,i scopul.
6

Ceea ce se caut a se numes ,te ^ n Prolog goal (interogare, scop). Scopul
determin a dac a are loc o anumit a relat ,ie dintre obiecte.
Forma unui goalcoincide cu forma corpului unei reguli. Un goalpoate
exterior sau interior. ^In cazul c^ and goaleste exterior (se introduce ^ n
fereastra de dialog) se caut a toate solut ,iile, dac a el cont ,ine variabile.
Dac a nu cont ,ine variabile, atunci se caut a o singur a solut ,ie (prima).
^In cazul c^ and goaleste ^ n interiorul programului (declarat) se caut a o
singur a solut ,ie (prima).
^In procesul de c autare a solut ,iilor, Prolog ^ ncearc a s a uni ce predica-
tele ce trebuie demonstrate ( goal) cu un predicat declarat ca fapt sau
deductibil.
[5]Uni carea are loc atunci c^ and:
{predicatele au acelas ,i nume;
{obiectele uni cate au acelas ,i nume;
{obiectele s ,i valoarea variabilelor legate sunt identice;
{valorile a dou a variabile sunt identice;
{variabilele ce nu sunt legate se leag a la valorile obiectelor care se
uni c a;
{variabila anonim a nu ia valoare, se uni c a cu orice;
{dac a dou a variabile sunt legate, atunci ^ ndat a ce una este concre-
tizat a (primes ,te valoare) cealalt a e legat a de aceeas ,i valoare.
Exemplu:
GOAL: are(persoanaX, carte).
1. R aspunsul este YES dac a:
{scopul este satisf acut de c atre baza de cunos ,tint ,e
7

2. Altfel r aspunsul este NO:
{acest scop nu exist a ^ n baza de cunos ,tint ,e
1.2 Sintaxa limbajului Prolog
Un program Prolog este format din fapte, reguli  si ^ ntreb ari, acestea
ind construite pe baza predicatelor de nite de utilizator sau prede nite. ^In
orice sistem Prolog exist a o mult ime de predicate prede nite, unele dintre
acestea ind predicate standard, iar altele depinz^ and de implementare. Ar-
gumentele predicatelor Prolog, prin analogie cu logica predicatelor de ordinul
I, se numesc termeni,  si pot constante, variabile sau structuri.
1.3 Limbajul Prolog  si logica cu predicate de
ordinul I
Limbajul Prolog este un limbaj de programare logic a. De si conce-
put init ial pentru dezvoltarea unui interpretor de limbaj natural, limbajul s-a
impus ca o solut ie practic a de construire a unui demonstrator automat de
teoreme folosind rezolut ia. Demonstrarea teoremelor prin metoda rezolut iei
necesit a ca axiomele  si teorema s a e exprimate ^ n forma clauzal a, adic a o
disjunct ie de literali, unde un literal este un predicat sau un predicat negat.
Sintaxa  si semantica limbajului Prolog permit utilizarea numai a unei anu-
mite forme clauzale a formulelor bine formate: clauze Horn distincte .
8

Deoarece faptele  si regulile Prolog sunt ^ n form a clauzal a, forma
particular a a clauzelor ind clauze Horn distincte, ele se mai numesc  si clauze
Prolog .
De nit ,ia 1. Se nume ste clauz a Horn o clauz a care cont ine cel mult un literal
pozitiv. O clauz a Horn poate avea una din urm atoarele patru forme:
(1) o clauz a unitar a pozitiv a format a dintr-un singur literal pozitiv (literal
nenegat);
(2) o clauz a negativ a format a numai din literali negat i;
(3) o clauz a format a dintr-un literal pozitiv  si cel put in un literal negativ,
numit a  si clauz a Horn mixt a;
(4) clauz a vid a.
De nit ,ia 2. Se nume ste clauz a Horn distinct a o clauz a care are exact un
literal pozitiv, ea ind e o clauz a unitar a pozitiv a, e o clauz a Horn mixt a.
Clauzele Horn unitare pozitive se reprezint a ^ n Prolog prin fapte,
iar clauzele Horn mixte prin reguli. O clauz a Horn mixt a de forma:
S1_S2_: : :_Sn_S:
se exprim a ^ n Prolog prin regula:
S:-S1; S2; : : : S n:
Semini cat ,ia intuitiv a a unei reguli Prolog are un corespondent clar ^ n logica
cu predicate de ordinul I dac a se t ,ine cont de faptul c a o clauz a Horn mixt a
poate proveni din urm atoarea formul a bine format a:
S1^S2^: : :^Sn!S
9

Variabilele din clauzele distincte se transform a ^ n variabile Prolog, constan-
tele din aceste formulte ^ n constante Prolog, iar funct ,iile pot asimiliate cu
structuri Prolog. Deci argumentele unui predicat Prolog au forma termenilor
din calculul cu predicate de ordinul I.
Exemplu: [6]
Fie urm atoarele enunt uri: Orice sportiv este puternic. Oricine este
inteligent  si puternic va reu si ^ n viat  a. Oricine este puternic va reu si ^ n
viat  a sau va ajunge b at au s. Exist a un sportiv inteligent. Cineva este sportiv.
Exprim^ and enunt urile ^ n logica cu predicate de ordinul I se obt in urm atoarele
formule bine formate:
A1. (8x)(sportiv (x)!puternic (x))
A2. (8x)(inteligent (x)^puternic (x)!reus,es,te(x))
A3. (8x)(puternic (x)!(reus,es,te(x)_batau s,(x)))
A4. (9x)(sportiv (x)^inteligent (x))
A5.Sportiv (cineva )
Axiomele se transform a ^ n forma clauzal a s ,i se obt ,in urm atoarele
clauze:
C1.sportiv (x)_puternic (x)
C2.inteligent (x)_puternic (x)_reuseste (x)
C3.puternic (x)_reuseste (x)_bataus (x)
C4.sportiv (a)
C5.inteligent (a)
10

C6.sportiv (cineva )
Clauzele C1, C2, C4, C5, C6 pot transformate ^ n Prolog, deoa-
rece sunt clauze Horn distincte, dar clauza C3 nu poate transformat a ^ n
Prolog. Programul Prolog care se obt ,ine prin transformarea acestor clauze
este urm atorul:
puternic (X) :sportiv (X):
reuseste (X) :inteligent (X); puternic (X):
sportiv (a):
inteligent (a):
sportiv (cineva ):
11

Capitolul 2
Programarea cu constr^ angeri
Programarea cu constr^ angeri reprezint a o abordare convenabil a a
formul arii s ,i a solut ,ion arii problemelor, care poate reprezentat a ^ n mod
natural ^ n funct ,ie de constr^ angerile stabilite ^ ntr-un set de variabile. Solut ,ia
acestor probleme este de a g asi astfel de combinat ,ii de valori ale variabile-
lor care corespund constr^ angerilor. Acest proces se numes ,te satisfact ,ie fat , a
de constr^ angeri. Programarea logic a cu constr^ angeri (Constraint Logic Pro-
gramming | CLP) este o combinat ,ie ^ ntre abordarea de rezolvare a proble-
melor din constr^ angerile cu programarea logic a. Atunci c^ and se utilizeaz a
metoda CLP, instrumentele de constr^ angere sunt ^ ncorporate ^ ntr-o limbaj
de programare logic a precum PROLOG. [7]
12

2.1 Satisfacerea constr^ angerilor
Exist a adesea c^ ateva opt ,iuni de atribuire care satisfac constr^ angerile.
^In sarcinile de optimizare pot de nite criterii pentru selectarea opt ,iunilor
de atribuire care satisfac constr^ angerilor
Problema satisfacerii constr^ angerilor este formulat a dup a cum se
descrie mai jos.
1. Se d a:
Variabile multiple;
Domeniile de de nire din care pot selectate valorile variabilelor;
Restrict ,iile care trebuie respectate de variabile.
2. De g asit:
Valorile atribuite variabilelor care corespund tuturor constr^ angerilor
speci cate.
Abordarea de a g asi variabile care s a corespund a constr^ angerilor,
^ n special combinarea acestora cu programarea logic a, s-a dovedit a un in-
strument care poate utilizat cu foarte mare succes pentru a rezolva o gam a
larg a de probleme. Exemple tipice de astfel de sarcini includ plani carea,
aprovizionarea s ,i gestionarea resurselor ^ n product ,ie, transport s ,i depozit.
Pentru a face fat , a acestor provoc ari, trebuie alocate resurse unor procese
precum: rutele de autobuz, soldat ,ii din posturi, echipajele de zbor pe avi-
oane, echipajele de tren, medicii s ,i asistentele medicale a
ate ^ n serviciu s ,i
^ n schimburi, etc.
13

Lu am ^ n considerare un exemplu tipic de plani care. S a presupu-
nem c a exist a patru sarcini: a; b; c s,id, a c aror durat a este de 2, 3, 5 s ,i,
respectiv, 4 ore. ^Intre aceste sarcini sunt de nite limite de precedent , a: sar-
cina atrebuie s a precead a sarcina bs,i sarcina c, iar sarcina btrebuie s a
precead a sarcina d( g. 2.1) . Sarcina este de a g asi valorile timpului de
start ale sarcinilor corespunz atoare Ta; Tb; Tcs,iTd, astfel ^ nc^ at timpul nal
al ^ ntregului program Tfs a e minim. S a presupunem c a ora de pornire este
0.
Figura 2.1: Constr^ angeri de precedent , a ^ ntre sarcinile a, b, c s ,i d.
Sarcina corespunz atoare de a satisface constr^ angerile poate de -
nit a ^ n mod formal, conform descrierii de mai jos.
Variabile: Ta; Tb; Tc; Tds,iTf
Domenii de de nire: toate variabilele sunt numere reale nenegative.
Constr^ angeri:
Ta+ 2TbSarcina a, la ^ ndeplinirea c areia se necesit a 2 ore, este prece-
dat a de b;
Ta+ 2TcSarcina a este precedat a de sarcina c;
Tb+ 3TdSarcina b este precedat a de sarcina d;
Tc+ 5TcSarcina c se nalizeaz a ^ n momentul timpului Tf;
Td+ 4TfSarcina d se nalizeaz a ^ n momentul timpului Tf.
14

Criterii: minimizarea valorii Tf.
Aceast a sarcin a de satisfacere a constr^ angerilor are multe solut ,ii, toate aces-
tea permit un timp minim de nalizare. Aceast a mult ,ime de solut ,ii pot
de nite ^ n felul urm ator:
Ta= 0
Tb= 0
2TcA
Td= 5
Tf9
Sunt de nite toate orele de pornire, cu except ,ia sarcinei c, care poate ^ ncepe
^ n orice moment ^ ntre 2 s ,i 4.
2.2 Rezolvarea problemelor de satisfacere a
constr^ angerilor
Condit ,iile de satisfacere a constr^ angerilor sunt deseori prezentate
sub form a de grafuri. Nodurile dintr-un astfel de gra c corespund variabile-
lor s ,i arcele – constr^ angeri. Pentru ecare constr^ angere binar a p(X; Y ), exist a
dou a arce ( X; Y ) s ,i (Y; X) ^ ntre variabilele Xs,iYdin acest gra c orientat.
Pentru a g asi solut ,ii la rezolvarea problemelor de satisfacere a constr^ angerilor
sunt utilizat ,i diferit ,i algoritmi de asigurare a compatibilit at ,ii. Aces ,ti algo-
ritmi, sunt considerat ,i ca ind operat ,ionali, ^ n ret ,ele de constr^ angeri. Ei
veri c a compatibilitatea zonelor de identi care a variabilelor cu constr^ angeri.
15

2.3 Utilizarea limbajului Prolog ca limbaj de
programarea logic a a constr^ angerilor
Lu am ^ n considerare relat ,ia dintre Prolog s ,i sarcina satisfacerii con-
str^ angerilor. Prolog poate considerat un limbaj destul de speci c pentru
satisfacerea constr^ angerilor, ^ n care toate restrict ,iile au o form a foarte ri-
gid a. Acestea reprezint a constr^ angeri ale egalit at ,ii dintre termeni. Aceste
restrict ,ii privind egalitatea sunt veri cate conform termenilor din limbajul
Prolog. Des ,i constr^ angerile stabilite ^ ntre parametrii pedicatelor sunt de ase-
menea speci cate^ n termenii altor predicare, aceste provoc ari ale predicatelor
ajung ^ n nal la acord. Prologul poate extins la limbajul CLP "real" prin
introducerea altor tipuri de constr^ angeri ^ n afar a de acord. Evident, interpre-
tatorul Prolog trebuie, de asemenea, ^ mbun at at ,it, astfel ^ nc^ at s a poat a face
fat , a constr^ angerilor speci ce altor tipuri. Sistemul CLP, care poate gestiona
constr^ angerile aritmetice ale egalit at ,ii s ,i inegalit at ,ii, permite s a rezolv am ^ n
mod direct problemele de programare.
Sistemele CLP difer a dup a tipurile de domeniilor de de nire s ,i tipu-
rile de constr^ angeri pe care le pot trata. Familiile de metode CLP sunt denu-
mite CLP(X), unde X reprezint a zona de de nire. De exemplu, ^ n metodele
CLP(R), domeniile de nit ,iei variabile sunt numere reale s ,i, ca constr^ angeri,
sunt utilizate operat ,iunile de veri care a egalit at ,ii s ,i inegalit at ,ii, precum s ,i
operat ,iunile de comparare a numerelor reale. Sistemele CLP(Z) utilizate ^ n
alte domenii de de nit ,ie includ CLP(Z) { numere ^ ntregi, CLP(Q) { numere
rat ,ionale, CLP(B) { zone logice de de nit ,ie s ,i CLP(FD) { zone nale de nite
de utilizator. Domeniile de de nire disponibile s ,i tipurile de constr^ angeri din
implement arile efective depind ^ n mare m asur a de metodele existente de re-
16

zolvare a unor tipuri speci ce de constr^ angeri. De exemplu, sistemele CLP(R)
au, ^ n general, egalitate s ,i inegalitate liniar a, deoarece exist a metode e ciente
de tratare a acestor tipuri de constr^ angeri. Pe de alt a parte, constr^ angerile
neliniare au o zon a de aplicare foarte restr^ ans a.
17

Capitolul 3
Concluzii
Sarcinile satisfacerii constr^ angerilor sunt formulate ^ n termeni de vari-
abile, zone de de nire a variabilelor s ,i constr^ angeri dintre variabile;
Sarcinile satisfacerii constr^ angerilor deseori sunt prezentate ca ret ,ele de
constr^ angeri;
Algoritmii de asigurare a compatibilit at ,ii se aplic a ret ,elelor de con-
str^ angeri s ,i reduc zone de de nit ,ii variabile;
Programarea logic a cu constr^ angeri (Constraint Logic Programming –
CLP) este o combinat ,ie ^ ntre abordarea de satisfacere a constr^ angerilor
s,i programarea logic a;
Sistemele CLP difer a dup a tipurile domeniilor de de nire s ,i tipurile de
constr^ angeri pe care le pot trata. Sistemele program arii logice ^ n con-
str^ angeri sunt clasi cate dup a tipul de constr^ angeri, ^ n felul urm ator:
CLP(R) – numere valabile, CLP(Z) { numere ^ ntregi, CLP(Q) { numere
rat ,ionale, CLP(B) { zone logice de de nit ,ie s ,i CLP(FD) { zone nale
18

de nite de utilizator;
Potent ,ialul sistemului CLP depinde ^ n mare m asur a de capacitatea
procedurilor specializate de a aborda constr^ angerile care pot aborda
anumite tipuri de constr^ angeri s ,i eventual de a implementa optimizarea
pe baza criteriilor speci cate ^ n cadrul acestor constr^ angeri;
Un aspect al program arii CLP este de nirea constr^ angerilor care sunt
c^ at se poate de rigide. Mai mult dec^ at at^ at constr^ angerile sunt stricte,
reduc^ and astfel spat ,iul de c autare s ,i^ mbun at at ,ind astfel e cient ,a. Chiar
s,i ad augarea unor restrict ,ii excesive poate ^ mbun at at ,i e cient ,a.
19

Bibliogra e
[1] N. Pelin, S. Pelin, Aspecte teoretice ale program arii logice , Studia
Universitatis, Revist a s ,tiinit ,i c a a Universit at ,ii de Stat din Moldova,
2008, nr.3(13).
[2] N. Pelin, S. Pelin, Programarea logic a ^ n proiectarea sistemelor
informat ,ionale , Editura UST, 2011.
[3] N. Pelin, Elemente de programare logic a , Editura Nestor, 2000.
[4] V. Cotelea, Programarea ^ n logic a , Editura Nestor, 2000.
[5] S. L^ as^ ai, G. Sturza, V. Grigorcea, Introducere ^ n programarea lo-
gic a (Ciclu de prelegeri) , 2003.
[6] A. M. Florea, B. Dorohonceanu, C. Fr^ ancu, Programare ^ n Prolog
pentru Inteligent  a Arti cial a , Universitatea Politehnic a Bucures ,ti,
1997.
[7] lvan Bratko, Prolog Programming for Arti cial Intelligence , Edi-
tura Pearson Education, 2001.
20

Similar Posts