Professional Documents
Culture Documents
Bai Tap Tren Lop
Bai Tap Tren Lop
Bi tp qua ph: Cho 3 loi xe gm: xe ti (T), xe khch (K), xe con (C), ph ch
c 2 xe ti, 3 xe khch v 4 xe con, gi s u tin xe con qua ph, 1 xe ti c ti trng
bng 2 xe con, th t xe n nh sau: T, T, C, C, C, C, C, C, K, K, K. Khi ph y th ph
s ri bn, vit chng trnh xc nh cc hm mc tiu c th cho trng thi ph y (xc
nh th t xe ln ph).
a.Xc nh cc trng thi:
Trng thi ban u: (0,0,0)
Trng thi mc tiu: (2,3,4); (1,3,6); (0,3,8).
b.
Xc nh cc thao tc:
Xe ti ln ph
Xe con ln ph
Xe ti xung ph
Xe khch ln ph
(0,1,0)
(2,0,0)
...
(0,0,1)
(1,0,1) (0,1,1) (0,0,2)
...
(2,1,0) (2,0,1)
...
...
Khi th t cc xe nh yu cu bi th ta c cy c th sau:
...
(2,0,1)
(2,0,2)
(1,0,1)
(0,0,0)
(2,0,3)
(1,0,2)
(0,0,1)
(2,0,4)
(1,0,2)
(0,0,2)
(2,1,4)
(1,0,3)
(0,0,3)
(2,2,4)
(1,0,4)
(0,0,4)
(2,3,4)
(1,0,5)
(0,0,5)
(1,0,6)
(0,0,6)
(1,1,6)
(0,1,6)
(1,2,6)
(0,2,6)
(1,3,6)
(0,3,6)
c.Code:
Xe ti xung ph
d.
a) Cho tp facts:
fact(b,1);
fact(b,2);
fact(c,3);
Truy vn: a:- fact(b,N), fact(c,N);
Theo thut ton:
u tin s Call fact(b,N), do mnh u tin c phn u trng vi phn u ca
fact(b,N) nn suy ra N=1, thay th gi tr ca N v thc hin tip tc:
Call fact(c,1), do khng tm c Rule tha nn kt qu tr v l fail v tip tc:
Redo Call fact(b,N), tm c mnh 2 tha v suy ra c N=2, tip tc:
Call fact(c,2), do khng tm c Rule tha nn kt qu tr v l fail v tip tc:
Redo Call fact(b,N), kt qu khng cn Rules xt nn kt qu cho truy vn l Fail v
Exit
S minh ha:
Exit
Call
Call
Fail
fact(b,N)
fact(b,N)
Call
N=1
fact(c,1)
Redo
Fail
Exit
Call
N=2
Redo
b) Cho tp facts:
fact(b,1);
fact(b,2);
fact(c,2);
Truy vn: a:- fact(b,N), fact(c,N);
fact(c,2)
Fail
Call
fact(b,N)
fact(b,N)
Call
N=1
fact(c,1)
Redo
Fail
Exit
Call
N=2
fact(c,2)
Success
Exit
c) Cho tp facts:
fact(b,1);
fact(b,2);
fact(c,1)
fact(c,2);
Truy vn: a:- fact(b,N), fact(c,N);
Theo thut ton:
u tin s Call fact(b,N), do mnh u tin c phn u trng vi phn u ca
fact(b,N) nn suy ra N=1, thay th gi tr ca N v thc hin tip tc:
Call fact(c,1), tm c Rule tha nn kt qu tr v l success v tip tc:
Redo Call fact(b,N), tm c mnh 2 tha v suy ra c N=2, tip tc:
Call fact(c,2), tm c Rule tha nn kt qu tr v cho truy vn l Success v Exit.
S minh ha:
Exit
Call
N=1
fact(b,N)
Redo
Call
Call
fact(c,1)
Success
Exit
fact(b,N)
Call
fact(c,2)
N=2
Success
Exit
Bi 3. S dng cu trc cy And/Or chng minh qu trnh thc thi trong Prolog
Cu a) Cho tp cc Subgoal:
1) drinks(alan,beer).
2) like(alan,coffee).
3) like(heather,coffee).
4) like(Person,Drink):drinks(Person,Drink).
a different subgoal
5) like(Person,Somebody):like(Person,Drink),
recursive subgoals
like(Somebody,Drink).
Truy vn: ?-like(alan,X).
M t:
Truy vn: ?-like(alan,X) lm nt u tin trong cy v bt u so khp cc bin, do
duyt cc mnh theo th t ta thy c mnh 2 khp nn cy c biu din nh sau:
?-like(alan,X)
2
X/c
offe
e
X = coffee
4
Backtracking
X/c
offe
e
drinks(alan,X)
.
1
X/beer
X = beer
Kt qu 2 = Alan like beer because Alan drinks beer.
Gi s b qua kt qu X= beer th Prolog s xt n mnh 5, mnh 5 c 2 body, ta thay gi tr
alan cho bin Person v ta biu din nh sau:
|?- like(alan,X).
2
X/coff
ee
X = coffee
drinks(alan,
X).
like(alan,coffee)
like(Somebody,coffee)
X/beer
X/coffee
2
2
Somebody/alan
X = beer
X = coffee
Somebody =
alan
likes(Someb,coffee)
Somebody
= alan
5
likes(Someb,coffee)
Somebody
= heather
likes(coffee,coffee)
Someb = alan
likes(coffee,X
)
likes(coffee,X2
likes(X,X2
)
)
likes(coffee,X3
likes(X2,X3
)
)
a different subgoal
5) like(Person,Somebody):like(Person,Drink),
recursive subgoals
like(Somebody,Drink).
2nd solution
= Alan like beer because Alan
X =drinks
beer beer.
X/c
o
ffee
X = coffee
X/c
offe
e
Backtracking
drinks(heather,X).
3
X/coffee
X = coffee
Gi s b qua kt qu X= coffee th Prolog s xt n mnh 5, mnh 5 c 2 body, ta thay gi
tr heather cho bin Person trong body 1, khi|?- tm c X=coffee v ta thay vo body 2 biu din
like(heather,X
nh sau:
).
3
X/coffee
X = coffee
drinks(heather,
X).
3
X/coffee
5
like(heather,co
ffee)
X/coffee
like(Somebody,coff
ee)
2
Somebody/ala
n
X=
coffee
X = coffee
Somebody =
alan
likes(Someb,coffee)
Somebody
= alan
5
likes(Someb,coffee)
Somebody
= heather
likes(coffee,coffee)
Someb = alan
likes(coffee,X)
likes(coffee,X2)
likes(X,X2)
likes(X2,X3)
?-like(alan,X)
2
Call
X/c
offe
e
X=coffeee
likes(alan,X)
X = coffee
4
Backtracking
X/c
offe
e
drinks(alan,X)
.
1
X/beer
X=coffeee
Call
Call
likes(alan,X)
drinks(alan,X)
X=beer
Redo
|?- like(alan,X).
2
X/coff
ee
X = coffee
like(alan,coffee)
drinks(alan,
X).
like(Somebody,coffee)
1
X/coffee
X/beer
2
2
Somebody/alan
X = beer
X = coffee
Call
Call
likes(alan,X)
like(alan,coffee)
X=coffeee
X=coffeee
Call
drinks(alan,X)
Somebody =
alan
X=beer
Somebody=alan
Call
Redo
like(somebody,X)
redo
Call
Somebody=heather
...
like(somebody,X)
redo