Phân tích và đánh giá thuật toán phương pháp quy hoạch động, giải bài toán ba lô không hạn chế

13 896 5
Phân tích và đánh giá thuật toán phương pháp quy hoạch động, giải bài toán ba lô không hạn chế

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

KHOA CÔNG NGHỆ THÔNG TIN MÔN: PHÂN TÍCH ĐÁNH GIÁ THUẬT TOÁN BÀI TẬP LỚN ĐỀ TÀI: Phương pháp quy hoạch động Giải toán ba không hạn chế: cho n loại đồ vật có khối lượng w1, , wn có giá trị v1, ,vn Xếp đồ vật vào ba có sức T cho tổng giá trị lớn Giả thiết T, wi, vi, i=1, ,n, số nguyên dương Giáo viên hướng dẫn : Đào Thanh Tĩnh Sinh viên thực : Lê Hoàng Phương - 13870819 Lớp : HTTT3 - K25B Hà Nội, 28 tháng năm 2014 Bài toán ba không giới hạn GIỚI THIỆU Bài toán xếp ba (còn có tên gọi toán túi) toán tối ưu hóa tổ hợp Bài toán đặt tên từ vấn đề chọn quan trọng nhét vừa vào ba lô(với giới hạn khối lượng) để mang theo chuyến Sao cho tổng giá trị đồ vật túi mang theo lớn Quy hoạch động thực chất phương pháp cải tiến phương pháp giải vấn đề theo hướng phân rã Cả dựa nguyên lý "chia để trị" Nghĩa ta chia toán ban đầu thành toán nhỏ toán đủ nhỏ để tìm nghiệm.Giải thuật là: giải thuật tham lam (Greedy) Quy hoạch động (Dynamic progaming) Từ đưa đánh giá độ phức tạp thuật toán lựa chọn phương án tối ưu Xin chân thành cám ơn thầyNguyễn Đức Nghĩa giúp đỡ chúng em thực tập Hà Nội tháng 05 năm 2014 12/13 Bài toán ba không giới hạn Mục Lục 12/13 Bài toán ba không giới hạn Quy hoạch động Giải toán cách kết hợp giải pháp toán Điểm khác biệt thuật toán quy hoạch động giải tất toán lần sau ghi kết chúng bảng, tránh việc phải tính lại kết toán gặp lại Nguyên lý tối ưu Bellman - Quy hoạch động trình điểu khiển tối ưu với trạng thái bắt đầu Mọi trạng thái A thuộc trình tối ưu - Tư tưởng chính: Thực toán trước, sử dụng kết để giải toán lớn - Hướng tiếp cận: + Giải toán theo công thức truy hồi + Giải toán trước + Dựa vào toán để giải toán lớn gặp toán cần giải - Tổng quát: + Giải toán qua N bước + Giải toán cho tổng chi phí -> N-1 từ N-1 -> N tối ưu Thuật toán quy hoạch động Bước 1: Xây dựng công thức truy hồi Giả sử: Chia toán thành N giai đoạn 1->N Xác định F(1) - sở quy nạp - Gọi (i) hàm số xác định giá trị tối ưu, tính đến giá trị thứ i -> F(n) nghiệm toán - Đối với toán + Tìm Min: F(N) = Min{F(i), F(j)} i = 1, N-1 j = N-1, N 12/13 Bài toán ba không giới hạn + Tìm Max: F(N) = Max{F(i), F(j)} i = 1, N-1 j = N-1, N Bước 2: Tìm sở quy hoạch động Để chia toán lớn thành toán có cách giải phải yêu cầu phải biến đổi số toán trường hợp sở quy nạp cách thêm biến phụ, sở quy hoạch động Bước 3: Lấp đầy bảng phương án, dựa vào sở quy hoạch động, công thức quy hoạch động Giải toán Bước 4: Truy vết Tìm nghiệm toán Bài toán ba - không giới hạn: unbounded knapsack problem • Có N đồ vật sau: • • Đồ vật thứ i có cân nặng: Wi • Đồ vật thứ i có giá trị là: Vi Không giới hạn: Có đủ – cung ứng đủ đồ vật loại khác N đồ vật • Có ba với sức chứa T: 12/13 Bài toán ba không giới hạn • Vấn đề: Xếp đồ vật vào ba có sức T cho tổng giá trị lớn Giả thiết T, wi, vi, i=1, ,n, số nguyên dương Giải toán trường hợp sau: Mỗi vật chọn nhiều lần (không hạn chế số lần) Ví dụ: 12/13 Bài toán ba không giới hạn InputData: file văn Bag.inp Dòng 1: n, T cách dấu cách n dòng tiếp theo: Mỗi dòng gồm số Wi, Vi, chi phí giá trị đồ vật thứ i OutputData: file văn bag.out: Ghi giá trị lớn tên trộm lấy Example Giải toán 3.1 Ý tưởng tiếp cận toán ba lô–không giới hạn quy hoạch động Phân chia toán vấn đề nhỏ Ta nhận thấy rằng: Giá trị ba phụ thuộc vào yếu tố: Có vật xét trọng lượng lại ba chứa được, có đại lượng biến thiên Cho nên hàm mục tiêu phụ thuộc vào hai đại lượng biến thiên Do bảng phương án bảng chiều 12/13 Bài toán ba không giới hạn Gọi F[i,j] tổng giá trị lớn ba xét từ vật đến vật i trọng ba chưa vượt j Với giới hạn j, việc chọn tối ưu số vật {1,2,…,i-1,i} để có giá trị lớn có hai khả năng: - Nếu không chọn vật thứ i F[i,j] giá trị lớn chọn số vật {1,2,…,i-1} với giới hạn trọng lượng j, tức là: F[i,j] := F[i-1,j] - Nếu có chọn vật thứ i (phải thỏa điều kiện W[i] ≤ j) F[i,j] giá trị vật thứ i V[i] cộng với giá trị lớn có cách chọn số vật {1,2,…,i} (vì vật i chọn tiếp) với giới hạn trọng lượng j-W[i] tức mặt giá trị thu được: F[i,j] := V[i]+F[i,j-W[i]] Do có công thức truy hồi sau: F[0,j] = (hiển nhiên) – Bài toán nhỏ F[i,j] = max(F[i-1,j], V[i]+F[i,j-W[i]] Với giải pháp giải toán ba không giới hạn giải toán nhỏ hơn: Sơ đồ: Bước chia: tạo nên vấn đề nhỏ giải hỗ trợ giải toán gốc 12/13 Bài toán ba không giới hạn Mỗi toán giải quay trở lại hỗ trợ giải toán gốc: 12/13 Bài toán ba không giới hạn Bước lấp đầy phương án Truy vết: Ta nhận thấy: có k >= đồ vật xếp vào bao T >= Wi Định nghĩa: M(v[], w[], T) = giá trị lớn của: v1×x1 + v2×x2 + + vN×xN subject to: w1×x1 + w2×x2 + + wN×xN ≤ T Tường hợp sở toán ba không giới hạn: Khi Ba đầy, xếp vật vào túi Bởi vì, tổng giá trị ba lúc = Hay: M(v, w, 0) = 0; (Không thể xếp thứ vào túi ba sứ chứa) 3.2 Bảng phương án Ta xây dựng bảng phương án dựa công thức truy hồi Để kiểm tra kết có xác hay không (nếu không xác xây dựng lại hàm mục tiêu) Thông qua cách xây dựng hàm mục tiêu bảng phương án định hướng việc truy vết Ví dụ giải toán cụ thể: 12/13 Bài toán ba không giới hạn Bảng phương án: Chúng ta chọn vật (3 lần) vật (3 lần) 3.3 Truy vết Trường hợp 1: Trong bảng phương án F[n,T] giá trị lớn thu chọn n vật với giới hạn trọng lượng M Nếu f[n,T]=f[n-1,T] tức không chọn vật thứ n, ta truy f[n-1,T] Còn f[n,T]≠f[n-1,T] ta thông báo phép chọn tối ưu có chọn vật thứ n truy f[n-1,T-Wn] Trường hợp 2: Trong bảng phương án F[n,T] giá trị lớn thu chọn n vật với giới hạn trọng lượng M Nếu f[n,T]=f[n-1,T] tức không chọn vật thứ n, ta truy f[n-1,T] Còn f[n,T] ≠ f[n-1,T] ta thông báo phép chọn tối ưu có chọn vật thứ n truy f[n,T-Wn] 12/13 Bài toán ba không giới hạn 3.4 Cài đặt M( v[], w[], C ) { int[] sol, mySol, myFinalSol; /* ============================================== Chia nhỏ toán để giải ============================================== */ /* -Giải toán nhỏ dễ giải */ for ( i = 1; i ≤ N; i++ ) { if ( C ≥ w[i] ) sol[i] = M( v, w, C-w[i] ); // Sức chứa ba giảm w[i] đồ vật thứ i xếp túi else sol[i] = 0; // không đủ chứa vật thứ i } /* Sử dụng giải pháp toản nhỏ để giải toán gốc */ for ( i = 1; i ≤ N; i++ ) { if ( C ≥ w[i] ) mySol[i] = sol[i] + v[i]; // Giá trị cân nặng ba tăng thêm v[i]vì đồ vật thứ I xếp túi else mySol[i] = 0; // không đủ chứa vật thứ i } /* ************************* Tìm giá trị tốt (maximum) ************************* */ myFinalSol = mySol[1]; for ( i = 2; i ≤ N; i++ ) if ( mySol[i] > myFinalSol ) myFinalSol = mySol[i]; } return myFinalSol; 12/13 Bài toán ba không giới hạn Đánh giá độ phức tạp: Các vòng lặp giải thuật là: for ( C = 1; C = đồ vật xếp vào bao lô. . .Bài toán ba lô không giới hạn GIỚI THIỆU Bài toán xếp ba lô (còn có tên gọi toán túi) toán tối ưu hóa tổ hợp Bài toán đặt tên từ vấn đề chọn quan trọng nhét vừa vào ba lô( với giới hạn khối

Ngày đăng: 03/10/2017, 00:45

Hình ảnh liên quan

Bước 3: Lấp đầy bảng phương án, dựa vào cơ sở quy hoạch động, công thức - Phân tích và đánh giá thuật toán phương pháp quy hoạch động, giải bài toán ba lô không hạn chế

c.

3: Lấp đầy bảng phương án, dựa vào cơ sở quy hoạch động, công thức Xem tại trang 5 của tài liệu.
3.2. Bảng phương án - Phân tích và đánh giá thuật toán phương pháp quy hoạch động, giải bài toán ba lô không hạn chế

3.2..

Bảng phương án Xem tại trang 10 của tài liệu.
Bảng phương án: - Phân tích và đánh giá thuật toán phương pháp quy hoạch động, giải bài toán ba lô không hạn chế

Bảng ph.

ương án: Xem tại trang 11 của tài liệu.

Từ khóa liên quan

Mục lục

  • Giới thiệu

  • 3.1. Ý tưởng tiếp cận bài toán ba lô–không giới hạn bằng quy hoạch động

  • 3.2. Bảng phương án

  • 3.3. Truy vết

  • 3.4. Cài đặt

Tài liệu cùng người dùng

Tài liệu liên quan