Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 24 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
24
Dung lượng
212,94 KB
Nội dung
Đại Học Quốc Gia TP.HCM Trường Đại Học Công Nghệ Thơng Tin BÁO CÁO CHUN ĐỀ CƠNG NGHỆ TRI THỨC VÀ ỨNG DỤNG ĐỀ TÀI: NGUYÊN TẮC XỬ LÝ PROLOG TRÊN NGUN LÝ LẬP TRÌNH LOGIC GVHD: GS TSKH Hồng Văn Kiếm Người thực hiện: Trần Quốc Cường Mã số: CH1301082 Lớp: Cao học khóa TP.HCM – 2014 Cơng nghệ tri thức Ứng dụng GVHD: GS TSKH Hoàng Văn Kiếm MỤC LỤC HVTH: Trần Quốc Cường_CH1301082 Trang Công nghệ tri thức Ứng dụng GVHD: GS TSKH Hoàng Văn Kiếm LỜI MỞ ĐẦU Khoa học công nghệ đặc trưng thời đại, nghiên cứu khoa học trở thành hoạt động sôi rộng khắp phạm vi toàn cầu Các thành tựu khoa học đại làm thay đổi mặt giới Khoa học công nghệ trở thành động lực thúc đẩy tiến nhân loại Cùng với nghiên cứu khoa học đại, người ý đến Công nghệ tri thức ứng dụng, coi nhân tố quan trọng để phát triển khoa học Trong phạm vi thu hoạch nhỏ này, chúng em trình bày nguyên tắc xử lý Prolog ngun lý lập trình Lơgich Qua đây, chúng em xin gửi lời cảm ơn đến Giáo sư - Tiến sỹ Khoa Học Hoàng Văn Kiếm, người tận tâm truyền đạt kiến thức tảng cho chúng em môn học “Cơng nghệ tri thức Ứng dụng” Bên cạnh tơi xin chân thành cảm ơn tồn thể bạn bè học viên lớp tận tình giúp đỡ cho tơi thời điểm khó khăn tìm hiểu tiểu luận HVTH: Trần Quốc Cường_CH1301082 Trang Công nghệ tri thức Ứng dụng I GVHD: GS TSKH Hoàng Văn Kiếm Giới thiệu: Prolog ngơn ngữ lập trình Tên gọi Prolog xuất phát từ cụm từ tiếng Pháp Programmation en logique, nghĩa "lập trình theo lơ gích" Xuất từ năm 1972 (do Alain Colmerauer Robert Kowalski thiết kế), mục tiêu Prolog giúp người dùng mô tả lại tốn ngơn ngữ logic, dựa đó, máy tính tiến hành suy diễn tự động dựa vào chế suy diễn có sẵn (hợp nhất, quay lui tìm kiếm theo chiều sâu) để tìm câu trả lời cho người dùng Prolog sử dụng nhiều ứng dụng trí tuệ nhân tạo ngơn ngữ học khoa học máy tính (đặc biệt ngành xử lý ngơn ngữ tự nhiên mục tiêu thiết kế ban đầu nó) công nghệ xử lý tri thức, máy học, hệ chun gia, xử lý ngơn ngữ tự nhiên,trị chơi,v.v… Cú pháp ngữ nghĩa Prolog đơn giản sáng sủa, người Nhật coi tảng để xây dựng máy tính hệ thứ năm mà đó, thay phải mơ tả cách giải tốn máy tính, người cần mơ tả tốn máy tính hỗ trợ họ nốt phần lại Do Prolog ngơn ngữ lập trình nên để mơ tả chi tiết phải tốn nhiều trang giấy phạm vi tiểu luận sâu vào nguyên tắc xử lý Prolog nguyên lý lập trình lơgich dựa mệnh đề Horn (Horn logíc) HVTH: Trần Quốc Cường_CH1301082 Trang Cơng nghệ tri thức Ứng dụng II GVHD: GS TSKH Hoàng Văn Kiếm Nhắc lại mệnh đề Horn: Ví dụ: 1.Nếu người già mà (và) khơn ngoan người hạnh phúc Jim người hạnh phúc Nếu X cha mẹ Y Y cha mẹ Z X ơng Z Tom ông Pat Tất người chết (hoặc Nếu người phải chết) Socrat người Trong mệnh đề Horn trên, mệnh đề 1,3,5 gọi luật (rule), mệnh đề lại gọi kiện (fact) Một chương trình lơgich xem sở liệu gồm mệnh đề Horn, dạng luật, dạng kiện, chẳng hạn tất kiện luật từ đến Người sử dụng (NSD) gọi chạy chương trình lơgich cách đặt câu hỏi (query/ question) truy vấn sở liệu này, chẳng hạn câu hỏi: Socrat có chết không? (tương đương khẳng định Socrat chết hay sai?) Một hệ thống lơgich thực chương trình theo cách - tìm kiếm dựa vốn có chương trình – sở liệu, để minh chứng câu hỏi khẳng định, (Yes) sai (No) Với câu hỏi trên, hệ thống tìm kiếm sở liệu khẳng định Socrat chết luật thỏa mãn (vế thì) Vận dụng luật 5, hệ thống nhận Socrat người (vế nếu) kiện 5.Từ đó, câu trả lời là: Yes có nghĩa Socrat chết HVTH: Trần Quốc Cường_CH1301082 Trang Công nghệ tri thức Ứng dụng III GVHD: GS TSKH Hồng Văn Kiếm Các thuật ngữ: Một chương trình Prolog sở liệu gồm mệnh đề (clause) Mỗi mệnh đề xây dựng từ vị từ (predicat) Mội vị từ phát biểu đối tượng có giá trị chân (true) sai (fail) Một vị từ có đối nguyên tử lôgich (logic atom) Mỗi nguyên tử (nói gọn) biểu diễn quan hệ hạng (term) Như vậy, hạng quan hệ hạng tạo thành mệnh đề Hạng xem đối tượng “dữ liệu” chương trình Prolog Hạng hạng sơ cấp (elementary term) gồm (constant), biến (variable) hạng phức hợp (compound term) Các hạng phức hợp biểu diễn đối tượng phức tạp toán cần giải thuộc lĩnh vực xét Hạng phức hợp hàm tử (functor) có chứa đối (argument), có dạng Tên_hàm_tử(Đối_1,…,Đối_n) Tên hàm tử chuỗi chữ và/hoặc chữ số bắt đầu chữ thường Các đối biến, hạng sơ cấp, hạng phức hợp Ví dụ: f(5,a,b) student(robert, 1975, info, 2, address(6, ‘mal juin’, ‘Caen’)) Mệnh đề kiện, luật (hay quy tắc), hay câu hỏi Prolog quy ước viết sau mệnh đề dấu chấm để kết thúc sau: - Sự kiện: (tương ứng với luật :- true.) - Luật: :- - Câu hỏi: ?- (ở chế độ tương tác có dấu nhắc lệnh) HVTH: Trần Quốc Cường_CH1301082 Trang Công nghệ tri thức Ứng dụng IV GVHD: GS TSKH Hoàng Văn Kiếm Sự kiện luật Prolog Xây dựng kiện Ví dụ: Quan hệ gia đình Để xây dựng kiện chương trình Prolog, ta lấy ví dụ Ta xây dựng gia hệ sau: Trong gia hệ (a), nút người, mũi tên quan hệ cha mẹ (parent of) Sự kiện Tom là cha mẹ Bob viết thành vị từ Prolog sau (chú ý mệnh đề kết thúc dấu chấm): parent(tom, bob) % Chú ý khơng có dấu cách trước dấu mở ngoặc Ở đây, vị từ parent có hai đối tom bob Người ta biểu diễn vị từ hình (b): nút gốc tên vị từ, nút đối Từ gia hệ đây, tiếp tục viết vị từ khác để nhận chương trình Prolog gồm vị từ sau: parent(pam, bob) parent(tom, bob) parent(tom, liz) parent(bob, ann) HVTH: Trần Quốc Cường_CH1301082 Trang Công nghệ tri thức Ứng dụng GVHD: GS TSKH Hoàng Văn Kiếm parent(bob, pat) parent(pat, jim) Sau hệ thống Prolog nhận chương trình này, thực chất sở liệu, người ta đặt câu hỏi liên quan đến quan hệ parent Ví dụ câu hỏi Bob có phải cha mẹ Pat gõ vào hệ thống đối thoại Prolog (dấu nhắc ?-_) sau: ?- parent(bob,pat) Sau tìm thấy kiện chương trình, Prolog trả lời: Yes Ta tiếp tục đặt câu hỏi khác: ?- parent(liz, pat) No Bởi Prolog khơng tìm thấy kiện Liz người mẹ Pat chương trình Tương tự, Prolog trả lời No cho kiện: ?- parent(tom, ben) Vì tên ben chưa đưa vào chương trình Ta tiếp tục đặt câu hỏi thú vị khác Chẳng hạn, cha (hay mẹ) Liz? ?- parent(X, liz) Lần này, Prolog không trả lời Yes No, mà đưa giá trị X làm thỏa mãn câu hỏi đây: X = tom Để biết Bob, ta cần viết: ?- parent(bob, X) Với câu hỏi này, Prolog có hai câu trả lời, là: X = ann ->; HVTH: Trần Quốc Cường_CH1301082 Trang Công nghệ tri thức Ứng dụng GVHD: GS TSKH Hoàng Văn Kiếm Để biết câu trả lời tiếp theo, hấu hết cài đặt Prolog, NSD phải gõ vào dấu chấm phẩy (;) sau -> (Atity Prolog): X = pat Nếu hết phương án trả lời mà tiếp tục yêu cầu (;), Prolog trả lời No, NSD đặt câu hỏi tổng quát hơn, chẳng hạn: cha mẹ ai? Nói cách khác, cần tìm X Y cho X cha mẹ Y Ta viết sau: ?- parent(X,Y) Sau hiển thị câu trả lời đầu tiên, Prolog tìm kiếm cặp cha mẹ - thỏa mãn hiển thị kết chừng NSD cịn u cầu khơng cịn kết lời giải (kết thúc Yes): X = pam Y = bob ->; X = tom Y = bob ->; X = tom Y = liz ->; X = bob Y = ann ->; X = bob Y = pat ->; X = pat Y = jim Yes Tùy theo cài đặt Prolog, NSD gõ vào dấu chấm (.) Enter để chấm dứt chừng luồng trả lời HVTH: Trần Quốc Cường_CH1301082 Trang Công nghệ tri thức Ứng dụng GVHD: GS TSKH Hồng Văn Kiếm Ta tiếp tục đưa câu hỏi phức tạp khác, chẳng hạn ông (bà) Jim? Thực tế, quan hệ ông – bà (grandparent) chưa định nghĩa, cần phải phân tách câu hỏi thành hai phần sơ cấp hơn: Ai cha (mẹ) Jim? Giả sử có tên Y Ai cha (mẹ) Y? Giả sử có tên X Lúc này, viết Prolog sau: ?- parent(Y, jim), parent(X,Y) Prolog trả lời: Y = pat X = bob Yes Bây ta đặt câu hỏi cháu Tom? ?- parent(tom,X), parent(X,Y) X = bob Y = ann->; X = bob Y = pat->; HVTH: Trần Quốc Cường_CH1301082 Trang 10 Công nghệ tri thức Ứng dụng GVHD: GS TSKH Hồng Văn Kiếm No Một câu hỏi khác sau: Ann Pat có người ơng không? nghĩa ta diễn đạt thành hai giai đoạn: Tìm X cha mẹ Ann X tìm thấy có cha mẹ Pat khơng? Câu hỏi trả lời Prolog sau: ?- parent(X,ann), parent(X,pat) X = bob Trong Prolog, câu hỏi gọi đích (goal) cần phải thỏa mãn (satisfy) Mỗi câu hỏi đặt sở liệu tương ứng với nhiều đích Chẳng hạn dãy đích: parent(X, ann), parent(X, pat) tương ứng với câu hỏi phép hội (conjunction) mệnh đề: X cha mẹ Ann, X cha mẹ Pat Nếu câu trả lời Yes, có nghĩa đích thỏa mãn, hay thành công Trong trường hợp ngược lại, câu trả lời No, có nghĩa đích khơng thỏa mãn, hay thất bại Nếu có nhiều câu trả lời cho câu hỏi, Prolog đưa câu trả lời chờ yêu cầu NSD tiếp tục Xây dựng luật: Từ chương trình gia hệ đây, ta dễ dàng bổ sung thông tin khác, chẳng hạn bổ sung kiện giới tính (nam, nữ) người nêu tên quan hệ parent sau: woman(pam) man(tom) HVTH: Trần Quốc Cường_CH1301082 Trang 11 Công nghệ tri thức Ứng dụng GVHD: GS TSKH Hoàng Văn Kiếm man(bob) woman(liz) woman(pat) woman(ann) man(jim) Ta định nghĩa quan hệ đơn (unary) woman man chúng liên quan đến đối tượng Còn quan hện parent nhị phân, liên quan đến cặp đối tượng Như vậy, quan hệ đơn dùng để thiết lập thuộc tính đối tượng Mệnh đề: woman(pam) giải thích: Pam nữ Tuy nhiên, ta sử dụng quan hệ nhị phân để định nghĩa giới tính: sex(pam, female) sex(tom, female) sex(bob, male) … Bây ta đưa vào quan hệ child, đối ngược với parent sau: child(liz, tom) Từ ta định nghĩa luật sau: child(Y,X) :- parent(X, Y) Luật hiểu là: Với X Y, Y X X cha (hay mẹ) Y hay với X Y, X cha (hay mẹ) Y Y X Có khác kiện luật Một kiện, chẳng hạn: parent(tom, liz) HVTH: Trần Quốc Cường_CH1301082 Trang 12 Công nghệ tri thức Ứng dụng GVHD: GS TSKH Hồng Văn Kiếm điều ln đúng, khơng có điều kiện ràng buộc Trong đó, luật liên quan đến thuộc tính thỏa mãn số điều kiện thỏa mãn Mỗi luật bao gồm hai phần: phần bên phải (RHS: Right Hand Side) điều kiện, gọi thân (body) luật, phần bên trái (LHS: Left Hand Side) kết luận, gọi đầu luật Nếu điều kiện parent(X,Y) đúng, child(Y,X) hậu quản lơgich phép suy luận (inference) child(Y,X) :- parent(X,Y) đầu thân Câu hỏi sau giải thích cách Prolog sử dụng luật: Liz có phải Tom khơng? ?- child(liz,tom) Thực tế, chương trình khơng có kiện liên quan đến con, mà ta phải tìm cách áp dụng luật Luật dạng tổng quát với đối tượng X Y bất kỳ, mà ta lại cần đối tượng cụ thể liz tom Ta cần sử dụng phép (substitution) cách gán giá trị liz cho biến Y tom cho X Người ta nói biến X Y ràng buộc (bound): X = tom Và Y = liz Lúc này, phần điều kiện có giá trị parent(tom, liz) trở thành đích (subgoal) để Prolog thay cho đích child(liz, tom) Tuy nhiên, đích thỏa mãn có giá trị Yes kiện thiết lập chương trình Sau đây, ta tiếp tục bổ sung quan hệ Quan hệ mẹ mother định nghĩa sau (chú ý dấu phẩy phép hội hay phép lôgich): HVTH: Trần Quốc Cường_CH1301082 Trang 13 Công nghệ tri thức Ứng dụng GVHD: GS TSKH Hoàng Văn Kiếm mother(X,Y) :- parent(X,Y), woman(X) hiểu là: Với X Y, X mẹ Y X cha (hay mẹ) Y X nữ Đồ thị sau minh họa việc định nghĩa quan hệ child, mother grandparent sử dụng quan hệ khác: Trong đồ thị, người ta quy ước rằng: nút tương ứng với đối tượng (là đối quan hệ) Các cung nối nút tương ứng với quan hệ nhị phân, định hướng từ đối thứ đến đối thứ hai quan hệ Một quan hệ đơn biểu diễn tên quan hệ tương ứng với nhãn đối tượng Các quan hệ cần định nghĩa biểu diễn cung có nét đứt Mỗi đồ thị giải thích sau: quan hệ cung có nét liền thỏa mãn, quan hệ biểu diễn cung có nét đứt thỏa mãn Như vậy, quan hệ ông-bà grandparent viết sau: grandparent(X, Z) :- parent(X, Y), parent(Y, Z) Để thuận tiện cho việc đọc chương trình Prolog, ta viết luật nhiều dịng, dịng phần đầu luật, dòng phần thân luật, đích dịng phân biệt Bây quan hệ grandparent viết lại sau: grandparent(X, Z) :parent(X, Y), parent(Y, Z) HVTH: Trần Quốc Cường_CH1301082 Trang 14 Công nghệ tri thức Ứng dụng GVHD: GS TSKH Hoàng Văn Kiếm Ta tiếp tục định nghĩa chị em gái sister sau: sister(X, Y) :parent(Z, X), parent(Z, Y), woman(X) Với X Y, X chị (em) gái Y (1) X Y có cha (cùng mẹ) (2) X nữ Chú ý cách giải thích điều kiện X Y có cha mẹ: Z phải cha mẹ X, Z phải cha mẹ Y Hay nói cách khác là: Z1 cha mẹ X, Z2 cha mẹ Y, Z1 đồng với Z2 Ann nữ, Ann Pat cha mẹ nên Ann chị em gái Pat, ta có: ?- sister(ann, pat) Yes Ta hỏi chị em gái Pat sau: ?- sister(X,pat) Prolog đưa hai câu trả lời: X = ann ->; X = pat ->; Yes HVTH: Trần Quốc Cường_CH1301082 Trang 15 Công nghệ tri thức Ứng dụng GVHD: GS TSKH Hoàng Văn Kiếm Vậy Pat lại chị em gái ?! Điều sai ta chưa giải thích rõ định nghĩa chị em gái Nếu dựa vào định nghĩa câu trả lời Prolog hoàn toàn hợp lý Prolog suy luận X Y đồng với nhau, người đàn bà có cha mẹ em gái Ta cần sữa lại định nghĩa cách thêm vào điều kiện X Y khác Như thấy sau này, Prolog có nhiều cách để giải ,tuy nhiên lúc ta giả sử quan hệ: different(X,Y) Prolog nhận biết thỏa mãn X Y không Định nghĩa chị em gái sau: sister(X, Y) :- parent(Z, X), parent(Z, Y), woman(X), different(X, Y) V Nghĩa thủ thục Prolog Ví dụ: Ta thêm quan hệ vào chương trình prolog gia đình Quan hệ sử dụng quan hệ parent, có hai luật Luật thứ định nghĩa tổ tiên trực tiếp, luật thứ hai định nghĩa tổ tiên gián tiếp Ta nói X tổ tiên gián tiếp Z tồn liên hệ cha mẹ (ông bà) X Z: HVTH: Trần Quốc Cường_CH1301082 Trang 16 Công nghệ tri thức Ứng dụng GVHD: GS TSKH Hoàng Văn Kiếm Minh họa cách Prolog trả lời câu hỏi cho ví dụ chương trình gia hệ trước sau: ancestor(X, Z) :- %luật 1: định nghĩa tổ tiên trực tiếp parent(X, Z) ancestor(X, Z) :- %luật 2: tổ tiên gián tiếp ông bà (tam đại) parent(X, Y), parent(Y, Z) Đích cần tìm là: ?- ancestor(tom, pat) Ta biết parent(bob, pat) kiện Để sử dụng kiện luật (về tổ tiên trực tiếp), ta kết luận ancestor(bob, pat) Đây kéo theo: kiện mặt chương trình, suy từ luật kiện khác Ta viết gọn suy diễn sau: parent(bob, pat) => ancestor(bob,pat) HVTH: Trần Quốc Cường_CH1301082 Trang 17 Công nghệ tri thức Ứng dụng GVHD: GS TSKH Hoàng Văn Kiếm Nghĩa parent(bob, pat) kéo theo ancestor(bob, pat) luật Ta lại biết parent(tom, bob) kiện Mặt khác, từ kiện suy diễn ancestor(bob, pat), luật (về tổ tiên gián tiếp) cho phép kết luận ancestor(tom, pat) Quá trình suy diễn hai giai đoạn viết: parent(bob, pat) => ancestor(bob, pat) parent(tom, bob) ancestor(bob, pat) => ancestor(tom, pat) Ta vừa giai đoạn để xóa đích, gọi chứng minh Tuy nhiên, ta chưa làm cách Prolog nhận chứng minh Prolog nhận phép chứng minh theo thứ tự ngược lại trình bày Thay xuất phát từ kiện chứa chương trình, Prolog bắt đầu đích mới, nhận kiện sơ cấp Để xóa đích: ?- ancestor(tom, pat) Prolog tìm kiếm mệnh đề chương trình mà đích suy diễn Rõ ràng có hai mệnh đề thỏa mãn yêu cầu luật luật 2, liên quan đến quan hệ ancestor Ta nói phần đầu luật tương ứng với đích Hai mệnh đề biểu diễn hai khả mà Prolog phải khai thác xử lý Prolog bắt đầu chọn xử lý mệnh đề thứ xuất chương trình: ancestor(X, Z) :- parent(X, Z) Do đích ancestor(tom, pat), biến phải ràng buộc sau: X = tom, Z = pat Lúc này, đích ban đầu trở thành: parent(tom, pat) Hình biểu diễn giai đoạn chuyển đích thành đích sử dụng luật Thất bại xảy khơng có phần đầu mệnh đề chương trình tương ứng với đích parent(tom, pat) HVTH: Trần Quốc Cường_CH1301082 Trang 18 Công nghệ tri thức Ứng dụng GVHD: GS TSKH Hồng Văn Kiếm Đích phía thỏa mãn Prolog xóa đích phí Lúc Prolog phải tiến hành quay lui (backtracking) trở lại đích ban đầu, để tiếp tục xử lý mệnh đề khác luật thứ hai: ancestor(X, Z) :- parent(X, Y), ancestor(Y, Z) Tương tự bước xử lý thứ nhất, biến X Z ràng buộc sau: X = tom, Z = pat Đích phía ancestor(tom, pat) thay hai đích là: parent(tom, Y), ancestor(Y,pat) Nhưng lúc này, Y chưa có giá trị Lúc cần xóa hai đích Prolog tiến hành xóa theo thứ tự xuất chúng chương trình Đối với đích thứ nhất, việc xóa dễ dàng kiện chương trình Sự tương ứng kiện dẫn đến Y ràng buộc giá trị bob Các giai đoạn thực mô tả hợp giải sau đây: Sau đích thứ parent(tom ,bob) thỏa mãn, cịn lại đích thứ hai: ancestor(bob, pat) HVTH: Trần Quốc Cường_CH1301082 Trang 19 Công nghệ tri thức Ứng dụng GVHD: GS TSKH Hoàng Văn Kiếm phải thảo mãn Một lần nữa, luật sử dụng Chú ý việc áp dụng lần thứ hai luật không liên quan đến lần áp dụng thứ Prolog sử dụng biến lần luật gọi đến Luật đặt tên lại sau: ancestor(X’, Z’) :- parent(X’, Z’) Phần đầu tương ứng với đích thứ nhất, ancestor(bob, pat) tức là: X’ = bob, Z’ = pat Quá trình thực xóa đích ancestor(tom,pat) Từ đích (trong phần thân) phải thay bởi: parent(bob, pat) Đích thỏa mãn lập tức, kiện chương trình Quá trình xử lý minh họa lại đầy đủ hình HVTH: Trần Quốc Cường_CH1301082 Trang 20 Công nghệ tri thức Ứng dụng GVHD: GS TSKH Hồng Văn Kiếm Hình có dạng Mỗi nút tương ứng với đích, hay danh sách đích cần thỏa mãn Mỗi cung nối hai nút tương ứng với việc áp dụng luật chương trình Việc áp dụng luật cho phép chuyển đích nút thành đích nút khác Đích (gốc cây) xóa tìm đường từ gốc đến có nhãn thành cơng Một nút có nhãn thành cơng nút kiện chương trình Việc thực thi chương trình Prolog việc tìm kiếm đường Sau xét ví dụ ta quay trở lại khái niệm nghĩa thủ tục Prolog Nghĩa thủ tục, hay ngữ nghĩa thao tác (operational semantic), lại xác định làm cách để nhận kết quả, nghĩa làm cách để quan hệ xử lý thực hệ thống Prolog Nghĩa thủ tục tương ứng với cách Prolog trả lời câu hỏi (how) hay lập luận tri thức Trả lời câu hỏi có nghĩa tìm cách xóa danh sách Điều thực biến xuất đích ràng buộc cho chúng suy cách lơgich từ chương trình (hay từ tri thức ghi nhận) Prolog có nhiệm vụ thực đích danh sách đích từ chương trình cho có nghĩa tìm cách thỏa mãn hay xóa đích khỏi danh sách đích Chương trình (sự kiện + luật) dấu hiệu thành công/thất bại danh sách đích execute ràng buộc biến Mơ hình vào/ thủ tục thực danh sách đích Gọi thủ tục execute (thực hiện), vào sau: Cái vào: chương trình danh sách đích Cái ra: dấu hiệu thành công/thất bại ràng buộc biến Nghĩa hai sau: HVTH: Trần Quốc Cường_CH1301082 Trang 21 Công nghệ tri thức Ứng dụng GVHD: GS TSKH Hoàng Văn Kiếm (1) Dấu hiệu thành cơng/thất bại Yes đích thỏa mãn (thành công), No ngược lại (thất bại) Sự ràng buộc biến xảy chương trình thực VI Đánh giá ưu điểm khuyết điểm: Ưu điểm: Hỗ trợ tốt cho việc lập trình trí tuệ nhân tạo Đây ngơn ngữ tiến gần so với ngôn ngữ tự nhiên, với dịng code chương trình PROLOG trả lời nhiều câu hỏi dựa lập trình logic Thích hợp để giải toán liên quan đến đối tượng mối quan hệ chúng Phát triển khả tư sáng tạo người lập trình ứng dụng vào thực tế Hỗ trợ đa dạng kiểu liệu để lập trình ngơn ngữ khác (do giới hạn đề tài nên chưa thể giới thiệu kiểu liệu mà Prolog hỗ trợ) Tạo chương trình ứng dụng sống, khoa học, thống kê, chuẩn đoán, khả ước lượng cách tự động Cài đặt dễ dàng nhanh chóng Prolog cho ta chương trình gọn nhẹ nhiều so với ngơn ngữ khác Nhược điểm: Lập trình logic cịn mẽ với người nên gây khó khăn cho người quen với lập trình cổ điển Lập trình logic hỗ trợ mạnh cho mảng lập trình trí tuệ nhân tạo, khơng hỗ trợ mạnh việc xử lý kiểu liệu ngôn ngữ lập trình khác C,C++,C#,Java, … Do lập trình logic gần với ngơn ngữ tự nhiên thiên trí tuệ nhân tạo nên địi hỏi người lập trình phải có tư logic tốt HVTH: Trần Quốc Cường_CH1301082 Trang 22 Công nghệ tri thức Ứng dụng GVHD: GS TSKH Hoàng Văn Kiếm KẾT LUẬN H iện khoa học kỹ thuật phát triển, việc áp dụng trí tuệ nhân tạo vào sản phẩm giúp ích nhiều để cải tiến hiệu sản phẩm, đặc biệt việc chuẩn đốn, suy luận, tính sác xuất,… việc sử dụng prolog để hỗ trợ lập trình cho trí tuệ nhân tạo khơng thể thiếu Nếu bạn có tư tốt ngôn ngữ bỏ qua, prolog hỗ trợ mạnh mẽ cho lập trình trí tuệ nhân tạo giúp lập trình dễ dàng hiệu Đây ngơn ngữ tiến gần so với ngôn ngữ tự nhiên, với dịng code chương trình PROLOG trả lời nhiều câu hỏi dựa lập trình logic Tuy nhiên khơng hỗ trợ mạnh việc xử lý kiểu liệu ngôn ngữ lập trình khác C,C++,C#,Java,… ta phải xác định phạm vi chương trình làm để chọn ngơn ngữ lập trình phù hợp HVTH: Trần Quốc Cường_CH1301082 Trang 23 Công nghệ tri thức Ứng dụng GVHD: GS TSKH Hoàng Văn Kiếm TÀI LIỆU THAM KHẢO [1] I Bratko(1987) Programming for Artificial Intelligence Addison Wesley [2] K.L.Clavle, S.A Tarnlound(1983) Logic Programming Accademic Press [3] A.Voronkov(1993) Logic Programming and automated reasoning SpringerVerlag [4] http://www.etse.urv.es/EngInf/assig/iai/Laboratoris/Prolog/ HVTH: Trần Quốc Cường_CH1301082 Trang 24 ... đại, người ý đến Công nghệ tri thức ứng dụng, coi nhân tố quan trọng để phát tri? ??n khoa học Trong phạm vi thu hoạch nhỏ này, chúng em trình bày nguyên tắc xử lý Prolog ngun lý lập trình Lơgich Qua... tính hỗ trợ họ nốt phần lại Do Prolog ngơn ngữ lập trình nên để mơ tả chi tiết phải tốn nhiều trang giấy phạm vi tiểu luận sâu vào nguyên tắc xử lý Prolog ngun lý lập trình lơgich dựa mệnh đề Horn.. .Công nghệ tri thức Ứng dụng GVHD: GS TSKH Hoàng Văn Kiếm MỤC LỤC HVTH: Trần Quốc Cường_CH1301082 Trang Công nghệ tri thức Ứng dụng GVHD: GS TSKH Hoàng Văn Kiếm LỜI MỞ ĐẦU Khoa học công