You are on page 1of 24

1

Lp trnh logic v rng buc


(Logic Programming and Constraint)

Ts. L Mnh Hi
Khoa CNTT,
H K thut Cng ngh TP HCM


2
M u
I Mc ch mn hc:
Gii thiu mt cng c h tr nghin cu tr tu nhn to:
ngn ng lp trnh SWI-Prolog.
Mt s ng dng trong x l ngn ng t nhin.
II. Thi gian v ni dung: 30 tit l thuyt + 15 tit bi tp
Tng quan v Prolog(3 tit)
K thut lp trnh Prolog(9 tit)
Logic v CSDL(3 tit)
Logic v H chuyn gia(3 tit)
Logic v ng php (6 tit)
Logic v lp trnh rng buc (6 tit)
Bi tp v kim tra gia k (15 tit)



3
III Gio trnh v ti liu tham kho
Bi ging ca L Mnh Hi (Lu hnh ni b)
James Lu, Jerud J. Mead. Prolog A Tutorial
Introduction. Computer Science Department
Bucknell University
Ulf Nilsson and Jan Maluszynsky. LOGIC,
PROGRAMMING AND PROLOG (2ED). John
Wiley & Sons Ltd. 2000.
Phan Huy Khnh. Lp trnh logic trong Prolog. Nh
xut bn H QG H ni. 2004

4

IV. nh gi:
im gia k (30%): Bi kim tra 60 pht trn PC
Thi kt thc mn (70%): Bi kim tra 90 pht
V. Gio vin:
Ts. L Mnh Hi. Khoa CNTT HUTECH.
email: lm.hai@hutech.edu.vn
Website: giangvien.hutech.edu.vn


Bi 1: Gii thiu v ngn ng
Prolog
Mc tiu:
Lc s Prolog v cc dng sn phm
Ci t SWI-Prolog v SWI-Prolog editor
Cc khi nim c bn v v d
5
Lc s Prolog v cc dng
Theo Wikipedia.org
Prolog l mt ngn ng lp trnh. "lp trnh theo l gch".
Xut hin t nm 1972 , mc tiu ca Prolog l gip ngi
dng m t li bi ton trn ngn ng ca logic, da trn ,
my tnh s tin hnh suy din t ng da vo nhng c ch
suy din c sn (hp nht, quay lui v tm kim theo chiu
su) tm cu tr li cho ngi dng.
C php v ng ngha ca Prolog n gin v sng sa, n
c ngi Nht coi l mt trong nhng nn tng xy
dng my tnh th h th nm m , thay v phi m t
cch gii quyt mt bi ton trn my tnh, con ngi ch cn
m t bi ton v my tnh s h tr h nt phn cn li.

6
tng mi trong cc ng dng
c
Prolog c s dng nhiu trong cc ng dng ca tr tu
nhn to (AI) v ngn ng hc trong khoa hc my tnh
(c bit l trong ngnh x l ngn ng t nhin NLP v
y l mc tiu thit k ban u ca n).
Cc lnh vc khc: theorem proving,
[8]
expert systems,
[9]

games, automated answering systems, ontologies and
sophisticated control systems.
C s ca Prolog l hm mnh (propositional
Function) v v t logic (logic predicate) . Xem thm Ton
ri rc.

7
8
C s l thuyt ca AI
AI Pht trin cc chng trnh c kh nng suy
lun, da trn l thuyt ton hc mnh
Suy lun gip chng trnh AI bit c tnh
ng/sai ca mt vn no .
Khng quan trng vn c thc hin nh th
no.
Php ton v t c hin thc bng ngn ng
lp trnh trn my tnh PROLOG
Suy lun logic
9
Gio s mn logic hc nhn ra mnh b mt knh. ng bn ngi
suy lun xem i tng no ly knh ca mnh.
"Ai ly cp? ng nhin l k cp ri. V tn ny c th b
cn th, c th khng. C th hn c knh, c th cha c.
Nhng nu cha c lm sao hn c th trng thy knh ca
mnh? iu ny chng t hn khng b cn th. M khng b
cn th th u cn ti knh.
T nhng gi thuyt trn, c th kt lun l khng ai ly knh
ca mnh c. Chc chn n nm u y thi.
Nhng mnh nhn khp ri, khng thy g c. M mnh nhn
c nh vy c ngha l mnh ang eo knh. i may qu!!!".

