Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 163 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
163
Dung lượng
3,43 MB
Nội dung
ThS KHNG TH QUNH TOáN RờI RạC TRNG I HC LÂM NGHIỆP - 2019 ThS KHƢƠNG THỊ QUỲNH BÀI GIẢNG TOÁN RỜI RẠC TRƢỜNG ĐẠI HỌC LÂM NGHIỆP - 2019 MỤC LỤC MỤC LỤC i LỜI NÓI ĐẦU Chƣơng THUẬT TOÁN 1.1 Khái niệm thuật toán 1.1.1 Định nghĩa 1.1.2 Các đặc trưng thuật toán 1.2 Thuật tốn tìm kiếm 1.2.1 Bài tốn tìm kiếm 1.2.2 Thuật tốn tìm kiếm tuyến tính 1.2.3 Thuật tốn tìm kiếm nhị phân 1.3 Độ phức tạp thuật toán 1.3.1 Khái niệm độ phức tạp thuật toán 1.3.2 So sánh độ phức tạp thuật toán 1.3.3 Đánh giá độ phức tạp thuật toán 11 1.4 Số nguyên thuật toán 13 1.4.1 Thuật toán Euclide 13 1.4.2 Biểu diễn số nguyên 15 1.4.3 Thuật tốn cho phép tính số ngun 16 1.5 Thuật toán đệ quy 19 1.5.1 Khái niệm đệ quy 19 1.5.2 Đệ quy lặp 20 CÂU HỎI VÀ BÀI TẬP CHƢƠNG 23 Chƣơng BÀI TOÁN ĐẾM 25 2.1 Cơ sở phép đếm 25 2.1.1 Những nguyên lý đếm 25 2.1.2 Nguyên lý bù trừ 27 2.2 Nguyên lý dirichlet 29 2.2.1 Mở đầu 29 2.2.2 Nguyên lý Dirichlet tổng quát 29 2.2.3 Một số ứng dụng nguyên lý Dirichlet 30 2.3 Chỉnh hợp va tổ hợp suy rộng 32 2.3.1 Chỉnh hợp có lặp 32 i 2.3.2 Tổ hợp lặp 32 2.3.3 Hoán vị tập hợp có phần tử giống 33 2.3.4 Sự phân bố đồ vật vào hộp 33 2.4 Sinh hoán vị tổ hợp 34 2.4.1 Sinh hoán vị 34 2.4.2 Sinh tổ hợp 35 2.5 Hệ thức truy hồi 36 2.5.1 Khái niệm mở đầu mơ hình hóa hệ thức truy hồi 36 2.5.2 Giải hệ thức truy hồi 37 2.6 Quan hệ chia để trị 38 2.6.1 Mở đầu 38 2.6.2 Hệ thức chia để trị 39 BÀI TẬP CHƢƠNG 41 Chƣơng ĐỒ THỊ 43 3.1 Định nghĩa thí dụ 43 3.1.1 Định nghĩa 44 3.1.2 Định nghĩa 44 3.1.3 Định nghĩa 44 3.1.4 Định nghĩa 44 3.1.5 Định nghĩa 45 3.2 Bậc đỉnh 46 3.2.1 Định nghĩa 46 3.2.2 Định nghĩa 46 3.2.3 Mệnh đề 46 3.2.4 Hệ 46 3.2.5 Mệnh đề 47 3.2.6 Định nghĩa 47 3.2.7 Định nghĩa 47 3.2.8 Mệnh đề 47 3.3 Những đơn đồ thị đặc biệt 48 3.3.1 Đồ thị đầy đủ 48 3.3.2 Đồ thị vòng 48 3.3.3 Đồ thị bánh xe 48 3.3.4 Đồ thị lập phương 49 ii 3.3.5 Đồ thị phân đôi (đồ thị hai phe) 49 3.3.6 Một vài ứng dụng đồ thị đặc biệt 49 3.4 Biểu diễn đồ thị ma trận đẳng cấu đồ thị 52 3.4.1 Định nghĩa 52 3.4.3 Định nghĩa 53 3.5 Các đồ thị từ đồ thị cũ 54 3.5.1 Định nghĩa 54 3.5.2 Định nghĩa 55 3.5.3 Định nghĩa 55 3.6 Tính liên thơng 56 3.6.1 Định nghĩa 56 3.6.2 Định nghĩa 56 3.6.3 Định nghĩa 57 3.6.4 Mệnh đề 57 3.6.5 Mệnh đề 57 3.6.6 Hệ 58 3.6.7 Mệnh đề 58 3.6.8 Mệnh đề 58 3.6.9 Định lý 58 3.6.10 Định nghĩa 59 3.6.11 Mệnh đề 60 BÀI TẬP CHƢƠNG 61 Chƣơng ĐỒ THỊ EULER VÀ ĐỒ THỊ HAMILTON 64 4.1 Đƣờng euler đồ thị euler 64 4.1.1 Định nghĩa 64 4.1.2 Định lý 65 4.1.3 Bổ đề 65 4.1.4 Hệ 66 4.1.5 Chú ý 67 4.1.6 Bài toán người phát thư Trung Hoa 67 4.1.7 Định lý 69 4.1.8 Bổ đề 69 4.1.9 Hệ 69 4.2 Đƣờng hamilton đồ thị hamilton 69 iii 4.2.1 Định nghĩa 70 4.2.2 Định lý (Rédei) 71 4.2.3 Định lý (Dirac, 1952) 72 4.2.4 Hệ 73 4.2.5 Định lý (Ore, 1960) 73 4.2.6 Định lý 73 4.2.7 Bài toán xếp chỗ ngồi 74 BÀI TẬP CHƢƠNG 76 Chƣơng MỘT SỐ BÀI TOÁN TỐI ƢU TRÊN ĐỒ THỊ 78 5.1 Đồ thị có trọng số tốn đƣờng ngắn 78 5.1.1 Mở đầu 78 5.1.2 Bài tốn tìm đường ngắn 78 5.1.3 Thuật toán Dijkstra 79 5.1.4 Định lý 80 5.1.5 Mệnh đề 81 5.1.6 Thuật toán Floyd 81 5.1.7 Định lý 82 5.2 Bài toán luồng cực đại 84 5.2.1 Luồng vận tải 84 5.2.2 Bài toán luồng cực đại 85 5.3 Bài toán du lịch 91 5.3.1 Giới thiệu toán 91 5.3.2 Phương pháp nhánh cận 92 5.3.3 Cơ sở lý luận phép toán 92 5.3.4 Ma trận rút gọn 92 5.3.5 Mệnh đề 93 5.3.6 Phân nhánh 93 5.3.7 Tính cận 94 5.3.8 Thủ tục ngăn chặn hành trình 95 5.3.9 Tính chất tối ưu 95 BÀI TẬP CHƢƠNG 98 Chƣơng CÂY 101 6.1 Định nghĩa tính chất 101 6.1.1 Định nghĩa 101 iv 6.1.2 Mệnh đề 101 6.1.3 Định lý 102 6.2 Cây khung tốn tìm khung nhỏ 103 6.2.1 Định nghĩa 103 6.2.2 Bài tốn tìm khung nhỏ 103 6.2.3 Thuật toán Kruskal 104 6.2.4 Thuật toán Prim 105 6.3 Cây có gốc 108 6.3.1 Định nghĩa 108 6.3.2 Định nghĩa 109 6.3.3 Định nghĩa 109 6.3.4 Mệnh đề 109 6.3.5 Mệnh đề 109 6.4 Duyệt nhị phân 110 6.4.1 Định nghĩa 110 6.4.2 Các thuật toán duyệt nhị phân 111 6.4.3 Ký pháp Ba Lan 114 BÀI TẬP CHƢƠNG 117 Chƣơng ĐỒ THỊ PHẲNG VÀ TÔ MÀU ĐỒ THỊ 120 7.1 Đồ thị phẳng 120 7.1.1 Định nghĩa 120 7.1.2 Định nghĩa 121 7.1.3 Định lý (Euler, 1752) 121 7.1.4 Hệ 122 7.2 Đồ thị không phẳng 122 7.2.1 Định lý 122 7.2.2 Định lý 123 7.2.4 Định lý (Kuratowski) 123 7.3 Tô màu đồ thị 124 7.3.1 Tô màu đồ 124 7.3.2 Tô màu đồ thị 125 7.3.3 Mệnh đề 125 7.3.4 Mệnh đề 126 7.3.5 Mệnh đề 126 v 7.3.6 Định lý (Định lý màu Kempe-Heawood) 126 7.3.7 Định lý (Định lý màu Appel-Haken) 127 7.3.8 Những ứng dụng toán tô màu đồ thị 128 BÀI TẬP CHƢƠNG 130 Chƣơng ĐẠI SỐ BOOLE 132 8.1 Khái niệm đại số boole 132 8.1.1 Định nghĩa 132 8.1.2 Chú ý 134 8.1.3 Định lý 134 8.1.4 Chú ý 135 8.2 Hàm boole 136 8.2.1 Định nghĩa 136 8.2.2 Định nghĩa 138 8.2.3 Mệnh đề 139 8.2.4 Hệ 139 8.2.5 Hệ 139 8.2.6 Chú ý 140 8.3 Mạch lôgic 140 8.3.1 Cổng lôgic 140 8.3.2 Mạch lôgic 141 8.4 Cực tiểu hố mạch lơgic 146 8.4.1 Bản đồ Karnaugh 147 8.4.2 Phương pháp Quine-McCluskey 149 BÀI TẬP CHƢƠNG 154 TÀI LIỆU THAM KHẢO 156 vi LỜI NĨI ĐẦU Tốn rời rạc lĩnh vực toán học nghiên cứu đối tƣợng rời rạc Chúng ta sử dụng cơng cụ tốn rời rạc phải đếm đối tƣợng, nghiên cứu quan hệ tập rời rạc, phân tích q trình hữu hạn Một nguyên nhân chủ yếu làm nâng tầm quan trọng toán rời rạc việc cất giữ xử lý thơng tin máy tính chất q trình rời rạc Mơn Tốn rời rạc môn ngành Công nghệ thông tin Cuốn giảng đƣợc viết cho sinh viên năm thứ ngành Công nghệ thông tin, đề cập tới kiến thức ba lĩnh vực có nhiều ứng dụng tốn rời rạc Lý thuyết tổ hợp, lý thuyết đồ thị hàm đại số logic Nội dung tài liệu đƣợc bố trí phần, khơng kể lời nói đầu, mục lục, tài liệu tham khảo phần phụ lục: - Phần đƣợc dành cho Chƣơng I đề cập đến Thuật toán; - Phần đƣợc dành cho Chƣơng II nói đến tốn đếm; - Phần phần chiếm nhiều trang giáo trình, bàn Lý thuyết đồ thị ứng dụng gồm chƣơng: Đồ thị, Đồ thị Euler đồ thị Hamilton, Một số toán tối ưu đồ thị, Cây, Đồ thị phẳng tô màu đồ thị; - Phần đƣợc dành cho Chƣơng 8, chƣơng cuối cùng, đề cập đến Đại số Boole Trong chƣơng, chứng minh định lý, mệnh đề đƣợc trình bày chi tiết, ngoại trừ số định lý có phần chứng minh q phức tạp đƣợc bỏ qua Trong phần chƣơng có nhiều ví dụ cụ thể minh hoạ cho khái niệm nhƣ kết chúng Cuối chƣơng tập đƣợc chọn lọc từ dễ đến khó, bám theo nội dung chƣơng Chúng tơi xin chân thành cám ơn đồng nghiệp động viên góp ý cho cơng việc viết giảng mơn Tốn rời rạc Nhóm tác giả mong nhận đƣợc giáo đồng nghiệp độc giả thiếu sót khó tránh khỏi sách Nhóm tác giả Chƣơng THUẬT TỐN Có nhiều lớp tốn tổng qt xuất toán học rời rạc Chẳng hạn, cho dãy số nguyên, tìm số lớn nhất; cho tập hợp, liệt kê tập nó; cho tập hợp số nguyên, xếp chúng theo thứ tự tăng dần; cho mạng, tìm đƣờng ngắn hai đỉnh Khi đƣợc giao cho tốn nhƣ việc phải làm xây dựng mơ hình dịch tốn thành ngữ cảnh tốn học Các cấu trúc rời rạc đƣợc dùng mơ hình tập hợp, dãy, hàm, hoán vị, quan hệ, với cấu trúc khác nhƣ đồ thị, cây, mạng - khái niệm đƣợc nghiên cứu chƣơng sau Lập đƣợc mơ hình tốn học thích hợp phần q trình giải Để hồn tất q trình giải, cịn cần phải có phƣơng pháp dùng mơ hình để giải tốn tổng qt Nói cách lý tƣởng, đƣợc đòi hỏi thủ tục, dãy bƣớc dẫn tới đáp số mong muốn Một dãy bƣớc nhƣ vậy, đƣợc gọi thuật toán Khi thiết kế cài đặt phần mềm tin học cho vấn đề đó, ta cần phải đƣa phƣơng pháp giải mà thực chất thuật tốn giải vấn đề Rõ ràng rằng, khơng tìm đƣợc phƣơng pháp giải khơng thể lập trình đƣợc Chính thế, thuật tốn khái niệm tảng hầu hết lĩnh vực tin học 1.1 Khái niệm thuật toán 1.1.1 Định nghĩa Thuật toán bảng liệt kê dẫn (hay quy tắc) cần thực theo bƣớc xác định nhằm giải toán cho Thuật ngữ “Algorithm” (thuật toán) xuất phát từ tên nhà toán học Ả Rập Al-Khowarizmi Ban đầu, từ algorism đƣợc dùng để quy tắc thực phép tính số học số thập phân Sau đó, algorism chuyển thành algorithm vào kỷ 19 Với quan tâm ngày tăng máy tính, khái niệm thuật toán đƣợc cho ý nghĩa chung hơn, bao hàm thủ tục xác định để giải tốn, khơng phải thủ tục để thực phép tính số học Có nhiều cách trình bày thuật tốn: dùng ngơn ngữ tự nhiên, ngơn ngữ lƣu đồ (sơ đồ khối), ngơn ngữ lập trình Tuy nhiên, dùng ngơn ngữ lập trình Thí dụ 8.6: Xây dựng mạch lơgic thực hàm Boole cho bảng sau: x 0 0 1 1 y 0 1 0 1 z 1 1 F(x, y, z) 0 0 1 Theo bảng này, hàm F có dạng tổng (tuyển) chuẩn tắc hoàn toàn là: F ( x, y, z ) xyz xy z x yz Hình dƣới vẽ mạch lơgic thực hàm F cho x y z F xyz xy z x yz Biểu thức F(x, y, z) rút gọn: xyz xy z x yz xy( z z) x yz xy x yz Hình dƣới cho ta mạch lôgic thực hàm xy x yz x y • • F xy x yz z 142 Hai mạch lơgic hai hình thực hàm Boole, ta nói hai mạch lôgic tƣơng đƣơng, nhƣng mạch lôgic thứ hai đơn giản Vấn đề tìm mạch lơgic đơn giản thực hàm Boole F cho trƣớc gắn liền với vấn đề tìm biểu thức đơn giản biểu diễn hàm Đây vấn đề khó lý thú, ý nghĩa thực tiễn khơng cịn nhƣ chục năm trƣớc Ta vừa xét việc thực hàm Boole mạch lôgic gồm cổng NOT, AND, OR Dựa vào đẳng thức x y x y nhƣ xy x y , cho ta biết hệ {., −} hệ {+, −} hệ đầy đủ Do đó, thực hàm Boole mạch lơgic gồm có cổng NOT, AND NOT, OR Xét hàm Sheffer F(x, y)= x - y = 0 x = y = 1, Mạch lôgic thực 1 x = hay y = hàm gọi cổng NAND, đƣợc vẽ nhƣ hình dƣới đây: x y x O y Dựa vào đẳng thức: x x x, xy ( x y) ( x y), x y ( x x) ( y y) , cho ta biết hệ { } đầy đủ, nên hàm Boole thực đƣợc mạch lơgic gồm có cổng NAND x = hay y = Mạch lôgic thực Xét hàm Vebb F(x, y)= x¯y = 1 x = y = hàm gọi cổng NOR, đƣợc vẽ nhƣ hình dƣới đây: x y x O y Tƣơng tự hệ { } đầy đủ nên hàm Boole thực đƣợc mạch lơgic gồm có cổng NOR Một phép tốn lơgic quan trọng khác phép tuyển loại: 0 x y, F ( x, y ) x y 1 x y Mạch lôgic cổng lôgic, gọi cổng XOR, đƣợc vẽ nhƣ hình dƣới đây: x y x y 143 b Mạch cộng Nhiều tốn địi hỏi phải xây dựng mạch lơgic có nhiều đƣờng ra, cho đầu F1, F2, …, Fk hàm Boole đầu vào x1, x2, …, xn x1 x2 xn-1 xn F1(x1, x2, …, xn) F2(x1, x2, …, xn) Fk(x1, x2, …, xn) Chẳng hạn, ta xét phép cộng hai số tự nhiên từ khai triển nhị phân chúng Trƣớc hết, ta xây dựng mạch duợc dùng để tìm x + y với x, y hai số 1-bit Đầu vào mạch x y Đầu số 2-bit cs , s bit tổng c bit nhớ + = 00 x 0 1 + = 01 + = 01 + = 10 y 1 c 0 s 1 Từ bảng trên, ta thấy s x y, c xy Ta vẽ đƣợc mạch thực hai hàm s x y c xy nhƣ hình dƣới Mạch gọi mạch cộng hai số 1-bit hay mạch cộng bán phần, ký hiệu DA s x y • x y c xy • Xét phép cộng hai số 2-bit a2 a1 b2b1 : a a1 b2 b1 Thực phép cộng theo cột, cột thứ (từ phải sang trái) ta tính a1 b1 đƣợc bit tổng s1 bit nhớ c1; cột thứ hai, ta tính a2 b2 c1 , tức phải cộng ba số 1-bit 144 Cho x, y, z ba số 1-bit Tổng x + y + z số 2-bit cs , s bit tổng x + y + z c bit nhớ x + y + z Các hàm Boole s c theo biến x, y, z đƣợc xác định bảng sau: x 0 0 1 1 y 0 1 0 1 z 1 1 c s 1 0 0 1 1 Từ bảng này, dễ dàng thấy rằng: s x y z Hàm c viết dƣới dạng tổng chuẩn tắc hồn toàn là: c x yz x yz xy z xyz Cơng thức c rút gọn: c z( xy x y) xy( z z) z( x y) xy Ta vẽ đƣợc mạch thực hai hàm Boole s x y z c z( x y) xy nhƣ hình dƣới đây, mạch ghép nối hai mạch cộng bán phần (DA) cổng OR Đây mạch cộng ba số 1-bit hay mạch cộng toàn phần, ký hiệu AD z • x y • s • • c z s x y DA DA c 145 x y z AD s c Trở lại phép cộng hai số 2-bit a2 a1 b2b1 Tổng a2 a1 + b2b1 số 3bit c2 s2 s1 , s1 bit tổng a1 + b1: s1 a1 b1 , s2 bit tổng a2 + b2 + c1, với c1 bit nhớ a1 + b1: s2 a2 b2 c1 c2 bit nhớ a2 + b2 + c1 Ta có đƣợc mạch thực ba hàm Boole s1, s2, c2 nhƣ hình dƣới đây: b2 a2 b1 a1 AD DA c1 c2 s2 s1 Dễ dàng suy mạch cộng hai số n-bit, với n số nguyên dƣơng Hình sau cho mạch cộng hai số 4-bit b4 a4 b3 a3 b2 a2 b1 a1 AD AD AD DA c2 c3 c4 s4 s3 c1 s2 s1 8.4 Cực tiểu hố mạch lơgic Hiệu mạch tổ hợp phụ thuộc vào số cổng bố trí cổng Q trình thiết kế mạch tổ hợp đƣợc bắt đầu bảng rõ giá trị đầu tổ hợp giá trị đầu vào Ta ln ln sử dụng khai triển tổng tích mạch để tìm tập cổng lơgic thực mạch Tuy nhiên, khai triển tổng tích chứa số hạng nhiều mức cần thiết Các số hạng khai triển tổng tích khác biến, cho số hạng xuất biến số hạng xuất phần bù nó, đƣợc tổ hợp lại Chẳng hạn, xét mạch có đầu x = y = z = x = z = y = Khai triển tổng tích mạch xyz x yz Hai tích khai triển khác biến, biến y Ta tổ hợp lại nhƣ sau: 146 xyz x yz ( y y) xz 1xz xz Do đó, xz biểu thức với phép tốn biểu diễn mạch cho Mạch thứ hai dùng cổng, mạch thứ phải dùng ba cổng đảo (cổng NOT) 8.4.1 Bản đồ Karnaugh Để làm giảm số số hạng biểu thức Boole biểu diễn mạch, ta cần phải tìm số hạng để tổ hợp lại Có phƣơng pháp đồ thị, gọi đồ Karnaugh, đƣợc dùng để tìm số hạng tổ hợp đƣợc hàm Boole có số biến tƣơng đối nhỏ Phƣơng pháp mà ta mô tả dƣới đƣợc Maurice Karnaugh đƣa vào năm 1953 Phƣơng pháp dựa cơng trình trƣớc E W Veitch Các đồ Karnaugh cho ta phƣơng pháp trực quan để rút gọn khai triển tổng tích, nhƣng chúng khơng thích hợp với việc khí hố q trình Trƣớc hết, ta minh hoạ cách dùng đồ Karnaugh để rút gọn biểu thức hàm Boole hai biến Có bốn hội sơ cấp khác khai triển tổng tích hàm Boole có hai biến x y Một đồ Karnaugh hàm Boole hai biến gồm bốn ô vng, hình vng biểu diễn hội sơ cấp có mặt khai triển đƣợc ghi số Các hình đƣợc gọi kề hội sơ cấp mà chúng biểu diễn khác biến y y x xy xy x xy xy Thí dụ 8.7: Tìm đồ Karnaugh cho biểu thức rút gọn chúng: a) xy x y b) x y x y c) x y x y x y Ta ghi số vào ô vuông hội sơ cấp đƣợc biểu diễn có mặt khai triển tổng tích Ba đồ Karnaugh đƣợc cho hình sau Việc nhóm hội sơ cấp đƣợc hình cách sử dụng đồ Karnaugh cho khai triển Khai triển cực tiểu tổng tích tƣơng ứng là: 147 b) x y x y , a) y, c) x y Bản đồ Karnaugh ba biến hình chữ nhật đƣợc chia thành tám Các biểu diễn tám hội sơ cấp có đƣợc Hai đƣợc gọi kề hội sơ cấp mà chúng biểu diễn khác biến Một cách để lập đồ Karnaugh ba biến đƣợc cho hình bên yz yz yz yz x xyz xy z xyz x yz x x yz xy z xyz x yz Để rút gọn khai triển tổng tích ba biến, ta dùng đồ Karnaugh để nhận dạng hội sơ cấp tổ hợp lại Các khối gồm hai ô kề biểu diễn cặp hội sơ cấp đƣợc tổ hợp lại thành tích hai biến; khối x x biểu diễn hội sơ cấp tổ hợp lại thành biến nhất; cịn khối gồm tất tám biểu diễn tích khơng có biến nào, cụ thể biểu thức Thí dụ 8.8: Dùng đồ Karnaugh ba biến để rút gọn khai triển tổng tích sau: a) xyz xyz xyz xyz; b) x yz x y z x yz x yz x y z ; c) xyz xy z x yz x y z x yz x yz x y z Bản đồ Karnaugh cho khai triển tổng tích đƣợc cho hình sau: 148 Việc nhóm thành khối cho thấy khai triển cực tiểu thành tổng Boole tích Boole là: b) y xz , a) x z y z x yz , c) x y z Bản đồ Karnaugh bốn biến hình vng đƣợc chia làm 16 Các biểu diễn 16 hội sơ cấp có đƣợc Một cách lập đồ Karnaugh bốn biến đƣợc cho hình dƣới yz yz yz yz wxyz wxy z wx y z wx yz wx w x yz wxy z wx y z wx yz wx w x yz wxy z wx y z w x yz wxyz wxy z wx y z wx yz wx wx Hai ô đƣợc gọi kề hội sơ cấp mà chúng biểu diễn khác biến Do đó, kề với bốn khác Sự rút gọn khai triển tổng tích bốn biến đƣợc thực cách nhận dạng khối gồm 2, 4, 16 ô biểu diễn hội sơ cấp tổ hợp lại đƣợc Mỗi ô biểu diễn hội sơ cấp đƣợc dùng để lập tích có biến đƣợc đƣa vào khai triển Cũng nhƣ trƣờng hợp đồ Karnaugh hai ba biến, mục tiêu cần phải nhận dạng khối lớn có chứa số cách dùng số khối, mà trƣớc hết khối lớn 8.4.2 Phương pháp Quine-McCluskey 8.4.2.1 Mở đầu Ta thấy đồ Karnaugh đƣợc dùng để tạo biểu thức cực tiểu hàm Boole nhƣ tổng tích Boole Tuy nhiên, đồ Karnaugh khó dùng số biến lớn bốn Hơn nữa, việc dùng đồ Karnaugh lại dựa việc rà soát trực quan để nhận dạng số hạng cần đƣợc nhóm lại Vì nguyên nhân đó, cần phải có thủ tục rút gọn khai triển tổng tích khí hố đƣợc Phƣơng pháp QuineMcCluskey thủ tục nhƣ Nó đƣợc dùng cho hàm Boole có 149 số biến Phƣơng pháp đƣợc W V Quine E J McCluskey phát triển vào năm 1950 Về bản, phƣơng pháp Quine-McCluskey có hai phần Phần đầu tìm số hạng ứng viên để đƣa vào khai triển cực tiểu nhƣ tổng tích Boole mà ta gọi nguyên nhân nguyên tố Phần thứ hai xác định xem số ứng viên đó, số hạng thực dùng đƣợc 8.4.2.2 Định nghĩa Cho hai hàm Boole F G bậc n Ta nói G nguyên nhân F TG TF, nghĩa G F Dễ thấy hội sơ cấp dạng tổng chuẩn tắc F nguyên nhân F Hội sơ cấp A F đƣợc gọi nguyên nhân nguyên tố F A xố biến hội nhận đuợc khơng nguyên nhân F Nếu F1, …, Fk nguyên nhân F TFi TF , i k k Khi đó: T k Fi i 1 TFi TF Do đó, i 1 k Fi nguyên nhân F i 1 Cho S hệ nguyên nhân F Ta nói hệ S đầy đủ F F G , nghĩa TF TG GS GS 8.4.2.3 Mệnh đề Hệ nguyên nhân nguyên tố hàm F hệ đầy đủ Chứng minh: Gọi S hệ nguyên nhân nguyên tố F Ta có TG TF , g S Nên T G GS F TG TF Giả sử dạng tổng chuẩn tắc hoàn toàn F GS G' nên TF TG' G 'S ' G 'S ' Xét G' S ' , G’ nguyên nhân ngun tố F cách xố bớt số biến G’ ta thu đƣợc nguyên nhân nguyên tố G F Khi TG' TG TG' TG G 'S ' Vì TF TG hay F TG GS G GS GS Dạng tổng chuẩn tắc F GS hay TF G đƣợc gọi dạng tổng chuẩn tắc thu gọn F GS 150 8.4.2.4 Phương pháp Quine-McCluskey tìm dạng tổng chuẩn tắc thu gọn Giả sử F hàm Boole n biến x1, x2, …, xn Mỗi hội sơ cấp n biến đƣợc biểu diễn dãy n ký hiệu bảng {0, 1, −} theo quy ƣớc: ký tự thứ i hay xi có mặt hội sơ cấp bình thƣờng hay với dấu phủ định, cịn xi khơng có mặt ký tự − Chẳng hạn, hội sơ cấp biến x1, …, x6 x1x3 x4 x6 đƣợc biểu diễn 0−11−0 Hai hội sơ cấp đƣợc gọi kề biểu diễn nói chúng khác vị trí 0, Rõ ràng hội sơ cấp dán đƣợc với phép dán Ax A x A chúng kề Thuật toán đƣợc tiến hành nhƣ sau: Lập bảng gồm nhiều cột để ghi kết dán Sau lần lƣợt thực bƣớc sau: - Bƣớc 1: Viết vào cột thứ biểu diễn nguyên nhân hạng n hàm Boole F Các biểu diễn đƣợc chia thành nhóm, biểu diễn nhóm có số ký hiệu nhóm xếp theo thứ tự số ký hiệu tăng dần; - Bƣớc 2: Lần lƣợt thực tất phép dán biểu diễn nhóm i với biểu diễn nhóm i + (i = 1, …) Biểu diễn tham gia phép dán đƣợc ghi nhận dấu * bên cạnh Kết dán đƣợc ghi vào cột tiếp theo; - Bƣớc 3: Lặp lại Bƣớc cho cột không thu thêm đƣợc cột Khi tất biểu diễn khơng có dấu * cho ta tất nguyên nhân nguyên tố F Thí dụ 8.9: Tìm dạng tổng chuẩn tắc thu gọn hàm Boole: F1 wx yz wx yz wx yz wx yz wx yz wxyz wxyz F2 wx y z wx yz wx yz wx y z wx yz wxy z wxyz 0001* 0101* 0011* 1001* 1011* 0111* 1111* 0−01* 00−1* −001* −011* 10−1* 01−1* 0−11* 1−11* −111* 0−−1 −0−1 −−11 0010* 0011* 1100* 1011* 1101* 1110* 1111* 151 001− −011 110−* 11−0* 1−11 11−1* 111−* 11−− Từ bảng ta có dạng tổng chuẩn tắc thu gọn F1 F2 là: F1 wz xz yz F2 wx y x yz wyz wx 8.4.2.5 Phương pháp Quine-McCluskey tìm dạng tổng chuẩn tắc tối thiểu Sau tìm đƣợc dạng tổng chuẩn tắc thu gọn hàm Boole F, nghĩa tìm đƣợc tất nguyên nhân nguyên tố nó, ta tiếp tục phƣơng pháp Quine-McCluskey tìm dạng tổng chuẩn tắc tối thiểu (cực tiểu) F nhƣ sau: Lập bảng chữ nhật, cột ứng với cấu tạo đơn vị F (mỗi cấu tạo đơn vị hội sơ cấp hạng n dạng tổng chuẩn tắc hồn tồn F) dịng ứng với nguyên nhân nguyên tố F Tại ô (i, j), ta đánh dấu cộng (+) nguyên nhân nguyên tố dòng i phần cấu tạo đơn vị cột j Ta nói nguyên nhân nguyên tố i phủ cấu tạo đơn vị j Một hệ S nguyên nhân nguyên tố F đƣợc gọi phủ hàm F cấu tạo đơn vị F đƣợc phủ thành viên hệ Dễ thấy hệ S phủ hàm F đầy đủ, nghĩa tổng thành viên S F Một nguyên nhân nguyên tố đƣợc gọi cốt yếu thiếu hệ nguyên nhân nguyên tố phủ hàm F Các nguyên nhân nguyên tố cốt yếu đƣợc tìm nhƣ sau: cột có dấu +, xem dấu + thuộc dịng dịng ứng với ngun nhân ngun tố cốt yếu Việc lựa chọn nguyên nhân nguyên tố bảng đánh dấu, để đƣợc dạng tổng chuẩn tắc tối thiểu, tiến hành theo bƣớc sau: - Bƣớc 1: Phát tất nguyên nhân nguyên tố cốt yếu; - Bƣớc 2: Xoá tất cột đƣợc phủ nguyên nhân nguyên tố cốt yếu; - Bƣớc 3: Trong bảng lại, xố nốt dịng khơng cịn dấu + sau có hai cột giống xố bớt cột; - Bƣớc 4: Sau bƣớc trên, tìm hệ S nguyên nhân nguyên tố với số biến phủ cột cịn lại Tổng nguyên nhân nguyên tố cốt yếu nguyên nhân nguyên tố hệ S dạng tổng chuẩn tắc tối thiểu hàm F Các bƣớc 1, 2, có tác dụng rút gọn bảng trƣớc lựa chọn Độ phức tạp chủ yếu nằm Bƣớc Tình tốt nguyên nhân nguyên tố cốt yếu Trƣờng hợp lựa chọn hàm F có 152 dạng tổng chuẩn tắc tối thiểu dạng tổng chuẩn tắc thu gọn Tình xấu khơng có ngun nhân ngun tố cốt yếu Trƣờng hợp ta phải lựa chọn toàn bảng Thí dụ 8.10: Tìm dạng tổng chuẩn tắc tối thiểu hàm Boole cho Thí dụ w x yz wx yz w x yz wz + + + xz yz + + w x yz w x yz + + + + wxyz wxyz + + Các nguyên nhân nguyên tố cốt yếu nên dạng tổng chuẩn tắc tối thiểu F1 là: F1 wz xz yz wxy z w x yz w x yz wx wxy x yz wyz + wx y z wx yz wxy z wxyz + + + + + + + + + Các nguyên nhân nguyên tố cốt yếu nằm dòng Sau rút gọn, bảng dòng 3, cột Việc chọn S đơn giản: chọn hai nguyên nhân nguyên tố lại Vì ta đƣợc hai dạng tổng chuẩn tắc tối thiểu là: F2 wx wx y x yz F2 wx wx y wyz 153 BÀI TẬP CHƢƠNG Cho S tập hợp ƣớc nguyên dƣơng 70, với phép tốn •, + ’ đƣợc định nghĩa S nhƣ sau: a • b = UCLN(a, b), a + b = BCNN(a, b), a’ = 70/a Chứng tỏ S với phép tốn •, + ’ lập thành đại số Boole Chứng minh trực tiếp định lý 6b, 7b, 8b (không dùng đối ngẫu để suy từ 6a, 7a, 8a) Chứng minh rằng: a) (a + b).(a + b’) = a; b) (a.b) + (a’.c) = (a + c).(a’ + b) Cho hàm Boole F1, F2, F3 xác định bảng sau: x y z F1 F2 F3 0 1 0 1 1 0 1 1 1 0 1 1 0 1 0 1 1 1 1 Vẽ mạch thực hàm Boole Hãy dùng cổng NAND để xây dựng mạch với đầu nhƣ sau: a) x b) xy c) x+y d) x y Hãy dùng cổng NOR để xây dựng mạch với đầu đƣợc cho Bài tập Hãy dùng cổng NAND để dựng mạch cộng bán phần Hãy dùng cổng NOR để dựng mạch cộng bán phần Dùng đồ Karnaugh, tìm dạng tổng chuẩn tắc tối thiểu (khai triển cực tiểu) hàm Boole ba biến sau: a) F x yz x yz ; b) F xyz xy z x yz x y z ; 154 c) F xy z x yz x y z x yz x yz ; d) F xyz x yz x y z x yz x y z x y z 10 Dùng đồ Karnaugh, tìm dạng tổng chuẩn tắc tối thiểu hàm Boole bốn biến sau: a) F wxyz wx yz wx y z wx y z wx yz ; b) F wxy z wx yz wxyz wx yz wxy z wx yz ; c) F wxyz wxy z wx yz wx yz wx y z wx yz wxy z wx yz ; d) F wxyz wxy z wx yz wxyz wxy z wxyz wxyz wxy z wx yz 11 Dùng phƣơng pháp Quine-McCluskey, tìm dạng tổng chuẩn tắc tối thiểu hàm Boole ba biến cho Bài tập vẽ mạch thực dạng tối thiểu tìm đƣợc 12 Dùng phƣơng pháp Quine-McCluskey, tìm dạng tổng chuẩn tắc tối thiểu hàm Boole bốn biến cho Bài tập vẽ mạch thực dạng tối thiểu tìm đƣợc 13 Hãy giải thích làm dùng đồ Karnaugh để rút gọn dạng tích chuẩn tắc (tích tổng) hồn tồn hàm Boole ba biến (Gợi ý: Đánh dấu số tất tuyển sơ cấp biểu diễn tổ hợp khối tuyển sơ cấp) 14 Dùng phƣơng pháp Bài tập 13, rút gọn dạng tích chuẩn tắc hồn tồn: F ( x y z)( x y z)( x y z)( x y z) 155 TÀI LIỆU THAM KHẢO Nguyễn Cam, Chu Đức Khánh (1999) Lý thuyết đồ thị Nxb Thành phố Hồ Chí Minh Hồng Chúng (1997) Đại cương tốn học hữu hạn Nxb Giáo dục Phan Đình Diệu (1977) Lý thuyết Ơ-tơ-mat thuật tốn Nxb Đại học Trung học chuyên nghiệp Đỗ Đức Giáo (2000) Toán rời rạc Nxb Đại học Quốc Gia, Hà Nội Nguyễn Xuân Quỳnh (1995) Cơ sở toán rời rạc ứng dụng Nxb Giáo dục Đặng Huy Ruận (2000) Lý thuyết đồ thị ứng dụng Nxb Khoa học Kỹ thuật Nguyễn Tô Thành, Nguyễn Đức Nghĩa (1997) Toán rời rạc Nxb Giáo dục Claude Berge (1963) Théorie des graphes et ses applications Dunod, Paris Richard Johnsonbaugh (1992) Discrete Mathematics Macmillan Publishing Company, New york 156 ... thƣớc toán n 10 102 103 104 105 106 Các phép tính bit đƣợc sử dụng logn 3.1 0-9 s 7.1 0-9 s 1,0.1 0-8 s 1,3.1 0-8 s 1,7.1 0-8 s 2.1 0-8 s N 1 0-8 s 1 0-7 s 1 0-6 s 1 0-5 s 1 0-4 s 1 0-3 s nlogn 3.1 0-8 s 7.1 0-7 ... KHƢƠNG THỊ QUỲNH BÀI GIẢNG TOÁN RỜI RẠC TRƢỜNG ĐẠI HỌC LÂM NGHIỆP - 2019 MỤC LỤC MỤC LỤC i LỜI NÓI ĐẦU Chƣơng THUẬT TOÁN 1.1 Khái niệm thuật toán ... 1 0-4 s 1 0-3 s nlogn 3.1 0-8 s 7.1 0-7 s 1.1 0-5 s 1.1 0-4 s 2.1 0-3 s 2.1 0-2 s n2 1 0-7 s 1 0-5 s 1 0-3 s 1 0-1 s 10 s 17 phút 2n 1 0-6 s 4.1013năm * * * * n! 3.1 0-3 s * * * * * 1.4 Số nguyên thuật tốn 1.4.1