... 10 9 S p x p ph n t c a danh sách 10 9 Tính dài c a m t danh sách 10 9 T o sinh s t nhiên 11 1 CHƯƠNG I I .1 I.2 I.2 .1 I.2.2 I.2.3 I.3 I.3 .1 I.3.2 II II .1 II.2 II.3 II.3 .1 II.3.2 ... 11 7 K thu t s d ng nhát c t 11 8 T o ích gi b ng nhát c t 11 8 Dùng nhát c t lo i b hoàn toàn quay lui 11 9 Ví d s d ng k thu t nhát c t 12 2 Phép ph nh 12 6 Ph ... CHƯƠNG I II III III .1 III .1. 1 III .1. 2 III .1. 3 III .1. 4 III .1. 5 III .1. 6 III.2 C U TRÚC DANH SÁCH 95 BI U DI N C U TRÚC DANH SÁCH 95 M T S V T X LÝ DANH SÁCH C A PROLOG 98 CÁC THAO...
... date(D, M, 18 90) date(D1, May, Y1) có th v i nh ràng bu c sau : • D c ràng bu c v i D1 • M c ràng bu c v i May • Y1 c ràng bu c v i 18 90 Trong Prolog, ta có th vi t : D = D1 M = May Y1 = 18 90 22 ... point(X, Y1))) horizontal(seg(point(X, Y), point(X1, Y))) Ta có : ?- vertical(seg(point (1, 1) , point (1, 2))) Yes ?- vertical(seg(point (1, 1) , point(2, Y))) No ?- horizontal(seg(point (1, 1) , point(2, ... lôgicProlog i tư ng hình h c ơn gi n IV.2 M t s Hình T ó, (6, i Hình IV.2 c bi u di 4) b i h ng sau : tư ng n P1 = point (1, 1) P2 = (2, 3) P2 = point(2, 3) S = seg(P1,2 P2) = seg(point (1, 1) ,...
... trình lôgicProlog Quá trình th c hi n th t c execute c mô t sau : Chương trình Prolog hay s d li u G1, G2, , Gm C' : H’ :- D 1, , D’n C H : , D1, Dn S = (G1| H’) D1’, , Dn’, G2, , G D "1, , D"n, ... displacement( state(P1, onthefloor, P1, H), pushing(P1, P2), % y h p t P1 n P2 state(P2, onthefloor, P2, H)) displacement( state(P1, onthefloor, G, H), walking(P1, P2), % di chuy n t P1 n P2 state(P2, ... chung v i danh sách G1, G2, , Gm M nh C’ sau : H’ :- D 1, , D’n Ng nghĩa c a chương trình Prolog 39 Gi s S ràng bu c c a bi n t vi c so kh p gi a G1 H’, Prolog thay th G1 b i D 1, , D’n danh sách...
... : a (1, 2) = a(X, X) a(X, 3) = a(4, Y) a(a(3, X)) = a(Y) 59 Ng nghĩa c a chương trình Prolog 1+ 2 = X = 1+ 2 a(X, Y) = a (1, X) a(X, 2) = a (1, X) Cho trư c chương trình dư i ây : f( f( f( f( 1, one ... sinh gi a năm 19 50 năm 19 60 (k c hai năm này) b ng cách t câu h i : ?- birth( Name, Year ), Year >= 19 50, Year
... c, d, e] T = t(a, b, c, d, e) Yes ?- arg (1, father(jean, isa), X) X = jean ?- name(toto, L) L = [11 6, 11 1, 11 6, 11 1] Yes ?- name(A, [11 6, 11 1, 11 6, 11 1]) A = toto Yes Ví d II.5 : Cho s d li u ... = Ack(m -1, 1) M > 0, M is M - 1, ack(M, 1, A) ack(M1, N1, A) :% Ack(m, n) = Ack(m -1, Ack(m, n -1) ) M1 > 0, N1 > 0, M is M - 1, N is N - 1, ack(M1, N, A1), ack(M, A1, A) Ví d III.7 : Hàm tính t ... fib1 (1, F, _, F) fib1(N, F2, F1, FN) :- 84 L p trình lôgicProlog N > 1, N1 is N - 1, F3 is F1 + F2, fib1(N1, F3, F2, FN) ?- fibo( 21, F) F = 10 946 Yes ?- fibo(200, F) F = 2.80571e+0 41 Yes III.3 M t...
... sách [ 1, 2, ], ch c n t câu h i : Cho bi t danh sách L n u sau xoá a, ta nh n c danh sách [ 1, 2, ] ? ?- remove( a, L, L = [ a, 1, 2, L = [ 1, a, 2, L = [ 1, 2, a, L = [ 1, 2, 3, a No [ 1, 2, ... a L1 L2 Ta vi t Prolog sau : append( [ X | L1 ], L2, [ X | L3 ] ) :- append( L1, L2, L3 ) Hình 4.2 minh ho phép ghép hai danh sách [ X | L1 ] L2 Ta có ví d sau : ?- append( [ a, b, c ], [ 1, ... lôgicProlog delete(List1, Elem, List2) select(Elem, List, Rest) nth0(Index, List, Elem) nth1(Index, List, Elem) last(List, Elem) reverse(List1, List2) permutation(List1, List2) flatten(List1, List2)...
... bi t k t qu Prolog tr l i câu h i sau : ?- [1, 2,3] = [1| X] ?- [1, 2,3] = [1, 2|X] 11 2 L p trình lôgicProlog ??????- [1 | [2,3]] = [1, 2,X] [1 | [2,3,4]] = [1, 2,X] [1 | [2,3,4]] = [1, 2|X] b(o,n,j,o,u,r) ... sau : ?- takeout(3, [1, 2,3], [1, 2]) Yes ?- takeout(X, [1, 2,3],L) X = L = [2, 3] ; X = L = [1, 3] ; X = L = [1, 2] ; No ?- takeout(4,L, [1, 2,3]) L = L = L = L = No [4, [1, [1, [1, 1, 4, 2, 2, 2, 2, ... forall(member(Result = Formula, [2 = + 1, = * 2]), Result =:= Formula) Result = _G 615 Formula = _G 616 Yes L p trình lôgicProlog 11 4 14 S d ng v t forall vi t chương trình Prolog ki m tra m t danh sách...