Nội dung của Bài giảng Toán rời rạc này được bố trí trong 4 phần, không kể lời nói đầu, mục lục, tài liệu tham khảo và phần phụ lục: Phần 1 được dành cho Chương I đề cập đến Thuật toán; Phần 2 được dành cho Chương II nói đến bài toán đếm; Phần 3 đây là phần chiếm nhiều trang nhất trong giáo trình, bàn về Lý thuyết đồ thị và các ứng dụng gồm 5 chương: Đồ thị, Đồ thị Euler và đồ thị Hamilton, Một số bài toán tối ưu trên đồ thị, Cây, Đồ thị phẳng và tô màu đồ thị; Phần 4 được dành cho Chương 8, chương cuối cùng, đề cập đến Đại số Boole.
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ƣớ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