Tìm hiểu ngôn ngữ Prolog và giải bài toán người nông dân qua sông bằng thuật toán BFS

16 1.9K 75
Tìm hiểu ngôn ngữ Prolog và giải bài toán người nông dân qua                         sông bằng thuật toán BFS

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

bài toán người nông dân qua sông bằng thuật toán BFS. Tìm hiểu ngôn ngữ Prolog và giải bài toán người nông dân qua sông bằng thuật toán BFS. ....................................................................................................................................................................................................................................................................................................................

BÁO CÁO TRÍ TUỆ NHÂN TẠO BỘ GIÁO DỤC VÀ ĐÀO TẠO Trường Đại học Sư phạm Hà Nội Khoa Công Nghệ Thông Tin  Môn: Trí tuệ nhân tạo Đề tài: Tìm hiểu ngôn ngữ Prolog giải toán người nông dân qua sông thuật toán BFS Nhóm thực hiện: Nhóm Lớp: K38 - Công nghệ thông tin Hà Nội, ngày 19 – - 2014 Nhóm 6: Vũ Thị Ánh Linh – Nguyễn Văn Khánh Mục Lục BÁO CÁO TRÍ TUỆ NHÂN TẠO I. Giới thiệu ngôn ngữ lập trình Prolog 1. Prolog ngôn ngữ lập trình logic Prolog từ viết tắt Programming in Logic. Ngôn ngữ Prolog giáo sư người pháp Alain Colmerauer nhóm nghiên cứu ông đề xuất lần trường Đại học Marseille đầu năm 1970. Đến năm 1980, Prolog nhanh chóng áp dụng rộng rãi Châu Âu, người Nhật chọn làm ngôn ngữ phát triển dòng máy tính hệ 5. Prolog cài đặt máy tính Apple II, IBM – PC, Macintosh. Prolog gọi ngôn ngữ lập trình ký hiệu (Symbolic Programming) tương tự ngôn ngữ lập trình hàm (Functional Programming), hay lập trình phi số (Non – Numerical Programming). Prolog thích hợp để giải cá toán liên quan đến đối tượng (Object) mối quan hệ (Relation) chúng. Ngôn ngữ Prolog ngôn ngữ lập trình sở toán học logic, thiết kế đề giải vấn đề liên quan đến trí tuệ nhân tạo. Nguyên lý lập trình logic dựa mệnh đề Horn. Một mệnh đề Horn biểu diễn kiện hay Nhóm 6: Vũ Thị Ánh Linh – Nguyễn Văn Khánh BÁO CÁO TRÍxảy TUỆraNHÂN việc không đúng, hoặcTẠO không xảy (có không có, …). Ví dụ: Mệnh đề Horn: 1. 2. 3. 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. Trong mệnh đề Horn mệnh đề 1, gọi luật (rule), mệnh đề lại gọi kiện (fact). Một chương trình logic xem sở liệu gồm mệnh đề Horn, dạng luật, dạng kiện. Người sử dụng gọi chạy chương trình logic cách đặt câu hỏi (query/ question) truy vấn cở sở liệu này. 2. Cú pháp Prolog Các thuật ngữ Một chương trình Prolog sở liệu gồm mệnh đề 2.1. (Clause). Mỗi mệnh đề xây dựng từ vị từ. a. b. Vị từ - định nghĩa vấn đề Prolog - Vị từ kiến thức mà người lập trình cần cung cấp cho chương - trình. Vị từ xem hàm giá trị trả giá trị - chân lý (true) sai (fail). Một vị từ có đối nguyên logic (logic atom). Mệnh đề - cách giải thích vấn đề Prolog - Các khái niệm mô tả qua vị từ giải thích - mệnh đề. Mỗi nguyên tử 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” trình Prolog. Hạng Nhóm 6: Vũ Thị Ánh Linh – Nguyễn Văn Khánh BÁO CÁOhằng TRÍ TUỆ NHÂN TẠO hạng sơ cấp (Elementary tern) 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à/ chữ số bắt đầu chữ thường. Các đối biến, hạng sơ cấp, hạng phức hợp. Trong Prolog, hàm tử đặc biệt “.” (dấu chấm) biểu diễn cấu trúc danh sách (list). Kiểu liệu hàm tử tương tự kiểu ghi (record) danh sách (list) tương tự kiểu mảng (array) ngôn ngữ lập trình mệnh lệnh (C, Pascal, …). Ví dụ: f(5, a, b). student (Robert, 1975, info, 2, address(6, ‘mal juin’, ‘caen’)). [a, b, c] - Mệnh đề kiện, luật (hay quy tắc), hay câu hỏi. • • • II. 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) Cú pháp ngữ nghĩa chương trình Prolog Cú pháp gồm đoạn sau: domains, predicates, clause, goal Nhóm 6: Vũ Thị Ánh Linh – Nguyễn Văn Khánh 1. - TUỆnghĩa NHÂNnhững TẠO tập hợp Domains : nơi để ngườiBÁO lập CÁO trìnhTRÍ định ( đặt tên lại) Nơi tạo tập hợp có kiểu liệu với tập hợp sẵn có Ví dụ: Domains Tên= symbol Tuổi= integer Nghề nghiệp = symbol - Tạo tập hợp tích tập hợp Ví dụ: Domains Ấn phẩm = Tạp chí (symbol, symbol) Tiểu sử = lý lịch(symbol, integer,symbl,symbol) - Tạo tập hợp hội tập hợp Ví dụ: Domains Tên = symbol Tài liệu = Book(tên,tên) or Magazine(tên,tên) Dấu = âm; dương; kýsố(integer) 2. - Predicates: phàn khai báo quan hệ domains Tạo quan hệ tập hợp Ví dụ: Domains Tên= symbol Tuổi= integer Nhóm 6: Vũ Thị Ánh Linh – Nguyễn Văn Khánh CÁO TRÍ TUỆ Nghề nghiệp = BÁO symbol NHÂN TẠO Predicates Lý lịch(tên, tuổi, nghề nghiệp) - Tạo quan hệ trống Ví dụ: Predicates Repeat() Không màu Repeat không màu tên hai quan hệ . Tập hợp mà quan hệ tập trống. Quan hệ Repeat() viết Repeat. Quan hệ không màu viết không màu () 3. - Clauses: phần định nghĩa quan hệ khai báo phần predicates Biến Turbo Prolog qui định biến có ký tự bắt đầu ký tự in (uppercase) ký tự gạch (underscore). Hằng có ký tự bắt đầu ký tự thường (lowercase). Ví dụ: Minh, X, Người, _minh,_x,…là biến. Minh,x,người,…là - Fact Fact quan hệ tập hợp xác định (có sẵn xác định Domains) Đây cách xác định tập hợp liệt kê Ví dụ: Predicates Chơi(symbol,symbol) Nhóm 6: Vũ Thị Ánh Linh – Nguyễn Văn Khánh BÁO CÁO TRÍ TUỆ Biết(symbol, symbol) NHÂN TẠO Clauses Chơi(sơn,piano) Chơi(tân,keyboard) Biết (kính, điêu khắc) - Rule Rule quan hệ định nghĩ từ nhiều quan hệ khác. Rule có dạng câu điều kiện, nghĩa gồm nguyên nhân hậu (nguyên nhân -> hậu quả). Tuy nhiên Rule câu điều kiện trình bày theo dạng thức : Hậu  nguyên nhân. Các dạng sau tương đương: Hậu =0) { Printf(“\n\t0. Nguoi\t1.Ho\t2.Trau\3.bo co\n”); Printf(“hay chon so tuong ung voi luot di: “); Scant(“%d”, &i); If(i==0) { Swap_nguoi(A,B); If(check_bosong(A)==1) { Printf(“\nGame over!\n”); Exit(0); }} Else if((A[0]==1&&A[i]>0)||(A[0]==-1&&A[i][...]... thuyền và thuyền ngoài người nông dân chỉ chở thêm được một trong ba vật trên Không được chỉ để có con trâu và con hổ cùng ở bên bờ sông vì hổ có thể ăn thịt trâu, tương tự đối với con trâu và bó cỏ Làm thế nào để tất cả cùng qua sông? Giải quyết bài toán Ý tường thuật toán: Lần 1: chở trâu qua trước (còn hổ và cỏ ở lại vì hổ không ăn cỏ) Lần 2: chở hổ qua nhưng khi chở hổ qua thì người nông dân phải... chở cỏ qua để trâu lại Lần 4: quay lại chở trâu qua 12 Nhóm 6: Vũ Thị Ánh Linh – Nguyễn Văn Khánh Không gian trạng thái: Trạng thái 1 2 3 4 5 6 7 8 9 10 BÁO CÁO TRÍ TUỆ NHÂN TẠO Bờ sông bên này Người, hổ, trâu, bó cỏ Người, hổ, trâu Người, hổ, bó cỏ Người, trâu, bó cỏ Người, trâu Hổ, bó cỏ Hổ Trâu Bó cỏ Bờ sông bên kia Bó cỏ Trâu Hổ Hổ, bó cỏ Người, trâu Người, trâu, bó cỏ Người, hổ, bó cỏ Người, hổ,... hổ, trâu Người, hổ, trâu, bó cỏ Trạng thái 1 là trạng thái bắt đầu và trạng thái 10 là trạng thái kết thúc mà chúng ta cần đạt được Ngưởi nông dân mỗi lần chèo thuyền sẽ dẫn tới sự thay đổi một trạng thái Bước thứ nhất, người mang một thứ qua sông, bờ sông bên này chỉ còn lại hai thứ (trạng thái 5 + 6), nhưng chỉ có thể là trạng thái 6, tức là người chở trâu qua sông Bước thứ hai người nông dân sẽ chèo... từ đó thất bại và ngược lại 11 Nhóm 6: Vũ Thị Ánh Linh – Nguyễn Văn Khánh BÁO - với F là 1 vị từ PPĐ kí hiệu là not(F) CÁO TRÍ TUỆ NHÂN TẠO - chứng minh not(F) = cách CM F thất bại - not(F) nghĩa là F ko chứng minh được chứ không phải F sai / V Thuật toán Bài toán: Một người nông dân có một con trâu, một con hổ và một bó ở bên bờ sông Ông ta muốn tất cả cùng sang bờ bên kia Người nông dân chỉ có một... vậy sẽ giống như viễ hủy bỏ bước 3 Do vậy, người ta sẽ chở trâu quay lại và trở lại trong trạng thái thứ 2 Bước thứ 5, người chở hổ qua sông và để dê ở lại như vậy sẽ xuất hiện trạng thái thứ 8 Bước thứ 6, lần này người chèo thuyền không trở lại bởi bờ bên này hổ sẽ không ăn cỏ (tức trạng thái thứ 5) Bước 7, người chở trâu qua sông Công việc hoàn tất Thuật toán: #include int check_bosong(int... dân sẽ chèo thuyền quay lại, tức là thể hiện trạng thái thứ 3 Bước thứ ba, người lại chở một vật qua sông, ở bờ sông bên kia sẽ xuất hiện hai khả năng (tức là trạng thái 7 và 9), cũng tức là có hai phương án Ta xét phương án một, người chở bó cỏ qua sông (tức trạng thái 7) Bước thứ 4, người không thể bơi thuyền không lại được, vì trâu sẽ ăn hết cỏ, cho nên phải chở một thứ nào đó quay lại, đương nhiên...BÁO thêm nhát cắt vào mệnh - nghĩa khai báo không đúng nữa khi taCÁO TRÍ TUỆ NHÂN TẠO đề 1 p:-a,!,b p:-c - biểu thức logic tương ứng là p(a^b)v(-a^c) Nếu ta đảo thứ tự 2 mệnh đề p:-c p:-a,!,b Thì biểu thức logic ko thay đổi pc v (a^b) - Vị từ fail - fail là vị từ của Prolog là luôn luôn thất bại VD thich(lan,X):-toan(X),!,fail - nhát cắt và fail kết hợp cho định nghĩa: + phép... TUỆ NHÂN TẠO swap_vat(I, A, B); if(check_bosong(A)==1) { printf(“\n Game over!\n”); exit(0); } If(A[0]==-1&&A[1]==-2&&A[2]==-3&&A[3]==-4) { Printf(“\n qua song!\n”); Printf(“\n Chuc mung!\n”); Exit(0); }} Void main() { Printf(“\t\t Nguoi Nong Dan Qua Song \n”); Int i, A[]={1,2,3,4}, B[]={-1,-2,-3,-4}; Int t=0; While(t>=0) { Printf(“\n\t0 Nguoi\t1.Ho\t2.Trau\3.bo co\n”); Printf(“hay chon so tuong . Khánh BÁO CÁO TRÍ TUỆ NHÂN TẠO Dichuyen(I,A,B); Else { Printf(“chac la ban quen gi roi!”); Printf(“ lai nhe! ”)’ }}} 16 Nhóm 6: Vũ Thị Ánh Linh – Nguyễn Văn Khánh BÁO CÁO TRÍ TUỆ NHÂN TẠO . đến trí tuệ nhân tạo. Nguyên lý lập trình logic dựa trên các mệnh đề Horn. Một mệnh đề Horn biểu diễn một sự kiện hay 2 Nhóm 6: Vũ Thị Ánh Linh – Nguyễn Văn Khánh BÁO CÁO TRÍ TUỆ NHÂN TẠO một. khai báo tương ứng là p đúng khi cả a và b đều đúng hoặc c đúng. - biểu thức logic là p<=>(a^b)vc 10 Nhóm 6: Vũ Thị Ánh Linh – Nguyễn Văn Khánh BÁO CÁO TRÍ TUỆ NHÂN TẠO - nghĩa khai báo

Ngày đăng: 09/09/2015, 16:32

Mục lục

  • I. Giới thiệu ngôn ngữ lập trình Prolog

    • 1. Prolog là ngôn ngữ lập trình logic

    • 2. Cú pháp Prolog

      • 2.1. Các thuật ngữ

        • a. Vị từ - định nghĩa vấn đề trong Prolog

        • b. Mệnh đề - cách giải thích vấn đề trong Prolog

        • II. Cú pháp và ngữ nghĩa của các chương trình Prolog

          • 4. Goal

          • III. Cấu trúc dữ liệu, danh sách, các phép toán số học

            • 1. Cách biểu diễn một danh sách

            • 2. Các thao tác trên danh sách

            • 3. Các phép toán số học

            • IV. Sự đệ qui, cơ chế quay lui và kĩ thuật nhát cắt

              • 1. Đệ qui

              • 2. Quay lui và cơ chế tìm lời giải

              • 3. Kĩ thuật nhát cắt

              • V. Thuật toán

Tài liệu cùng người dùng

Tài liệu liên quan