Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 75 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
75
Dung lượng
27,71 MB
Nội dung
T f" ' ĐẠI HỌC Qưóc Gỉ A HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ Đ Ỗ T H A N H TH Ủ Y NGHIÊN CỨU MỘT SỐ KHÍA CẠNH LÝ THUYẾT CỦA LẬP TRÌNH LỎGIC VÀ LẬP TRÌNH LOGIC MODAL Chuyên ngành: Mã số: Công nghệ thông tin 1.0U LU ẬN VẦN TH ẠC s ĩ • ■ N gười hướng dẫn khoa học: PGS.TS Hồ Thuần o : h ọ c QUOC G i- ' : 'RUNG ĨẢ M t h o n g t in thì, r V- lo I lộĩ I ir r; í ) h > Hà Nội - 0 ( M ụ■ c lục ■ Lời cảm ơn Mục lục Mở đầu Chương Tổng quan lập trình logic 1.1 Giới thiệu lập trình logic 1.2 Lập trình logic - nội dung đượcnghiên cứu 1.3 Lập trình logic trone tương la i 10 Chương Các nguyên lý s 11 C h n g t r i n h l o g i c 11 2.1.1 Câu logic 11 2.1.2 Câu chương trình 12 2.1.3 Chương trình logic 13 2.2 Hệ q logic mơ hình 13 H ệ q u ả l o g i c 2.2.2 Mơ hình Herbranđ nhỏ 16 2.2.3 Xây dựng mơ hình Herbrand nhò 19 2.3 Điểm bất động 20 2.4 Thuật giải SL D 23 2.4.1 Nội dung thuật giải 23 2.4.2 Tính dúng đắn thuật giải 27 2.4.3 Tính đầy đủ cùa thuật giải 27 2.4.4 Cây SLD (SLD-tree) 28 2.5 Lập trình logic lĩnh vực liên quan 30 2.5.1 Hệ chuyên gia (Expert System - ES) 30 2.5.2 Cơ sờ dừ liệu (CSDL) suy diễn (deductive database) 33 Chương Ngôn ngừ Prolog 36 3.1 Các khái niệm bàn 36 3.1.1 Hạng thức (Term) 36 3.1.2 Câu Hom 38 3.1.3 Phép toán 39 3.1.4 Danh sách 40 3.1.5 Đệ quy 42 3.1.6 Chưtmg trình Prolog 42 3.2 Chứng minh cùa Prolog 44 3.2.1 Phép hợp 45 3.2.2 Cây tìm kiếm 45 Chương Lập trinh logic modal (Modal logic programming) 49 4.1 Tổng quan lập trình logic modal 49 4.2 Khung làm việc lập trình logic modal 50 4.2.1 Logic modal cấp 50 4.2.2 Ngôn ngừ MProlog 51 4.2.3 Mơ hình khung làm việc (Model & frame) .53 4.2.4 Điểm bất động 59 4.2.5 Thuật giải SL D 60 4.3 Ví dụ áp dụng 61 4.4 Kết luận lập trình logic modal 64 Kết luận 65 Phụ lục 66 Tài liệu tham khảo 75 M đầu Lịch sử ỉập trình logic logic ký hiệu (symbolic logic) Sau đó, logic vị từ cấp dời sờ loeic ký hiệu nhánh nghiên cứu logic ký hiệu Logic vị từ cấp trở thành tảng lập trình logic có bước phát triển mạnh kỷ 20 Theo Salah al-Fadhli [13] cỏ thể chia lịch sử cùa lập trình logic thành ba giai đoạn: Giai đoạn thứ việc tìm ngơn ngừ ký hiệu cùa logic Người có ảnh hưởng lớn giai đoạn Aristotle, ông người đưa phương pháp suy diễn thành cơng “tam đoạn luận” Sau này, học trị Aristotle phát triển phương pháp suy diễn thành luật suy diễn Giai đoạn thứ hai giai đoạn phát triển thực logic ký hiệu giai đoạn thứ ba giai đoạn đưa logic ký hiệu vào lập trình logic Điểm bắt đầu cùa lập trình logic thuật giải tuyến tính Robinson (trong năm 1960) nghiên cứu cùa tác già Kowalski, Colmerauer (trong năm 1970) [3) Thuật giải cùa Robinson dùng để suy diễn chứng minh định lý tự động Trong đó, Kowalski cơng thức hóa thể dạng thủ tục (câu lệnh chương trinh) câu logic Hom cho câu “A B ị B2 Bn” đọc là: '‘để thực thi A, cản thực thi B ị thực thi B2 thực thỉ Bn” Colmerauer đặc tả chứng minh định lý tự động sử dụng câu chương trình Đó sờ cho khẳng định logic sử dụng ngơn ngữ lập trình Logic cung cấp ngữ nghĩa hình thức đơn giản ngôn ngữ giải vấn đề đa cho lĩnh vực thuộc ngành khoa học máy tính đồng thời sở cho hệ sở dừ liệu suy diễn, hệ chuvên gia [3] Như vậy, suy luận logic phương pháp nhận thức biết đến từ sớm (thời Aristotle kỷ thứ trước Công Nguyên) năm 70 kỷ 20 lập trình logic (logic programming) hình thành sở thuật giải áp dụng chứng minh định lý tự động Ban đầu, lập trình logic xem phận nghiên cứu trí tuệ nhân tạo Và sau với nhiều nồ lực nehiên cứu (trên lý thuyết thực hành), phạm vi ứng dụng cùa lập trình loaic rộng lớn, hiệu Lập trình logic tách nghiên cứu độc lập ngành khoa học máy tính Lập trình logic ngày ứns dụng nhiêu lĩnh vực ngành khoa học máy tính như: trí tuệ nhân tạo xử lý ngôn ngữ tự nhiên, hệ thong đa tác tử (multiagent), hệ thống tác tử thông minh, hệ chuyên gia, máy học, hệ hỗ trợ định, Với khả phạm vi ứng dụng hầu hết lĩnh vực thuộc nghành khoa học máy tính, lập trình logic có nhữne bước phát triển vững Bởi vậy, nahiên cứu lập trình logic số hướng phát triển điều mà người viết quan tâm Nội dung trình bày luận vãn bao gồm: tổng quan lập trình logic; hệ thống nguyên lý sờ, quan trọng lập trình logic; giới thiệu Prolog - ngơn ngừ dùng lập trình logic thơng qua chương trình Prolog minh họa Phần cuối tài liệu trình bày hướng tiếp cận đại cùa lập trình logic lập trình logic modal Chi tiết nội dung trình bày sau: Chương : Giới thiệu lập trình logic, khái quát hướng nghiên cứu nước, hướng mở rộng lập trình logic Chưong 2: Hệ thống nguyên iý sở lập trinh logic Đó ỉà lý thuyết mơ hình; lý thuyết điểm bất động; thuật giải SLD (Linear resolution with Selection function for Definite clause) Chương 3: Trình bày ngơn ngữ Prolog mối quan hệ với lập trinh logic Chương 4: Giới thiệu lập trinh logic modal (dạng thức) (modal logic programming) - mở rộng lập trình logic cổ điển với việc thêm vào tốn tử modal (modal operator) Phần kết luận trình bày nội dung mà đề tài làm đưa hướng phát triển tương lai đề tài Phần phụ lục trình bày tốn tử số chương trinh Prolog minh họa đà kiểm thừ C hư ơng Tổng quan lập trình logic 1.1 Giới thiệu lập trình logic Lập trình logic nghiên cứu từ năm đầu cùa thập kỷ 70 kỷ 20 xem có nguồn gốc tự nhiên từ việc nghiên cứu chứng minh định lý tự động trí tuệ nhân tạo [3] Năm 1972, Kowalski Colmerauer đưa ý tường tảng cho logic sử dụng ngơn ngữ lập trình Theo Kowalski thuật tốn lập trình gồm hai phần riêng biệt: phần logic phần điều khiển Phần logic câu lệnh (phát biểu) chi vấn đề cần giải quyết; phần điều khiển câu lệnh chi phải giải quvết vấn đề Trong lập trình truyền thống, người lập trình phải định nghĩa thao tác cần thực để giải toán Nghĩa ỉà, cho máy tính biết cách thức giải vấn đề cách tiếp cận thủ tục (procedural) Các giả thiết thường ẩn (không viết chương trình) Đối với lập trình logic, người la xây dựng chương trình bàng cách mơ tả lĩnh vực ứng dụng Nghĩa đưa khẳng định đúng, cách tiếp cận khai bảo (declarative) Các già thiết việc chọn lựa thao tác ẩn Nếu theo quan điểm Kowalski người lập trình cần phải khai báo phần logic chương trình cịn phần điều khiển hệ thống tự cung cấp - thủ tục suy diễn độc lập với ứng dụng Bằng cách tiếp cận khai báo, lập trình logic đă giải tổt nhiều vấn đề có chất suy luận logic hệ chuyên gia, hệ thống suy luận dựa mẫu có, hệ hỗ trợ định, trí tuệ nhân tạo hỗ trợ hiệu quà dạng module cho tốn khác Trong lập trình logic, vấn đề đặt là: biểu diễn tri thức (bằng logic, khung tri thức - frame, mạng ngữ nghĩa - semantic network); xây dựng sở tri thức:; xây dựng thủ tục suy diễn (thủ tục suy diễn phải độc lập với sở tri thức) Một hệ lập trình logic gồm thành phần: + Bộ phận giao tiếp với ngirời dùng: thu nhận câu hòi người dùng chuyển câu hỏi cho thù tục suy diễn + Thủ tục suy diễn: suy diễn kết luận cho câu hòi dựa kiện luật định nghĩa sở tri thức + Cơ sở tri thức: bao gồm kiện luật mô tả micn ứng dụng Trune tâm hệ lập trình logic thù tục suy diễn độc lập ứng dụng Nó phải định nghĩa cài đặt dùng chuna cho chương trình logic Trong hệ lập trình logic nav, thủ tục suy diễn chủ yếu dựa thuật giải SLD Thủ tục suy diễn dùng chươne trình logic độc lập ứng dụng Do đó, việc triển khai chương trinh việc biểu diễn tri thức triển khai nột sở tri thức thích hợp với miền ứng dụng Cách biểu diễn tri thức thông thường sử dụng câu Horn Việc mô tà lĩnh vực ứng dụng mô tả đối tượng mối quan hệ chúng giả định tồn miền toán Bài tốn quan trọne, ỉập trình logic là: cho chương trình logic p, câu G vấn đề đặt xét xem G có suy diễn từ p hay khơng? Để giải tốn đó, lý thuyết có hai cách tiếp cận mơ hình Herbrand nhị điêm bất động nhị ánh xạ T từ tập thể Herbrand vào tập thể Herbrand Cà hai cách có chung mục đích tìm mơ hình Herbrand nhỏ p G suy diễn từ p G phải thuộc mơ hình Herbrand nhỏ p Tuy nhiên, phương pháp để đạt mục đích chung khác Với cách tiếp cận xây dựng mơ hình Herbrand nhò vấn đề tập trung kiện nền, luật p phép biến Trong cách tiếp cận điểm bất động lại tập trung vào mơ hình điểm bất động nhỏ cùa ánh xạ T mơ hình Herbrend nhị p Trong thực hành suy diễn để tìm lời giải cho tốn trên, thủ tục suy diễn lùi xây dựng sở thuật giải SLD Thuật giải SLD tìm câu trả lời cho toán dựa câu đích biến Các câu trả lời phải thuộc mơ hình Herbrand nhỏ p 1.2 Lập trình logic - c c nội dung đ ợc nghiên cứu Trên giới, lập trình logic thu hút nhiều nghiên cứu nhà khoa học tính hiệu phạm vi áp dụng rộng lớn Lập trình logic cổ điển (classical logic programming) mang lại nhiều thành tựu quan trọng khảng định vị trí độc lập cùa lập trình logic ngành khoa học máy tính Trong lập trình logic cổ điển, chươns trình logic định nghĩa tập hữu hạn câu Horn (câu có dạng: A Trong đó, A, Bj, j = 1, 2, n công thức nguyên tố A ià rỗng) Dể chứng minh câu G có suy diễn từ chương trình p hay khơng lý thuyết cần phải chứng minh G có hệ logic p hay không, trone thực hành điều thực phép hợp phép Đó nguyên tấc lập trình logic cổ điển Dựa nguyên tắc này, việc xây dựng mô tơ suy diễn bớt phức tạp hiệu (thuật giải SLD đắn đầy đù) Bời lẽ, câu chương trình có phần đầu khơng chứa ngun tố câu Hom vấn đề trờ nên phức tạp Lập trình logic cổ điển có bước phát triển khả ứng dụng đáng kể, nhiên, cịn chưa hồn thiện: phương pháp suy diễn chưa thích đáng, chưa rút kết luận từ dừ liệu khơng đầy đủ Chính thành cơng giới hạn lập trình logic cổ điển thúc đẩy việc phát triển hướng mở rộng nhàm gia tăng khả phạm vi ứng dụng cùa lập trình logic Logic vị từ ngun thủy khơng đủ khả để biểu diễn kháiniệm thời gian, khả (độ tin cậy, tri thúc, )• Do đó, lập trình logic modal (modal logic programming) mở rộng cùa lập trình logic cổ điển với việc thêm vào phép toán modal (modal operator) đề biểu diễn tri thức phụ thuộc thời gian, không gian, cách tổng quát phụ thuộc ngữ cảnh Lập trình logic temporal dựa yếu tổ thời gian, xem trường hợp riêng cùa lập trình logic modal Lập trình logic modal sử dụng hiệu việc biểu diễn tri thức, suy diễn, lập kế hoạch theo thời gian, mô phỏng, xác nhận dựa thời gian vàquantrọng ỉà mô tả hệ thống tác tử (agent) Lập trình logic dạng tuyến (Disjunctive Logic Programming - DLP) mở rộng cùa lập trình logic cổ điển với yếu tố bất định phần đầu (head) câu chương trình Câu chương trình DLP có dạng: H| V H2 V Hm Ví dụ 2: chương trình Mprolog p hệ logic KD gồm câu sau: AV|E g(i) tập phần tử Vị Dị „ X biến nguyên tố (5) (6) A,E -> AOiE X biến nguyên tố (7) ủD|a -» A V ,a g(i) Ç g(j) (8) A 0,a - > A ,a n ế u g (i) ZD g (j) (9 ) AdjCt - > ADiO,a (1 ) AOjE -» A VjO jE g(i) tập m ột phần tử (11) AjO,E -> A0,E g(i) g(j) X biến ngyên tố (12) 74 Tài liệu th a m kh ảo ■ Tiếng Việt 111 Hồ Thuần B ài g iả n g Lập trình lo g ic P rolog Đ ại học K H T N Huế 1999 Tiếng Anh |2j John Durkin E x p e rt system P ren tice Hall International Inc, 1994 |3| J.w Lloyd F o u n d a tio n s o f L o g ic P rogram m ing, 2nd E dition Springer-Verlag 1987 |4j L A N guyen A fix p o in t se m antics a nd an S LD -resolution ca lcu lu s fo r m o d a l lo g ic program s Fundam enta Inform aticae, 55(1):63-100, 2003 |5| L A Nguyen M P ro log : A n extension o f P ro lo g fo r m o d a l lo g ic p ro g m m in g In B Demoen a n d V L ifs c h itz , editors P ro cee d in g s of IC L P 2004, L N C S 3132, Springer 2004 [6] L.A Nguyen Reasoning about Epistemic States o f Agent by Modal Logic Proaramming 2004 |7| L A Nguyen S ource file s, calculi, an d exam ples o f MProlog A v a ila b le on Internet at http://www.mim uw.edu.pl/~nquven/m Proloq 2004 Ị8Ị L A Nguyen The modal logic programming system MProlog In J.J Alferes and J.A Leite, editors P ro ce e d in g s of J E L IA 2004, L N C S 3229, springer 2004 |9| Patrick Blackburn M aarten d e Rijke, Y d e Venem a M odal logic P B , M dR, Y V 1998 110] Ulf Nilsson and Jan Maluszynski Logic, Programming and Prolog (2Ed) http://www.ida liu.se/~ulfni/lpp 2000 n i l http://www.trinc-Proloq.com/doc/ ] 121 http://www.csupomona.edu/~irfisher/www/proloq tutorial 113] http://www.bu edu/w cp/Papers/Loqi/ 75 ... SLD lập trình logic cổ điển Bài tốn đặt lập trình logic modal tương tự tốn lập trình logic cổ điển Tuy nhiên, có khác biệt phải giải hệ logic modal cụ thể 4.2 Khung làm việc lập trình logic modal. .. đầu, lập trình logic xem phận nghiên cứu trí tuệ nhân tạo Và sau với nhiều nồ lực nehiên cứu (trên lý thuyết thực hành), phạm vi ứng dụng cùa lập trình loaic rộng lớn, hiệu Lập trình logic tách nghiên. .. dùng lập trình logic thơng qua chương trình Prolog minh họa Phần cuối tài liệu trình bày hướng tiếp cận đại cùa lập trình logic lập trình logic modal Chi tiết nội dung trình bày sau: Chương : Giới