Bài Giang TOÁN RỜI RẠC C3 năm 2016 (Đại học Bách Khoa)

32 697 0
Bài Giang TOÁN RỜI RẠC C3 năm  2016 (Đại học Bách Khoa)

Đ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 là một trong những lĩnh vực của toán học nghiên cứu các đối tượng rời rạc. Chúng ta sẽ sử dụng công cụ của toán rời rạc khi phải đếm các đối tượng , khi nghiên cứu các quan hệ giữa các tập rời rạc. Cuốn bài giang này nhằm giới thiệu các kiến thức cơ bản trong ba lĩnh vực có nhiều ứng dụng cảu toán rời rạc là: lý thuyết tổ hợp , lý thuyết dồ thị và hàm số đs lôgic.

8/29/2016 BÀI BÀI TOÁN LIỆT KÊ Giáo viên: TS Nguyễn Văn Hiệu Email: nvhieuqt@dut.udn.vn Nguyễn Văn Hiệu, 2012, Discrete Mathematics 1.1 Giới thiệu Nội dung    1.1 Giới thiệu 1.2 Phương pháp sinh 1.3 Phương pháp quay lui Nguyễn Văn Hiệu, 2012, Discrete Mathematics 8/29/2016 1.1 Giới thiệu Mục đích  Đưa danh sách tất cấu hình có Bản chất  Xác định thuật toán để theo xây dựng tất cấu hình quan tâm Nguyễn Văn Hiệu, 2012, Discrete Mathematics 1.1 Giới thiệu Nguyên tắc  Không lặp lại cấu hình  Không bỏ sót cấu hình Lưu ý  Chỉ giải với toán chưa có phương pháp giải  Phương pháp Sinh  Phương pháp quay lui Nguyễn Văn Hiệu, 2012, Discrete Mathematics 8/29/2016 1.2 Phương pháp sinh Thường sử dụng  Giải toán liệt kê tổ hợp Điều kiện     Xác định thứ tự Có cấu hình Có cấu hình cuối Xác định thuật toán để xây dựng cấu hình Nguyễn Văn Hiệu, 2012, Discrete Mathematics 1.2 Phương pháp sinh Bản chất Chú thích Generating_method(…) { ; stop = islastconfigure(…); while (stop==0) { ; } }    Stop = =1, cấu hình cuối Stop == 0, chưa phải cấu hình cuối thuật toán sinh cấu hình thứ tự xác định trước Nguyễn Văn Hiệu, 2012, Discrete Mathematics 8/29/2016 1.2 Phương pháp sinh Ví dụ    Liệt kê dãy nhị phân có độ dài n Liệt kê tập k phần tử tập n phần tử Liệt kê hoán vị tập n phần tử Nguyễn Văn Hiệu, 2012, Discrete Mathematics 1.2 Phương pháp sinh Ví dụ 1: Liệt kê dãy nhị phân có độ dài n Bước 1: Xác định thứ tự nhị phân biểu diễn: b = (b1 b2 … bn ) thỏa mản bi €{0,1}  Định nghĩa thứ tự từ điển: b = (b1 b2 bn) *b = (*b1 *b2 *bn) thứ tự b < *b, q(b) < q(*b) Dãy Nguyễn Văn Hiệu, 2012, Discrete Mathematics 8/29/2016 1.2 Phương pháp sinh Ví dụ 1: Liệt kê dãy nhị phân có độ dài n Bước 2: Cấu hình đầu cuối  Khi n = phần tử, có 24 dãy nhị phân liệt kê Nguyễn Văn Hiệu, 2012, Discrete Mathematics 1.2 Phương pháp sinh Ví dụ 1: Liệt kê dãy nhị phân có độ dài n Bước 2: b 0000 0001 0010 0011 0100 0101 0110 0111 q(b) b 1000 1001 1010 1011 1100 1101 1110 1111 q(b) 10 11 12 13 14 15 Nguyễn Văn Hiệu, 2012, Discrete Mathematics 10 8/29/2016 1.2 Phương pháp sinh Bước 3: xác định thuật toán 0000 0001 0001 0010 0011 0100 0111 1000 Thuật toán  Tìm i từ bên phải: bi =  Gán lại bi = bj = với j> i i= n; while (i>=1 && b[i]==‘1’) b[i ] = ‘0’; b[i] = ‘1’; Nguyễn Văn Hiệu, 2012, Discrete Mathematics 11 1.2 Phương pháp sinh Nguyễn Văn Hiệu, 2012, Discrete Mathematics 12 8/29/2016 1.2 Phương pháp sinh Nguyễn Văn Hiệu, 2012, Discrete Mathematics 13 1.2 Phương pháp sinh Ví dụ 1: Liệt kê dãy nhị phân có độ dài n Kết Chương trình Result Source Code Nguyễn Văn Hiệu, 2012, Discrete Mathematics 14 8/29/2016 1.2 Phương pháp sinh Ví dụ Liệt kê tập k phần tử tập n phần tử Chuẩn bị Ánh xạ tập n phần tử vào tập X = {1,2,…,n}  Mỗi tập k phần tử X biểu diễn có thứ tự gồm k thành phần: a = (a1 a2 a3 ak ) thỏa mản 1≤ a1< a2 < a3 < < ak ≤ n  Nguyễn Văn Hiệu, 2012, Discrete Mathematics 15 1.2 Phương pháp sinh Ví dụ Liệt kê tập k phần tử tập n phần tử Bước 1: Xác định thứ tự  Định nghĩa thứ tự từ điển: a = (a1 a2 a3 ak) b = (b1 b2 b3 bk) thứ tự a < b, tồn j (1≤ j≤ k): a1 = b1, ,aj-1= bj-1, aj < bj Nguyễn Văn Hiệu, 2012, Discrete Mathematics 16 8/29/2016 1.2 Phương pháp sinh Ví dụ 2: Liệt kê tập k phần tử tập n phần tử Bước 2:   Các tập phần tử tập phần tử {1,2,3,4,5} 𝑪𝟑 = 10 { 1,2,3 } { 1,2,4 } { 1,2,5 } { 1,3,4 } { 1,3,5 } { 1,4,5 } { 2,3,4 } { 2,3,5 } { 2,4,5 } { 3,4,5 } Cấu hình đầu Cách sinh Cấu hình cuối Nguyễn Văn Hiệu, 2012, Discrete Mathematics 17 1.2 Phương pháp sinh Bước 3: xác định thuật toán i= = {1, 4, } n-k+i = { 2, , } { 2, 3, 4} Giả sử a = (a1 ak ) không cuối  B1: Tìm vị trí i từ bên phải dãy: ≠ n-k+i  B2: Thay +  B3: Thay aj - i +j, với j = i+1, ,k  n=5, k=3 a Thuật toán Nguyễn Văn Hiệu, 2012, Discrete Mathematics 18 8/29/2016 1.2 Phương pháp sinh Thuật toán Code Giả sử a = (a1 ak ) không cuối  B1: Tìm vị trí i từ bên phải dãy: ≠ n-k+i  B2: Thay +  B3: Thay aj - i +j, với j = i+1, ,k  B1: i=k; while (a[i]==n-k+i) i ; B2: a[i]= a[i] + 1; B3: for (j=i+1;j){ si = j; if (i==n) else try (i+1, n); } } } Nguyễn Văn Hiệu, 2012, Discrete Mathematics 38 1.3 phương pháp quay lui Bắt đầu S1 D1 ( 2pt) s2 D2 (2pt) s3 D3 (2pt) D4 ( 3pt) s4 Một cấu hình Nguyễn Văn Hiệu, 2012, Discrete Mathematics 39 19 8/29/2016 1.2 Phương pháp quay lui Ví dụ  Liệt kê dãy nhị phân có độ dài n  Liệt kê hoán vị tập n phần tử  Bài toán Xếp Hậu Nguyễn Văn Hiệu, 2012, Discrete Mathematics 40 1.3 Phương pháp quay lui Ví dụ  Liệt kê xâu nhị phân độ dài n  Biểu diễn dãy nhị phân: b = ( b1 b2 bn ,) bi ∈ {0,1}     Try(i,…) - xác định bi D = {0,1} P i = n - cấu hình ∈ 𝑄 Mã giả void Try(int i, char b[]){ char j; for(j='0'; j

Ngày đăng: 30/08/2016, 12:05

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan