Danh mục tài liệu

Lập Trình Logic Trong ProLog - PGS.TS. PHAN HUY KHÁNH phần 5

Số trang: 19      Loại file: pdf      Dung lượng: 174.79 KB      Lượt xem: 18      Lượt tải: 0    
Xem trước 2 trang đầu tiên của tài liệu này:

Thông tin tài liệu:

Nội dung cuốn sách tập trung trình bầy cơ sở lý thuyết và những kỹ thuật lập trình cơ bản trong prolog, rất cần cho sinh viên các ngành tin học và các bạn đọc muốn tìm hiểu về kỹ thuật lập trình ứng dụng trong lĩnh vực trí tuệ nhân tạo.
Nội dung trích xuất từ tài liệu:
Lập Trình Logic Trong ProLog - PGS.TS. PHAN HUY KHÁNH phần 5 69Các phép toán và s h c ~ v & ~ ~ A B A B Hình I.4. Bi u di n cây c a h ng ~ ( A & B ) ~ A ∨ ~ B Trong ví d trên, ta d dàng nh nghĩa l i các phép toán lôgich như sau : :- op( 800, xfx, ). :- op( 700, xfy, v ). :- op( 600, xfy, & ). :- op( 500, fy, ~ ). T ây, nh lý Morgan ư c vi t l i thành h ng sau (xem hình trên) : ~ ( A & B ) ~ A ∨ ~ BII. Các phép so sánh c a PrologII.1. Các phép so sánh s h cProlog có các phép so sánh và hàm s h c như sau :Ký hi u Gi i thích phép toán Thành công n u Expr1 có giá tr s l n hơn Expr2Expr1 > Expr2 Thành công n u Expr1 có giá tr s nh hơn Expr2Expr1 < Expr2 Thành công n u Expr1 có giá tr s nh hơn ho c b ngExpr1 =< Expr2 Expr2 Thành công n u Expr1 có giá tr s l n hơn ho cExpr1 >= Expr2 b ng Expr2 Thành công n u Expr1 có giá tr s khác Expr2Expr1 == Expr2 Thành công n u Expr1 có giá tr s b ng Expr2Expr1 =:= Expr2 Low và High là các s nguyên, Low=< Value== 0succ(Int1, Int2)plus(Int1, Int2, Thành công n u Int3= Int1+Int2Int3)70 L p trình lôgic trong Prolog Chú ý r ng các phép toán = và =:= là hoàn toàn khác nhau, ch ng h n trongcác ích X = Y và X =:= Y : • ích X = Y kéo theo vi c ng nh t các i tư ng X và Y, n u chúng ng nh t v i nhau thì có th ràng bu c m t s bi n nào ó trong X và Y. • ích X =:= Y ch gây ra m t phép tính s h c so sánh mà không x y phép ràng bu c nào trên các bi n.Ví d II.1 : ?- X = Y. X = _G997 Y = _G997 Yes ?- 1 + 2 =:= 2 + 1. Yes. ?- 1 + 2 = 2 + 1. No. ?- 1 + 2 = 1 + 2. Yes. ?- 1 + X = 1 + 2. X=2 A = B + 2. ?- 1 + A=2 B=1 ?- 1 + 2 =:= 2 + 1. Yes. ?- 1 + X =:= 1 + 2. Arguments are not sufficiently instantiated (sai do ERROR: a không ph i là s ) ?- 1 + 2 == 1 + 2. Yes. ?- 1 + 2 == 2 + 1. No. ?- 1 + X == 1 + 2. No. ?- 1 + a == 1 + a. Yes. 1 is sin(pi/2). Yes 71Các phép toán và s h c ?- 1.0 is sin(pi/2). No ?- 1.0 is float(sin(pi/2)). Yes ?- 1.0 =:= sin(pi/2). YesII.2. Các phép so sánh h ng Các phép so sánh h ng c a Prolog như sau :Ký hi u Gi i thích phép toánTerm1 == Term2 Thành công n u Term1 tương ương v i Term2. M t bi n ch ng nh t v i m t bi n cùng chia s trong h ng (sharing variable)Term1 == Term2 Tương ương v i Term1 == Term2.Term1 = Term2 Thành công n u Term1 kh p ư c v i Term2Term1 = Term2 Tương ương v i Term1 = Term2Term1 =@= Term2 Thành công n u Term1 có cùng c u trúc (structurally equal) v i Term2. Tính có cùng c u trúc y u hơn tính tương ương (equivalence), nhưng l i m nh hơn phép h p nh tTerm1 =@= Term2 Tương ương v i `Term1 =@= Term2Term1 @< Term2 Thành công n u Term1 và Term2 theo th t chu n c a các h ngTerm1 @=< Term2 Thành công n u ho c hai h ng b ng nhau ho c Term1 ng trư c Term2 theo th t chu n c a các h ngTerm1 @> Term2 Thành công n u Term1 ng sau Term2 theo th t chu n c a các h ng Thành công n u ho c hai h ng b ng nhau both ho cTerm1 @>= Term2 Term1 ng sau Term2 theo th t chu n c a các h ngcompare(?Order, H ng1, H ng2) Ki m tra th t ho c = gi a haih ngVí d II.2 : ?- free_variables(a(X, b(Y, X), Z), L). L = [G367, G366, G371] X = G36772 L p trình lôgic trong Prolog Y = G366 Z = G371 ?- a =@= A. No ?- a =@= B. No ?- x(A, A) =@= x(B, C). No ?- x(A, A) =@= x(B, B). A = _G267 B = _G270 ...