Mt anh chng lp trnh vin cng ngi yu i du lch
nc ngoi. Trong on cn c mt cp ngi Anh v mt
cp ngi M nn h ni vi nhau bng ting Anh.
Mt hm c on ngi n ba sng.
Anh chng ngi Anh ni vi v:
"Can you pass the honey, Honey?" (a anh t mt, em yu)
Anh chng ngi M ni vi v:
"Do you mind passing the sugar, Sugar?" (Chuyn cho anh
cht ng, em yu)
Chng lp trnh vin t ra khng thua km:
"Pass me the bacon, Pig!". (Ly cho anh tht ln mui, Ln!)

10
Mnh
Bu tri xanh
Loan thch Long
Tm yu Tm (!???)
Mnh khng biu din c biu thc X=Y+3 v X v Y
cha c gi tr, nn khng th kt lun ng sai.
Nhng s tng ng sau khng biu din c bng logic
mnh
"Khng phi tt c bnh u n c" v "Ch mt s bnh n
c
ng dng php tam on lun: A v B, !A => B
C ti vi anh m ti mt ng h, m ti th khng ly ca ti
ri!
11
Logic v t (Predicate)
Predicate l v t m t tnh cht ca nhng
i tng, hoc quan h gia chng
Pht biu x > 3 c 2 phn:
Bin x
Tnh cht ca bin x (> 3), c gi l v t
(predicate)
K hiu pht biu P(x)
P(2), P(4) l mnh . Mnh u sai.
12
Tng qut
cc chng trnh Prolog u yu cu v t logic phn u ca
mt mnh Horn l mt v t dng
13
Cc dng Prolog
SWI Prolog: Free but strong!
ISO Prolog,
Edinburgh Prolog
Quintus
SICStus
GNU Prolog
Ciao prolog

14
SWI-Prolog
Tt c free trn http://www.swi-prolog.org/
Hy ci ln my tnh ca bn thc hnh
15
V d u tin
1 ?- atom(foot).
true.
2 ?- atom(3).
false.
3 ?- atom('foot').
true.
4 ?- atom("foot").
false.
5 ?- blue(sky).
ERROR: toplevel: Undefined procedure: blue/1 (DWIM
could not correct goal)
16
Cc v t c sn
atom
member and so on
6 ?- member(3,[1,2,3]).
true.
7 ?- member(X,[1,2,3]).
X = 1 ;
X = 2 ;
X = 3.
Lm sao tm cc hm build-in ?
Help - Manual
17

18
Cc quy c
Hng s: 3.2
Hng chui: an, binh, An, Binh
Hng logic: true, false.
Bin: bt u bng ch hoa hoc _. Bin
nc danh _ c dng khi khng cn truy
cp

19
20
Cc mnh ca ngi s dng: chng trnh prolog.
8 ?- edit(file(vd)).
Chp on m sau vo file vd
likes(mary,food).
likes(mary,wine).
likes(john,wine).
likes(john,mary).
ng file lu. Load file v query
14 ?- [vd].
% vd compiled 0.00 sec, 1 clauses
true.
15 ?- likes(mary,food).
true .
16 ?- likes(mary,john).
false.
V d 2
luong(an,300).
luong(binh,400).
luong(hai,500).
luong(tuan,400).
luong(long,450).
luongcaohon(X,Y):-luong(X,Z),luong(Y,T),Z>T.
luongbang(X,Y):- luong(X,Z),luong(Y,T),Z=T.

25 ?- luongcaohon(X,tuan).
X = hai ;
X = long.

21
V d 3: tnh giai tha
factorial(0,1).
factorial(N,F) :- N>0, N1 is N-1,
factorial(N1,F1), F is N * F1.

31 ?- factorial(5,W).
W = 120 .
22
23
Bi tp
1. vit chng trnh tnh s fibonacci
2. Tm hiu v t setof
ngha?
V d?


Bi k tip
K thut lp trnh Prolog
quy: thp H ni
X l danh sch . Quicksort, Mergesort
B mnh .
Ng ngha v th t
X l file.

24

You might also like