Trong lĩnh vực Công Nghệ Thông Tin nói riêng, yêu cầu quan trọng nhất của người học đó chính là thực hành. Có thực hành thì người học mới có thể tự mình lĩnh hội và hiểu biết sâu sắc với lý thuyết. Với ngành mạng máy tính, nhu cầu thực hành được đặt lên hàng đầu. Tuy nhiên, trong điều kiện còn thiếu thốn về trang bị như hiện nay, người học đặc biệt là sinh viên ít có điều kiện thực hành. Đặc biệt là với các thiết bị đắt tiền như Router, Switch chuyên dụng
Lập trình logic ràng buộc (Logic Programming and Constraint) Ts Lê Mạnh Hải Khoa CNTT, ĐH Kỹ thuật Công nghệ TP HCM Mở đầu I Mục đích mơn học: • Giới thiệu cơng cụ hỗ trợ nghiên cứu trí tuệ nhân tạo: ngơn ngữ lập trình SWI-Prolog • Một số ứng dụng xử lý ngôn ngữ tự nhiên II Thời gian nội dung: 30 tiết lý thuyết + 15 tiết tập • • • • • • • Tổng quan Prolog(3 tiết) Kỹ thuật lập trình Prolog(9 tiết) Logic CSDL(3 tiết) Logic Hệ chuyên gia(3 tiết) Logic ngữ pháp (6 tiết) Logic lập trình ràng buộc (6 tiết) Bài tập kiểm tra kỳ (15 tiết) III Giáo trình tài liệu tham khảo •Bài giảng Lê Mạnh Hải (Lưu hành nội bộ) •James Lu, Jerud J Mead Prolog A Tutorial Introduction Computer Science Department Bucknell University •Ulf Nilsson and Jan Maluszynsky LOGIC, PROGRAMMING AND PROLOG (2ED) John Wiley & Sons Ltd 2000 •Phan Huy Khánh Lập trình logic Prolog Nhà xuất ĐH QG Hà nội 2004 IV Đánh giá: •Điểm kỳ (30%): Bài kiểm tra 60 phút PC •Thi kết thúc môn (70%): Bài kiểm tra 90 phút V Giáo viên: •Ts Lê Mạnh Hải Khoa CNTT HUTECH •email: lm.hai@hutech.edu.vn •Website: giangvien.hutech.edu.vn Bài 1: Giới thiệu ngôn ngữ Prolog • Mục tiêu: – Lược sử Prolog dòng sản phẩm – Cài đặt SWI-Prolog SWI-Prolog editor – Các khái niệm ví dụ Lược sử Prolog dịng Theo Wikipedia.org •“Prolog ngơn ngữ lập trình "lập trình theo lơ gích" Xuất từ năm 1972 , 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 •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 cịn lại Ý tưởng ứng dụng cũ • Prolog sử dụng nhiều ứng dụng trí tuệ nhân tạo (AI) 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 NLP mục tiêu thiết kế ban đầu nó).” • Các lĩnh vực khác: theorem proving,[8] expert systems,[9] games, automated answering systems, ontologies and sophisticated control systems • Cơ sở Prolog hàm mệnh đề (propositional Function) vị từ logic (logic predicate) Xem thêm Toán rời rạc • Cơ sở lý thuyết AI – AI Phát triển chương trình có khả suy luận, dựa lý thuyết toán học mệnh đề – Suy luận giúp chương trình AI biết tính đúng/sai vấn đề – Khơng quan trọng vấn đề thực • Phép tốn vị từ thực ngơn ngữ lập trình máy tính PROLOG Suy luận logic • Giáo sư mơn logic học nhận bị kính Ơng ngồi suy luận để xem đối tượng lấy kính "Ai lấy cắp? Đương nhiên kẻ cắp Và tên bị cận thị, khơng Có thể có kính, chưa có Nhưng chưa có trơng thấy kính mình? Điều chứng tỏ không bị cận thị Mà khơng bị cận thị đâu cần tới kính Từ giả thuyết trên, kết luận khơng lấy kính Chắc chắn nằm thơi Nhưng nhìn khắp rồi, khơng thấy Mà nhìn có nghĩa đeo kính Ơi may q!!!" • Một anh chàng lập trình viên người u du lịch nước ngồi Trong đồn cịn có cặp người Anh cặp người Mỹ nên họ nói với tiếng Anh Một hơm đồn ngồi ăn bữa sáng Anh chồng người Anh nói với vợ: "Can you pass the honey, Honey?" (Đưa anh mật, em yêu) Anh chồng người Mỹ nói với vợ: "Do you mind passing the sugar, Sugar?" (Chuyển cho anh chút đường, em yêu) Chàng lập trình viên tỏ không thua kém: "Pass me the bacon, Pig!" (Lấy cho anh thịt lợn muối, Lợn!) 10 Mệnh đề • • • • Bầu trời xanh Loan thích Long Tâm yêu Tâm (!???) Mệnh đề không biểu diễn biểu thức X=Y+3 X Y chưa có giá trị, nên khơng thể kết luận sai • Những tương đương sau không biểu diễn logic mệnh đề "Không phải tất bánh ăn được" "Chỉ số bánh ăn được“ Ứng dụng phép tam đoạn luận: A v B, !A => B Có tơi với anh mà tơi đồng hồ, mà tơi không lấy rồi! 11 Logic vị từ (Predicate) • Predicate vị từ mơ tả tính chất đối tượng, quan hệ chúng Phát biểu x > có phần: – Biến x –Tính chất biến x (> 3), gọi vị từ (predicate) • Ký hiệu phát biểu P(x) • ⇒ P(2), P(4) mệnh đề Mệnh đề đầu sai 12 Tổng qt • chương trình Prolog u cầu vị từ logic phần đầu mệnh đề Horn vị từ dương 13 Các dòng Prolog • • • • • • • • SWI – Prolog: Free but strong! ISO Prolog, Edinburgh Prolog Quintus SICStus GNU Prolog Ciao prolog … 14 SWI-Prolog • Tất free http://www.swi-prolog.org/ • Hãy cài lên máy tính bạn để thực hành 15 Ví dụ ?- atom(foot) true ?- atom(3) false ?- atom('foot') true ?- atom("foot") false ?- blue(sky) ERROR: toplevel: Undefined procedure: blue/1 (DWIM could not correct goal) 16 Các vị từ có sẵn • atom • member and so on… ?- member(3,[1,2,3]) true ?- member(X,[1,2,3]) X=1; X=2; X = • Làm tìm hàm build-in ? • Help - Manual 17 18 Các quy ước • • • • Hằng số: 3.2 Hằng chuỗi: an, binh, ‘An’, ‘Binh’ Hằng logic: true, false Biến: bắt đầu chữ hoa ‘_’ Biến nặc danh _ dùng không cần truy cập 19 Các mệnh đề người sử dụng: chương trình prolog ?- edit(file(vd)) Chép đoạn mã sau vào file vd likes(mary,food) likes(mary,wine) likes(john,wine) likes(john,mary) Đóng file để lưu Load file query 14 ?- [vd] % vd compiled 0.00 sec, clauses true 15 ?- likes(mary,food) true 16 ?- likes(mary,john) false 20