tailieunhanh - Bài giảng cơ sở lập trình nâng cao - Chương 4

Quay lui là một phương pháp thiết kế thuật toán để tìm nghiệm của bài toán bằng cách xét tất cả các phương án. Một phương án gồm nhiều thành phần, và phương pháp quay lui sẽ xây dựng từng thành phần trong mỗi bước. Trong quá trình xây dựng thành phần thứ i (tìm nghiệm cho thành phần thứ i), nếu không thể xây dựng được thì quay lại chọn nghiệm khác cho thành phần thứ (i-1) | PHƯƠNG PHÁP THIẾT KẾ THUẬT TOÁN – QUAY LUI – Chương 4 1 Nội dung Giới thiệu Phương pháp Sơ đồ cài đặt Các ví dụ Ưu điểm và khuyết điểm 2 Hình ảnh 3 Giới thiệu Định nghĩa [Quay lui – Backtracking]: Quay lui là một phương pháp thiết kế thuật toán để tìm nghiệm của bài toán bằng cách xét tất cả các phương án. Một phương án gồm nhiều thành phần, và phương pháp quay lui sẽ xây dựng từng thành phần trong mỗi bước. Trong quá trình xây dựng thành phần thứ i (tìm nghiệm cho thành phần thứ i), nếu không thể xây dựng được thì quay lại chọn nghiệm khác cho thành phần thứ (i-1) 4 Bài toán Phát biểu bài toán: Giả sử nghiệm của bài toán cần tìm có dạng X=(x1, x2, , xk, ), trong đó xi là 1 thành phần nghiệm của bài toán xi có một miền giá trị Di nào đó (xi Di). Số lượng thành phần xi có thể xác định hay không xác định Bài toán có những ràng buộc là F Yêu cầu: Hãy xây dựng 1 nghiệm hay tất cả các nghiệm của bài toán thỏa điều kiện F 5 Phương pháp Phương pháp Quay lui Phương pháp Quay lui xây dựng dần nghiệm X của bài toán: Bắt đầu từ x1 được chọn ra từ tập D1, rồi đến x2 được chọn ra từ tập D2, . bằng cách thử mọi khả năng có thể xảy ra. Một cách tổng quát: Nếu chúng ta đã xác định được lời giải bộ phận gồm (i-1) thành phần X(i-1) = (x1, x2, ., xi-1), bây giờ chúng ta tìm giá trị cho thành phần xi bằng cách xét mọi khả năng có thể có của xi trong tập Di. Với mỗi khả năng j (j Di), chúng ta kiểm tra xem có thể thỏa điều kiện là nghiệm thành phần của bài toán không 6 Phương pháp Có 2 khả năng xảy ra: Nếu khả năng j thỏa điều kiện thì Gán xi = j Tiếp theo tìm nghiệm cho thành phần xi+1 Nếu đã thử mọi khả năng của j mà không thỏa điều kiện bài toán thì có nghĩa là đi theo con đường X(i-1) = (x1, x2, ., xi-1) sẽ không thể dẫn đến kết quả. Chúng ta quay về bước trước để xác định lại xi-1 (bằng cách chọn 1 giá trị khác trong Di-1). 7 Phương pháp Quá trình này dừng cho đến khi tìm được nghiệm của bài toán hay vét qua hết khả năng mà không thể tìm được nghiệm của bài toán 8 | PHƯƠNG PHÁP THIẾT KẾ THUẬT TOÁN – QUAY LUI – Chương 4 1 Nội dung Giới thiệu Phương pháp Sơ đồ cài đặt Các ví dụ Ưu điểm và khuyết điểm 2 Hình ảnh 3 Giới thiệu Định nghĩa [Quay lui – Backtracking]: Quay lui là một phương pháp thiết kế thuật toán để tìm nghiệm của bài toán bằng cách xét tất cả các phương án. Một phương án gồm nhiều thành phần, và phương pháp quay lui sẽ xây dựng từng thành phần trong mỗi bước. Trong quá trình xây dựng thành phần thứ i (tìm nghiệm cho thành phần thứ i), nếu không thể xây dựng được thì quay lại chọn nghiệm khác cho thành phần thứ (i-1) 4 Bài toán Phát biểu bài toán: Giả sử nghiệm của bài toán cần tìm có dạng X=(x1, x2, , xk, ), trong đó xi là 1 thành phần nghiệm của bài toán xi có một miền giá trị Di nào đó (xi Di). Số lượng thành phần xi có thể xác định hay không xác định Bài toán có những ràng buộc là F Yêu cầu: Hãy xây dựng 1 nghiệm hay tất cả các nghiệm của bài toán thỏa điều kiện F 5 Phương pháp Phương pháp Quay lui Phương pháp Quay lui xây .