Toán học rời rạc (tiếng Anh: discrete mathematics) là tên chung của nhiều ngành toán học có đối tượng nghiên cứu là các tập hợp rời rạc, các ngành này được tập hợp lại từ khi xuất hiện khoa học máy tính làm thành cơ sở toán học của khoa học máy tính. Nó còn được gọi là toán học dành cho máy tính. Người ta thường kể đến trong toán học rời rạc lý thuyết tổ hợp, lý thuyết đồ thị, lý thuyết độ phức tạp, đại số Boole. Một quan điểm rộng rãi hơn, gộp tất cả các ngành toán học làm việc với các tập hữu hạn hoặc đếm được vào toán học rời rạc như số học modulo m, lý thuyết nhóm hữu hạn, lý thuyết mật mã,...
TỐN RỜI RẠC Discrete Mathematics Fall 2009 Tốn rời rạc Nguyễn Đức Nghĩa Bộ môn Khoa học Máy tính Đại học Bách khoa Hà nội Tel: 0438696121 (Off), 0903210111 (Mob) nghiand@it-hut.edu.vn Toán rời rạc Đề nghị với lớp trưởng Hãy gửi cho danh sách lớp theo địa email nêu Toán rời rạc Tốn rời rạc gì? What is discrete mathematics? • Là phận toán học nghiên cứu đối tượng rời rạc • Rời rạc bao hàm ý phần tử phân biệt hay khơng liên tục • Các phép tốn: • • Tổ hợp: Đếm đối tượng rời rạc Các phép tốn logic, quan hệ: nói lên mối quan hệ đối tượng rời rạc • Làm việc với: Các đối tượng rời rạc: tập hợp, mệnh đề Tốn rời rạc Định nghĩa hình thức - Wikipedia Discrete mathematics, sometimes called finite mathematics, is the study of mathematical structures that are fundamentally discrete, in the sense of not supporting or requiring the notion of continuity Most, if not all, of the objects studied in finite mathematics are countable sets, such as the integers Discrete mathematics has become popular in recent decades because of its applications to computer science Concepts and notations from discrete mathematics are useful to study or express objects or problems in computer algorithms and programming languages In some mathematics curricula, finite mathematics courses cover discrete mathematical concepts for business, while discrete mathematics courses emphasize concepts for computer science majors Discrete mathematics usually includes : • • • • • • • • logic - a study of reasoning set theory - a study of collections of elements number theory combinatorics - a study of counting graph theory algorithmics - a study of methods of calculation information theory the theory of computability and complexity - a study on theoretical limitations on algorithms … Tốn rời rạc Nhập mơn Tốn rời rạc Các ứng dụng TRR: • • • • • • • • Formal Languages (computer languages) Machine translation Compiler Design Artificial Intelligence Relational Database Theory Network Routing Algorithm Design many more (almost all areas of computer science)… A building block of computer science ! Toán rời rạc Nhập mơn Tốn rời rạc Các vấn đề đề cập giáo trình này: • • Cơ sở: logic, tập hợp, ánh xạ Lý thuyết tổ hợp (Combinatorial Theory) • Lý thuyết đồ thị (Graph theory): • Bài tốn đếm • Bài tốn tồn • Bài toán liệt kê • Bài toán tối ưu • Đồ thị, Đường đi, Liên thông • Biểu diễn đồ thị • Duyệt đồ thị • Các tốn tối ưu đồ thị Toán rời rạc Tài liệu tham khảo Rosen K.H Discrete Mathematics and its Applications McGraw - Hill Book Company, 2003 Johnsonbaugh R Discrete Mathematics Prentice Hall Inc., N J., 1997 Grimaldi R.P Discrete and Combinatorial Mathematics (an Applied Introduction), AddisonWesley, 5th edition, 2004 R Graham, O Patashnik, and D.E Knuth Concrete Mathematics, Second Edition AddisonWesley, 1994 Tài liệu tham khảo Phan Đình Diệu Lý thuyết ơtơmat hữu hạn thuật toán NXB ĐHTHCN, Hà nội, 1977 Nguyễn Hữu Anh Toán rời rạc, NXB Giáo dục,1999 Nguyễn Xuân Quỳnh Cơ sởToán rời rạc ứng dụng NXB KHKT, Hà nội, 1996 Đỗ Đức Giáo Toán rời rạc NXB KHKT, Hà nội, 2001 Hoàng Chúng Đại cương toán hữu hạn NXB Giáo dục, 1997 Rosen’s Book http://www.mhhe.com/math/advmath/rosen/index.mhtml Rosen K.H Discrete Mathematics and its Applications 5th Edition, McGraw - Hill Book Company, 2003 10 Mục lc Phần I Lý thuyết Tổ hợp Chng M đầu 1.1 Sơ lược tổ hợp 1.2 Nhắc lại lý thuyết tập hợp 1.3 Một số nguyên lý 1.4 Các cấu hình tổ hợp đơn giản Chương Bài toán đếm 2.1 Giới thiệu toán 2.2 Nguyên lý bù trừ 2.3 Quy toán đơn giản 2.4 Công thức truy hồi 2.5 Liệt kê Chương Bài toán tồn 3.1 Giới thiệu toán 3.2 Phương pháp phản chứng 3.3 Nguyên lý Dirichlet 3.4 Hệ đại diện phân biệt Chương Bài toán liệt kê 4.1 Giới thiệu toán 4.2 Thuật toán độ phức tạp tính tốn 4.3 Phương pháp sinh 4.4 Thuật toán quay lui Chương Bài toán tối ưu 5.1 Phát biểu toán 5.2 Các thuật toán duyệt 5.3 Thuật toán nhánh cận giải toán người du lịch 5.4 Bài tốn lập lịch gia cơng hai mỏy Phần Lý thuyết đồ thị Chng Các khái niệm lý thuyết đồ thị 1.1 Định nghĩa đồ thị 1.2 Các thuật ngữ 1.3 Đường đi, Chu trình, Đồ thị liên thơng 1.4 Một số dạng đồ thị đặc biệt Chương Biểu diễn đồ thị máy tính 2.1 Ma trận kề Ma trận trọng số, 2.2 Danh sách cạnh 2.3 Danh sách kề Chương Các thuật tốn tìm kiếm đồ thị ứng dụng 3.1 Tìm kiếm theo chiều sâu đồ thị 3.2 Tìm kiếm theo chiều rộng đồ thị 3.3 Tìm đường kiểm tra tính liên thơng Chương Đồ thị Euler đồ thị Hamilton 4.1 Đồ thị Euler 4.2 Đồ thị Hamilton Chương Cây khung đồ thị 5.1 Cây tính chất 5.2 Cây khung đồ thị 5.3 Xây dựng tập chu trình đồ thị 5.4 Bài tốn khung nhỏ Chương Bài toán đường ngắn Chương Bài toán luồng cực đại mạng Phần Hàm đại số lôgic Chng M u Chương Dạng tuyển chuẩn tắc hàm đại số lơgic Chương Thuật tốn tìm dạng tuyển chuẩn tắc tối thiểu Tài liệu tham khảo 19 Quetions? 20 Fall 2006 Toán rời rạc 21 Fall 2006 Toán rời rạc 22 Ứng dụng: Ngơn ngữ hình thức Formal Language Formal language: • • Ngơn ngữ sinh ngữ pháp (grammars) Grammars: • Từ (Words): • • Sinh từ (words) ngơn ngữ • Xác định từ có thuộc ngơn ngữ hay khơng • Có thể tổ hợp nhiều cách • Ngữ pháp cho biết tổ hợp từ có câu hợp lệ (valid sentence) hay khơng Ứng dụng: • Thiết kế Ngơn ngữ lập trình Chương trình dịch (Programming Languages and Compilers) Fall 2006 Tốn rời rạc 23 Ứng dụng: Ngơn ngữ hình thức Ví dụ 1: • Ngơn ngữ tự nhiên: English • Có phải “the hungry rabbits eats quickly” câu tiếng • Anh? Cây cú pháp câu (Derivation tree of the sentence): sentence noun phrase Fall 2006 verb phrase article adjective noun verb adverb the hungry eats quickly rabbit Tốn rời rạc 24 Ứng dụng: Ngơn ngữ hình thức Ví dụ 2: • • Bài tốn điển hình xây dựng Chương trình dịch Xác định từ cbab có thuộc ngơn ngữ sinh ngữ pháp G = (V, T, S, P), đó: • V = a, b, c, A, B, C, S • T = a, b, c • S ký tự (starting symbol) • P luật sản xuất (productions): S AB B Cb Cb Fall 2006 A Ca Bb B Ba C cb Toán rời rạc 25 Ứng dụng: Ngơn ngữ hình thức Ví dụ (tiếp tục): • Giải: • Bắt đầu S tìm cách dẫn cbab sử dụng dãy luật sản xuất • Do có luật bắt đầu vớiS, ta phải bắt đầu với • • • Fall 2006 S AB Sử dụng luật A để thu được: S AB CaB Sử dụng luật C cb cbab bắt đầu cb: S AB CaB cbaB Cuối sử dụng luật B b: S AB CaB cbaB cbab Toán rời rạc 26 Ứng dụng: Graph Theory Ví dụ • Bài tốn cầu (Konigsberg 7-bridge problem) • Konigsberg thành phố Nga • Có vùng đất, cầu nối chúng • Euler giải toán năm 1736; khởi nguồn lý thuyết đồ thị Fall 2006 Toán rời rạc 27 Ứng dụng: Graph Theory Bài toán: Vẽ đường (hoặc vịng kín) bút chì cho qua cầu lần mà không nhấc đầu bút khỏi mặt giấy (vẽ nét) Fall 2006 Toán rời rạc 28 Ứng dụng: Lý thuyết tập hợp (Set Theory) Có phải số lượng số nguyên nhiều số lượng số nguyên dương? Có phải số lượng số nguyên nhiều số lượng số thực? Fall 2006 Toán rời rạc 29 Ứng dụng: Lý thuyết độ phức tạp (Complexity Theory) Ví dụ 5: • • Bài tốn người du lịch (The Traveling Salesman Problem) Có ứng dụng quan trọng • Cho: • Thiết kế mạch (circuit design) • Hướng lộ mạng (network routing) • nhiều tốn tin học khác • n thành phố c , c , , c • khoảng cách thành phố i j d • Fall 2006 n ij Tìm hành trình ngắn Tốn rời rạc 30 Ứng dụng: Lý thuyết độ phức tạp Ví dụ (tiếp): • • Fall 2006 Có hành trình khác nhau? • Thành phố chọn n cách, • # hành trình = n (n-1) (n-2) (2) (1) = n! (Tổ hợp) • Tổng số phép cộng = (n-1) n! (Qui tắc nhân - Rule of Product) • • • thành phố thứ hai, n-1 cách, thành phố thứ ba, n-2 cách, v.v Tính độ dài hành trình địi hỏi n-1 phép cộng Toán rời rạc 31 Ứng dụng: Lý thuyết độ phức tạp Ví dụ (tiếp): • Giả sử có PC tốc độ cao: • • • • • • Fall 2006 GHz = 1,000,000,000 ops/sec flop = nanosecond = 10-9 sec Nếu n=8, T(n) = 7•8! = 282,240 flops