1. Trang chủ
  2. » Giáo án - Bài giảng

TỔNG QUAN VỀ NGÔN NGỮ LẬP TRÌNH PROLOG

20 10 0

Đ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

Thông tin cơ bản

Định dạng
Số trang 20
Dung lượng 409,9 KB

Nội dung

TRƯỜNG ĐẠI HỌC SÀI GỊN KHOA CƠNG NGHỆ THƠNG TIN  BÁO CÁO CUỐI KÌ HỌC PHẦN: SEMINAR CHUYÊN ĐỀ Mã học phần : 841073 Giảng viên hướng dẫn: Nguyễn Hải Đăng TP Hồ Chí Minh, ngày 28 tháng 05 năm 2022 TRƯỜNG ĐẠI HỌC SÀI GỊN KHOA CƠNG NGHỆ THƠNG TIN  ĐỀ TÀI: TÌM HIỂU VỀ NGƠN NGỮ LẬP TRÌNH PROLOG Sinh viên: 3118410216 : Lê Tùng Lâm TP Hồ Chí Minh, ngày 28 tháng 05 năm 2022 MỤC LỤC Chương : TỔNG QUAN VỀ NGÔN NGỮ LẬP TRÌNH PROLOG Chương 2: PHÂN TÍCH LÝ LUẬN Chương 3: TỔNG KẾT 15 LỜI NÓI ĐẦU Ngày với phát triển vượt bật công nghệ thông tin, ta thấy tính ứng dụng của công nghệ ngày quan trọng Ngôn ngữ lập trình chìa khóa vắng để làm chủ cơng nghệ Do đó, việc học, tìm hiểu sử dụng ngơn ngữ lập trình khơng cịn điều q xa lạ Có thể dễ dàng tìm thấy nhiều loại ngơn ngữ lập trình, hay công cụ hỗ trợ sử dung ngôn ngữ thiết kế khác Từ trước đến nay, điều biết đến lập trình thủ tục lập trình hướng đối tượng- hai mơ hình lập trình mà người học nhập môn học qua Bây đổi gió với mơ hình lập trình khác mà khơng phân thú vị - lập trình logic – với ngơn ngữ tương ứng hỗ trợ cho Prolog Thực báo cáo môn hoc hội để em nghiên cứu áp dụng, tổng hợp lại kiến thức tìm hiểu thơng qua phương tiện thơng tin đại chúng, đồng thời đúc kết học thực tế phục vụ cho việc học tập làm việc sau Mặc dù cố gắng thực đề tài lực thời gian cịn hạn chế nên chương trình khó tránh khỏi thiếu xót, mong thầy thơng cảm Những góp ý thầy học, hành trang để chúng em vững bước vào sống sau Chương : TỔNG QUAN VỀ NGÔN NGỮ LẬP TRÌNH PROLOG Prolog ngơn ngữ lập trình logic khai báo Nó tạo vào khoảng năm 1972 hai nhà khoa học máy tính tiếng Alain Colmerauer (24-1-1941, Carcassonne – France) Robert Kowalski (15-5-1941, Bridgeport – Connecticut – Hoa Kỳ) nhằm mục đích thay cho ngơn ngữ lập trình Lisp Mỹ thống trị 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ệ Prolog cài đặt máy vi tính Apple II, IBM-PC, Macintosh, Windows, Unix/Linux Prolog gọi ngơn ngữ lập trình ký hiệu tương tự ngơn ngữ lập trình hàm hay lập trình phi số Prolog thích hợp để giải tốn liên quan đến đối tượng mối quan hệ chúng Hệ thống Prolog số ngôn ngữ lập trình logic cịn phổ biến tới ngày Với vài dạng thực thi tự thương mại, sử dụng việc chứng minh định lý, hệ chuyên gia Với chế tuyệt vời khả quản lý nhớ tốt thúc đẩy phổ biến ứng dụng trí tuệ nhân tạo ngơn ngữ học máy tính đặc biệt ngành xử ký ngơn ngữ tự nhiên Prolog có nguồn gốc từ logic bậc nhất, dạng logic hình thức khơng giống ngơn ngữ lập trình khác Prolog có tính mơ tả: chương trình Prolog trình bày theo quan hệ, biểu diễn kiện luật Một chương trình Prolog sử dụng cách đặt truy vấn quan hệ lí chọn đề tài: Prolog diễn giải tất kiện quy tắc cho dạng tập hợp tiên đề câu hỏi người dùng định lý đoán Sau đó, cố gắng giải định lý để chứng tỏ tuân theo cách logic từ tiên đề Prolog tuân theo chuỗi quy tắc theo thứ tự ngược lại Vì vậy, với định lý, kiểm tra xem phần đầu phép tính thay quy tắc khác mà trở thành mục tiêu hay khơng Nếu định lý cho chuỗi cuối kết thúc mục tiêu thay kiện thiết lập Bất kỳ nỗ lực không thành công để thực thay gây lỗi quay lại nỗ lực điều khoản thay Prolog-phiên trực tuyến có từ năm 2001 hoàn hảo phiên dạng sách Đầu tiên, muốn cung cấp văn tương đối khép kín cho phép tất người dùng khơng u cầu trình độ kiến thức tiếp thu kiến thức Prolog cách dễ dàng tiện lợi K ế đến, chúng tơi muốn nhấn mạnh khía cạnh thực tế Prolog Rất rõ, bạn học ngôn ngữ lập trình với việc đọc học thuộc chúng, bạn phải hiểu chúng việc khai thác tối đa khóa học với yêu cầu nhỏ bạn phải nắm giữ trình thơng dịch Prolog làm việc thông qua tất Phiên thực hành mà cung cấp Chưa dừng lại đó, bạn thực hành lập trình nhiều, bạn thành thạo Và cuối cùng, chúng tơi hy vọng bạn thích khóa học cho dù bạn sử dụng cho việc học hay giảng dạy, lắng nghe ý kiến bạn Để tạo giao diện cho ngôn ngữ logic Prolog ta kết nối chúng với ngơn ngữ trực quan C/C++, C#, Java,… Các nguyên tắc Prolog tạo thành từ kiện luật Dữ kiện xác định chất đối tượng Các quy tắc thuộc tính suy từ quan hệ ➢ Sự kiện: đối tượng xác định việc, thuộc phạm trù định Ví dụ "Lem nam", mã hóa nam (lem) Dữ kiện đại diện cho mối quan hệ miền định Những kiện liên quan đến đối tượng nhiều Ví dụ câu lệnh cha (john, tom) Điều có nghĩa tồn mối quan hệ Tom John gọi cha mẹ Thứ tự mệnh đề (đối tượng) mối quan hệ có ý nghĩa Tuyên bố có nghĩa John cha mẹ Tom, điều ngược lại không Khi số kiện thiết lập, đặt câu hỏi mối quan hệ Ví dụ, câu hỏi ? - parent (john, tom) tạo có, ? - parent (jane, tom) tạo khơng, khơng có thực tế nói Jane Tom Các câu hỏi kết hợp câu trả lời phụ thuộc vào số điều ➢ Luật: thuộc tính suy từ quan hệ Một quan hệ kết luận từ quan hệ tồn Ví dụ, quan hệ John cha Tom phải ngụ ý John cha mẹ Tom John nam giới, với điều kiện quan hệ "cha mẹ" "nam" xác định Điều mã hóa sau; cha (john, tom): - nam (john), cha (john, tom) Ký hiệu " : - " có nghĩa "nếu" Trong bối cảnh RHS LHS Dấu phẩy thể kết hợp phép tính Có nghĩa quan hệ nam phụ huynh phải kết luận quan hệ cha ➢ Biến: Một biến đại diện cho đối tượng trường hợp tên không liên quan Điều quan trọng đối tượng đáp ứng tiêu chí có tồn hay khơng Điều có nghĩa câu hỏi Ai John? hỏi Ví dụ, đoạn mã sau :? - parent (john, X) có nghĩa có X cho John cha X Nếu X tồn tại, Prolog trả giá trị có X, khơng câu trả lời khơng Nếu hỏi, Prolog trả tất câu trả lời có khác, chúng tồn Prolog phân biệt biến tên đối tượng cụ thể, tên bắt đầu chữ hoa coi biến ➢ Đệ quy Prolog: Đệ quy kỹ thuật cho phép người dùng triển khai cấu trúc liệu giống có nhiều bước cần thiết để trả lời câu hỏi Đệ quy sử dụng nhiều trường hợp, bao gồm trường hợp sở, số lượng trường hợp thường hai Ví dụ, quan hệ "tổ tiên", tìm thấy tổ tiên biến X Tổ tiên cha mẹ trực tiếp X, không, cha mẹ cha mẹ X cần kiểm tra, v.v • tổ tiên (X, Y): - cha mẹ (X, Y) • tổ tiên (X, Z): - cha mẹ (X, Y), tổ tiên (Y, Z) Chương 2: PHÂN TÍCH LÝ LUẬN Lý thuyết phương pháp giải tốn Prolog có chế backtrack tuyệt vời khám phá cây, Prolog ln quay trở lại nhánh khác nhánh không chứa câu trả lời thỏa mãn quy tắc cho Cách tiếp cận tương đương với tìm kiếm theo chiều sâu, biết đến thuật toán hiệu để duyệt qua với số lượng lớn nút Nhưng, có số câu trả lời hoàn cảnh định Điều chương trình khơng kết thúc sau câu trả lời tìm thấy mà tiếp tục toàn khả kiểm tra Một chương trình Prolog khơng biên dịch thành mã nhị phân chạy độc lập mà Prolog thơng dịch q trình tương tác với người dùng chương trình Mơ hình tương tác sau: - Người dùng chương trình truy vấn (hỏi) tri thức - Prolog suy diễn tri thức từ chương trình - Prolog trả lời truy vấn Ví dụ số mệnh đề Horn 1) Nếu trời mưa nhà 2) Tùn người 3) Tất người người tốt (hoặc người xấu chắn tồi) 4) Tùn người xấu Trong đó, mệnh đề 1, gọi luật mệnh đề 2, gọi kiện Một chương trình logic 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 Người sử dụng gọi chạy chương trình logic cách đặt câu hỏi truy vấn sở liệu này, chẳng hạn hỏi:” Tùn có tồi khơng?” Một hệ thống logic thực chương trình theo cách suy luận tìm kiếm dựa vốn hiểu biết có chương trình – sở liệu, đẻ minh chứng câu hỏi khẳng định, sai Với câu hỏi trên, hệ thống tìm kiếm sở liệu khẳng định Tùn tồi tìm thấy luật thỏa mãn “vế thì” Vận dụng luật , hệ thống nhận Tùn người xấu (vế nếu) kiện Từ đó, câu trả lời “Yes” Có nghĩa kiện Tùn tồi Nguyên lý lập trình logic dựa phép suy diễn logic, liên quan đến khái niệm toán học phép hợp Herbrand, hợp giải Robinson, logic Horn, logic vị từ bậc một,…trong lĩnh vực trí tuệ nhân tạo sử dụng nguyên lý dựa mệnh đề Horn Một mệnh đề Horn biểu diễn kiện hay việc không đúng, xảy không xảy ra… Áp dụng ngun lý lập trình logic giải tốn “Một cặp vợ chồng có hai người trai gái qua sông Cách để qua sông mượn bác đánh cá thuyền để qua sông Tuy nhiên, vấn đề thuyền chở người lớn trẻ em người đánh cá qua sông lần Bài tốn u cầu tìm cách để gia đình qua bờ bên kia.” Phương pháp giải tốn: Trình bày bước áp dụng thuật tốn DFS để giải tốn gia đình qua sông với đôi vợ chồng, trai, gái bác đánh cá cho mượn thuyền với trạng thái ban đầu trạng thái mục tiêu sau: Gọi mảng vị trí: [FL, HL, WL, BL, GL, P, FR, HR, WR, BR, GR] Với: • P: vị trí thuyền phía bờ (left right) • FL (Fisher_Left): vị trí đứng người bắt cá bên trái bờ song • HL (Husband_Left): vị trí đứng người chồng bên trái bờ sơng • WL (Wife_Left): vị trí đứng người vợ bên trái bờ sơng • BL (Boy_Left): vị trí đứng trai bên trái bờ sơng • GL (Girl_Left): vị trí đứng gái bên trái bờ sơng • FR (Fisher_Right): vị trí đứng người bắt cá bên phải bờ song • HR (Husband_ Right): vị trí đứng người chồng bên phải bờ sơng • WR (Wife_ Right): vị trí đứng người vợ bên phải bờ sơng • BR (Bo _ Right): vị trí đứng trai bên phải bờ sơng • GR (Girl_ Right): vị trí đứng gái bên phải bờ sông Gọi tắt: Người bắt cá (fisher) f Người chồng (Husband) h Người vợ (Wife) w Con trai (Boy) b Con gái (Girl) g Trạng thái ban đầu: [f, h, w, b, g, left, 0, 0, 0, 0, 0] Trạng thái mục tiêu: [0, 0, 0, 0, 0, right, f, h, w, b, g] Viết tắt trạng thái (State) S + số thứ tự Các hành động thực có vị trí thuyền phía với vị trí bắt đầu đối tượng thực hiên hành động Phạm vị đối tượng: - Đối tượng người lớn: • Người bắt cá • Người chồng • Người vợ - Đối tượng trẻ em: • Con trai • Con gái Mỗi lần hành động cho phép đối tượ ng người lớn đến đối tượng trẻ em thực người bắt cá phép hành động lần từ trái sang phải Ta có hành động áp dụng cho state là: • Con trai gái từ trái sang phải • Con trai gái từ phải sang trái • Con trai từ trái sang phải • Con trai từ phải sang trái • Con gái từ trái sang phải • Con gái từ phải sang trái • Người chồng từ trái sang phải • Người chồng từ phải sang trái • Người vợ từ trái sang phải • Người vợ từ phải sang trái • Người bắt cá từ trái sang phải Điều kiện áp dụng xét theo vị trí đứng mục tiêu phải tạo trạng thái Hồn tất tìm kiếm trạng thái (Sx) giống trạng thái mục tiêu (Goal) Bước 1: Khởi tạo - Khởi tạo trạng thái S0 giống với trạng thái ban đầu - Khởi tạo list Stack = {} - Khởi tạo list visited = {} Trạng thái S0: [f, h, w, b, g, left, 0, 0, 0, 0, 0] Thêm trạng thái ban đầu S0 vào Stack, Stack = {S0} Bước 2: Áp dụng hành động tạo trạng thái từ cha Lấy S0: [f, h, w, b, g, left, 0, 0, 0, 0, 0] khỏi Stack Từ S0 áp dụng hành động cho b-g, b, g, h, w, f sang phải tạo trạng thái mới: S1, S2, S3, S4, S5, S6 S1: [f, h, w, 0, 0, right, 0, 0, 0, b, g] S2: [f, h, w, 0, g, right, 0, 0, 0, b, 0] S3: [f, h, w, b, 0, right, 0, 0, 0, 0, g] S4: [f, 0, w, b, g, right, 0, h, 0, 0, 0] S5: [f, h, 0, b, g, right, 0, 0, w, 0, 0] S6: [0, h, w, b, g, right, f, 0, 0, 0, 0] Thêm trạng thái S1, S2, S3, S4, S5, S6 vào Stack, Stack = {S1, S2, S3, S4, S5, S6} Thêm trạng thái S0 vào visited, visited = {S0} Bước 3: Lấy S1: [f, h, w, 0, 0, right, 0, 0, 0, b, g] khỏi Stack Từ S1 áp dụng hành động b, g sang trái tạo trạng thái mới: S7, S8 S7: [f, h, w, b, 0, left, 0, 0, 0, 0, g] S8: [f, h, w, 0, g, left, 0, 0, 0, b, 0] Thêm trạng thái S7, S8 vào Stack, Stack = {S7, S8, S2, S3, S4, S5, S6} Thêm trạng thái S1 vào visited, visited = {S0, S1} Bước 4: Lấy S7: [f, h, w, b, 0, left, 0, 0, 0, 0, g] khỏi Stack Từ S7 áp dụng hành động h, w, f sang phải tạo trạng thái mới: S9, S10, S11 S9: [f, 0, w, b, 0, right, 0, h, 0, 0, g] S10: [f, h, 0, b, 0, right, 0, 0, w, 0, g] S11: [0, h, w, b, 0, right, f, 0, 0, 0, g] Thêm trạng thái S9, S10, S11 vào Stack, Stack = {S9, S10, S11, S8, S2, S3, S4, S5, S6} Thêm trạng thái S7 vào visited, visited = {S0, S1, S7} Bước 4: Lấy S9: [f, 0, w, b, 0, right, 0, h, 0, 0, g] khỏi Stack Từ S9 áp dụng hành động b sang trái tạo trạng thái mới: S12 S12: [f, 0, w, b, g, left, 0, h, 0, 0, 0] Thêm trạng thái S12 vào Stack, Stack = {S12, S10, S11, S8, S2, S3, S4, S5, S6} Thêm trạng thái S9 vào visited, visited = {S0, S1, S7, S9} Bước 5: Lấy S12: [f, 0, w, b, g, left, 0, h, 0, 0, 0] khỏi Stack Từ S12 áp dụng hành động b-g, b, w, f sang phải tạo trạng thái mới: S13, S14, S15, S16 S13: [f, 0, w, 0, 0, right, 0, h, 0, b, g] S14: [f, 0, w, 0, g, right, 0, h, 0, b, 0] S15: [f, 0, b, g, right, 0, h, w, 0, 0] S16: [0, 0, w, b, g, right, f, h, 0, 0, 0] Thêm trạng thái S13, S14, S15, S16 vào Stack, Stack = { S13, S14, S15, S16, S10, S11, S8, S2, S3, S4, S5, S6} Thêm trạng thái S12 vào visited, visited = {S0, S1, S7, S9, S12} 10 Bước 5: Lấy S13: [f, 0, w, 0, 0, right, 0, h, 0, b, g] khỏi Stack Từ S13 áp dụng hành động b, g, h sang trái tạo trạng thái mới: S17, S18, S19 S17: [f, 0, w, b, 0, left, 0, h, 0, 0, g] S18: [f, 0, w, 0, g, left, 0, h, 0, b, 0] S19: [f, h, w, 0, 0, left, 0, 0, 0, b, g] Thêm trạng thái S17, S18, S19 vào Stack, Stack = {S17, S18, S19, S14, S15, S16, S10, S11, S8, S2, S3, S4, S5, S6} Thêm trạng thái S13 vào visited, visited = {S0, S1, S7, S9, S12, S13} Bước 6: Lấy S17: [f, 0, w, b, 0, left, 0, h, 0, 0, g] khỏi Stack Từ S17 áp dụng hành động w, f sang phải tạo trạng thái mới: S20, S21 S20: [f, 0, 0, b, 0, right, 0, h, w, 0, g] S21: [0, 0, w, b, 0, right, f, h, 0, 0, g] Thêm trạng thái S20, S21 vào Stack, Stack = {S20, S21, S18, S19, S14, S15, S16, S10, S11, S8, S2, S3, S4, S5, S6} Thêm trạng thái S17 vào visited, visited = {S0, S1, S7, S9, S12, S13, S17} Bước 7: Lấy S20: [f, 0, 0, b, 0, right, 0, h, w, 0, g] khỏi Stack Từ S20 áp dụng hành động g, h sang phải tạo trạng thái mới: S22, S23 S22: [f, 0, 0, b, g, left, 0, h, w, 0, 0] S23: [f, h, 0, b, 0, left, 0, 0, w, 0, g] 11 Thêm trạng thái S22, S23 vào Stack, Stack = {S22, S23, S21, S18, S19, S14, S15, S16, S10, S11, S8, S2, S3, S4, S5, S6} Thêm trạng thái S20 vào visited, visited = {S0, S1, S7, S9, S12, S13, S17, S20} Bước 8: Lấy S22: [f, 0, 0, b, g, left, 0, h, w, 0, 0] khỏi Stack Từ S22 áp dụng hành động b-g, b, fsang phải tạo trạng thái mới: S24, S25, S26 S24: [f, 0, 0, 0, 0, right, 0, h, w, b, g] S25: [f, 0, 0, 0, g, right, 0, h, w, b, 0] S26: [0, 0, 0, b, g, right, f, h, w, 0, 0] Thêm trạng thái S24, S25, S26 vào Stack, Stack = {S24, S25, S26, S23, S21, S18, S19, S14, S15, S16, S10, S11, S8, S2, S3, S4, S5, S6} Thêm trạng thái S22 vào visited, visited = {S0, S1, S7, S9, S12, S13, S17, S20, S22} Bước 9: Lấy S24: [f, 0, 0, 0, 0, right, 0, h, w, b, g] khỏi Stack Từ S24 áp dụng hành động b, g, h, w sang trái tạo trạng thái mới: S27, S28, S29, S30 S27: [f, 0, 0, b, 0, left, 0, h, w, 0, g] S28: [f, 0, 0, 0, g, left, 0, h, w, b, 0] S29: [f, 0, h, 0, 0, left, 0, 0, w, b, g] S30: [f, 0, 0, w, 0, left, 0, h, 0, b, g] Thêm trạng thái S27, S28, S29, S30 vào Stack, Stack = {S27, S28, S29, S30, S25, S26, S23, S21, S18, S19, S14, S15, S16, S10, S11, S8, S2, S3, S4, S5, S6} 12 Thêm trạng thái S24 vào visited, visited = {S0, S1, S7, S9, S12, S13, S17, S20, S22, S24} Bước 10: Lấy S27: [f, 0, 0, b, 0, left, 0, h, w, 0, g] khỏi Stack Từ S27 áp dụng hành động f sang phải tạo trạng thái mới: S31 S31: [0, 0, 0, b, 0, right, f, h, w, 0, g] Thêm trạng thái S31 vào Stack, Stack = {S31, S28, S29, S30, S25, S26, S23, S21, S18, S19, S14, S15, S16, S10, S11, S8, S2, S3, S4, S5, S6} Thêm trạng thái S27 vào visited, visited = {S0, S1, S7, S9, S12, S13, S17, S20, S22, S24, S27} Bước 11: Lấy S31: [0, 0, 0, b, 0, right, f, h, w, 0, g] khỏi Stack Từ S31 áp dụng hành động g, h, w sang trái tạo trạng thái mới: S32, S33, S34 S32: [0, 0, 0, b, g, left, f, h, w, 0, 0] S33: [0, h, 0, b, 0, left, f, 0, w, 0, g] S34: [0, 0, w, b, 0, left, f, h, 0, 0, g] Thêm trạng thái S32, S33, S34 vào Stack, Stack = {S32, S33, S34, S28, S29, S30, S25, S26, S23, S21, S18, S19, S14, S15, S16, S10, S11, S8, S2, S3, S4, S5, S6} Thêm trạng thái S31 vào visited, visited = {S0, S1, S7, S9, S12, S13, S17, S20, S22, S24, S27, S31} Bước 12: Lấy S32: [0, 0, 0, b, g, left, f, h, w, 0, 0] khỏi Stack 13 Từ S32 áp dụng hành động b-g, b sang phải tạo trạng thái mới: S35, S36 S35: [0, 0, 0, 0, 0, right, f, h, w, b, g] S36: [0, 0, 0, 0, g, right, f, h, w, b, 0] Thêm trạng thái S35, S36 vào Stack, Stack = {S35, S36, S33, S34, S28, S29, S30, S25, S26, S23, S21, S18, S19, S14, S15, S16, S10, S11, S8, S2, S3, S4, S5, S6} Thêm trạng thái S32 vào visited, visited = {S0, S1, S7, S9, S12, S13, S17, S20, S22, S24, S27, S31, S32} Bước 13: Lấy S35: [0, 0, 0, 0, 0, right, f, h, w, b, g] khỏi Stack S35 trạng thái mục tiêu (Goal) cần tìm => Thuật toán dừng Từ S35, lần ngược lại trạng thái cha trạng thái, xác định đường để trạng thái đích là: S0, S1, S7, S9, S12, S13, S17, S20, S22, S24, S27, S31, S32, S35 Trạng thái ban đầu: [f, h, w, b, g, left, 0, 0, 0, 0, 0] Trạng thái mục tiêu: [0, 0, 0, 0, 0, right, f, h, w, b, g] 14 Chương 3: TỔNG KẾT Prolog ngôn ngữ lập trình dạng lập trình theo logic Với mục tiêu giúp cho người dùng mơ tả lại tốn ngơn ngữ logic nói cách khác chuyển đổi toán thực tiễn thành dịng lệnh thể ngơn ngữ lập trình máy tính Từ đó, 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) để đưa câu trả lời xác hồn hảo cho người dùng Một chương trình Prolog không biên dịch thành mã nhị phân chạy độc lập mà Prolog thơng dịch trình tương tác với người dùng chương trình Mơ hình tương tác sau: − Người dùng chương trình truy vấn (hỏi) tri thức − Prolog suy diễn tri thức từ chương trình − Prolog trả lời truy vấn Mơ hình giống với mơ hình hệ quản trị sở liệu Thực tế xem Prolog hệ quản trị sở tri thức Khác biệt khác biệt liệu tri thức Prolog diễn giải tất kiện quy tắc cho dạng tập hợp tiên đề câu hỏi người dùng định lý định lý để chứng tỏ ghỉ Sau đó, cố gắng giải ghỉ theo cách logic từ tiên đề Prolog ghỉ theo chuỗi quy tắc theo thứ tự ngược lại Vì vậy, với định lý, kiểm tra xem phần đầu phép tính thay quy tắc khác mà trở thành mục tiêu hay không N ếu định lý cho chuỗi cuối kết thúc mục tiêu thay kiện thiết lập Bất kỳ nỗ lực không thành công để thực thay gây lỗi quay lại nỗ lực điều khoản thay Chân lý suy việc tính tốn chương trình có hay không, thực ký hiệu chương trình Khấu trừ ghỉ ghỉ xác định xem mệnh đề có phải hệ chương trình hay khơng Tất ngơn ngữ lập trình logic có ý nghĩa hoạt động xác hầu hết hỗ trợ việc xử lý tập hợp hữu 15 hạn Bản thân chương trình hướng dẫn để thực thi trình biên dịch Các lệnh hiểu câu lệnh mệnh đề logic, kết việc thực thi hệ logic phép tính Sử dụng ngôn ngữ logic ngôn ngữ khai báo khác mang lại ba lợi ích chính: ➢ Ngơn ngữ lập trình logic phân loại ngơn ngữ cấp cao chúng thực logic tính tốn học Chúng có chế khớp mẫu mạnh mẽ quản lý nhớ tốt (ngăn xếp trỏ) Điều làm cho chúng trở nên lý tưởng để thể ý tưởng thuật tốn phức tạp ➢ Các ngơn ngữ lập trình logic cho phép liệu biểu diễn theo cách mở rộng có chủ đích Biểu diễn có chủ đích tạo biểu diễn liên quan, ví dụ danh sách kề để dễ dàng truy cập phần tử liệu sau Chúng bắt nguồn động từ quy tắc cấu hình ➢ Một ưu điểm khác ngơn ngữ lập trình logic chúng thích hợp để giải thích nhanh chóng cấu trúc liệu mã để triển khai ý tưởng phức tạp Do cú pháp nhỏ gọn tính chất logic chúng, lập trình viên có kinh nghiệm thấy mã dễ đọc gỡ lỗi Từ quan điểm lập trình viên, khó khăn việc viết mã mơ hồ suy ghỉ người Tuy nhiên, mã hóa Prolog dễ dàng cú pháp ngắn xác Tài liệu tham khảo Chương trình Prolog: ngôn ngữ đàm thoại người dùng máy tính Người dùng định đối tượng mối quan hệ tồn đối tượng Prolog sau trả lời câu hỏi tập liệu Hết 16 ... điều ➢ Luật: thuộc tính suy từ quan hệ Một quan hệ kết luận từ quan hệ tồn Ví dụ, quan hệ John cha Tom phải ngụ ý John cha mẹ Tom John nam giới, với điều kiện quan hệ "cha mẹ" "nam" xác định... ký ngôn ngữ tự nhiên Prolog có nguồn gốc từ logic bậc nhất, dạng logic hình thức khơng giống ngơn ngữ lập trình khác Prolog có tính mơ tả: chương trình Prolog trình bày theo quan hệ, biểu diễn... ngữ logic Prolog ta kết nối chúng với ngôn ngữ trực quan C/C++, C#, Java,… Các nguyên tắc Prolog tạo thành từ kiện luật Dữ kiện xác định chất đối tượng Các quy tắc thuộc tính suy từ quan hệ ➢

Ngày đăng: 08/06/2022, 21:16

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w