Ví dụ về biểu diễn tri thức bằng chƣơng trình logic mở rộng

Một phần của tài liệu (LUẬN văn THẠC sĩ) nghiên cứu lập trình logic tập trả lời và ứng dụng (Trang 33 - 41)

Trong phần này, ta trình bày một số ví dụ minh họa việc biểu diễn tri thức bằng chƣơng trình logic mở rộng.

Ví dụ 2.6 Xét chƣơng trình logic mở rộng P mô tả việc xác định “trẻ em mồ côi”. Theo [7], trẻ em mồ côi là trẻ có cha lẫn mẹ không xác định. Chƣơng

trình P biểu diễn bởi các vị từ và qui tắc nhƣ sau:

r1: treem(X) ← nguoi(X), not treem(X).

r2: cha(F,C) ← nguoi(F), treem(C), not cha(F,C).

r3: me(M,C) ← nguoi(M), treem(C), not me(M, C) .

r4: khongxacdinh(X) ← nguoi(X), not khongxacdinh(X).

r5: chamekhongxacdinh(P) ← cha(F,P), me(M,P),

khongxacdinh(F), khongxacdinh(M).

r6: tremocoi(P) ← treem(P), chamekhongxacdinh(P).

r7: tremocoi(X) ← nguoi(X), not tremocoi(X).

nguoi(Dung) ←, nguoi(Hoa) ←, nguoi(Hanh) ←, nguoi(Phuc) ←,

nguoi(An ) ←, nguoi(Lanh) ←

treem(Dung) ←, treem(Hoa) ←

cha(Hanh,Dung) ←, cha(Phuc,Hoa) ←

me(An,Dung) ←, me(Lanh,Hoa) ←,

khongxacdinh(Phuc) ←, khongxacdinh(Lanh) ←,

nguoi(Mai) ←, treem(Mai) ←, me(Lanh,Mai) ←

trong ví dụ này thì nguoi(X) có nghĩa X là một ngƣời, treem(X) có nghĩa X là trẻ em, nguoi(F) có nghĩa F là một ngƣời cha, nguoi(M) có nghĩa M là một ngƣời mẹ, treem(C) có nghĩa C là một đứa trẻ, khongxacdinh(X) có nghĩa X là ngƣời không xác định đƣợc, khongxacdinh(F), có nghĩa F là ngƣời cha không xác định đƣợc, khongxacdinh(M) có nghĩa M ngƣời mẹ không xác định đƣợc,

tremocoi(X) có nghĩa X là trẻ mồ côi, tremocoi(P) có nghĩa P là trẻ mồ côi,

chamekhongxacdinh (P) có nghĩa P là cha mẹ không xác định đƣợc, cha(F,C) có nghĩa F là cha của đứa trẻ C, me(M,C) có nghĩa M là mẹ của đứa trẻ C,

cha(F,P) có nghĩa F là cha của đứa trẻ P, me(M,P) có nghĩa M là mẹ của đứa trẻ P.

Các quy tắc trong chƣơng trình P có ý nghĩa nhƣ sau: Quy tắc r1 nói rằng nếu X không đƣợc tin là trẻ em thì X không phải là trẻ em. Quy tắc r2, r3

nói rằng F/M không đƣợc tin là cha/mẹ của trẻ em C thì F/M không là cha/mẹ của trẻ em C. Quy tắc r4 nói rằng X không đƣợc tin là không xác định thì X

đƣợc xác định. Quy tắc r5, r6 nói rằng F/M là cha/mẹ không xác định thì P là trẻ mồ côi. Quy tắc r7 nói rằng X không đƣợc tin là trẻ mồ côi thì X không là trẻ mồ côi. Và các mệnh đề đơn vị nói rằng Dung, Hoa, Hanh, Phuc, An,

Lanh là ngƣời. Dung, Hoa là trẻ em; Hanh, An là cha/mẹ của Dung; Phuc,

Lanh là cha/mẹ của Hoa. Phuc, Lanh là ngƣời không xác định. Vị từ

chamekhongxacdinh(P) có thể bỏ qua nếu nó là false. Các quy tắc trên đƣợc mã hóa định nghĩa trẻ mồ côi.

Xây dựng chƣơng trình mô phỏng tremocoi.lp ở chƣơng 3 sẽ có 2 tập trả lời sau: M1 là tập trả lời Hoa là trẻ mồ côi, M2 là tập trả lời Dung không phải là trẻ mồ côi.

