Documente Academic
Documente Profesional
Documente Cultură
ŞI
INTELIGEN ăARTIFICIAL
1. Paradigme de programare ?
2. Care sunt caracteristicile programării logice ?
3. Ce se poate face cu programarea logică ?
2
Diversitateaăşiăcomplexitateaătipurilorădeălimbajeăînă
rela iaăOm-Calculator
3
Stiluri şiălimbageăseăprogramare
Majoritatea limbajelor de programare pot fi folosite
pentru mai multe stiluri de programare. Un stil de programare
este caracterizat de anumite concepte şi noţiuni de
programare şi un anumit model de calcul. Exemple:
• Pentru programarea procedurală: Pascal, C, C++
• Pentru OOP: SmallTalk, C++, Java
• Pentru programarea funcţională : Scheme, Lisp, Haskell
• Pentru programarea logică: Planner, Prolog, Etner
• limbaje multi-paradigmă:
Lisp, C++: programare procedurală, OOP
Oz, Mercury,Visual Prolog:programarea logică şi
funcţională,OOP
4
Modele,paradigme ,limbaje
5
Ceăesteăoăparadigm ădeăprogramareă?
6
Limbajele logice
Acestea se concentreaza pe reprezentarea
relatiilor dintre obiecte, si pe desprinderea de
noi relatii, pe baza unor scopuri definite.
7
Logica cu predicate de ordinul I
15
Idei principale aăăProgram riiăLogice
16
Idei principale aăăProgram riiăLogice
Exemple:
Obiecte: “universitate", "carte", "barbat", "student",
“plouă”, “Automobil BMW 524td din anul
1998 de culoare neagră”, etc.
17
Exemplu de traducerea corect a cunoştin elor
dintr-un limbaj natural în limbajul Prolog.
Să formulam nişte reguli în limbajul natural:
- Studenţii silitori au note bune.
-Dacă X este student şi X este silitor atunci X are note bune.
-X are note bune dacă X este student şi X este silitor.
Baza de cuznoştinţe
20
Prolog programăprezint ăoăsecven ădeăfapte,ă
reguli şiăunăscopăinternă(op ional)
• Un fapt descrie o proprietate unui obiect sau o relaţie între
două sau mai multe obiecte. Pentru descrierea faptelor şi
regulilor în Prolog se utilizează predicate de diferită aritate
Ex. parent( jane, alan ).
Can be read as “Jane is the parent of Alan.”
(parent - este un predicat cu două argumente)
• Regulile permit obţinerea unor concluzii logice, bazate pe
precondiţii.
e.g. parent(X,Y) :- mother(X,Y).
= “Person X is the parent of person Y if X is Y’s mother.”
21
Fapte se descriu în mod declarativ
Enunţarea unui fapt în Prolog:
predicat(obiect1, obiect2, … , obiectn).
Ex.
are (alex,carte).
head body
O clausă în cazul reprezentării unui fapt nu are corp,
deoarece un fapt este întotdeauna adevărat !
24
Argumente
• Un predicat are nume, dar poate avea şi argumente.
Argumentele se includ în paranteze şi sunt separate cu
virgulă .
• Argumentele pot fi :
- constante;
- variabile;
- termeni compuşi ( structuri).
• Corpul predicatului –regulă poate să conţină apeluri la
mai multe predicate (subscopuri – subgoals)
25
Reguli în Prolog
26
Reguliăcaădefini ii
Corpul regulii descrie condiţiile ce trebuiesc
satisfăcute pentru a satisface Capul. În programarea
logică, aceste condiţii se mai numesc şi obiective.
Exemplu:
place(ion, X) :- place(X, vin).
place(ion, X) :- femeie(X), place(X, dans).
28
Reguliăcaădefini ii
?- are( andrei, X ).
?- are( X, carte ).
?- place(ion, X).
În Prolog:
• variabilele încep cu litere MARI,
•nu aparţin unui tip (pot obţine orice valoare) şi
•au un scop “local”
Prolog va răspunde
Two solutions:
X = maria
X= flori
No
33
Calculul r spunsului în Prolog
35
Întreb ri mai complexe
36
Conjuc iiăşiăbacktracking
37
Reguli
Dar dacă mai trebuie precizat că lui Ion îi plac toţi X care
sunt persoane - avem nevoie de regulă !
40
Utiliz măpredicateăînăconversa ieăcuăProlog
41
Alte exemple
Putem utiliza în program clause cu diferte argumente:
greet(ion):-
write(‘How are you doing, pal?’).
greet(amelia):-
write(‘Awfully nice to see you!’).
45
Fie avem o baz ădeăcunoştin eăProlog
(1) male(albert).
(2) male(Edward).
(3) female(alice).
(4) female(victoria).
(5) parents(edward, victoria, albert).
(6) parents(alice, victoria, albert).
(7) sister(X,Y) :- female(X), parents(X, M, F) ,
parents(Y, M, F) 46
Cum va raspunde Prolog la întrebarea
“ăSora cui este Alisaă?”ă(ăsister(alice,X). )
47
Exempleădeăîntreb ri
?- sister(alice, edward).
?- sister(X, edward).
?- sister(X, Z).
?- parents(edward, X, Y).