Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 66 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
66
Dung lượng
1,12 MB
Nội dung
.c om an co ng THUẬT TOÁN ỨNG DỤNG cu u du o ng th ĐỆ QUY QUAY LUI Phạm Quang Dũng Bộ môn KHMT dungpq@soict.hust.edu.vn CuuDuongThanCong.com https://fb.com/tailieudientucntt NộI dung th an co ng Tổng quan đệ quy quay lui Bài toán liệt kê xâu nhị phân Bài toán liệt kê nghiệm ngun dương phương trình tuyến tính Bài tốn liệt kê TSP Bài tốn liệt kê hành trình taxi Bài toán liệt kê CBUS Bài toán liệt kê BCA Bài toán liệt kê CVRP ng c om Đệ quy quay lui u Tổng quan nhánh cận Bài toán tối ưu TSP Bài tốn tối ưu hành trình taxi Bài toán tối ưu CBUS Bài toán tối ưu BCA Bài toán tối ưu CVRP cu du o Thuật toán nhánh cận CuuDuongThanCong.com https://fb.com/tailieudientucntt Đệ quy quay lui giải toán tối ưu tổ hợp c om Phương pháp dùng để liệt kê cấu hình tổ hợp ng Liệt kê: liệt kê tất x = (x1,x2,…, xN) xi du o ng th an co Ai - tập rời rạc, đồng thời (x1,x2, , xN) thỏa mãn ràng buộc C cho trước Tối ưu tổ hợp: số (phương án) x = (x1,x2,…, xN) xi Ai - tập rời rạc, đồng thời (x1,x2, , xN) thỏa mãn ràng buộc C cho trước, cần tìm phương án có f(x) → min(max) cu u Thử giá trị cho biến Chiến lược chọn biến, ví dụ x1, x2, x3,…, xN Chiến lược chọn giá trị cho biến, ví dụ từ nhỏ đến lớn ngược lại CuuDuongThanCong.com https://fb.com/tailieudientucntt .c om Đệ quy quay lui x1 = v1 x1 = vk co x1 = v2 ng () cu u du o (v1,uq) x3 = w1 th x2 = uq ng x2 = u1 an (v1) x3 = wh (v1,uq, wh) CuuDuongThanCong.com https://fb.com/tailieudientucntt .c om Đệ quy quay lui Tại thời điểm, ta có phương án phận (x1 = v1, x2 = v2, ng …, xk-1 = vk-1) → cần thử duyệt tiếp khả cho xk ? cu u du o ng th an co try(k){// thử giá trị cho xk forall v Ak do{ if(check(v,k)) then{// kiểm tra ràng buộc C toán xk = v; [cập nhật cấu trúc liệu liên quan] if(k = N) then solution(); else try(k+1); [khôi phục trạng thái cấu trúc liệu quay lui] } } } CuuDuongThanCong.com https://fb.com/tailieudientucntt .c om Liệt kê xâu nhị phân độ dài N #include using namespace std; ng #define MAX 100 int N; an co int x[MAX];// bieu dien loi phuong an cua bai toan th bool check(int v, int k){ return true; du o void solution(){ ng } cu } u for(int i = 1; i