2.1.1. Thuật giải Vƣơng Hạo (Wong Havard)
Ý tƣởng: Áp dụng chiến lƣợc chia để trị nhằm tách bài toán xuất phát thành các bài toán con dạng đơn giản hơn. Bài toán ban đầu sẽ đƣợc giải khi và chỉ khi mọi bài toán con sơ cấp giải đƣợc [2].
Bƣớc 1: Phát biểu lại giả thiết và kết luận của vấn đề theo dạng chuẩn sau : GT1, GT2, ..., GTn KL1, KL2, ..., KLm . Trong đó các GTi và KLi là các mệnh đề
đƣợc xây dựng từ các biến mệnh đề và 3 phép nối cơ bản : ∧ (dấu tuyển), ∨ (dấu
hội) , ¬ (dấu bù).
Bƣớc 2: (Khử dấu ¬) Chuyển vế các GTi và KLi có dạng phủ định.
Ví dụ : p ∨ q, ¬(r ∧ s), ¬g, p ∨ r → s, ¬p; p ∨ q, p ∨ r, p → (r ∧ s), g, s.
Bƣớc 3: (Khử dấu ∧, ∨): Nếu GTi có phép ∧, KLi có phép ∨ thì thay thế
bằng dấu'',". Ví dụ : p ∧ q, r ∧ (¬p ∨ s) → ¬q, ¬s; p, q, r, ¬p ∨ s → ¬q, ¬s.
Bƣớc 4: Nếu GTi có phép ∨ hay ở KLi có phép ∧ thì tách thành hai dòng
con.
Ví dụ : p, ¬p ∨ q → q
p, ¬p →q p, q →q
Bƣớc 5 : Một dòng đƣợc chứng minh nếu tồn tại chung một mệnh đề ở cả hai phía. Ví dụ : p, q → q đƣợc chứng minh p, ¬p → q; p → p, q.
Bƣớc 6:
- Nếu một dòng không còn phép nối ∨ hoặc ∧ ở cả hai vế và ở 2 vế không
- Một vấn đề đƣợc chứng minh nếu tất cả dòng dẫn xuất từ dạng chuẩn ban đầu đều đƣợc chứng minh.
Thuật toán dừng lại sau một số hữu hạn bƣớc và cho ra kết quả nếu các giả
thiết GT1, … , GTm có thể suy ra một trong các kết luận KL1, … , KLn.
2.1.2. Thuật giải Robinson
Thuật giải này hoạt động dựa trên phƣơng pháp chứng minh phản chứng. Chứng minh phép suy luận (a → b) là đúng với a là giả thiết, b là kết luận. Phản chứng: giả sử b sai suy ra ¬b là đúng. Bài toán đƣợc chứng minh nếu a đúng và ¬b đúng sinh ra một mâu thuẫn [2].
Bƣớc 1: Phát biểu lại giả thiết và kết luận của vấn đề theo dạng chuẩn sau : GT1, GT2, ..., GTn KL1, KL2, ..., KLm. Trong đó các GTi và KLi là các mệnh đề
đƣợc xây dựng từ các biến mệnh đề và 3 phép nối cơ bản : ∧ (dấu tuyển), ∨ (dấu
hội) , ¬ (dấu bù).
Bƣớc 2: Nếu GTi có phép ∧, KLi có phép ∨ thì thay thế bằng dấu ",".
Bƣớc3:(Khử dấu →) Biến đổi dòng chuẩn ở B1 về thành danh sách mệnh đề nhƣ sau:{ GT1, GT2, ..., GTn , ¬KL1, ¬KL2, ..., ¬KLm }.
Bƣớc 4: Nếu trong danh sách mệnh đề ở bƣớc 2 có 2 mệnh đề đối ngẫu nhau thì bài toán đƣợc chứng minh. Ngƣợc lại thì chuyển sang B4. (a và ¬a gọi là hai mệnh đề đối ngẫu nhau).
Bƣớc 5: Xây dựng một mệnh đề mới bằng cách tuyển một cặp mệnh đề trong danh sách mệnh đề ở bƣớc 2. Nếu mệnh đề mới có các biến mệnh đề đối ngẫu nhau thì các biến đó đƣợc loại bỏ. Ví dụ : p ∨ ¬q ∨ ¬r ∨ s ∨ q
Hai mệnh đề q, ¬q là đối ngẫu nên sẽ đƣợc loại bỏ p ∨ ¬r ∨ s
Bƣớc 6: Thay thế hai mệnh đề vừa tuyển trong danh sách mệnh đề bằng mệnh đề mới.Ví dụ : { p ∨ ¬q , ¬r ∨ s ∨q , w ∨ r , s ∨ q } {p ∨ ¬r ∨ s , w ∨ r , s
∨ q}.
B7: Nếu không xây dựng đƣợc thêm một mệnh đề mới nào và trong danh sách mệnh đề không có 2 mệnh đề nào đối ngẫu nhau thì vấn đề không đƣợc chứng minh.
Thuật toán này có nhƣợc điểm là tùy theo thứ tự lấy các cặp mệnh đề để hợp giải có thể xảy ra hiện tƣợng tràn bộ nhớ do bùng nổ tổ hợp đối với các bài toán có kích thƣớc lớn.
2.1.3. Suy diễn tiến
Là quá trình suy diễn bắt đầu từ tập sự kiện đã biết, rút ra những sự kiện mớivà cứ nhƣ vậy cho đến khi có đƣợc sự kiện cần chứng minh hoặc không có luậtnào sinh ra các sự kiện mới (tập sự kiện đúng là cực đại) [3].
Tƣ tƣởng cơ bản của suy diễn tiến là áp dụng luật suy diễn Modus Ponens tổng quát. Trong mỗi bƣớc của thủ tục lập luận tiến, ngƣời ta xét một luật trong cơ sở luật. Đối sánh mỗi điều kiện của luật với các sự kiện trong cơ sở sự kiện, nếu tất cả các điều kiện của luật đều đƣợc thoả mãn thì sự kiện trong phần kết luận của luật đƣợc xem là sự kiện đƣợc suy ra. Nếu sự kiện này là sự kiện mới (không có trong bộ nhớ làm việc), thì nó đƣợc đặt vào bộ nhớ làm việc. Quá trình trên đƣợc lặp lại cho tới khi nào không có luật nào sinh ra các sự kiện mới. Nhƣ vậy quá trình lập luận tiến là quá trình xem xét các luật. Với mỗi luật, ta đi từ phần điều kiện tới phần kết luận của luật, khi mà tất cả các điều kiện của luật đều đƣợc làm thoả mãn (bởi các sự kiện trong cơ sở sự kiện), thì ta suy ra sự kiện trong phần kết luận của luật.
Quá trình lập luận tiến không định hƣớng tới giải quyết một vấn đề nào cả, không định hƣớng tới tìm ra câu trả lời cho một câu hỏi nào cả. Lập luận tiến chỉ là quá trình suy ra các sự kiện mới từ các sự kiện trong bộ nhớ làm việc. Vì vậy lập luận tiến còn đƣợc gọi là lập luận điều khiển bởi dữ liệu, hoặc lập luận định
hƣớng dữ liệu.
* Giải thuật: Gọi T là tập các sự kiện tại thời điểm đang xét (khởi tạo tập T=F: tập sự kiện đúng ban đầu).
Xét các luật ri có dạng: p1∧ p2 ∧ … ∧ pn q và pj⟹ q và pj∈T j =1, n
nghĩa là left(ri)∈ Tthì T= T+ right (ri)quá trình lặp lại cho đến khi G⊂ T hoặc
không có luật nào sinh ra thêm sự kiện mới.
Procedure suydientien() Begin T:= F; S:= loc(R, T);{ S: là tập luật có dạng p1 ∧ p2 ∧ ...∧ pn ⟹ q vàpj∈T j =1, n} While G⊄ T and S<>∅ do Begin r := get(S); T:= T + right(r); R:=R \ {r}; S:= loc(R,T); End;
If G⊂ T then write (“thành công”) Else write (“không thành công”); End;
Quá trình suy diễn tiến là quá trình xem xét các luật, với mỗi luật ta xét phần điều kiện (ở vế trái) tới phần kết luận (ở vế phải) và khi mà tất cả các điều kiện của luật đều thoã mãn thì ta suy ra sự kiện trong phần kết luận. Chính vì lẽ đó mà có tên là suy diễn tiến.
Trong mỗi bƣớc của thủ tục, ngƣời ta xét một luật trong tập luật. So sánh mỗi điều kiện (ở vế trái) của tập luật với các sự kiện trong cơ sở sự kiện, nếu tất cảcác điều kiện của luật đƣợc thoã mãn thì sự kiện trong phần kết luận đƣợc xem là sự kiện đƣợc suy ra. Nếu sự kiện này là sự kiện mới (không có trong bộ nhớ làm việc) thì nó đƣợc đƣa vào bộ nhớ làm việc. Quá trình trên cứ lặp lạicho đến khi nào không có luật nào sinh ra sự kiện mới.
Quá trình suy diễn tiến không định hƣớng tới giải quyết một vấn đề nào cả, không hƣớng tới tìm ra câu trả lời cho một câu hỏi nào cả. Suy diễn tiến chỉ là quá trình suy ra các sự kiện mới từ các sự kiện có trong bộ nhớ làm việc.
Ví dụ: Xét ví dụ sau đây [10]: giả sử cơ sở luật (cơ sở luật về các động vật trong sở thú) gồm các luật sau:
Luật 1: nếu động vật có lông mao thì động vật là loài có vú. Luật 2: nếu động vật có lông vũ thì động vật là chim.
Luật 3: nếu 1. động vật biết bay, và 2. động vật đẻ trứng thì động vật là chim.
Luật 4: nếu 1. động vật là loài có vú, và 2. động vật ăn thịt thì động vật là thú ăn thịt.
Luật 5: nếu 1. động vật là loài có vú, và 2. động vật có răng nhọn, và 3. động vật có móng vuốt thì động vật là thú ăn thịt.
Luật 6: nếu 1. động vật là thú ăn thịt, và 2. động vật có màu lông vàng hung, và 3. động vật có đốm sẫm thì động vật là báo Châu Phi.
Luật 7: nếu 1. động vật là thú ăn thịt, và 2. động vật có màu lông vàng hung, và 3. động vật có vằn đen thì động vật là hổ.
Luật 8: nếu 1. động vật là chim, và 2. động vật không biết bay, và 3. động vật có chân dài, và 4. động vật có cổ dài thì động vật là đà điểu.
Luật 9: nếu 1. động vật là chim, và 2. động vật không biết bay, và 3. động vật biết bơi, và 4. động vật có lông đen và trắng thì động vật là chim cánh cụt.
Giả sử một em bé quan sát một con vật có tên là Ki trong sở thú, em thấy nó có các đặc điểm sau:
Ki có lông mao
Ki ăn thịt
Ki có màu lông vàng hung, Ki có đốm sẫm
Lúc này cơ sở sự kiện sẽ bao gồm các sự kiện trên. Thủ tục lập luận tiến xem xét luật 1. Khi biến “động vật” trong luật này đƣợc thay bởi Ki, điều kiện
của luật trở thành “Ki có lông mao”, đây là một sự kiện có trong bộ nhớ làm việc, do đó ta suy ra “Ki là loài có vú”. Đây là sự kiện mới, do đó nó đƣợc thêm vào bộ nhớ làm việc. Xét luật 4, thế biến “động vật” bởi Ki, thì hai điều kiện của luật trở thành:
Ki là loài có vú, và Ki ăn thịt
Cả hai sự kiện này đều có trong bộ nhớ làm việc, do đó từ luật 4 ta suy ra “Ki là thú ăn thịt”. Sự kiện mới này lại đƣợc thêm vào bộ nhớ làm việc. Ta xét tiếp luật 6, thế biến “động vật” bởi Ki, các điều kiện của luật trở thành:
Ki là loài thú ăn thịt, và Ki có màu lông vàng hung, và Ki có đốm sẫm Tất cả các điều kiện này đều đúng, do đó từ luật 6, ta suy ra “Ki là báo Châu Phi”. Nhƣ vậy từ các sự kiện đã biết về Ki, lập luận tiến đã suy ra các sự kiện mới sau
Ki là loài có vú.
Ki là thú ăn thịt.
Ki là báo Châu Phi.
Ƣu điểm:
Làm việc tốt khi bài toán có bản chất là đi thu thập thông tin rồi thấy
điều cần suy diễn.
Cho ra khối lƣợng lớn các thông tin từ một số thông tin ban đầu. Nó
sinh ra nhiều thông tin mới.
Suy diễn tiến là tiếp cận lý tƣởng đối với các loại bài toán cần giải
quyết các nhiệm vụ nhƣ lập kế hoạch, điều hành, điều khiển và diễn dịch.
Nhƣợc điểm:
Không cảm nhận đƣợc rằng chỉ cần một vài thông tin quan trọng. Hệ
thống hỏi các câu hỏi có thể hỏi mà không biết rằng chỉ một ít câu đã đi đến kết luận đƣợc.
Hệ thống có thể hỏi cả câu hỏi không liên quan. Có thể các câu trả
lờicũng quan trọng nhƣng làm ngƣời dùng lúng túng khi phải trả lời các câu ít liên quan đến chủ đề.
2.1.4. Suy diễn lùi
Suy diễn lùi (backward chaining): là quá trình xuất phát từ sự kiện cần chứng minh và thay vào đó là những sự kiện ở vế trái của 1 luật có vế phải là sự kiện cần chứng minh. Quá trình này đƣợc thực hiện cho đến khi đƣa về các sự kiện là tập sự kiện con của tập sự kiện giả thiết [3].
Nghĩa là: để đƣa ra kết luận b, ta thử tìm tất cả các luật có dạng: a1∧ ....∧
an⟹ b, để có b, phải đƣa ra các kết luận a1,...,an. Quá trình xác định ai cũng
tƣơng tự nhƣ đối với b, nếu đến một lúc nào đó phát hiện đƣợc rằng có một ai
nào đó không dẫn xuất đƣợc từ các giả thiết thì quay lui sang các luật sản xuất
khác sinh ra b có dạng b1∧....∧bm⟹ b. Ngƣợc lại, nếu mọi ai đều dẫn xuất đƣợc
giả thiết thì quá trình dẫn xuất ra b là đúng.
* Giải thuật:
Gọi T là tập các sự kiện cần chứng minh tại thời điểm đang xét (khởitạoT= G, G là tập kết luận).
S(p) ={ri∈R / right(ri) = p} ( là tập các luật trong R sao cho vế phải chứa p)
Procedure suydienlui (g)
Begin T:= {g};
If T⊂ F then write („g đã được chứng minh „); Else
Begin
If S(p) = {} then write („g không chứng minh được „); Else For ri∈ S(p) do Begin T:= T \ right(ri); T:= T + left(ri); For l∈T \ F do suydienlui(l); End; End; End;
Ví dụ: Sử dụng cơ sở các luật tại mục 2.1.4. Giả sử bộ nhớ làm việc chứa các sự kiện sau:
Bibi có lông vũ
Bibi có chân dài Bibi có cổ dài
Bibi không biết bay
Ta đƣa ra giả thuyết sau đây Bibi là đà điểu
Đối sánh giả thuyết này với phần kết luận của các luật, ta thấy nó khớp với kết luận của luật 8 nếu thế biến “động vật” bởi Bibi. Từ luật 8, ta suy ra rằng, giả thuyết “Bibi là đà điểu” là đúng, nếu các điều kiện sau là đúng
1. Bibi là chim
2. Bibi không biết bay 3. Bibi có chân dài 4. Bibi có cổ dài
Đây là 4 giả thuyết mới. Việc đánh giá giả thuyết “Bibi là đà điểu” đƣợc quy về việc đánh giá bốn giả thuyết mới này. Các giả thuyết 2, 3 và 4 đều có trong bộ nhớ làm việc, ta chỉ cần đánh giá giả thuyết “Bibi là chim”. Lại đối sánh giả thuyết này với phần kết luận của các luật. Ta thấy nó khớp với kết luận của luật 2 và luật 3. Xét luật 3, đi lùi lại phần điều kiện của luật này, ta nhận đƣợc các giả thuyết mới là:
Bibi đẻ trứng.
Cả hai giả thuyết này đều không có trong bộ nhớ làm việc và cũng không khớp với phần kết luận của luật nào cả. Do đó, ta không thể phát triển tiếp các giả thuyết này đƣợc nữa. Chuyển sang xét luật 2, để “Bibi là chim” luật này đòi hỏi điều kiện “Bibi có lông vũ”. Điều kiện này có trong bộ nhớ làm việc. Vậy giả thuyết đã đƣa ra “Bibi là đà điểu” là đúng.
Ƣu điểm:
Phù hợp với bài toán đƣa ra giả thuyết và liệu giả thuyết đó có đúng
hay không?
Tập trung vào đích đã cho. Nó tạo ra một loạt câu hỏi chỉ liên quan
đến vấn đề đang xét, thuận tiện đối với ngƣời dùng.
Khi suy diễn một điều gì từ thông tin đã biết, nó chỉ tìm trên một phần của cơ sở tri thức thích đáng đối với bài toán đang xét.
Suy diễn lùi đƣợc đánh giá cao trong các bài toán nhƣ là chẩn đoán,
dự đoán và tìm lỗi.
Nhƣợc điểm: Nhƣợc điểm cơ bản của loại suy diễn này là nó thƣờng tiếp theo dòng suy diễn thay vì đúng ra phải dừng ở đó mà sang nhánh khác.
2.2. Hệ chuyên gia suy diễn
Hình 2.1. Nền tảng công nghệ hệ chuyên gia dựa trên luật [2] 2.2.1. Hệ chuyên gia suy diễn tiến
Hệ chuyên gia suy diễn tiến là hệ chuyên gia giải quyết các vấn đề bắt đầu từ lý giải từ dữ liệu ban đầu của bài toán lập luận trên cơ sở logic để khám phá các sự kiện mới dẫn đến kết luận của bài toán. Để thiết kế một hệ chuyên gia suy diễn tiến bao gồm các bƣớc đƣợc mô tả nhƣ sau:
Bƣớc 1: Định nghĩa vấn đề.
Bƣớc 2: Định nghĩa dữ liệu vào của hệ thống.
Bƣớc 3: Định nghĩa cấu trúc điều khiển của hệ thống.
Bƣớc 4: Mã hóa cơ sở tri thức.
Bƣớc 5: Thử nghiệm hệ thống.
Bƣớc 6: Thiết kế hệ thống giao diện ngƣời sử dụng hệ chuyên gia.
Bƣớc 7: Mở rộng hệ thống.
Ví dụ: Thiết kế hệ chuyên gia suy diễn tiến cố vấn sinh viên học tập:
+ Định nghĩa vấn đề: Bài toán đặt ra là thiết kế hệ chuyên gia suy diễn tiến cố vấn sinh viên học tập giải quyết các vấn đề nhƣ sau:
1. Giải quyết các môn học mà sinh viên đã thi đậu và cho qua. 2. Xử lý các môn học mà sinh viên đƣợc đặc cách cho qua. 3. Xử lý các môn học có các môn học tiên quyết.
4. Xử lý các môn học mà sinh viên đƣợc phép đăng ký học trong mỗi học kỳ. + Định nghĩa dữ liệu đầu vào của bài toán:
1. Các môn học bắt buộc. 2. Các môn học tự chọn.
3. Các môn học có các môn học tiên quyết. 4. Các môn học mà sinh viên đã học xong.
5. Các môn học cho phép sinh viên đƣợc đăng ký trong mỗi học kỳ.