Thực hành Toán rời rạc - Chương 5: Quan hệ trong tập hợp. Chương này cung cấp cho học viên những nội dung về: bài toán nói dối – nói thật Knights và Knaves; quan hệ trên các tập hợp và biểu diễn quan hệ; bài toán ứng dụng 1 - biểu diễn cơ sở dữ liệu; bài toán ứng dụng 2 - hợp lý hóa điều kiện tìm kiếm trên dữ liệu;... Mời các bạn cùng tham khảo!
Bộ mơn Khoa học Dữ liệu THỰC HÀNH TỐN RỜI RẠC TÀI LIỆU PHỤC VỤ SINH VIÊN NGÀNH KHOA HỌC DỮ LIỆU Nhóm Giảng viên biên soạn: TS Hồng Lê Minh – Khưu Minh Cảnh – Phạm Trọng Nghĩa – Nguyễn Cơng Nhựt – Trần Ngọc Việt - Hồng Thị Kiều Anh – Lê Ngọc Thành – Đỗ Đình Thủ – Nguyễn Hữu Trí Nhật – Lê Cơng Hiếu – Nguyễn Thị Thanh Bình – Nguyễn Thái Hải – Huỳnh Thái Học Giảng viên khác TP.HCM – Năm 2020 Thực hành Tốn rời rạc Trang Bộ mơn Khoa học Dữ liệu MỤC LỤC CHƯƠNG 5: QUAN HỆ TRONG TẬP HỢP Dẫn nhập: Bài tốn nói dối – nói thật: Knights Knaves Tóm lược: Quan hệ tập hợp biểu diễn quan hệ [Đọc thêm] Bài toán ứng dụng 1: Biểu diễn sở liệu [Đọc thêm] Bài tốn ứng dụng 2: Hợp lý hóa điều kiện tìm kiếm liệu 10 Khái niệm lập trình logic 12 5.1 Giới thiệu lập trình logic gói PySWIP 12 5.2 Cài đặt gói pyswip để minh họa suy diễn luận lý Python 13 5.3 Minh họa sử dụng gói pyswip 15 Thực hành Toán rời rạc Trang Bộ môn Khoa học Dữ liệu CHƯƠNG 5: QUAN HỆ TRONG TẬP HỢP Mục tiêu: - Tìm hiểu loại quan hệ hai tập hợp - Biểu diễn quan hệ, suy luận toán học Python - Các ứng dụng sử dụng quan hệ toán học để xử lý liệu Nội dung chính: Dẫn nhập: Bài tốn nói dối – nói thật: Knights Knaves Bài tốn dẫn nhập cho thấy tập liệu luận lý có liên hệ (quan hệ với nhau) Mở rộng ra, với liệu khác, liên hệ tập tồn nhiều mối quan hệ Trong phần dẫn nhập này, xét đến quan hệ tập kiện có chung đặc điểm liên hệ thời gian sau: Hai ông James Jonathan nói dối vào ngày định James nói dối vào thứ Sáu, thứ Bảy Chủ Nhật, nói thật vào tất ngày cịn lại Jonathan nói dối vào thứ Ba, thứ Tư thứ Năm, nói thật vào tất ngày cịn lại Thế vào ngày tuần hai nói “Ngày mai, tơi nói dối?” Các nhận xét: - - - - Nhận xét 1: Gọi nói dối Fasle, nói sai True Như ta lập hàm trả trị sai (như hàm Bool với “nói dối” xem “mạch đảo”, nghĩa ngược lại) Nhận xét 2: Hàm Bool nhận vào giá trị Sai (nói dối) Tuy nhiên, giá trị tính tốn phụ thuộc vào giá trị ngày Cụ thể: Nếu hơm ngày nói dối (False) với giá trị False kết True Ngược lại, hơm True mai False Nhận xét 3: Nghĩa hàm Bool có giai đoạn: bước 1: tìm dự báo ngày mai từ giá trị hôm bước xác định đắn từ dự báo thực tiễn Nhận xét 4: với tuần có ngày xoay vòng, chọn ngày tuần Thứ cần xét đến ngày Chủ Nhật Như vậy, với người James Jonathan, cần mơ tả tình trạng nói dối họ với 7+1 giá trị (để xoay vòng) Nhận xét 5: James Johnathan liệu khác Thực hành Toán rời rạc Trang Bộ môn Khoa học Dữ liệu Sinh viên thực hành tìm ngày nói câu: “Ngày mai, tơi nói dối!”! Bảng “chân trị” hàm “nói dối”: Sự thật Hôm (1) Dự báo Ngày mai từ câu nói Hơm (2, suy từ 1) Dối Dối Thật Thật Thật Thật Dối Dối Sự thật Ngày mai (3) Thật Dối Thật Dối Kết so sánh trùng khớp (giữa 3) Sai Đúng Đúng Sai Bảng chân trị câu nói James Jonathan: James Câu nói James Jonathan Câu nói Jonathan Thứ Thật Thứ Thật Thứ Thật Sai Sai Sai Thật Dối Đúng Sai Thứ Thật Thứ Dối Thứ Dối Chủ nhật Dối Đúng Sai Sai Đúng Dối Dối Thật Thật Thật Sai Đúng Sai Sai Sai Thứ Thật Thật Diễn giải bảng trên: Với James, thứ thứ nói thật Do đó, thứ James nói: “Ngày mai nói dối” nghĩa mệnh đề sai Tương tự với Chủ nhật Thứ 2, James nói dối mà nói “Mai nói dối” nghĩa mệnh đề Đúng Đoạn mã Python sau: >>> James = [True, True, True, True, False, False, False, True] >>> Jonathan =[True, True, True, True, False, False, False, True] >>> ngay_trong_tuan = ["Thu 2", "Thu 3", "Thu 4", "Thu 5", "Thu 6", "Thu 7", "Chu nhat", "Thu 2"] - Code chưa rút gọn: Thực hành Tốn rời rạc Trang Bộ mơn Khoa học Dữ liệu ……………………………………………………………… sinh viên điền kết tìm - Code rút gọn: Tìm quy luật hôm ngày mai phải khác >>> for i in range(0,6): if ((James[i] and not James[i+1]) and (Jonathan[i] and not Jonathan[i+1])): print (ngay_trong_tuan[i]) ……………………………………………………………… sinh viên điền kết tìm Tóm lược: Quan hệ tập hợp biểu diễn quan hệ Dẫn nhập: Thông thường, với phần tử (như số liệu) cho, ta gọi chúng tập hợp, cần tìm mối quan hệ phần tử Có nhiều loại quan hệ hai phần tử với nhau, quan hệ toán học chia hết, đồng dư (cùng số dư chia cho số), lớn hơn, nhỏ hơn,… Ví dụ: Cho ngẫu nhiên dãy số S có thứ tự gồm 10 số tự nhiên từ đến 99 Sau đó, ứng với số, tìm số lượng số phía sau lớn Sinh viên thực tập câu lệnh sau: >>> import random >>> S = random.sample(range(1, 100), 10) # lấy mẫu 10 số tự nhiên [1, 99] >>> print (S) ……………………………………………………………… >>> tS = [] # dãy tS lưu trữ số lượng số nằm phía sau Si mà lớn Si, i=0,n-1 >>> for i in range(len(S)): tS.append(0) for j in range(i, len(S)): if S[i] < S[j]: Thực hành Tốn rời rạc Trang Bộ mơn Khoa học Dữ liệu tS[i] = tS[i] + >>> print (tS) ……………………………………………………………… Quan hệ tập hợp: - Định nghĩa: Một quan hệ hai từ tập A đến tập B tập tích Descarte Kí hiệu: a R b [thay cho (a, b) ∈ R] ⊆ × Ví dụ: - Quan hệ tập: tập sinh viên; B tập lớp học Khi = {( , )| sinh ê ℎọ } Quan hệ ước số: Tập = {1,2,3,4,5,6}, = {( , )| ướ (ố ủ }.Khi đó: = {(1,1), (1,2), (1,3), (1,4), (1,5), (1,6), (2,2), (2,4), (2,6), (3,3), (3,6), (4,4), (5,5), (6,6)} Tính chất: Cho quan hệ , quan hệ gọi là: Phản xạ: ∀ ∈ , Ví dụ: Quan hệ ước số số ước số Ví dụ: 10 ước số 10 )→( ) Đối xứng: ∀ ∈ , ∀ ∈ : ( Ví dụ: [Quan hệ đồng dư] , , , ∈ ℤ, ≡ ( / ,) → ≡ ( / ,) )∧( ) →( = ) Phản xứng: ∀ ∈ , ∀ ∈ : ( Ví dụ: Quan hệ ≤ trường ℤ phản xứng với số , ∈ ℤ: ( ≤ ) ∧ ( ≤ ) → ( = ) )∧( ) → Bắc cầu: ∀ , , ∈ , ∀ ∈ : ( Ví dụ: Quan hệ < trường số ℤ, i.e a nhỏ b b nhỏ c a nhỏ c Chúng ta biểu diễn quan hệ phần tử tập hợp cách: - Phương pháp 1: Sử dụng ma trận, dãy vector để mô tả quan hệ tập hợp Phương pháp 2: Thông qua hàm (module) có tham số phần tử tập hợp Nếu hai phần tử có quan hệ hàm (module) trả giá trị True (đúng), ngược lại False (sai) Phương pháp 1: Biểu diễn quan hệ - tập với tập ma trận Biểu diễn ma trận, gọi ma trận với phần tử 45 với biểu thị dòng biểu thị cột Mỗi dòng phần tử tập Thực hành Toán rời rạc Trang Bộ môn Khoa học Dữ liệu - Mỗi cột phần tử tập Hai phần tử có quan hệ mơ tả giá trị 1, ngược lại giá trị Sinh viên thực lệnh thực tập sau: >>> import numpy as np Sinh viên tạo tập tin Excel có tên monhoc.xlsx lưu vào ổ đĩa D: có nội dung sau: Môn học (A1) Môn học (A2) Lập trình Đại số Tốn rời rạc Vật lý Hóa học Thể dục Lập trình Tốn rời Đại số Vật lý Hóa học Thể dục rạc (Lưu ý: giá trị 1: mơn dịng cần học trước môn cột ) 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 Từ đó, GV hướng dẫn sinh viên đọc liệu từ Excel thành ma trận quan hệ theo bảng trên: >>> import pandas >>> df = pandas.read_excel('D:\\monhoc.xlsx') >>> print (df.columns) # liệt kê cột liệu ……………………………………………………………………… >>> giatri = df[''].values # đọc cột liệu ……………………………………………………………………… Sau thực lệnh đọc liệu vào mảng/ma trận Python/numpy để xử lý tiếp tục yêu cầu bên dưới, nghĩa xem xét tính chất ma trận Suy [cách kiểm chứng ma trận quan hệ với tính chất]: - Quan hệ phản xạ: ma trận vuông (do = ) đường chéo (\) 1, i.e .44 = 1, ∀ Quan hệ đối xứng: trị 0, đối xứng qua đường chéo (\), i.e .45 = 54 , ∀ , Quan hệ phản xứng: ma trận vuông (do = ) trị 0, đối xứng qua đường chéo phụ (/), i.e .45 = ⋁ 54 = → ≠ Quan hệ bắc cầu: 45 = 1, 5: = → 4: = Thực hành Toán rời rạc Trang Bộ mơn Khoa học Dữ liệu Hãy viết chương trình Python kiểm tra mối quan hệ (cho ma trận) có bị chồng chéo hay khơng? Ví dụ: i phụ thuộc j, j phụ thuộc k k phụ thuộc i Gợi ý: SV xem lại Bài toán loan tin (Chương 3, Thực hành Đại số Tuyến tính) Quan hệ tương đương: quan hệ có tính chất phản xạ, đối xứng bắc cầu Khái niệm lớp tương đương: Ví dụ lớp tương đương modulo chứa Quan hệ thứ tự: quan hệ có tính chất: phản xạ, phản xứng, bắt cầu Ví dụ: quan hệ ≤ số thực, số nguyên; quan hệ ước số số nguyên Với tập số nguyên dương: - Quan hệ ≤ quan hệ thứ tự toàn phần tập Vì số có quan hệ Quan hệ “ước số” khơng phải quan hệ thứ tự khơng tồn phần tồn phần tử khơng phải ước số Thứ tự từ điển: Cho ( , ≼) ( , ≼) tập thứ tự toàn phần Thứ tự từ điển ≺ ( =, =) ≺( >, >) ế? ( = < >) ∨( = = > ∧ × = < sau: >) Ví dụ: Tập bảng chữ Σ = { , , }, < < A ∈ Σ∗ chuỗi rỗng thứ tự từ điển là: Σ∗ = {A, , , , , , , , , ,…, , , , ,…, , , , ,…} Hoặc: Σ = {0,1} với < 0111110 ≺ 10 PHẦN VÀ SINH VIÊN ĐỌC ĐỂ CÓ KIẾN THỨC (BIẾT VỀ BÀI TỐN) [Đọc thêm] Bài tốn ứng dụng 1: Biểu diễn sở liệu Trong thực tế, quan hệ tập hợp ứng dụng mơ hình lưu trữ liệu Ví dụ: hai tập hợp Sinh viên Môn học có mối quan hệ với Cụ thể Sinh viên có Thực hành Tốn rời rạc Trang Bộ môn Khoa học Dữ liệu quan hệ Học Môn học: Học(Sinh viên, Môn học) Với mô tả này, có tập hợp Sinh viên Môn học Và bảng liệu minh họa mô tả quan hệ Sinh viên Môn học: Môn học: Sinh viên Văn Hậu Quang Hải Xuân Trường Văn Đức Đức Chinh Văn Tồn Lập trình Tốn rời Đại số Vật lý Hóa học Thể dục rạc (Lưu ý: giá trị 1: Sinh viên có học mơn tương ứng; 0: ngược lại) 1 1 0 1 1 0 1 0 1 1 0 1 1 1 Tất nhiên, tập, quan hệ tập thành phần cần biết Với liệu thực tế, phải xem xét quan hệ mơ tả với hợp lý Ví dụ: với Mơn học, có quan hệ môn học là: Tiên (môn cần học trước), sau: Lập trình Tốn rời Đại số Vật lý Hóa học Thể dục rạc (Lưu ý: giá trị 1: mơn dịng cần học trước mơn cột ) Mơn học Lập trình 1 0 Đại số 0 0 0 Toán rời rạc 0 0 Vật lý 0 0 0 Hóa học 0 0 0 Thể dục 1 1 Với bảng trên, phải điều chỉnh lại giá trị quan hệ Tiên mơn Tốn rời rạc Thể dục Vì dịng mơn ‘Tốn rời rạc’ u cầu học trước mơn ‘Thể dục’ Tuy nhiên, dịng cuối môn ‘Thể dục’ yêu cầu cần phải học trước mơn ‘Tốn rời rạc’! Điều có nghĩa là: Quan hệ mơn Tiên quan hệ có thứ tự Tiên để đến thời gian học trước sau Do vậy, môn cần sửa đổi thứ tự để có điều kiện phản xứng! (Giả định điều chỉnh vị trí dịng Tốn rời rạc, cột Thể dục sang giá trị 0) Mơn học: Tốn rời rạc 0 0 0 Hơn nữa, số quan hệ mô tả liên quan nhiều tập hợp Ví dụ: Quan hệ Học bổ sung thêm Học kỳ để biết xác Sinh viên học mơn học Học kỳ (bao gồm học kỳ, niên khóa), cụ thể quan hệ tạo thành từ tập hợp: Học(Sinh viên, Môn học, Học kỳ) Từ liệu trên, tìm kiếm thơng tin cần thiết Dưới số truy vấn liệu mà xây dựng được: Thực hành Tốn rời rạc Trang Bộ mơn Khoa học Dữ liệu - Sinh viên X học môn học kì Kết hợp với mơn tiên để suy sinh viên X học tất mơn Như vậy, bản, sinh viên hiểu phương pháp lưu trữ liệu thiết lập quan hệ tập liệu Hiển nhiên, để thể liệu sở liệu, nhiều kỹ thuật khác để giải vấn đề gặp phải trong: tìm kiếm, lưu trữ, thống kê, Các mơn học thiết kế sở liệu học kỳ sau giúp bạn sinh viên nắm rõ Ví dụ: mơ hình liệu tn theo chuẩn 1, 2, 3,…; mơ hình liệu Nosql,… [Đọc thêm] Bài tốn ứng dụng 2: Hợp lý hóa điều kiện tìm kiếm liệu Việc hiểu rõ cấu trúc liệu, quan hệ liệu biến đổi luận lý, dễ dàng thay đổi điều kiện tìm kiếm liệu nhằm tăng tốc tính tốn Ứng dụng liên quan đến luật De Morgan tiếng: EEEEEEE ∪ = ̅∩ E EEEEEEE ∩ = ̅∪ E với ̅ = {H ∈ I, H ∉ }, ⊂I Chúng ta xét toán sau: Kiểm tra “Tách rời” (disjoint) hai tập đối tượng: Cho đối tượng, đối tượng tập hợp Phép kiểm hai đối tượng tách rời định nghĩa sau: ( , ) ↔ ∄H: (H ∈ / (6 ∧H ∈ ) , ậ ℎợ Bài toán minh họa: Cho tập liệu Trẻ em (gọi tập ), Phụ nữ/Giới nữ ( ) Bệnh nhân sởi (S) Hãy tìm tập người khơng phải bệnh nhân sởi mà trẻ em phụ nữ Biểu thức tốn học cần tìm sau: ! (( ∪ ) ∩ S) Biến đổi luật phân phối, ta có: ! U( ∪ ) ∩ SV = ! (( ∩ S) ∪ ( ∩ S)) Áp dụng định luật De Morgan: … = ! U( ∩ S) ∪ ( ∩ S)V = ! ( ∩ S) ∩ ! ( ∩ S) Thực hành Toán rời rạc Trang 10 Bộ môn Khoa học Dữ liệu Như vậy, luận lý, thấy hai biểu thức: biểu thức ! ( ∪ ) ∩ S) biểu thức thứ ! ( ∩ S) ∩ ! ( ∩ S) Tuy nhiên, thực tế, tùy thuộc vào liệu, việc xử lý biểu thức có độ phức tạp khác dẫn đến tốc độ xử lý khác lí giải thích sau: - - Việc tính tốn tập ( ∪ ) tốn nhiều thời gian để xử lý thực tế tập trẻ em tập phụ nữ lớn Khả chiếm 60% liệu Sau đó, với lượng liệu đó, thực phép ∩ với tập S tập bệnh nhân tập không lớn thực tế Việc xử lý phải bước Hai phép xử lý ( ∩ S), ( ∩ S) sau phép lấy phủ định độc lập với nên việc xử lý hồn tồn tách biệt Các hệ thống chia thành tiến trình/luồng lúc thực thi Phép toán kiểm tra “Khác nhau” (difference) hai tập đối tượng: Phép kiểm khác định nghĩa sau: / WWX X X( , ) ↔ (H ∈ \ ) ↔ (H ∈ ∧H ∉ ) , ậ ℎợ Bài toán minh họa: Cho tập liệu Trẻ em (gọi tập ), Phụ nữ/Giới nữ ( ) Bệnh nhân sởi (S) Hãy tìm tập Trẻ em khơng Giới nữ mà khơng nhiễm bệnh sởi Nghĩa cần tìm tập hợp sau: \( \S) Thay phép hiệu \ phép ∩, ta có: \( \S) = \( ∩ S̅ ) Áp dụng định luật De Morgan cho vế phải đẳng thức trên, ta có: … = \( ∩ S̅ ) = ( \ ) ∪ ( \S̅ ) Áp dụng lần thay phép hiệu \ phép ∩, ta có: Thực hành Tốn rời rạc Trang 11 Bộ môn Khoa học Dữ liệu … = ( \ ) ∪ ( \S̅ ) = ( \ ) ∪ ( ∩ S) Như vậy, tương tự trên, luận lý, thấy hai biểu thức: biểu thức \( \S) biểu thức ( \ ) ∪ ( ∩ S) Tuy nhiên, thực tế, tùy thuộc vào liệu, việc xử lý biểu thức có độ phức tạp khác dẫn đến tốc độ xử lý khác lí giải thích sau: - Việc tính toán tập \( \S) phải thực bước Hai phép xử lý ( \ ) ( ∩ S) xử lý lúc thực thi PHẦN DƯỚI ĐÂY GIẢNG VIÊN CUNG CẤP KIẾN THỨC CƠ BẢN, SINH VIÊN THỰC HÀNH VÀ THỬ NGHIỆM NHƯ BÀI TẬP VỀ NHÀ: Khái niệm lập trình logic Lưu ý 1: Phần tập trung giới thiệu sinh viên tồn khái niệm lập trình ngơn ngữ lập trình logic Chi tiết để lập trình logic ngôn ngữ Prolog khai thác chi tiết hàm gói thư viện PySWIP học mơn chun ngành sinh viên tự khám phá thêm Do đó, phần phần bổ sung lớp học, khuyến khích học sinh nghiên cứu, tìm hiểu tham khảo thêm không bắt buộc Lưu ý 2: Sinh viên nghiên cứu nên tự xem phương pháp cài đặt gói thư viện phần mềm để làm thêm nhà 5.1 Giới thiệu lập trình logic gói PySWIP Khái niệm chương trình logic Từ nguyên lý bản: “Mọi thuật giải biểu diễn tập quy tắc với cấu trúc: tuần tự, chọn lặp (đệ quy)”, nhánh lập trình gọi lập trình logic đời Lập trình logic xem việc thể tập luật, luật kết hợp mệnh đề mệnh đề mệnh đề dạng tân từ Từ đó, người lập trình việc khai báo, cịn việc xử lý luận lý để kết hệ thống Ví dụ: người lập trình khai báo luật: tổng góc tam giác 180, sau cho biết góc hệ thống suy luận giá trị góc thứ Hiện tại, ngơn ngữ Prolog ngơn ngữ lâu đời tiếng lập trình logic Các thành phần chương trình logic: Thực hành Tốn rời rạc Trang 12 Bộ mơn Khoa học Dữ liệu Tân từ có dạng sau: W( = , Các ]4 miền cho trước >, … , Z) â ↔ W: ]= × ]> × … × ]Z → {^ ?X, _ (X} ∈ ]4 Mệnh đề (clause) dạng tân từ Các luật (rule) tập hợp mệnh đề: (… ) ∶ − b= (… ), b> (… ), … , bZ (… ) Chương trình logic: { ? X: = (… ), > (… ), … } Ví dụ: mơ tả quan hệ Ơng với trợ giúp mô tả quan hệ Cha mẹ sau: Ông(X, Y) :- Chame( Z, Y) Ông(X, Y) :- Cha(X, Z), Chame(Z, Y) Giải thích: luật thứ 1: X ơng Y tồn Z Cha Mẹ Y; đồng thời luật thứ mô tả là: X Cha Z Z có quan hệ Cha mẹ Y (dấu , luật thứ 2) Cấu trúc chương trình logic: Một chương trình logic thường gồm phần: - Phần khai báo mệnh đề (Predicates), khai báo hằng, biến, tân từ, Phần thân chương trình (Clauses): khai báo cụ thể quy luật, quy tắc (dữ liệu) Phần đích (kết luận, Goal) 5.2 Cài đặt gói pyswip để minh họa suy diễn luận lý Python Giới thiệu gói phần mềm PySWIP: PySWIP gói phần mềm Python làm cầu nối để thực thi chương trình ngơn ngữ Prolog với dịng lệnh theo dạng ngơn ngữ Python Lõi PySWIP gói SWI-Prolog, mã nguồn mở phát triển từ năm 1987 sử dụng nhiều web ngữ nghĩa Yêu cầu cài đặt: * Python phiên 2.3 cao * ctypes phiên 1.0 cao * SWI-Prolog phiên 5.6.x cao (phù hợp với phiên khác) * Thư viện chia sẻ libpl * Trên hệ thống Linux Win32, tất hệ POSIX Chi tiết cài đặt: Cài đặt lệnh pip install Pip install lệnh thư mục Scripts: Thực hành Toán rời rạc Trang 13 Bộ môn Khoa học Dữ liệu Từ thư mục Anaconda3 cài đặt, thực lệnh: Scripts\pip install pyswip Ví dụ: Anaconda cài đặt ổ C:\Anaconda3 thì: C:\Anaconda3> Scripts\pip install pyswip Lưu ý: Nếu tập tin pip cũ (có phiên cập nhật sử dụng lệnh Python để cập nhật): - Tập tin pip.exe cũ yêu cầu cập nhật mới: - Thực việc cập nhật phiên mới: Sinh viên tham khảo thêm thơng tin tại: https://github.com/f0ma/pyswip3 Trang web download: https://code.google.com/archive/p/pyswip/downloads *Lưu ý: Trong Windows, gói pyswip bị lỗi cài đặt (do thiếu thư viện libswipl), sau: Khi đó, nên kiểm tra việc thiết lập đường dẫn (path) thư mục Anaconda\Library\bin thực việc cài đặt bổ sung gói SWI-Prolog tương thích với Windows địa chỉ: http://www.swi-prolog.org/download/devel (/devel /stable) với việc thiết lập đường dẫn Path (tại Enviroment Variables cho thư mục cài đặt) Sau đó, tắt khởi động trình IDLE để tải lại thư viện Hiển nhiên, xóa gói lệnh pip uninstall pyswip thực cài đặt Thực hành Toán rời rạc Trang 14 Bộ môn Khoa học Dữ liệu 5.3 Minh họa sử dụng gói pyswip Dưới số ví dụ đơn giản sử dụng gói pyswip Lưu ý: - Dữ liệu phải viết thường, không viết hoa; Hạn chế khoảng trắng, ví dụ khơng có khoảng trắng: phaichet(X):-connguoi(X); Các từ khóa phải viết mơ tả, như: X, Y, What, Which Ví dụ 1: Liệt kê liệu tác giả tác phẩm Sinh viên thực hành nhập lệnh đây: >>> from pyswip import Prolog >>> tgtph = Prolog() # khai báo quan hệ tác giả tác phẩm đối tượng Prolog >>> tgtph.assertz('tacgiatacpham(nguyendu,truyenkieu)') # nhập liệu nguyendu, truyenkieu >>> tgtph.assertz('tacgiatacpham(nguyendu,thanhhienthitap)') >>> tgtph.assertz('tacgiatacpham(nguyendu,namtrungtapngam)') >>> tgtph.assertz('tacgiatacpham(nguyendu,bachanhluctap)') >>> list(tgtph.query('tacgiatacpham(nguyendu, X)')) # truy vấn kết nhập ……………………………………………………………………… sinh viên điền kết ……………………………………………………………………… >>> for tg in tgtph.query('tacgiatacpham(X, Y)'): Thực hành Toán rời rạc # truy vấn : liệt kê toàn Trang 15 Bộ môn Khoa học Dữ liệu print(tg["X"], ' viet tac pham: ', tg["Y"]) ……………………………………………………………………… sinh viên điền kết ……………………………………………………………………… ……………………………………………………………………… ……………………………………………………………………… Ví dụ 2: Suy luận tam đoạn luận: Tam đoạn luận cách suy luận diễn dịch Mệnh đề: ‘Mọi người phải chết!’ Dữ liệu: Ông Micheal Jackson người Suy ra: ông Micheal Jackson phải chết Sinh viên thực bước sau: - Khai báo mệnh đề: phaichet(X) với X đối tượng connguoi Khai báo liệu connguoi, như: micheal_jackson,… (bằng lệnh assertz) Tạo truy vấn, nghĩa kết quả: (Which) người? (What) phải chết? ……………………………………………………………………… sinh viên điền kết ……………………………………………………………………… sinh viên điền kết Thực hành Toán rời rạc Trang 16 ... 15 Thực hành Tốn rời rạc Trang Bộ mơn Khoa học Dữ liệu CHƯƠNG 5: QUAN HỆ TRONG TẬP HỢP Mục tiêu: - Tìm hiểu loại quan hệ hai tập hợp - Biểu diễn quan hệ, suy luận toán học Python - Các ứng... bắt cầu Ví dụ: quan hệ ≤ số thực, số nguyên; quan hệ ước số số nguyên Với tập số nguyên dương: - Quan hệ ≤ quan hệ thứ tự toàn phần tập Vì số có quan hệ Quan hệ “ước số” quan hệ thứ tự khơng... ……………………………………………………………… Quan hệ tập hợp: - Định nghĩa: Một quan hệ hai từ tập A đến tập B tập tích Descarte Kí hiệu: a R b [thay cho (a, b) ∈ R] ⊆ × Ví dụ: - Quan hệ tập: tập sinh viên; B tập lớp học Khi