Bài giảng gồm các bài tập minh họa cho phương pháp Quay lui bài toán liệt kê các hoán vị, bài toán liệt kê dãy nhị phân độ dài N và bài toán duyệt đồ thị. Tài liệu hữu ích dành cho các bạn sinh viên ngành Công nghệ thông tin để các bạn bổ trợ thêm kiến thức lập trình của mình. Mời các bạn cùng tham khảo.
Trang 1Lecture 11,12
Backtracking Method
Lecturer: Ha Dai Duong
duonghd@mta.edu.vn
Analysis and Design of Algorithms
Nội dung
1 Lược đồ chung
2 Bài toán 8 hậu
3 Bài toán ngựa đi tuần
4 Trò chơi Sudoku
5 Liệt kê các hoán vị
6 Liệt kê dãy nhị phân độ dài N
7 Duyệt đồ thị
Bài toán
• Có N đối tượng (được đánh số từ 1 đến N),
Trang 2Bài toán liệt kê
• Bài toán liệt kê: có thể tiếp cận theo cách liệt
kê (phương pháp sinh - Generating) các khả
năng ứng với mỗi thành phần của vector
phương án (tìm hiểu sau)
Thứ tự từ điển (từ bé đến lớn)
123,132,213,231,312,321
Thứ tự từ điển ngược (từ lớn đến bé)
321,312,231,213,132,123
Ý tưởng thuật toán
Ý tưởng (Thử và Sai)
1 Cần xếp các số từ 1-N vào N vị trí (khác nhau
từng đôi một)
2 Giả sử đã xếp được đến vị trí thứ i-1
3 Tìm 1 giá trị thích hợp (chưa được dùng)
trong khoảng từ 1 đến N cho vị trí thứ i Lặp
lại bước 3 khi i<N
Phương án nghiệm
• Bộ gồm N số từ 1 đến N khác nhau từng đôi
một
Ứng viên
• Các giá trị từ 1 đến N
Tính hợp lệ
• x[i] nhận giá trị J nếu J chưa được dùng cho
các x[1] đến x[i-1]
Trang 3Cài đặt
• Dùng mảng b[j], j=1 N để dánh dấu giá trị j đã
được dùng hay chưa
– b[j] = 0 : j đã được dùng
– b[j] = 1 : j chưa được dùng
Minh họa
• Với n=3
Trang 4Minh họa
• Với n=4
Nội dung
1 Lược đồ chung
2 Bài toán 8 hậu
3 Bài toán ngựa đi tuần
4 Trò chơi Sudoku
5 Liệt kê các hoán vị
6 Liệt kê dãy nhị phân độ dài N
7 Duyệt đồ thị
Bài toán
• Bài toán 1: Liệt kê tất cả các số nhị phân có độ
dài N Ví dụ với N=3, ta có các (8) liệt kê sau:
000, 001, 010, 011, 100, 101, 110, 111.
• Bài toán 2: Liệt kê tập tất cả các tập con của tập
có N phần tử
Nhận xét: Bài toán 2 có thể chuyển về bài toán 1
Trang 5Ý tưởng thuật toán
Phương án nghiệm
• Dãy N các giá trị 0, 1 (đảm bảo không có 2
nghiệm nào trùng nhau)
Cài đặt
Trang 6Minh họa
Nội dung
1 Lược đồ chung
2 Bài toán 8 hậu
3 Bài toán ngựa đi tuần
4 Trò chơi Sudoku
5 Liệt kê các hoán vị
6 Liệt kê dãy nhị phân độ dài N
7 Duyệt đồ thị
Bài toán
Trang 7Tìm kiếm theo chiều sâu DFS (
Depth First Search)
• Ý tưởng
Mô tả
Cài đặt
Trang 8Cài đặt
Cài đặt
Minh họa
Trang 9Đường đi từ 1 đến 4
Đường đi từ 2 đến 5
Tìm kiếm theo chiều rộng BFS (
Breadth First Search)
• Ý tưởng
Trang 10Mô tả
Cài đặt
Trang 11Minh họa
Bài tập
1 Liệt kê các hoán vị của tập 4 phần tử (theo
thuật toán mục 5)
2 Liệt kê tất cả các dãy nhị phân có độ dài 5
(theo thuật toán mục 6)
Bài tập
Cho đồ thị có hướng
Trang 12Bài tập
5 Cài đặt thuật toán giải bài toán người du lịch
(dựa trên thuật toán liệt kê các hoán vị) theo
phương pháp quay lui Đánh giá độ phức tạp
thuật toán bằng lý thuyết, bằng thực nghiệm
và so sánh
6 Cài đặt thuật toán tìm đường đi trên đồ thị,
thuật toán DFS, theo phương pháp quay lui
Đánh giá độ phức tạp thuật toán bằng lý
thuyết, bằng thực nghiệm và so sánh
Bài tập
7 Cài đặt thuật toán tìm đường đi trên đồ thị,
thuật toán BFS, theo phương pháp quay lui
Đánh giá độ phức tạp thuật toán bằng lý
thuyết, bằng thực nghiệm và so sánh