Bài toán li t kê... Bài toán li t kê... Bài toán li t kê... Bài toán li t kê Phân tích bài toán... Bài toán li t kê... Bài toán li t kê... Bài toán li t kê... Bài toán mã đi tu n.
Trang 1GVGD: Tr ng Ph c H i
Gi i thu t quay lui
(back tracking)
Trang 22
N i dung
1 K thu t quay lui
3 Bài toán 8 h u
4 Bài toán mã đi tu n
2 Bài toán li t kê
Trang 3K thu t quay lui
toán
start
end
Trang 5K thu t quay lui
Trang 66
K thu t quay lui
Mô hình t ng quát c a gi i thu t quay lui
Trang 7N i dung
1 K thu t quay lui
3 Bài toán 8 h u
4 Bài toán mã đi tu n
2 Bài toán li t kê
Trang 9Bài toán li t kê
Bi u di n dãy nh phân N bit d i d ng m ng m t chi u X[0], X[1], …, X[N-1]
Ph n t c a m ng X[i] có t p giá tr {0, 1}
Trang 1010
Bài toán li t kê
Ý t ng
Th gán cho X[i] l n l t mang các giá tr {0, 1}
V i m i giá tr ch n đ c cho X[i], th các giá tr có th có cho X[i + 1]
Ti p t c th c hi n cho đ n ph n t cu i cùng X[N – 1], khi
đó ta tìm đ c m t dãy nh phân cho bài toán
Trang 11Bài toán li t kê
Gi i thu t th t c Try c a bài toán
Trang 12X[i] = j;
if (i == N - 1)
Print(X, N);
else Try(X, N, i + 1); }
}
Trang 13Bài toán li t kê
Trang 1414
Bài toán li t kê
Bài toán 2
Li t kê t t c cách ch n k ph n t t t p g m N ph n t {1, 2, …, N}
Ví d
Cho t p g m 5 ph n t {1, 2, 3, 4, 5}, các cách ch n ra 3
ph n t t t p này là: {123, 124, 125, 134, 135, 145, 234,
235, 245, 345}
Trang 15Bài toán li t kê
Phân tích bài toán
Trang 16 V i m i X[i] (i{1, , k}), gán l n l t t ng giá tr trong
mi n giá tr c a X[i] Khi đ n ph n t th k thì ta có đ c
m t cách ch n
Mi n giá tr c a X[i]: X[i-1] + 1 ≤ X[i] ≤ N – k + i
Trang 17Bài toán li t kê
Gi i thu t th t c Try c a bài toán
Trang 19Bài toán li t kê
Trang 2020
Bài toán li t kê
Phân tích bài toán
M i hoán v đ c bi u di n d i d ng m t dãy các ph n t (x0x1…xN-1)
Các ph n t xi c a m t hoán v là khác nhau đôi m t
S d ng m ng m t chi u X[0], X[1], …, X[N-1] đ bi u
di n m t hoán v
Trang 21Bài toán li t kê
Ý t ng
S d ng m ng đánh d u C[j] = {0, 1} cho bi t kh n ng j
đ c phép ch n hay không (1: đ c; 0: không đ c)
Th l n l t t t c kh n ng ch a b ph n t khác ch n cho X[i]
V i nh ng kh n ng còn l i ch a đ c ch n, th l n l t cho X[i+1] và c th ti p t c cho đ n X[N-1]
Trang 22 G i đ quy Try(i + 1) đ tìm giá tr cho X[i + 1]
t C[j] = 1 đ tr t do cho j khi d ng đ quy
Trang 23Bài toán li t kê
Gi i thu t th t c Try c a bài toán
Trang 25N i dung
1 K thu t quay lui
3 Bài toán 8 h u
4 Bài toán mã đi tu n
2 Bài toán li t kê
Trang 2626
Bài toán 8 h u
Bài toán: đ t 8 quân h u vào bàn c vua sao cho
Trang 30}
}
Trang 31N i dung
1 K thu t quay lui
3 Bài toán 8 h u
4 Bài toán mã đi tu n
2 Bài toán li t kê
Trang 3232
Bài toán mã đi tu n
Bài toán: hãy ch ra m t hành trình c a quân mã
xu t phát t i ô (1, 1) và đi qua t t c ô c a bàn c vua, m i ô qua đúng 1 l n
Trang 33Bài toán mã đi tu n
Trang 35Bài toán mã đi tu n
Gi i thu t th t c Try c a bài toán
Trang 36
FindNext(row, col, Cells, nums);
for ( int i = 0; i < nums; i++)