M1 = {tremocoi(Hoa)}

M2 = {tremocoi(Dung)}

Tuy nhiên, nếu ta mở rộng chƣơng trình này bằng cách thêm các mệnh đề đơn vị sau: nguoi(Mai) ←, treem(Mai) ←, me(Lanh, Mai) ←

Mệnh đề đơn vị này nói Mai là đứa trẻ mồ côi, câu trả lời sẽ là không xác định. Về mặt trực giác, câu trả lời X = Mai không phải là câu trả lời đúng vì

Mai có ngƣời cha không xác định nhƣng cũng không nói đƣợc mệnh đề đơn vị là sai vì theo sự biểu diễn cơ sở tri thức trên đứa trẻ mồ côi là cha mẹ không xác định.

Ví dụ tiếp theo sẽ minh họa cách sử dụng chƣơng trình logic mở rộng trong việc trả lời các thông tin không xác định trong cơ sở dữ liệu.

Ví dụ 2.7 [5] Xét một chƣơng trình logic mở rộng P mô tả việc “xét học bổng” cho sinh viên:

r1: dudieukien(X) ←mucdiemxetcao(X)

r2: dudieukien(X) ← toithieu(X), mucdiemxethoply(X)

r3: đuđieukien(X) ←  mucdiemxethoply (X), mucdiemxetcao(X)

r4: phongvan(X)← not dudieukien(X), not dudieukien(X).

mucdiemxethoply(Anh) ←, mucdiemxetcao(Anh) ←

trong đó mucdiemxetcao(X) và mucdiemxethoply(X) là mức điểm đƣợc xem xét, dudieukien(X) có nghĩa X là đủ điều kiện xét học bổng, phongvan(X) có nghĩa X là đƣợc chọn phỏng vấn, toithieu(X) có nghĩa X là mức điểm tối thiểu theo quy định đƣợc xét học bổng. Và các mệnh đề đơn vị nói rằng X dựa vào mức điểm xét xem có đƣợc chọn hay không?

Quy tắc r1 và r2 đƣợc dùng để tự định nghĩa với X là sinh viên đang đƣợc xét mức điểm. Quy tắc r3 nói rằng X sẽ không đƣợc chọn nếu điểm thi của X không đạt loại khá trở lên và quy tắc r4 nói rằng “các sinh viên không xác định đƣợc là có đƣợc xét học bổng hay không dựa vào ba quy tắc trên sẽ đƣợc phỏng vấn”. Tức là “phongvan(X) nếu không biết thông tin về

dudieukien(X) và dudieukien(X). Nếu ta thêm vào chƣơng trình P quy tắc mở rộng có dạng not p, not p có ý nghĩa “không xác định đƣợc giá trị của

p” (quy tắc 4) thì dễ thấy rằng các quy tắc của P cho phép ta kết luận là không xác định đƣợc dudieukien(X) vàdudieukien(X). Tức là không xác định đƣợc

Anh có đƣợc chọn hay không, và từ quy tắc 4 Anh sẽ đƣợc phỏng vấn để xét tuyển. Mặt khác, nếu Kim là một sinh viên có điểm cao và có số điểm đạt loại khá, thì ta kết luận đƣợc dudieukien(Kim).

Xây dựng chƣơng trình mô phỏng xethocbong.lp ở chƣơng 3, các quy tắc của P sẽ có chính xác một tập trả lời M1 sau:

M1= {mucdiemxethoply(Anh), mucdiemxetcao(Anh), phongvan(Anh)}

Ví dụ sau sẽ minh họa trƣờng hợp ngoại lệ mạnh và mặc định trong chƣơng trình logic mở rộng.

Ví dụ 2.8 Xét chƣơng trình logic P mô tả “Sinh viên nhút nhát” nhƣ sau: Trong một lớp học bình thƣờng, thông thƣờng thì sinh viên sợ học môn toán. Mai thì không sợ điều đó. Sinh viên giỏi toán cùng ý nghĩ nhƣ Mai. Sinh viên giỏi Tin có thể hoặc không có thể sợ. Chƣơng trình logic mô tả nhƣ sau:

r1: sinhvien(S) ←

r2: monhoc(D) ←

r3: thuoc(S,D1) ← monhoc(D1), thuoc(S,D2)

r4: so(S,Toan) ← sinhvien(S), not ab(d(S)), not so(S,Toan)

