MỞ ĐẦU Trong suốt những thập kỷ qua, lĩnh vực nghiên cứu về lập trình logic đã được nhiều nhà khoa học quan tâm và không ngừng phát triển. Lập trình logic chủ yếu dựa trên ý tưởng lập trình khai báo, ở đó các chương trình logic không được tạo ra từ các câu lệnh cũng như từ các hàm mà được tạo ra chủ yếu dựa trên tập các vị từ. Vì vậy, một chương trình logic được xem như là một lý thuyết logic, có dạng là một tập các quy tắc liên quan đến giá trị đúng của một literal (phần đầu của mệnh đề) đối với một tập các literal khác (phần thân của mệnh đề). Lập trình logic chủ yếu là lý luận suy diễn bằng các quy tắc. Tuy nhiên, hiện nay lập trình logic đã bộc lộ những hạn chế nhất định và không thể giải quyết đối với các bài toán phức tạp trong thực tế. Đã có nhiều công trình nghiên cứu nhằm mở rộng lập trình logic, trong số đó – Lập trình logic phỏng đoán (ALP - Abductive Logic Programming) là một hướng nghiên cứu được nhiều nhà khoa học quan tâm [3], [5], [7], [8]. ALP được bắt nguồn từ sự phỏng đoán, phỏng đoán là một hình thức suy luận để giải thích cho các quan sát, xuất phát từ một cơ sở tri thức T và một quan sát Q để tìm các giải thích có thể cho Q dựa theo một tập vị từ đặc biệt được gọi là các vị từ phỏng đoán. ALP là sự kết hợp của lập trình logic và phỏng đoán, trong ALP hình thành nên một cú pháp mới của chương trình logic, được định nghĩa bởi một bộ ba , trong đó P là một chương trình logic thông thường, A là một tập hợp các vị từ và được gọi là các vị từ phỏng đoán, IC là một tập các ràng buộc toàn vẹn. ALP là một khuôn khổ biểu diễn tri thức cấp cao, cho phép giải quyết các bài toán dựa trên lập luận phỏng đoán. ALP thường được dùng để giải quyết các bài toán trong Chuẩn đoán, Lập kế hoạch, Xử lý ngôn ngữ tự nhiên và Học máy,… Luận văn nghiên cứu về lập luận suy diễn đối với chương trình logic phỏng đoán. Những nội dung nghiên cứu của luận văn có ý nghĩa về mặt lý thuyết cũng như ứng dụng trong thực tiễn. Cấu trúc luận văn gồm phần mở đầu, ba chương nội dung, phần kết luận và tài liệu tham khảo. Chương 1 trình bày về ngôn ngữ logic bậc nhất, cú pháp và ngữ nghĩa của chương trình logic. Trên cơ sở đó trình bày lập luận suy diễn trong lập trình logic. Chương 2 trình bày các phương pháp tính toán phỏng đoán trong lập trình logic, bao gồm thủ tục SLD đối với chương trình logic xác định, thủ tục SLDNF đối với chương trình logic có chứa ký hiệu phủ định. Cũng trong chương 2, cú pháp và ngữ nghĩa của chương trình logic phỏng đoán được trình bày chi tiết. Chương 3 trình bày phương pháp để tính toán phỏng đoán đối với các chương trình logic phỏng đoán và đồng thời trình bày việc cài đặt, thực thi một số ví dụ minh họa về các chương trình logic phỏng đoán bằng phần mềm SMODELS. Phần kết luận nêu những kết quả đã đạt được và hướng phát triển của luận văn. Do thời gian có hạn và bản thân chỉ mới bước đầu nghiên cứu về lĩnh vực này nên không thể tránh khỏi những thiếu sót, kính mong sự giúp đỡ và góp ý thêm của quý Thầy, Cô và các bạn.
Trang 1NGUYỄN ĐÀO BÍCH GIANG
T×m hiÓu vÒ lËp luËn suy diÔn
trong lËp tr×nh logic pháng ®o¸n
CHUYÊN NGÀNH: KHOA HỌC MÁY TÍNH
MÃ SỐ: 60.48.01.01
LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH
Huế, 2015
Trang 2Trang phụ bìa
Lời cam đoan
Lời cảm ơn
Danh mục các thuật ngữ
Danh mục các ký hiệu
Các chữ viết tắt
Danh mục các hình vẽ
MỞ ĐẦU 1
Chương 1 TỔNG QUAN VỀ CHƯƠNG TRÌNH LOGIC 3
1.1 Ngôn ngữ bậc nhất 3
1.2 Chương trình logic 5
1.2.1 Chương trình logic xác định 5
1.2.2 Chương trình logic thông thường 11
1.3 Tiểu kết chương 1 15
Chương 2 CHƯƠNG TRÌNH LOGIC PHỎNG ĐOÁN 16
2.1 Giới thiệu về lập trình logic phỏng đoán 16
2.2 Tính toán phỏng đoán trong lập trình logic 17
2.2.1 Thủ tục hợp giải SLD đối với chương trình logic xác định 17
2.2.2 Thủ tục hợp giải SLDNF đối với chương trình logic thông thường 24
2.3 Cú pháp và ngữ nghĩa của chương trình logic phỏng đoán 27
2.3.1 Cú pháp chương trình logic phỏng đoán 27
2.3.2 Ngữ nghĩa chương trình logic phỏng đoán 30
2.4 Tiểu kết chương 2 32
Chương 3 PHƯƠNG PHÁP TÍNH TOÁN PHỎNG ĐOÁN 33
3.1 Thủ tục chứng minh phỏng đoán 33
3.1.1 Thủ tục chứng minh phỏng đoán EK 33
3.1.2 Thủ tục chứng minh phỏng đoán KM 39
Trang 33.2.1 Giới thiệu hệ thống SMODELS 42
3.2.2 Cài đặt và thực thi 43
3.3 Tiểu kết chương 3 52
PHẦN KẾT LUẬN 53
TÀI LIỆU THAM KHẢO 54
Trang 4Chương trình logic nền Ground program
Chương trình logic thông thường Normal logic program
Trang 5B P Cơ sở Herbrand của chương trình P
Trang 6ALP Abductive logic programming
SLDNF SLD - resolution with Negation as finite Failure
Trang 7Số hiệu hình vẽ Tên hình vẽ Trang
3.7 Kết quả thực thi ví dụ 1.13 bằng hệ thống SMODELS 43 3.8 Kết quả thực thi ví dụ 1.14 bằng hệ thống SMODELS 44 3.9 Kết quả thực thi ví dụ 1.15 bằng hệ thống SMODELS 45 3.10 Kết quả thực thi ví dụ 1.16 bằng hệ thống SMODELS 45 3.11 Kết quả thực thi ∆ 1 = {b} bằng hệ thống SMODELS 46
3.12 Kết quả thực thi ∆ 2 = { nhỏ_con(Sang)}
Trang 8MỞ ĐẦU
Trong suốt những thập kỷ qua, lĩnh vực nghiên cứu về lập trình logic đã được nhiều nhà khoa học quan tâm và không ngừng phát triển Lập trình logic chủ yếu dựa trên ý tưởng lập trình khai báo, ở đó các chương trình logic không được tạo ra từ các câu lệnh cũng như từ các hàm mà được tạo ra chủ yếu dựa trên tập các vị từ Vì vậy, một chương trình logic được xem như là một lý thuyết logic, có dạng là một tập các quy tắc liên quan đến giá trị đúng của một literal (phần đầu của mệnh đề) đối với một tập các literal khác (phần thân của mệnh đề)
Lập trình logic chủ yếu là lý luận suy diễn bằng các quy tắc Tuy nhiên, hiện nay lập trình logic đã bộc lộ những hạn chế nhất định và không thể giải quyết đối với các bài toán phức tạp trong thực tế Đã có nhiều công trình nghiên cứu nhằm mở rộng lập trình logic, trong số đó – Lập trình logic phỏng đoán
(ALP - Abductive Logic Programming) là một hướng nghiên cứu được nhiều
nhà khoa học quan tâm [3], [5], [7], [8] ALP được bắt nguồn từ sự phỏng đoán, phỏng đoán là một hình thức suy luận để giải thích cho các quan sát, xuất phát
từ một cơ sở tri thức T và một quan sát Q để tìm các giải thích có thể cho Q dựa
theo một tập vị từ đặc biệt được gọi là các vị từ phỏng đoán
ALP là sự kết hợp của lập trình logic và phỏng đoán, trong ALP hình thành nên một cú pháp mới của chương trình logic, được định nghĩa bởi một bộ
ba <P, A, IC>, trong đó P là một chương trình logic thông thường, A là một tập hợp các vị từ và được gọi là các vị từ phỏng đoán, IC là một tập các ràng buộc
toàn vẹn ALP là một khuôn khổ biểu diễn tri thức cấp cao, cho phép giải quyết các bài toán dựa trên lập luận phỏng đoán ALP thường được dùng để giải quyết các bài toán trong Chuẩn đoán, Lập kế hoạch, Xử lý ngôn ngữ tự nhiên và Học máy,…
Trang 9Luận văn nghiên cứu về lập luận suy diễn đối với chương trình logic phỏng đoán Những nội dung nghiên cứu của luận văn có ý nghĩa về mặt lý thuyết cũng như ứng dụng trong thực tiễn
Cấu trúc luận văn gồm phần mở đầu, ba chương nội dung, phần kết luận
và tài liệu tham khảo
Chương 1 trình bày về ngôn ngữ logic bậc nhất, cú pháp và ngữ nghĩa của chương trình logic Trên cơ sở đó trình bày lập luận suy diễn trong lập trình logic
Chương 2 trình bày các phương pháp tính toán phỏng đoán trong lập trình logic, bao gồm thủ tục SLD đối với chương trình logic xác định, thủ tục SLDNF đối với chương trình logic có chứa ký hiệu phủ định Cũng trong chương 2, cú pháp và ngữ nghĩa của chương trình logic phỏng đoán được trình bày chi tiết
Chương 3 trình bày phương pháp để tính toán phỏng đoán đối với các chương trình logic phỏng đoán và đồng thời trình bày việc cài đặt, thực thi một
số ví dụ minh họa về các chương trình logic phỏng đoán bằng phần mềm
Trang 10Chương 1 TỔNG QUAN VỀ CHƯƠNG TRÌNH LOGIC
Chương 1 trình bày về ngôn ngữ logic bậc nhất, cú pháp và ngữ nghĩa của chương trình logic Trên cơ sở đó trình bày lập luận suy diễn trong lập trình logic
1.1 Ngôn ngữ bậc nhất
Định nghĩa 1.1 (Bộ ký tự) Bộ ký tự bao gồm 8 lớp ký hiệu sau:
1 Hằng, thường ký hiệu là các chữ cái thường a, b, c,
2 Biến, thường ký hiệu bởi các chữ cái in hoa X, Y, Z,
3 Các ký hiệu hàm, thường ký hiệu bởi f, g, h,
4 Các ký hiệu vị từ, thường ký hiệu bởi p, q, r,
5 Các hằng vị từ: true, false
6 Các ký hiệu kết nối: (phủ định), (tuyển), (hội), (suy ra),
(tương đương)
7 Các ký hiệu lượng từ: (với mọi), (tồn tại)
8 Dấu ngoặc đơn trái (, dấu ngoặc đơn phải ), dấu phẩy ,
Mỗi ký hiệu hàm, ký hiệu vị từ có kèm theo một số tự nhiên để chỉ số các đối số tham gia cùng với ký hiệu hàm hoặc ký hiệu vị từ đó, gọi là ngôi của chúng
Định nghĩa 1.2 (Hạng thức) Gọi A là bộ ký tự Hạng thức được định nghĩa đệ
qui như sau:
(i) Mỗi hằng c trong A là một hạng thức,
(ii) Mỗi biến V trong A là một hạng thức,
(iii) Nếu f là ký hiệu hàm n ngôi trong A và t1, ,t n là các hạng thức thì
f(t1, ,tn) là một hạng thức,
(iv) Hạng thức chỉ được sinh ra bởi các mệnh đề trên
Trang 11Một hằng được xem là ký hiệu hàm 0-ngôi Hạng thức nền là hạng thức
không chứa biến
Định nghĩa 1.3 (Nguyên tố) Một nguyên tố có dạng p(t1, t2, …, t n ), trong đó p là
ký hiệu vị từ n-ngôi và các đối t1, t2, …, t n là các hạng thức Nguyên tố nền là
nguyên tố không chứa biến
Ví dụ 1.1 Xét nguyên tố father(Hung,Dung), trong đó vị từ 2 ngôi father chỉ
mối quan hệ bố con, hạng thức Hung, Dung là các hằng Nguyên tố này có ý nghĩa là Hung là bố của Dung Nguyên tố này cũng là nguyên tố nền vì nó
không chứa biến
Định nghĩa 1.4 (Literal) Literal là một nguyên tố (gọi là literal dương) hoặc phủ
định của nguyên tố (gọi là literal âm) Với p là một nguyên tố, literal âm của p
được ký hiệu p
Ví dụ 1.2 Xét nguyên tố father(Hung, Dung) ở ví dụ 1.1, father(Hung, Dung) là
literal dương và father(Hung, Dung) là literal âm
Định nghĩa 1.5 (Công thức) Công thức được định nghĩa đệ qui như sau:
(i) Mỗi nguyên tố là một công thức,
(ii) Các hằng vị từ true và false là các công thức,
(iii) Nếu E và F là các công thức thì:
(EF), (E), (E F), (E F), (E F)
là các công thức,
(iv) Nếu E là công thức và X là một biến thì X E( ), X E( )là các công thức,
(v) Công thức chỉ được sinh ra bởi một số hữu hạn các mệnh đề trên
Ví dụ 1.3 Xem công thức sau:
X (Y ((father(X,Y) male(X) child_of(Y,X)))
Trong ví dụ này thì male(X) là nguyên tố để chỉ X là nam và child_of(Y,X) để chỉ
Trang 12Y là con của X và father(X,Y) là nguyên tố để chỉ X là bố (father) của Y Công
thức trên có ý nghĩa nếu X là nam và Y là con của X thì X là bố của Y
Ví dụ 1.4 Xét công thức sau:
X(công_dân(X) sinh_ở_Mỹ(X))
Trong ví dụ này, công_dân(X) là nguyên tố để chỉ X là công dân và
sinh_ở_Mỹ(X) để chỉ X được sinh ra ở Mỹ Công thức này có ý nghĩa nếu X
được sinh ra ở Mỹ thì X là công dân Mỹ
Định nghĩa 1.6 (Ngôn ngữ bậc nhất) Một ngôn ngữ bậc nhất bao gồm một bộ
ký tự và những công thức được xây dựng trên bộ ký tự đó
1.2 Chương trình logic
Trong phần này sẽ xem xét cú pháp và ngữ nghĩa của hai lớp chương trình logic: chương trình logic xác định (definite logic program) và chương trình logic thông thường (normal logic program)
1.2.1 Chương trình logic xác định
1.2.1.1 Cú pháp
Định nghĩa 1.7 (Mệnh đề xác định) Mệnh đề xác định là công thức có dạng:
X1 X k (p q1 , , q n) (1) trong đó n 0, p, q i là các nguyên tố, p được gọi là đầu và q1, , q n được gọi là thân của mệnh đề, dấu phẩy ký hiệu thay cho phép hội (), X1 Xk là các biến
xuất hiện trong p, q1, , q n
Ta thường viết mệnh đề (1) dưới dạng:
p q1 , , q n (2) Ngữ nghĩa của mệnh đề (1) là: Nếu tất cả các nguyên tố q i là đúng thì p
cũng đúng
Trang 13Trong mệnh đề (1), nếu n = 0 thì (1) được gọi là mệnh đề đơn vị, nghĩa là mệnh đề có dạng: p , đó là mệnh đề với thân rỗng Ngữ nghĩa của mệnh đề
đơn vị là với mọi phép thay thế các biến của p bởi các hằng thì p luôn luôn
Trong chương trình này thì s là một hàm 1-ngôi, được xác định bởi s(X) =
X +1 với X , nguyên tố even(X) để chỉ X là một số chẵn Mệnh đề đơn vị r1
even(0) có ý nghĩa là 0 một số chẵn và r2 là mệnh đề với ý nghĩa là nếu X là số chẵn thì s(s(X)) cũng là số chẵn
Định nghĩa 1.9 (Vũ trụ/Cơ sở Herbrand) Cho P là chương trình logic xác định
Vũ trụ Herbrand của P, ký hiệu UP, là tập các hạng thức nền được xây
dựng từ các hằng và các ký hiệu hàm trong P
Cơ sở Herbrand của P, ký hiệu B P, là tập các nguyên tố nền được xây dựng
từ các ký hiệu vị từ trong P có đối là các hạng thức nền lấy từ vũ trụ Herbrand U P
Vũ trụ Herbrand, cơ sở Herbrand của chương trình logic xác định P luôn luôn là những tập vô hạn nếu P có chứa ký hiệu hàm
Ví dụ 1.6Xét chương trình logic xác định P ở ví dụ 1.5:
Vũ trụ Herbrand của P là: U P = {0, s(0), s(s(0)), s(s(s(0))), }
Cơ sở Herbrand của P là:
B P = {even(0), even(s(s(0)), even(s(s(s(0))), }
Trang 14Trong trường hợp chương trình logic xác định không chứa ký hiệu hàm thì vũ trụ Herbrand, cơ sở Herbrand đều là những tập hữu hạn
Ví dụ 1.7 Xét chương trình logic xác định P gồm các mệnh đề sau:
Cơ sở Herbrand của P là:
B P ={ công_dân(Mary), công_dân(John), sinh_ở_Mỹ(Mary),
sinh_ở_Mỹ(John), sinh_ngoài_Mỹ(Mary), sinh_ngoài_Mỹ(John),
cư_dân_Mỹ(Mary), cư_dân_Mỹ(John), nhập_tịch(Mary), nhập_tịch(John), mẹ(Mary, Mary),
mẹ(Mary, John), mẹ(John, Mary), mẹ(John, John),
đăng_ký(Mary), đăng_ký(John)}
1.2.1.2 Ngữ nghĩa chương trình logic xác định
Định nghĩa 1.10 (Thể hiện Herbrand, mô hình Herbrand) Cho P là chương trình
Trang 15 Mô hình Herbrand của P được gọi là mô hình nhỏ nhất nếu nó được bao hàm trong mọi mô hình của P
Ví dụ 1.8Xét trở lại chương trình logic xác định P ở ví dụ 1.5:
Thể hiện I1 không phải là mô hình của P vì mặc dù I1 là mô hình của mệnh đề
even(0) nhưng I1 không phải là mô hình của mệnh đề r2 vì tồn tại mệnh đề nền
even(s(s(0))) even(0) của r2 mà I1 không phải là mô hình của mệnh đề nền
này Tương tự, I2 cũng không phải là mô hình của P vì mệnh đề tồn tại mệnh đề
nền:
even(s(s(s(0)))) even(s(0)) của r2 mà I2 không phải là mô hình của nó.Tuy nhiên, I3 là mô hình của P Ta có
I3 là mô hình của r1 I3 cũng là mô hình của r2 Thật vậy, xét mệnh đề:
even(s(s(t)))) even(t)
là một hiện hành nền nào đó của mệnh đề r2, trong đó t U P Rõ ràng mệnh đề
even(s(s(t))) even(t) đúng vì even(t) và even(s(s(t)))) đều thuộc I3 Vậy I3 là mô
hình của P Ta cũng có ngay I4 là mô hình của P
Ví dụ 1.9 Cho chương trình logic xác định P gồm các mệnh đề:
r1 : proud(X) parent(X,Y) newborn(Y)
r2 : parent(X,Y) father(X,Y)
r3 : parent(X,Y) mother(X,Y)
Trang 16r4 : father(Khoa,Mai)
Xét một số thể hiện Herbrand của P:
I1 = {newborn(Khoa), proud(Khoa)}
I2 = {newborn(Mai), proud(Mai), parent(Khoa,Mai)}
I3 = {newborn(Mai), father(Khoa,Mai), parent(Khoa,Mai), proud(Khoa)}
I1 và I2 đều không phải là mô hình của P vì tồn tại mệnh đề father(Khoa,Mai) của r4 không đúng trong I1 và I2 Tuy nhiên, I3 là mô hình của P vì mọi mệnh
đề của P đều đúng trong I3
Định nghĩa 1.11 (Ngữ nghĩa chương trình logic xác định) Cho P là chương trình
logic xác định, ngữ nghĩa của P là mô hình nhỏ nhất của P, ký hiệu MP
Mô hình nhỏ nhất M P có thể xây dựng bằng cách dùng toán tử hệ quả trực tiếp Ta có định nghĩa sau:
Định nghĩa 1.12 (Toán tử hệ quả trực tiếp) Cho P là chương trình logic xác
2 là tập các tập con của cơ sở Herbrand B P T P được gọi là toán tử hệ
quả trực tiếp trên B P
2
Định lý 1.1 [2] Toán tử TP đơn điệu theo quan hệ bao hàm và có điểm bất động nhỏ nhất Hơn nữa, điểm bất động nhỏ nhất đó cũng chính là mô hình nhỏ nhất
của chương trình logic xác định P
Định lý 1.2 [2] Cho P là chương trình logic xác định Mô hình nhỏ nhất của P là
giới hạn của dãy T P n ,n, ký hiệu T P , trong đó:
T P 0 = , T P (i + 1) = T P (T P i)
Trang 17edge(1,2), edge(2,3), edge(3,4), edge(4,5)
Mô hình nhỏ nhất (MP) của P được tìm qua các bước lặp sau:
I 1 =
I 2 = T p (I 1 ) = {edge(1,2), edge(2,3), edge(3,4), edge(4,5)}
I 3 = T p (I 2 ) = I 2 {path(1,2), path(2,3), path(3,4), path(4,5)}
I 4 = T p (I 3 ) = I 3 {path(1,3), path(2,4), path(3,5)}
I 5 = T p (I 4 ) = I 4 {path(1,4), path(2,5)}
I 6 = T p (I 5 ) = I 5 {path(1,5)}
I 7 = T p (I 6 ) = I 6 = I 6
Vậy mô hình nhỏ nhất của P chính là MP = I6
1.2.1.3 Lập luận suy diễn trong chương trình logic xác định
Vấn đề ta quan tâm là làm thế nào xác định được các nguyên tố nền là hệ
Trang 18quả logic (nghĩa là được suy diễn logic) từ các mệnh đề của chương trình logic xác định đã cho Điều này được thể hiện qua kết quả sau:
Định lý 1.3 [2] Mô hình nhỏ nhất MP của chương trình logic xác định P là tập các nguyên tố nền mà là hệ quả logic của P Nghĩa là:
Đối với chương trình logic xác định, ta thường dùng giả thiết thế giới đóng
(CWA – Closed World Assumption) sau đây để kết luận về sự kiện phủ định:
nếu một nguyên tố nền A không thể suy diễn logic từ chương trình logic xác định
P thì A là đúng Vì vậy, từ định lý trên ta có thể kết luận về giá trị chân lý của
nguyên tố nền: nếu A MP thì A được xem là đúng, ngoài ra A là sai Điều này
có thể biểu diễn bởi mệnh đề suy diễn sau:
A
A P
Ví dụ 1.12 Xét chương trình logic ở ví dụ 1.11, tất cả các nguyên tố nền không
thuộc mô hình nhỏ nhất MP = {edge(1,2), edge(2,3), edge(3,4), edge(4,5),
path(1,2), path(2,3), path(3,4), path(4,5), path(1,3), path(2,4), path(3,5), path(1,4), path(2,5)} đều được xem là sai, chẳng hạn path(2,1) là sai
1.2.2 Chương trình logic thông thường
Các chương trình logic xác định biểu diễn tri thức dương, các mệnh đề trong chương trình mô tả các đối tượng xác định và mối quan hệ giữa chúng Các quan hệ này được thể hiện rõ trong mô hình nhỏ nhất - chứa các nguyên tố nền là hệ quả logic của chương trình Đối với chương trình logic thông thường, khi các mệnh đề có chứa phủ định ở thân thì ngữ nghĩa của nó trở nên phức tạp hơn nhiều Lúc này chương trình có thể không có mô hình nhỏ nhất nhưng tồn tại nhiều mô hình cực tiểu
Ví dụ 1.13 Chẳng hạn, xét chương trình logic P gồm các mệnh đề sau:
Trang 19trong đó n 0, p là nguyên tố, q i là các literal
Từ đây về sau ta gọi chương trình logic thông thường là chương trình logic
Để giải quyết vấn đề ngữ nghĩa của chương trình logic thông thường (có chứa phủ định), đã có nhiều tiếp cận khác nhau, trong đó thường sử dụng tiếp cận ngữ nghĩa mô hình bền vững [4] Việc xác định mô hình bền vững sẽ được thực hiện nhờ vào một phép biến đổi, được gọi là phép biến đổi Gelfond – Lifschitz Ta có định nghĩa sau:
Định nghĩa 1.14 (Phép biến đổi Gelfond - Lifschitz) [4] Gọi ground(P) là
chương trình nhận được từ chương trình logic P bằng cách thay thế các biến trong mọi mệnh đề của P bởi các hằng trong P Đối với mọi thể hiện M của ground(P), ký hiệu P M là chương trình nhận được từ ground(P) bằng cách loại
bỏ:
1 Các mệnh đề có literal âm B trong thân của nó, với B M
2 Tất cả literal âm trong thân của các mệnh đề còn lại
Rõ ràng P M là chương trình không có phủ định, nó là chương trình logic
xác định, vì vậy P M có mô hình nhỏ nhất
Trang 20Ví dụ 1.14 Cho P là chương trình logic:
a b
b a
c a b Bây giờ, P có hai mô hình bền vững: M1 = {a, c} và M2 = {b}
Tập M 3 = {a, b, c} là một mô hình của P theo nghĩa thông thường, nhưng
nó không bền vững vì mô hình nhỏ nhất của M3
P là tập rỗng
Ví dụ 1.15 Cho P là chương trình logic:
fly(X) bird(X) ab(X)
Trang 21Định nghĩa 1.15 (Mô hình bền vững) Tập M các nguyên tố được gọi là mô hình
bền vững của chương trình logic P nếu M là mô hình nhỏ nhất của P M
Định lý 1.4 [4] Cho P là chương trình logic Mọi mô hình bền vững của P đều là
mô hình cực tiểu của P
Các mô hình bền vững là sự tổng quát hóa ngữ nghĩa của chương trình logic xác định, điều này được thể hiện bởi kết quả sau:
Định lý 1.5 [4] Đối với chương trình logic xác định thì mô hình bền vững chính
là mô hình nhỏ nhất của nó
1.2.2.2 Lập luận suy diễn trong chương trình logic thông thường
Bởi vì một chương trình logic có thể có một hoặc nhiều hoặc không có
mô hình bền vững Vấn đề đặt ra là cách thức suy luận từ P sẽ được xác định như thế nào Đối với một mô hình bền vững cụ thể, một nguyên tố nền a được xem là đúng nếu a M và sai nếu a M Điều này thường được mở rộng để
suy luận từ tất cả mô hình bền vững của P theo hai dạng đối ngẫu nhau sau đây:
Lập luận bất chấp (Brave Reasoning): Một nguyên tố nền a là hệ quả bất
chấp (brave consequence) của P, ký hiệu ⊨ b nếu a thuộc vào một mô hình bền vững M nào đó của P
Lập luận thận trọng (Cautious Reasoning) Một nguyên tố nền a là hệ quả thận trọng (brave consequence) của P, ký hiệu ⊨c nếu a thuộc mọi mô hình bền vững M của P
Ví dụ 1.16 Xem chương trình logic P:
p(a) r(X) p(X), q(X)
P có 2 mô hình cực tiểu là M1 = {p(a), r(a)} và M2 = {p(a), q(a)} và chỉ có M1 là
mô hình bền vững của P Lúc đó P ⊨ b r(a) và P ⊨ c r(a) vì r(a) đúng trong mọi
mô hình bền vững Tuy nhiên với P’ = P {q(a)} thì cả hai P’ ⊨ b r(a) và P ’ ⊨c
Trang 22r(a) đều không thỏa mãn vì r(a) là sai trong mô hình bền vững duy nhất của
{p(a), q(a)} của P’
Trang 23Chương 2 CHƯƠNG TRÌNH LOGIC PHỎNG ĐOÁN
Chương này trình bày về việc tính toán phỏng đoán trong các chương trình logic, đồng thời trình bày về cú pháp và ngữ nghĩa của chương trình logic phỏng đoán một mở rộng của chương trình logic đã xét ở chương 1
2.1 Giới thiệu về lập trình logic phỏng đoán
Phỏng đoán là một dạng suy luận dựa vào một số mệnh đề logic (còn gọi
là các quy tắc logic) và một quan sát cho trước nhằm mục đích tìm một giải thích cho quan sát đó bằng cách sử dụng các quy tắc logic đã cho Xem ví dụ sau đây:
Ví dụ 2.1 Cho chương trình logic P gồm các quy tắc sau:
bị_cảm(X) đau_đầu(X) sốt_cao(X)
bị_cảm(X) đi_mưa (X)
Giả sử ta có quan sát X bị cảm, nghĩa là bị_cảm(X) là đúng Từ hai quy tắc của P ta nhận thấy nguyên nhân X bị cảm có thể là do X đi ra ngoài bị mắc mưa hoặc cũng có thể là do X bị sốt cao và đau đầu Lúc này nếu ta có thêm ràng
buộc đi_mưa (X), thì quy tắc thứ 2 không thỏa mãn ràng buộc này Chính vì vậy nguyên nhân X bị cảm ở đây là do X sốt cao và đau đầu vì nó thỏa mãn ràng
buộc đi_mưa (X)
Trong lập luận phỏng đoán, các giải thích phù hợp với trạng thái của cơ
sở tri thức có thể trở nên không phù hợp với thông tin mới Trong ví dụ trên lời
giải thích đi_mưa có thể hóa ra là sai lầm, và giải thích khác đau_đầu sốt_cao
có thể là nguyên nhân thực sự cho quan sát đã cho Sự tồn tại của nhiều nguyên nhân là một đặc tính tổng quát của lập luận phỏng đoán và việc lựa chọn giải thích “hợp lý hơn” là một vấn đề quan trọng
Trang 24Ví dụ 2.2 Cho chương trình logic P gồm các quy tắc sau:
Không_hiểu_bài(X) nói_chuyện(X) hiểu_sai(X)
Không_hiểu_bài(X) chưa_giảng_kỹ(Y, X)
Không_hiểu_bài(X) hiểu_sai(X)
Nguyên nhân X “không_hiểu_bài” có thể là do X “nói_chuyện” và
“hiểu_sai” ý người giảng trong lúc học hoặc cũng có thể là do Y
“chưa_giảng_kỹ” cho X Ở đây, nếu ta có ràng buộc nói_chuyện (X) nên quy
tắc đầu tiên không thỏa mãn ràng buộc toàn vẹn này Chính vì vậy, nguyên nhân
X “không_hiểu_bài” ở đây là do Y “chưa_giảng_kỹ” cho X vì nó thỏa mãn ràng
buộc nói_chuyện (X)
2.2 Tính toán phỏng đoán trong lập trình logic
Trong lập trình logic, phỏng đoán cũng có thể được giải thích bằng cách
sử dụng các thủ tục hợp giải SLD và SLDNF Đối với chương trình logic xác
định, một quan sát Q có thể được giải thích bằng cách dùng thủ tục hợp giải
SLD, trong khi đối với chương trình logic thông thường, phỏng đoán cũng có thể giải thích bằng thủ tục hợp giải SLDNF
2.2.1 Thủ tục hợp giải SLD đối với chương trình logic xác định
Phần này trình bày về thủ tục hợp giải SLD [2], trong thủ tục hợp giải SLD, phép thế đóng vai trò quan trọng, ta có định nghĩa sau:
Định nghĩa 2.1 (Đích) Đích là công thức có dạng:
B1 Bm (m > 0) trong đó Bi là các nguyên tố, i = 1, , m
Người ta còn gọi đích là một ràng buộc toàn vẹn (hoặc ràng buộc)
Định nghĩa 2.2 (Phép thế) Một phép thế là một ánh xạ từ tập các biến vào tập
các hạng thức sao cho tập tất cả các cặp Xi/ti là hữu hạn (trong đó Xi là biến, ti là
Trang 25hạng thức), ký hiệu = {X1/t1, , Xn/tn }, các biến Xi phân biệt nhau, ti là hạng
thức và Xi ti, mỗi phần tử Xi/ti là ký hiệu của phép thay thế biến Xi với hạng
thức t i , i = 1, , n Phép thế được gọi là phép thế nền nếu tất cả t i đều là hạng thức nền
Ví dụ 2.3 Cho nguyên tố p(f(X), Y) và phép thế 1 = {X/a, Y/b} Lúc đó p(f(X), Y) là nguyên tố p(f(a), b) Tương tự, nếu 2 = { X/a, Y/X } thì p(f(X), Y)2 =
Ví dụ 2.4 Cho hai phép thế ={Y/f(X), Z/a} và = {X/a} Hợp của và là
phép thế = {Y/ f(a), X/a, Z/a}
Định nghĩa 2.4 Cho E và F là hai nguyên tố Lúc đó:
(i) E và F gọi là hợp nhất được nếu tồn tại phép thế sao cho E F, lúc
đó được gọi là phép hợp nhất của E và F
(ii) Phép thế gọi là tổng quát hơn phép thế nếu tồn tại một phép thế sao cho =
(iii) Phép hợp nhất của E và F được gọi là phép hợp nhất tổng quát nhất
của E và F nếu tổng quát hơn mọi phép hợp nhất khác của E và F, ký
hiệu mgu(E,F)
Trang 26Ví dụ 2.5 Cho hai nguyên tố: E = p(f(X), Z) và F = p(Y, a)
Xét phép thế = {Y/ f(a), X/a, Z/a} Ta có E và F có thể hợp nhất và là một
phép hợp nhất của E và F
Định nghĩa 2.5 Cho P là chương trình logic xác định và G là đích:
A1 Am Ak
trong đó A1, , Ak là các nguyên tố và C là một quy tắc A B1 Bq trong P
Lúc đó đích G’ gọi là được dẫn xuất từ đích G và quy tắc C nếu các điều kiện
sau thỏa mãn:
(i) Am là một nguyên tố, gọi là nguyên tố chọn trong G,
(ii) Tồn tại phép thế là mgu của Am và A,
Lúc đó đích G’ nhận được là :
(A1 Am-1B1 BqAm+1 Ak)
Đích G’ được gọi là đích hợp giải của đích G và quy tắc C
Định nghĩa 2.6 (Dẫn xuất SLD) Cho P là chương trình logic xác định, G là một
đích Một dẫn xuất SLD của P {G} bao gồm:
Một dãy (hữu hạn hoặc vô hạn) các đích G o = G, G1,
Một dãy C0, C1, các quy tắc trong P,
Một dãy các phép thế 1, 2,
sao cho mỗi Gi+1 được dẫn xuất từ Gi và Ci bằng cách dùng i+1
Trang 27Dẫn xuất SLD có thể mô tả như sau:
G G
Định nghĩa 2.7 (Dẫn xuất thành công, dẫn xuất thất bại):
(i) Một dẫn xuất SLD thành công khi nó kết thúc bởi đích rỗng, ký hiệu là
(ii) Một dẫn xuất thất bại nguyên tố chọn trong đích này không thể hợp nhất
với đầu của mọi quy tắc trong chương trình
Định nghĩa 2.8 (Cây hợp giải SLD) Cho P là một chương trình logic xác định
và G0 là một đích Cây hợp giải SLD của đích G0 đối với chương trình logic P
được xác định như sau:
Trang 28- Nút gốc của cây được gán nhãn bởi G0,
- Nếu cây chứa nút được gán nhãn là G i và Gi+1 được dẫn xuất từ Gi và một
quy tắc trong chương trình thì nút có nhãn G i sẽ có nút con được gán nhãn là
Gi+1 Nếu không có quy tắc nào có thể hợp giải với Gi thì Gi có một nút con được
gán nhãn là FF (gọi là thất bại hữu hạn - Finite Failure),
- Nút kết thúc là nút không có nút con, đó là nút được gán nhãn FF hoặc
Để phỏng đoán cho quan sát Q là ông(a, c), ta thực hiện thủ tục hợp giải
SLD như sau với đích ban đầu là: ông(a, c)
Trang 29Xây dựng cây SLD:
Vậy ta có câu trả lời cho quan sát Q: ông(a, c) là: {bố(a, b) , mẹ(b, c)}
Ví dụ 2.7 Cho chương trình logic P:
Để tính toán phỏng đoán cho đích ← l(Mai, X), ta thực hiện thủ tục hợp
giải SLD như sau:
Trang 30Xây dựng cây SLD:
Vậy ta có câu trả lời cho quan sát Q: l(Mai,X) là: {e(Xuan)} và {b(Minh)}
Ví dụ 2.8 Cho chương trình logic P: