1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Bài giảng toán rời rạc chương 5 dr ngô hữu phúc

50 0 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

TOÁN RỜI RẠC CHƯƠNG BÀI TOÁN LIỆT KÊ Lecturer: PhD Ngo Huu Phuc Tel: 0438 326 077 Mob: 098 5696 580 Email: ngohuuphuc76@gmail.com @Copyrights by Dr Ngo Huu Phuc, Le Quy Don Technical University NỘI DUNG CHƯƠNG 5.1 Giới thiệu toán 5.2 Nhắc lại kiến thức đệ quy 5.3 Sinh hoán vị - Sinh tổ hợp 5.4 Thuật toán quay lui Bài toán xếp hậu 5.5 Bài tập chương @Copyrights by Dr Ngo Huu Phuc, Le Quy Don Technical University 5.1 Giới thiệu tốn (1/3)  Cần có giải thuật để xây dựng tất cấu hình quan tâm → BÀI TOÁN LIỆT KÊ  Đối với toán liệt kê, cần đảm bảo nguyên tắc:  Khơng lặp lại cấu hình  Khơng bỏ sót cấu hình  Khó khăn phương pháp “bùng nổ tổ hợp”! @Copyrights by Dr Ngo Huu Phuc, Le Quy Don Technical University 5.1 Giới thiệu tốn (2/3) Ví dụ 5.1:  Cho tập hợp số a1, a2, , an số M Hãy tìm tất tập k phần tử dãy số {an} cho tổng số phần tử tập M Giải ví dụ 5.1  Số tập k phần tử tập gồm n phần tử C(n,k)  Cần duyệt số C(n,k) tập k phần tử để lấy tập có tổng phần tử M  Để thực tốn → cần liệt kê cấu hình @Copyrights by Dr Ngo Huu Phuc, Le Quy Don Technical University 5.1 Giới thiệu tốn (3/3) Ví dụ 5.2:  Một người bán hàng thành phố Người bắt đầu hành trình thành phố phải qua thành phố theo thứ tự mà người muốn Hãy lộ trình ngắn mà người Giải ví dụ 5.2  Có tất 7! = 5040 cách người bán hàng  Tuy nhiên 5040 cách phải duyệt tồn để hành trình ngắn @Copyrights by Dr Ngo Huu Phuc, Le Quy Don Technical University 5.2 Nhắc lại kiến thức đệ quy (1/9) 5.2.1 Định nghĩa đệ quy (1/4)  Trong thực tế, nhiều đối tượng mà khó định nghĩa cách tường minh, lại dễ dàng định nghĩa đối tượng qua  Kỹ thuật định nghĩa đối tượng qua gọi kỹ thuật đệ qui (recursion)  Các giải thuật đệ qui thường xây dựng qua hai bước:  bước phân tích  bước thay ngược lại @Copyrights by Dr Ngo Huu Phuc, Le Quy Don Technical University 5.2 Nhắc lại kiến thức đệ quy (2/9) 5.2.1 Định nghĩa đệ quy (2/4) Ví dụ 5.2.3:  Để tính tổng S(n) = + + + n Giải tốn:  Bước phân tích:  Để tính tốn S(n), cần tính S(n-1), sau tính S(n) = S(n-1) +n   Và cuối S(1) có kết  Bước thay ngược lại:  Xuất phát từ S(1) thay ngược lại xác định S(n):  S(1) =  S(2) = S(1) +   S(n) = S(n - 1) + n @Copyrights by Dr Ngo Huu Phuc, Le Quy Don Technical University 5.2 Nhắc lại kiến thức đệ quy (3/9) 5.2.1 Định nghĩa đệ quy (3/4) Ví dụ 5.2.4:  Định nghĩa hàm đệ quy: f(n) = n! Phân tích thực hiện:  Ta có f(0) =  Vì (n+1) ! = 2.3 n(n+1) = n! (n+1), nên ta có: f(n+1) = ( n+1) f(n) với ∀ n nguyên dương @Copyrights by Dr Ngo Huu Phuc, Le Quy Don Technical University 5.2 Nhắc lại kiến thức đệ quy (4/9) 5.2.1 Định nghĩa đệ quy (4/4) Ví dụ 5.2.5: Tập hợp định nghĩa đệ quy:  Định nghĩa đệ quy tập xâu: Giả sử Σ* tập xâu chữ Σ Khi Σ* định nghĩa đệ quy sau:  λ ∈ Σ*, λ xâu rỗng  wx ∈ Σ* w ∈ Σ* x ∈ Σ* @Copyrights by Dr Ngo Huu Phuc, Le Quy Don Technical University 5.2 Nhắc lại kiến thức đệ quy (5/9) 5.2.2 Giải thuật đệ quy (1/5) Khái niệm:  Một thuật toán gọi đệ quy giải tốn cách rút gọn tốn ban đầu thành toán tương tự sau số hữu hạn lần thực  Trong lần thực hiện, liệu đầu vào tiệm cận tới tập liệu dừng 10 @Copyrights by Dr Ngo Huu Phuc, Le Quy Don Technical University 5.4 Giải thuật quay lui Bài toán hậu (2/15) 5.4.1 Giải thuật quay lui (2/9)  Chú ý:  Điểm quan trọng thuật toán phải ghi nhớ bước qua, khả thử để tránh trùng lặp  Những thông tin cần lưu trữ theo cấu ngăn xếp (stack) 36 @Copyrights by Dr Ngo Huu Phuc, Le Quy Don Technical University 5.4 Giải thuật quay lui Bài toán hậu (3/15) 5.4.1 Giải thuật quay lui (3/9) Giả mã giải thuật quay lui, xác định phần tử thứ i: void Try( int i ) { int j; for ( j = 1; j < ni; j ++) { if ( ) { if (i==n) ; else Try(i+1); } } } 37 @Copyrights by Dr Ngo Huu Phuc, Le Quy Don Technical University 5.4 Giải thuật quay lui Bài toán hậu (4/15) 5.4.1 Giải thuật quay lui (4/9) Ví dụ 5.4.1: Liệt kê dãy nhị phân độ dài n Gợi ý:  Biểu diễn dãy nhị phân dạng b1,b2, bn bi{0,1}  Thủ tục đệ quy để xác định bi, bi = bi = Lưu ý: giá trị chấp nhận mà thoả mãn điều kiện 38  Thủ tục khởi tạo n, khởi tạo biến đếm số kết có  Thủ tục in kết @Copyrights by Dr Ngo Huu Phuc, Le Quy Don Technical University 5.4 Giải thuật quay lui Bài toán hậu (5/15) 5.4.1 Giải thuật quay lui (5/9) Ví dụ 5.4.1 (tiếp): Liệt kê dãy nhị phân độ dài n Giải thích đồ thị: Cây tìm kiếm lời giải liệt kê dãy nhị phân độ dài 39 @Copyrights by Dr Ngo Huu Phuc, Le Quy Don Technical University 5.4 Giải thuật quay lui Bài toán hậu (6/15) 5.4.1 Giải thuật quay lui (6/9) Ví dụ 5.4.1 (tiếp): Liệt kê dãy nhị phân độ dài n Mã chương trình: #include #include using namespace std; void Result(int *B, int n){ for(int i=0;i

Ngày đăng: 21/07/2023, 16:56

Xem thêm: