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.
Trang 1BÀI TOÁN LIỆT KÊ
Nguyễn Văn Hiệu, 2012, Discrete Mathematics 1
Giáo viên: TS Nguyễn Văn Hiệu
Trang 2Nguyễn Văn Hiệu, 2012, Discrete Mathematics 3
Mục đích
thể có
Bản chất
thể lần lượt xây dựng được tất cả các
cấu hình đang quan tâm.
1.1 Giới thiệu
Nguyên tắc
Trang 3Nguyễn Văn Hiệu, 2012, Discrete Mathematics 5
tự đã xác định trước
Trang 4Nguyễn Văn Hiệu, 2012, Discrete Mathematics 7
Ví dụ
Định nghĩa thứ tự từ điển:
b = (b 1 b 2 b n ) và *b = (*b 1 *b 2 *b n )
thứ tự b < *b,
Trang 5Nguyễn Văn Hiệu, 2012, Discrete Mathematics 9
Ví dụ 1:
Liệt kê các dãy nhị phân có độ dài n
Bước 2: Cấu hình đầu
Trang 6Nguyễn Văn Hiệu, 2012, Discrete Mathematics 11
Trang 7Nguyễn Văn Hiệu, 2012, Discrete Mathematics 13
Trang 8Nguyễn Văn Hiệu, 2012, Discrete Mathematics 15
Trang 9Nguyễn Văn Hiệu, 2012, Discrete Mathematics 17
{ 1,4,5 }
{ 2,3,4 }
{ 2,3,5 } { 2,4,5 } { 3,4,5 }
Trang 10Nguyễn Văn Hiệu, 2012, Discrete Mathematics 19
Trang 11Nguyễn Văn Hiệu, 2012, Discrete Mathematics 21
1.2 Phương pháp sinh
Kết quả
Result
Chương trình Source Code
Ví dụ 2
Liệt kê các tập con k phần tử từ tập n phần tử
Trang 12Nguyễn Văn Hiệu, 2012, Discrete Mathematics 23
Trang 13Nguyễn Văn Hiệu, 2012, Discrete Mathematics 25
Ánh xa tập n phần tử bất kỳ
vào tập
X = {1,2,…,n}
Mỗi hoán vị của X được
biểu diễn bởi bộ có thứ tự
Trang 14Nguyễn Văn Hiệu, 2012, Discrete Mathematics 27
int temp = a[j];
a[j] = a[k]; a[k] = temp;
int l = j+1;int r = n;
while(l<r) { int temp = a[l];
a[l]= a[r]; [r]= temp;
Trang 15Nguyễn Văn Hiệu, 2012, Discrete Mathematics 29
1.2 Phương pháp sinh
Trang 16Nguyễn Văn Hiệu, 2012, Discrete Mathematics 31
Kết quả
Result
Chương trình Source Code
Ví dụ 2
Liệt kê các tập hoán vị của tập n phần tử
Bài toán liệt kê
Trang 17Nguyễn Văn Hiệu, 2012, Discrete Mathematics 33
Để giải bài toán liệt kê
hoặc tối ưu tổ hợp
Đã giải:
Bài toán mã đi tuần
Bài toán xếp hậu
Bài toán mê cung
Bài toán người giao
Trang 18Nguyễn Văn Hiệu, 2012, Discrete Mathematics 35
Khái niệm
Backtracking– đi tìm lời
giải cho bài toán mà
nghiệm của nó là một cấu
1.3 Phương pháp quay lui
Trang 19Nguyễn Văn Hiệu, 2012, Discrete Mathematics 38
Trang 20Nguyễn Văn Hiệu, 2012, Discrete Mathematics 40
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.
1.3 Phương pháp quay lui
Ví dụ 1
Liệt kê xâu nhị phân độ dài n
Biểu diễn dãy nhị phân:
Trang 21Nguyễn Văn Hiệu, 2012, Discrete Mathematics 42
Trang 22Nguyễn Văn Hiệu, 2012, Discrete Mathematics 44
Kết quả
Result
Chương trình Source Code
Ví dụ 1
Liệt kê xâu nhị phân độ dài n
1.3 Phương pháp quay lui
Trang 23Nguyễn Văn Hiệu, 2012, Discrete Mathematics 46
1.3 Phương pháp quay lui
Trang 24Nguyễn Văn Hiệu, 2012, Discrete Mathematics 48
1.2 Phương pháp sinh
Kết quả
Result
Chương trình Source Code
Ví dụ 2
Liệt kê hoán vị của tập n phần tử
Trang 25Nguyễn Văn Hiệu, 2012, Discrete Mathematics 50
Ví dụ 3
Liệt kê tất cả các cách xếp 8
quân Hậu trên bàn cờ 8x8 sao
cho chúng không ăn được
1.3 Phương pháp quay lui
Ví dụ 3
Quản lý cột
Trang 26Nguyễn Văn Hiệu, 2012, Discrete Mathematics 52
Ví dụ 3:
Quản lý đường chéo thuận
Ví dụ 3
Mảng b – quản lý đường chéo thuận
c = { c[-7], …,b[7]}
c[k]=
1 , đ𝑐 𝑛𝑔ℎị𝑐ℎ 𝑘 𝑡ự 𝑑𝑜
0 , đ𝑐 𝑛𝑔ℎị𝑐ℎ 𝑘 đã 𝑐ℎ𝑖ế𝑢
Trang 27Nguyễn Văn Hiệu, 2012, Discrete Mathematics 54
Trang 28Nguyễn Văn Hiệu, 2012, Discrete Mathematics 56
1.3 Phương pháp quay lui
Trang 29Nguyễn Văn Hiệu, 2012, Discrete Mathematics 58
Liệt kê cách xếp hậu
Phương pháp quay lui
Trang 30(4) Tìm giải thuật đi từ trạng thái này sang trạng thái khác.
Kỹ thuật quay lui:
(1) Tại 1 thời điểm, chỉ xét thành phần thứ i của cấu hình
(2) Với mọi trị j trong miền trị của thành phần này
2.1- Nếu chọn được 1 trị hợp lệ thì
Gán x i = j
Xử lý cấu hình ở thành phần thứ i+1
Trang 311 Liệt kê nghiệm nguyên của pt x 1 + x 2 + x 3 =
15 với x 1 ≥ 0 , x 2 ≥ 0 , x 3 ≥ 0.
2 Liệt kê số chuổi có độ dài 3 ký tự xyz với
x ∈ { a,b,c}, y ∈ { d,e}, z ∈ { m,n,t}
3 Viết lại các bài mẫu về giải thuật quay lui
nhưng ghi kết qủa lên file.
Nguyễn Văn Hiệu, 2012, Discrete Mathematics 62
Cấu hình ban đầu: trị đầu tiên
của mỗi miền trị
Cấu hình cuối: trị cuối cùng của
mỗi miền trị
Cách sinh:Lấy trị kế tiếp của mỗi
miền trị theo cơ chế vòng tròn
Dùng thứ tự
từ điển để so sánh:
adm < adn
Trang 32• WHAT NEXT?
THAT’S ALL; THANK YOU