r5: so(Mai,Toan) ← ab(d(Mai))

r6: so(S,Toan) ← thuoc(S,Toan)

r7: ab(d(S)) ← sinhvien(S), not thuoc(S,Toan)

r8: ab(d(S)) ← sinhvien(S), not thuoc(S, Tin)

sinhvien(Duyen)←, sinhvien(Mai)←, sinhvien(Duy)←, sinhvien(Dung) ←

monhoc(Ngoaingu)←, monhoc(Tin)←, monhoc(Toan)←

thuoc(Duy,Ngoaingu)←, thuoc(Mai,Tin)←, thuoc(Duyen,Tin)←,

thuoc(Dung,Toan) ←

trong đó, sinhvien(S) có nghĩa S là sinh viên, monhoc(D) có nghĩa D là môn học của sinh viên, thuoc(S,D1) có nghĩa sinh viên S học môn D1, so(S,Toan) có nghĩa sinh viên S sợ học môn Toán, ab(d(S)) có nghĩa biểu diễn ngƣời S

không chắn chắn điều gì đó (ngƣời S có thể sợ hoặc không thể sợ học môn

Quy tắc r1, r2 nói rằng sinh viên S học môn học D. Quy tắc r3 nói rằng mỗi sinh viên S thuộc môn học riêng. Quy tắc r4 nói rằng đây là trƣờng hợp mặc định mạnh (sinh viên S sợ môn Toán). Quy tắc r5, r6 nói rằng trƣờng hợp duy nhất sinh viên S phát biểu mạnh không sợ môn toán mặc dù môn học khác.

Quy tắc r7, r8 nói rắng sinh viên S không chuyên Toán, Tin có thể hoặc không thể sợ học Toán.

Xây dựng chƣơng trình mô phỏng svnhutnhat.lp ở chƣơng 3, chƣơng trình logic mở rộng với 8 quy tắc trên có 3 tập trả lời sau: M1 sinh viên sợ

Toán, M2 sinh viên không sợ Toán, M3 chƣa biết sinh viên có sợ toán hay không.

M1 = {so(Duy,Toan)}

M2 = {so(Mai,Toan), so(Dung,Toan)}

M3 = {not so(Duyen,Toan)}

Ví dụ 2.9 [8] Mở rộng ví dụ 2.6 xét chƣơng trình logic P mô tả việc xác định “chế độ hỗ trợ” cho trẻ em mồ côi. Tại trại trẻ mồ côi có ba ngƣời nói về một số quy định chế độ hỗ trợ trẻ mồ côi: Ngƣời A nói: Tất cả trẻ em mồ côi đƣợc hƣởng chƣơng trình 1 của chính phủ, đây là chƣơng trình đặc biệt. Ngƣời B

nói: Tất cả trẻ em mồ côi đƣợc hƣởng chƣơng trình 0 của chính phủ. Ngƣời C

nói: Chƣơng trình 1 dành cho trẻ mồ côi, chƣơng trình 0 dành cho trẻ không là mồ côi. Theo ý kiến ngƣời C, trẻ mồ côi nếu có đủ điều kiện sẽ nhận trợ cấp từ chƣơng trình 1, không nhận từ chƣơng trình 0. Là quy định pháp luật của nhà nƣớc sẽ có bổ sung (trƣờng hợp ngoại lệ) xem nhƣ trƣờng hợp mặc định. Chƣơng trình P biểu diễn bởi các vị từ và qui tắc nhƣ sau:

r1: chuongtrinh(N1) 

r3: hotro(X,1) ghi(X), tremocoi(X), not ab(d1(X)), not hotro(X,1)

r4: hotro(X,0) ghi(X), treem(X), not ab(d2(X)), not  hotro(X,0)

r5: hotro(X, N2) chuongtrinh(N1), chuongtrinh(N2), ghi(X), quyen(X,N1)

r6:  hotro(X, 0) ghi(X), tremocoi(X)

r7: ab(d2(X)) ghi(X), not tremocoi(X)

r8:  hotro(X,N) ghi(X), khongxacdinh(X), chuongtrinh(N).

r9:  hotro(X,N) ghi(X), treemX), chuongtrinh(N).

r10: kiemtra(X) ghi(X), not tremocoi(X), not tremocoi(X).

r11: khongxacdinh(P) ghi(P), not khongxacdinh(P).

r12: treem(X) ghi(X), not treem(X).

