Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 14 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
14
Dung lượng
172,16 KB
Nội dung
Học viện Kĩ thuật quân CHHTTTk25B MỤC LỤC Chương 1: BÀITOÁN CÁI TÚI .3 1.1 Phát biểu toán túi .3 1.2 Bàitoán túi dạng – 1.3 Bàitoán túi bị chặn 1.4 Bài tốn túi khơng bị chặn .4 1.5 Bàitoán túi dạng phân số (Fractional Knapsack) Chương 2: PHƯƠNGPHÁPXẤPXỈ .5 1.1 Tỉ lệ xấpxỉ ( Approximation ratio): 1.2 Yêu cầu thuật toánxấp xỉ: Chương 3: PHƯƠNGPHÁP QUY HOẠCH ĐỘNG GIẢI BÀITOÁN BA LÔ 0-16 1.1 Phươngpháp Quy hoạch động (Dynamic Programming) 1.2 Phươngpháp Quy hoạch động giải tốn ba lơ 0-1 1.2.1 Ý tưởng 1.2.2 Thuật toán .8 1.2.3 Độ phức tạp thuật toán 1.2.4 Áp dụng toán thực tế .8 1.2.5 Nhận xét đánh giá Phươngpháp quy hoạch động .12 Chương : CÀI ĐẶT CHƯƠNG TRÌNH .13 1.1 Giới thiệu chương trình .13 1.2 Chương trình demo 13 Chương : TỔNG KẾT 14 1.1 Kết đạt .14 1.2 Hạn chế .14 GVHD: PGS.Đào Thanh Tĩnh SVTH : Tạ Thị Thu Hương Học viện Kĩ thuật quân CHHTTTk25B LỜI NĨI ĐẦU Phân tích, thiết kế đánh giá thuật toán nhân tố mấu chốt xác định hiệu hệ thống giải tốn tin học đặt Có nhiều toán lời giải (thuật toán) đưa tốt mức độ chấp nhận được.Việc tính tốn cho phép chấp nhận sai số đó.Vì vậy, thời gian gần đây, phươngphápxấpxỉ quan tâm phát triển số ứng dụng Có nhiều tốn mà ta giải kĩ thuật, phươngpháp Trong phải đề cập đến tốn túi (Knapsack), hay gọi tốn xếp ba lơ- tốn tối ưu hoá tổ hợp Bàitoán đặt tên từ vấn đề chọn quan trọng nhét vừa vào túi (với giới hạn khối lượng) để mang theo chuyến Liên quan đến việc giải tốn có nhiều phương án khác như: Phươngpháp quy hoạch động, phươngpháp tham lam, phươngpháp nhánh cận Bài tốn ba lơ có nhiều dạng với phươngpháp giải riêng,ở phươngpháp có ưu nhược điểm riêng Tuy nhiên nói chung đạt phương án tốt chưa tối ưu Trong phạm vi tập là: Giải tốn Ba lơ 0-1 thuật tốn xấpxỉ Em lựa chọn Phươngpháp quy hoạch động để giải toán này! GVHD: PGS.Đào Thanh Tĩnh SVTH : Tạ Thị Thu Hương Học viện Kĩ thuật quân CHHTTTk25B Chương 1: BÀITOÁN CÁI TÚI Phát biểu tốn túi Có túi chứa trọng lượng tối đa C Có n đồ vật, đồ vật có trọng lượng wi giá trị pi (C, wi, pi số nguyên dương) Hãy xếp đồ vật vào túi để tổng giá trị túi lớn 1.1 Bàitoán túi dạng – Một đồ vật xếp vào ba lô (1), không xếp vào ba lơ (0) Bài xếp ba lơ 0-1 phát biểu toán học sau: 1.2 Cực đại hóa cho: Bài tốn túi bị chặn Hạn chế số đồ vật thuộc loại không vượt lượng Bài xếp ba lơ bị chặn phát biểu tốn học sau: 1.3 Cực đại hóa cho: GVHD: PGS.Đào Thanh Tĩnh SVTH : Tạ Thị Thu Hương Học viện Kĩ thuật quân CHHTTTk25B Bàitoán túi khơng bị chặn Khơng có hạn chế số lượng đồ vật loại Một trường hợp đặc biệt toán nhận nhiều quan tâm, tốn với tính chất: - Là toán định - Là tốn 0-1 với đồ vật, chi phí giá trị: C = V 1.5 Bàitoán túi dạng phân số (Fractional Knapsack) Có thể cần xếp vào ba lô phần đồ vật Đối với toán dạng 0-1: Xét tổ hợp nặng C ký mà đem lại giá trị cực đại Nếu ta lấy hàng thứ j khỏi túi, hàng lại tổ hợp đem lại giá trị lớn ứng với trọng lượng tối đa C-w j mà ta lấy từ n-1 loại mặt hàng trừ mặt hàng thứ j Đối với toán dạng phân số: Xét trường hợp ta lấy khỏi túi w j-w ký mặt hàng thứ j, hàng lại tổ hợp đem lại giá trị lớn ứng với trọng lượng C-(wj-w) mà ta lấy từ n-1 loại mặt hàng trừ mặt hàng thứ j 1.4 GVHD: PGS.Đào Thanh Tĩnh SVTH : Tạ Thị Thu Hương Học viện Kĩ thuật quân CHHTTTk25B Chương 2: PHƯƠNGPHÁPXẤPXỈ Thuật toán cho kết gần với kết tối ưu gọi thuật toánxấpxỉ 1.1 Tỉ lệ xấpxỉ ( Approximation ratio): Thuật toán cho kết gần với kết tối ưu gọi thuật tốn xấpxỉ - Bài tốn có nhiều giải pháp - Cần tối ưu hóa hàm mục tiêu - Giải pháp tối ưu giải pháp mà cực đại (hoặc cực tiểu) hóa hàm mục tiêu Đặt: - C giá trị hàm mục tiêu giải phápxấpxỉ - C* giá trị hàm mục tiêu giải pháp tối ưu Một thuật tốn xấpxỉ có tỷ lệ xấp xỉ, ký hiệu (n), với liệu vào kích thước n là: + Bài tốn cực tiểu hóa: C ≥ C* >0, (n)=C/C* + Bài tốn cực đại hóa: C* ≥ C > 0, (n)=C*/C Một thuật toán với tỷ lệ xấpxỉ (n) gọi thuật tốn xấp xỉ-(n) Ta ln có: (n) ≥ Nếu (n) nhỏ giải phápxấpxỉ gần với giải pháp tối ưu Thuật toánxấp xỉ-1 cho giải pháp tối ưu (nghĩa (n)=1) 1.2 Yêu cầu thuật toánxấp xỉ: Một thuật toánxấpxỉ phải thoả mãn yêu cầu sau đây: - Dễ tính, dễ chương trình hố - Ước lượng sai số gặp phải - Tính thời gian chạy thuật tốn - Chứng minh tính đắn thuật toán GVHD: PGS.Đào Thanh Tĩnh SVTH : Tạ Thị Thu Hương Học viện Kĩ thuật quân CHHTTTk25B Chương 3: PHƯƠNGPHÁP QUY HOẠCH ĐỘNG GIẢI BÀI TỐN BA LƠ 0-1 1.1 Phươngpháp Quy hoạch động (Dynamic Programming) Phươngpháp quy hoạch động phát minh nhà toán học Mỹ, Richard Bellman, người mà đưa nhận định để giải vấn đề điều cần thiết cần phải lựa chọn định tốt Quy Hoạch Động kphương pháp mạnh mẽ Tin học, phân tích kỹ thấy thuật tốn tiếng Ford-Bellman, Dijkstra, hay Floyd có chất quy hoạch động Đối với nhiều thuật toán, phươngpháp chia để trị thường đóng vai trò chủ đạo việc thiết kế thuật toán Trong phươngpháp quy hoạch động lại tận dụng phươngpháp này: Khi khơng biết cần phải giải tốn nào, ta giải tất toán lưu trữ lời giải (để khỏi tính tốn lại) nhằm sử dụng lại chúng để giải toán lớn Phươngpháp tổ chức tìm kiếm lời giải theo kiểu từ lên (bottom up) Xuất phát từ toán nhỏ đơn giản nhất, tổ hợp lời giải chúng để có lời giải toán lớn hơn… để tìm lời giải tốn ban đầu Khi sử dụng phươngpháp quy hoạch động để giải vấn đề, ta gặp khó khăn sau: Số lượng lời giải toán lớn khơng chấp nhận Khơng phải lúc kết hợp lời giải toán cho lời giải toán lớn Để giải trường hợp vậy, phươngpháp quy hoạch động dựa vào nguyên lý, gọi nguyên lý tối ưu (The principle of optimality) Bellman: “ Nếu lời giải toán tối ưu lời giải tốn tối ưu ” GVHD: PGS.Đào Thanh Tĩnh SVTH : Tạ Thị Thu Hương Học viện Kĩ thuật quân CHHTTTk25B Ý tưởng thuật toán : Để giải toán ta chia toán thành toán nhỏ để giải dễ dàng Sau kết hợp tốn ta có lời giải cho toán ban đầu Trong tốn đơi ta gặp nhiều kết trùng lặp tốn Để tính hiệu quả, thay vi phải tính lại kết đó, ta lưu chúng vào bảng Khi cần lời giải tốn ta cần truy bảng khơng cần tính lại Trong thuật toán quy hoạch động thường dùng thao tác : - Xây dựng hàm quy hoạch động ( phương trình quy hoạch động ) - Lập bảng lưu lại giá trị hàm - Truy xuất lời giải tối ưu toán từ bảng lưu 1.2 Phươngpháp Quy hoạch động giải toán ba lô 0-1 1.2.1 Ý tưởng Input: n: Số đồ vật W: Sức chứa túi w = (w1, w2, …, wn); // Trọng lượng đồ vật c = (c1, c2, …, cn); // Giá trị đồ vật Output: - Đánh dấu vật chọn - Giá trị lớn túi Sử dụng mảng B[0 n,0 W] để lưu lại giải pháptoán B[k,w] tổng giá trị lớn ba lô mà trọng lượng không vượt w sử dụng đồ vật k Ban đầu: B[0,w] = với w B[k,0] = với k B[k,w] = B[k-1,w] wk> w Max{B[k-1,w],B[k-1,w-wk] + bk} wk ≤ w GVHD: PGS.Đào Thanh Tĩnh SVTH : Tạ Thị Thu Hương Học viện Kĩ thuật quân CHHTTTk25B 1.2.2 Thuật toán for (k=0;k w, đồ vật k không sử dụng K W Đồ vật 0000 3 0 k=1 bk = wk = w= w - wk = 1: (2,3) 2: (3,4) 3: (4,5) 4: (5,6) ifwk w // đồ vật k sử dụng if bk + B[k-1,w-wk] > B[k-1,w] B[k,w] = bk + B[k-1,w - wk] else B[k,w] = B[k-1,w] else B[k,w] = B[k-1,w] // wk> w, đồ vật k không sử dụng K W Đồ vật 0 GVHD: PGS.Đào Thanh Tĩnh 0 10 k= bk = wk = w= w - wk< 1: (2,3) 2: (3,4) SVTH : Tạ3:Th ị Thu Hương (4,5) 4: (5,6) Học viện Kĩ thuật quân 000 3 3 CHHTTTk25B 4 7 ifwk w // đồ vật k sử dụng if bk + B[k-1,w-wk] > B[k-1,w] B[k,w] = bk + B[k-1,w - wk] else B[k,w] = B[k-1,w] else B[k,w] = B[k-1,w] // wk> w, đồ vật k không sử dụng K W Đồ vật 0000 3 3 0 4 00 k= bk = wk = w= w - wk = 1: (2,3) 2: (3,4) 3: (4,5) 4: (5,6) ifwk w // đồ vật k sử dụng if bk + B[k-1,w-wk] > B[k-1,w] B[k,w] = bk + B[k-1,w - wk] else B[k,w] = B[k-1,w] else B[k,w] = B[k-1,w] // wk> w, đồ vật k không sử dụng GVHD: PGS.Đào Thanh Tĩnh 11 SVTH : Tạ Thị Thu Hương Học viện Kĩ thuật quân K 0000 3 3 0 4 CHHTTTk25B W 00 Các đồ vật sử dụng: 1, Giá trị lớn nhất: 1.2.5 Nhận xét đánh giá Phươngpháp quy hoạch động Bàitoán túi dễ dàng giải Phươngpháp Quy hoạch động W không lớn, W lớn thời gian chạy trở nên khơng chấp nhận Phươngpháp Quy hoạch động làm việc W trọng lượng, kích thước đồ vật số thực thay số nguyên Ưu điểm phươngpháp quy hoạch động chương trình thực nhanh khơng phải tốn thời gian giải lại toán giải Kỹ thuật quy hoạch động vận dụng để giải tốn tối ưu, tốn có công thức truy hồi Phươngpháp quy hoạch động không đem lại hiệu trường hợp sau: - Khơng tìm cơng thức truy hồi - Số lượng toán cần giải lưu giữ kết lớn khơng thể chấp nhận nhớ máy tính khơng cho phép - Sự kết hợp lời giải toán chưa cho ta lời giải toán ban đầu Tuy nhiên áp dụng phươngpháp quy hoạch động để giải số toán tối ưu thường mang lại hiệu tốt GVHD: PGS.Đào Thanh Tĩnh 12 SVTH : Tạ Thị Thu Hương Học viện Kĩ thuật quân CHHTTTk25B Chương : CÀI ĐẶT CHƯƠNG TRÌNH 1.1 Giới thiệu chương trình Chương trình thử nghiệm cài đặt ngơn ngữ C++, dùng trình biên dịch Dev-C++ - File mã nguồn chương trình: Knapsack.cpp - File chạy chương trình: Knapsack.exe - File liệu: INPUT.TXT 1.2 Chương trình demo GVHD: PGS.Đào Thanh Tĩnh 13 SVTH : Tạ Thị Thu Hương Học viện Kĩ thuật quân CHHTTTk25B Chương : TỔNG KẾT 1.1 Kết đạt Sau nhiều ngày nghiên cứu tìm hiểu tốn chúng em hồn thành đạt số kết sau: - Chương trình chạy với nhiều test - Hiểu thiết lập thuật toán viết chương trình dựa vào thuật tốn thiết lập - Chương trình viết ngơn ngữ đơn giản dễ hiểu, kiểm tra, sửa chữa 1.2 Hạn chế - Giao diện chương trình hạn chế GVHD: PGS.Đào Thanh Tĩnh 14 SVTH : Tạ Thị Thu Hương ... (w =0; w≤W;w++) B [0, w] = 0; SVTH : Tạ Thị Thu Hương Học viện Kĩ thuật quân K CHHTTTk25B W 0 0 0 0 0 for (k =0; k≤n;k++) B[k ,0] = 0; K W Đồ vật 0 0 0 0 0 k =1 bk = wk = w =1 w - wk = -1 1: (2,3) 2: (3,4)... vật 0 0 0 0 3 3 0 4 0 0 k= bk = wk = w= w - wk = 1: (2,3) 2: (3,4) 3: (4,5) 4: (5,6) ifwk w // đồ vật k sử dụng if bk + B[k -1, w-wk] > B[k -1, w] B[k,w] = bk + B[k -1, w - wk] else B[k,w] = B[k -1, w]... B[k -1, w] // wk> w, đồ vật k không sử dụng GVHD: PGS.Đào Thanh Tĩnh 11 SVTH : Tạ Thị Thu Hương Học viện Kĩ thuật quân K 0 0 0 0 3 3 0 4 CHHTTTk25B W 0 0 Các đồ vật sử dụng: 1, Giá trị lớn nhất: 1. 2.5