K ỹ thuật quay lui là quá trình phân tích từ trên xuống trong không gian tìm ki ếm... Sau khi thêm ph ần tử, kiểm tra xem có thể thực hiện ti ếp được không.[r]
(1)Lecturer: PhD Ngo Huu Phuc Tel: 0438 326 077 Mob: 098 5696 580
Email: ngohuuphuc76@gmail.com
Cấu trúc liệu giải thuật
(2)Backtracking
Nội dung:
4.1 Khái niệm kỹ thuật quay lui (6)
4.2 Bài toán hậu - Eight Queen Problem (7) 4.3 Bài toán mã tuần - Knight Tour Problem (5) 4.4 Bài tốn ba lơ - Knapsack Problem (6)
(3)4.1 Khái niệm kỹ thuật quay lui (1/6)
Kỹ thuật quay lui trình phân tích từ xuống khơng gian tìm kiếm
Trong trường hợp tổng quát, giả sử lời giải
vector:
a = (a[1], a[2], …, a[n])
trong đó, phần tử a[i] chọn từ tập hữu hạn S[i]
(4) Ta giải tốn với kích thước k, có dạng: a = (a[1], a[2], …, a[k])
và cố gắng mở rộng việc thêm phần tử vào vector
Sau thêm phần tử, kiểm tra xem thực tiếp khơng
Nếu có khả mở rộng, tiếp tục thực hiện;
(5)4.1 Khái niệm kỹ thuật quay lui (3/6)
Gọi S[1], tập khả a bước k =
While k >
While S[k]<>[] (*advance*) a[k] = an element in S[k]
If (a[1], a[2],…, a[k]) is solution, print it! k = k +
(6)Sub Backtrack(a, k)
If a is a solution, get it Else
k = k +1
compute S[k]
While S[k]<>[]
a[k] = an element in S[k] S[k] = S[k] – a[k]
(7)4.1 Khái niệm kỹ thuật quay lui (5/6)
Kỹ thuật đệ quy dùng kỹ thuật
quay lui (đơn giản ứng dụng)
Kỹ thuật quay lui chắn liệt kê khả
năng
Để tăng hiệu kỹ thuật, cắt bớt
(8)Trong phần này, giải số tốn, có sử dụng kỹ thuật quay lui:
Bài toán hậu - Eight Queen Problem
(9)4.2 Eight Queen Problem (1/7)
Bài toán: đặt hậu bàn cờ cho
hậu nằm hàng, cột hàng ngang
(10)Thực hiện:
• Trạng thái: Sắp đặt từ đến hậu lên bàn cờ
• Trạng thái khởi tạo: khơng có hậu đặt lên bàn cờ
• Đặt hậu lên bàn cờ • Kiểm tra kết quả: hậu
đặt lên bàn cờ, khơng có