BÁO CÁO T�NG K�T VÀ BÁO CÁO TÓM T�T BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC CÔNG NGHỆ ĐỒNG NAI BÁO CÁO TỔNG KẾT ĐỀ TÀI NGHIÊN CỨU KHOA HỌC CẤP TRƯỜNG GIÁO TRÌNH CẤU TRÚC RỜI RẠC Mã số Chủ nhiệm đề tài T[.]
BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC CÔNG NGHỆ ĐỒNG NAI BÁO CÁO TỔNG KẾT ĐỀ TÀI NGHIÊN CỨU KHOA HỌC CẤP TRƯỜNG GIÁO TRÌNH CẤU TRÚC RỜI RẠC Mã số: Chủ nhiệm đề tài: ThS Nguyễn Thị Liệu Đồng Nai, 04/2021 BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC CÔNG NGHỆ ĐỒNG NAI BÁO CÁO TỔNG KẾT ĐỀ TÀI NGHIÊN CỨU KHOA HỌC CẤP TRƯỜNG GIÁO TRÌNH CẤU TRÚC RỜI RẠC Mã số: Chủ nhiệm đề tài Nguyễn Thị Liệu Đồng Nai, 03/2021 DANH SÁCH NHỮNG THÀNH VIÊN THAM GIA NGHIÊN CỨU ĐỀ TÀI STT Họ tên thành viên Đơn vị chủ trì ThS Nguyễn Thị Liệu Khoa Cơng nghệ LỜI NĨI ĐẦU Chào bạn, để hỗ trợ tốt việc học toán rời rạc ứng dụng ngày công nghệ thông tin, giáo trình cấu trúc rời rạc sử dụng cho việc học học phần cấu trúc rời rạc học phần lý thuyết đồ thị cho sinh viên ngành công nghệ thông tin Trường Đại học Công nghệ Đồng Nai nói riêng sinh viên ngành cơng nghệ thơng tin trường đại học khác nói chung Giáo trình có chương Chương 1: Thuật tốn Chương 2: Bài toán đếm Chương 3: Đồ thị Nội dung chương, phần đầu trình bày chi tiết lý thuyết nội dung chương, phần cuối chương số tập để sinh viên làm rèn luyện kiến thức chương Trong trình viết giáo trình khơng tránh khỏi sai sót, mong bạn đóng góp ý kiến Mọi ý kiến đóng góp xin gửi email: nguyenthilieu@dntu.edu.vn Xin chân thành cảm ơn MỤC LỤC Lời nói đầu Mục lục Chương I: Thuật toán 1.1 Khái niệm thuật toán 1.2 Thuật toán tìm kiếm 1.3 Độ phức tạp thuật toán 1.4 Số nguyên thuật toán 12 1.5 Thuật toán đệ quy 17 Bài tập Chương I 19 Chương II: Bài toán đếm 22 2.1 Cơ sở phép đếm 22 2.2 Nguyên lý Dirichlet 25 2.3 Chỉnh hợp tổ hợp suy rộng 28 2.4 Sinh hoán vị tổ hợp 30 2.5 Hệ thức truy hồi 32 2.6 Quan hệ chia để trị 34 Bài tập Chương II 35 Chương III: Đồ thị 37 3.1 Định nghĩa thí dụ 37 3.2 Bậc đỉnh 39 3.3 Những đơn đồ thị đặc biệt 41 3.4 Biểu diễn đồ thị ma trận đẳng cấu đồ thị 44 3.5 Các đồ thị từ đồ thị cũ 46 3.6 Tính liên thơng 47 Bài tập Chương III 51 CHƯƠNG I: THUẬT TOÁN 1.1 KHÁI NIỆM THUẬT TỐN 1.1.1 Mở đầu: Có nhiều lớp tốn tổng quát 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 giao cho tốn 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 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 đồ thị, cây, mạng - khái niệm nghiên cứu chương sau Lập mơ hình tốn học thích hợp phần 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, đị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 vậy, 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 phương pháp giải khơng thể lập trình 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.2 Đị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 AlKhowarizmi Ban đầu, từ algorism 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 tốn cho ý nghĩa chung hơn, bao hàm thủ tục xác định để giải toán, 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 lệnh phép ngơn ngữ dùng điều thường làm cho mô tả thuật tốn trở nên rối rắm khó hiểu Hơn nữa, nhiều ngơn ngữ lập trình dùng rộng rãi, nên chọn ngôn ngữ đặc biệt điều người ta khơng muốn Vì thuật tốn ngồi việc trình bày ngôn ngữ tự nhiên với ký hiệu tốn học quen thuộc cịn dùng dạng giả mã để mơ tả thuật tốn Giả mã tạo bước trung gian mơ tả thuật tốn ngơn ngữ thơng thường thực thuật tốn ngơn ngữ lập trình Các bước thuật toán rõ cách dùng lệnh giống ngơn ngữ lập trình Thí dụ 1: Mơ tả thuật tốn tìm phần tử lớn dãy hữu hạn số nguyên a) Dùng ngôn ngữ tự nhiên để mô tả bước cần phải thực hiện: Đặt giá trị cực đại tạm thời số nguyên dãy (Cực đại tạm thời số nguyên lớn kiểm tra giai đoạn thủ tục.) So sánh số nguyên tiếp sau với giá trị cực đại tạm thời, lớn giá trị cực đại tạm thời đặt cực đại tạm thời số nguyên Lặp lại bước trước cịn số ngun dãy Dừng khơng số nguyên dãy Cực đại tạm thời điểm số nguyên lớn dãy b) Dùng đoạn giả mã: procedure max (a1, a2, , an: integers) max:= a1 for i:= to n if max