Cấu trúc dữ liệu - Phần 5 (tt)
Thông tin tài liệu:
Nội dung trích xuất từ tài liệu:
Cấu trúc dữ liệu - Phần 5 (tt) Phương pháp nhánh cận (brand and bound) GVGD: Trương Phước Hải Phương pháp nhánh và cận Kỹ thuật quay lui duyệt tất cả khả năng theo mô hình cây phân cấp để tìm ra cấu hình 2 Phương pháp nhánh và cận Sử dụng quay lui để tìm cấu hình tối ưu Đánh giá tất cả cấu hình để tìm ra cấu hình tối ưu: điều này dẫn đến sự bùng nổ tổ hợp Nếu việc chọn thành phần xi không dẫn đến cấu hình tối ưu sẽ gây lãng phí tài nguyên để tìm các thành phần tiếp theo xi+1, xi+2, ... Cần tận dụng thông tin đã biết để sớm loại bỏ cấu hình chắc chắn không thể tối ưu 3 Phương pháp nhánh và cận Kỹ thuật nhánh và cận (gọi tắt nhánh cận) là một dạng cải tiến của kỹ thuật quay lui áp dụng cho bài toán tối ưu Đánh giá lại giá trị tối ưu cục bộ (cận) của các nhánh sau mỗi lần quay lui Sử dụng cận để loại bỏ những nhánh dư thừa của cây tìm kiếm nhằm giảm chi phí: tỉa nhánh Đánh giá cận là vấn đề khó khăn nhất trong việc áp dụng phương pháp nhánh cận 4 Phương pháp nhánh và cận Ý tưởng Khởi tạo một cấu hình BEST cho bài toán: khởi tạo cận Tính chi phí của các cấu hình ngay trong quá trình xây dựng Nếu tốt hơn BEST: cập nhật cấu hình tối ưu và tiếp tục Ngược lại quay lui để tìm phương án khác 5 Phương pháp nhánh và cận Mô hình tổng quát của kỹ thuật nhánh cận được cải tiến từ mô hình đệ quy như sau Try(i) For (j tập khả năng của X[i]) If (chấp nhận j) Then Chọn khả năng j cho X[i] If (X[i] là cuối cấu hình) Then Else If (vẫn còn tốt hơn BEST) Then Try(i + 1) Cuối If Cuối If Cuối for Cuối Try 6 Phương pháp nhánh và cận Khi đó giải thuật nhánh cận được thực hiện theo các bước sau NhanhVaCan() BEST = +; //Nếu biết X’ là phương án tối ưu hiện tại //BEST = f(X’); Try(0); If (BEST < +) Then Else Cuối If Cuối NhanhVaCan 7 Phương pháp nhánh và cận Bài toán người du lịch (TSP - Travelling Salesman Problem) Một bản đồ gồm N thành phố được đánh số từ 0 đến N-1 Một du khách xuất phát tại thành phố 1 và muốn tham quan tất cả thành phố, mỗi nơi đến đúng 1 lần rồi trở về thành phố xuất phát Biết rằng giữa 2 thành phố có thể lưu thông trực tiếp sẽ tốn một chi phí nhất định Yêu cầu xác định hành trình du lịch với chi phí nhỏ nhất 8 Phương pháp nhánh và cận Tổ chức dữ liệu Sử dụng mảng 2 chiều gồm N dòng, N cột để biểu diễn chi phí đi lại giữa các thành phố: ma trận chi phí C[i][j] = v: cho biết việc đi từ thành phố i đến trực tiếp thành phố j tốn chi phí v C[i][j] = +: cho biết không có đường đi trực tiếp từ thành phố i đến thành phố j Sử dụng mảng 1 chiều X[0], X[1], …, X[N] để lưu trữ một nghiệm bài toán (thứ tự thành phố thăm trong hành trình) 9 Phương pháp nhánh và cận Ví dụ đồ thị biểu diễn và ma trận chi phí tương ứng như sau 0 1 2 3 2 0 2 0 0 3 2 1 1 3 1 3 0 1 2 1 1 2 2 1 0 4 2 4 3 3 1 2 4 0 10 Phương pháp nhánh và cận Nhận xét x0 = 0 là thành phố xuất phát Hành trình cần tìm có dạng (x0 = 0, x1, x2, .., xN-1, xN = 0) Một hành trình (x1, x2, .., xN-1) là một hoán vị của các thành phố {1, 2, …, N-1} 11 Phương pháp nhánh và cận Cây tìm kiếm TSP theo kỹ thuật quay lui 0 3 1 2 1 2 3 1 4 1 2 2 4 2 3 1 3 1 2 4 4 2 2 1 1 3 2 3 1 2 1 2 2 1 1 3 3 0 0 0 0 0 0 9 11 6 11 6 9 12 Phương pháp nhánh và cận Duyệt quay lui Chọn x1 là một trong các TP có thể đến trực tiếp từ x0 Chọn x2 là một trong các TP chưa tham quan và có thể đến trực tiếp từ x3 … Chọn xi là một trong các TP chưa tham quan và có thể đến trực tiếp từ xi-1 (1 ≤ i ≤ N-1) 1 ...
Tìm kiếm theo từ khóa liên quan:
thiết kế giải thuật phân tích tìm kiếm và sắp xếp giải thuật máy vi tính Cấu trúc dữ liệuGợi ý tài liệu liên quan:
-
Đề cương chi tiết học phần Cấu trúc dữ liệu và giải thuật (Data structures and algorithms)
10 trang 318 0 0 -
Bài giảng Phân tích thiết kế và giải thuật - Chương 2: Kỹ thuật thiết kế giải thuật
80 trang 249 0 0 -
Giải thuật và cấu trúc dữ liệu
305 trang 163 0 0 -
Bài giảng Phân tích thiết kế phần mềm: Chương 1 - Trường ĐH Ngoại ngữ - Tin học TP.HCM
64 trang 150 0 0 -
Tập bài giảng Thực hành kỹ thuật lập trình
303 trang 143 0 0 -
Giáo trình Cấu trúc dữ liệu và thuật toán (Tái bản): Phần 1
152 trang 139 0 0 -
Tài liệu tham khảo: Cấu trúc dữ liệu và giải thuật
229 trang 124 0 0 -
Bài giảng Phân tích thiết kế thuật toán: Chương 3 - Nguyễn Văn Linh
87 trang 110 0 0 -
Lập trình C - Cấu trúc dữ Liệu
307 trang 74 0 0 -
Ứng dụng và cài đặt cấu trúc dữ liệu bằng C: Phần 1
338 trang 73 0 0 -
49 trang 72 0 0
-
54 trang 70 0 0
-
Bài giảng Cơ sở dữ liệu: Chương 3 - ThS. Hoàng Mạnh Hà
67 trang 70 0 0 -
Bài giảng Cấu trúc dữ liệu và giải thuật: Phần 1 - ThS. Hoàng Thế Phương
128 trang 67 0 0 -
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 2 - Ngô Công Thắng
8 trang 66 0 0 -
Giáo trình Cấu trúc dữ liệu và giải thuật: Phần 2 - Lê Văn Vinh
67 trang 57 1 0 -
Phân tích và thiết kế giải thuật: Các kỹ thuật thiết kế giải thuật - Chương 5
0 trang 51 0 0 -
Giáo trình CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT - Chương 1
5 trang 51 0 0 -
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 5 - ThS. Trịnh Quốc Sơn (ĐH Công nghệ Thông tin)
20 trang 50 0 0 -
Cấu trúc dữ liệu và Ngôn ngữ lập trình C
261 trang 45 0 0