r13: tremocoi(X) treem(P), chamekhongxacdinh(P).

r14: tremocoi(X) ghi(P), not cothetremocoi(P).

r15:  cothetremocoi(P) ghi(P), not chamekhongxacdinh(P).

r16: chame(X,P) cha(X,P).

r17: chame(X,P) me(X,P).

r18: chamekhongxacdinh(X,P) cha(X,P), khongxacdinh(X), me(Y,P), khongxacdinh(Y).

r19: chamekhongxacdinh(X,P) chame(X,P), khongxacdinh(X)

ghi(Hoa) , cha(Phuc,Hoa) , me(Lanh,Hoa) , treem(Hoa) 

ghi(Phuc) , cha(Thien,Phuc) , me(Thanh,Phuc) , khongxacdinh(Phuc) 

ghi(Lanh) khongxacdinh(Lanh) 

ghi(Dung) treem(Dung) , me(Lanh, Dung) 

trong đó, chuongtrinh(N1) có nghĩa N1 là chƣơng trình hƣởng hỗ trợ trẻ em không mồ côi theo quy định của chính phủ, chuongtrinh(N2) có nghĩa 1 là chƣơng trình hỗ trợ trẻ em mồ côi theo quy định của chính phủ, hotro(X,1) có nghĩa trong chƣơng trình 1 X đƣợc hỗ trợ, tƣơng tự hotro(X,0) đối với chƣơng trình 0, ghi(X) có nghĩa X đƣợc ghi nhận vào trong chƣơng trình, tremocoi(X) có nghĩa X là trẻ em mồ côi, not ab(d1(X)) có nghĩa biểu diễn cho trẻ mồ côi không chắc chắn về khả năng có đƣợc hƣởng hỗ trợ từ chƣơng trình 1 hay không, tƣơng tự biểu diễn ab(d2(X)) đối với chƣơng trình 0, khongxacdinh(X) có nghĩa X là không rõ, chame(X,P) có nghĩa X là cha hoặc mẹ của P,

kiemtra(X) có nghĩa X đƣợc kiểm tra xem là phải hay không phải trẻ mồ côi,

chamekhongxacdinh(X,P) có nghĩa X là cha hoặc mẹ không rõ.

Quy tắc r1, r2 nói rằng N1 là chƣơng trình 0, N2 là chƣơng trình 1. Quy tắc r3, r4, r5 biểu diễn câu nói theo thứ tự của ngƣời A, B, C, trong đó có nói đến trƣờng hợp ngoại lệ. Quy tắc r6 nói rằng trẻ mồ côi sẽ không đƣợc chƣơng trình 0 hỗ trợ. Quy tắc r7 nói rằng biểu diễn cho trẻ mồ côi không chắc chắn về khả năng có đƣợc hƣởng hỗ trợ từ chƣơng trình 0 hay không. Ngoài ra còn có các trƣờng hợp ngoại lệ mạnh mẽ cho cả hai mặc định nhƣ quy tắc r8, r9. Quy tắc r10 kiểm tra xem X có phải là đứa trẻ mồ côi không? Giả định rằng biểu diễn trƣờng hợp không xác định, dùng thế giới đóng cho quy tắc r11, r12. Quy tắc r13 định nghĩa trẻ mồ côi. Quy tắc r14 định nghĩa trẻ mồ côi ở dạng yếu của thế giới đóng. Quy tắc r15 định nghĩa một đứa trẻ có thể là trẻ mồ côi. Quy tắc r16, r17 nói rằng X có thể là cha hoặc mẹ của P. Quy tắc r18, r19 định nghĩa cha mẹ không xác định.

Xây dựng chƣơng trình mô phỏng chedohotro.lp ở chƣơng 3, chƣơng trình logic mở rộng với 19 quy tắc trên có 2 tập trả lời sau: M1 là đứa trẻ mồ côi và đƣợc chƣơng trình 1 hỗ trợ, M2 là đứa trẻ không mồ côi và đƣợc chƣơng trình 0 hỗ trợ.

M1 = {hotro(Hoa, 1), hotro(Hoa, 0)}

M2 = { hotro(Dung, 0), hotro(Hoa, 1)}.

Một phần của tài liệu (LUẬN văn THẠC sĩ) nghiên cứu lập trình logic tập trả lời và ứng dụng (Trang 33 - 41)

Tải bản đầy đủ (PDF)

(73 trang)