1. Trang chủ
  2. » Luận Văn - Báo Cáo

De 21 phuong phap xap xi bai toan balo 0 1

14 321 0

Đ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

Cấu trúc

  • LỜI NÓI ĐẦU

    • Phân tích, thiết kế và đánh giá thuật toán là một trong những nhân tố mấu chốt xác định được hiệu năng hệ thống khi giải quyết bài toán tin học đặt ra. Có nhiều bài toán lời giải (thuật toán) được đưa ra chỉ tốt ở một mức độ chấp nhận được.Việc tính toán cho phép chấp nhận một sai số nào đó.Vì vậy, thời gian gần đây, phương pháp xấp xỉ được quan tâm và phát triển trong một số ứng dụng. Có rất nhiều bài toán mà ta có thể giải bằng kĩ thuật, phương pháp này. Trong đó phải đề cập đến bài toán cái túi (Knapsack), hay còn gọi là bài toán xếp ba lô- đây là một bài toán tối ưu hoá tổ hợp. Bài toán được đặt tên từ vấn đề chọn những gì quan trọng có thể nhét vừa vào trong một cái túi (với giới hạn khối lượng) để mang theo trong một chuyến đi.

  • Chương 1: BÀI TOÁN CÁI TÚI

    • 1.1. Phát biểu bài toán cái túi

    • 1.2. Bài toán cái túi dạng 0 – 1

    • 1.3. Bài toán cái túi bị chặn

    • 1.4. Bài toán cái túi không bị chặn

    • 1.5. Bài toán cái túi dạng phân số (Fractional Knapsack)

  • Chương 2: PHƯƠNG PHÁP XẤP XỈ

    • 1.1. Tỉ lệ xấp xỉ ( Approximation ratio):

    • 1.2. Yêu cầu của thuật toán xấp xỉ:

  • Chương 3: PHƯƠNG PHÁP QUY HOẠCH ĐỘNG GIẢI BÀI TOÁN BA LÔ 0-1

    • 1.1. Phương pháp Quy hoạch động (Dynamic Programming)

    • 1.2. Phương pháp Quy hoạch động giải bài toán ba lô 0-1

      • 1.2.1. Ý tưởng

      • 1.2.2. Thuật toán

      • 1.2.3. Độ phức tạp của thuật toán

      • 1.2.4. Áp dụng bài toán thực tế

    • 1.2.5. Nhận xét và đánh giá Phương pháp quy hoạch động

  • Chương 4 : CÀI ĐẶT CHƯƠNG TRÌNH

    • 1.1. Giới thiệu chương trình

    • 1.2. Chương trình demo

  • Chương 5 : TỔNG KẾT

    • 1.1. Kết quả đạt được

    • 1.2. Hạn chế

Nội dung

Học viện Kĩ thuật quân CHHTTTk25B MỤC LỤC Chương 1: BÀI TOÁN CÁI TÚI .3 1.1 Phát biểu toán túi .3 1.2 Bài toán túi dạng – 1.3 Bài toán túi bị chặn 1.4 Bài tốn túi khơng bị chặn .4 1.5 Bài toán túi dạng phân số (Fractional Knapsack) Chương 2: PHƯƠNG PHÁP XẤP XỈ .5 1.1 Tỉ lệ xấp xỉ ( Approximation ratio): 1.2 Yêu cầu thuật toán xấp xỉ: Chương 3: PHƯƠNG PHÁP QUY HOẠCH ĐỘNG GIẢI BÀI TOÁN BA LÔ 0-16 1.1 Phương pháp Quy hoạch động (Dynamic Programming) 1.2 Phương phá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ương phá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ương pháp xấp xỉ quan tâm phát triển số ứng dụng Có nhiều tốn mà ta giải kĩ thuật, phương phá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ài toá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ương pháp quy hoạch động, phương pháp tham lam, phương pháp nhánh cận Bài tốn ba lơ có nhiều dạng với phương pháp giải riêng,ở phương phá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ấp xỉ Em lựa chọn Phương phá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ÀI TOÁ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ài toá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ài toá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ài toá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ƯƠNG PHÁP XẤP XỈ Thuật toán cho kết gần với kết tối ưu gọi thuật toán xấp xỉ 1.1 Tỉ lệ xấp xỉ ( 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ấp xỉ - 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áp xấp xỉ - C* giá trị hàm mục tiêu giải pháp tối ưu Một thuật tốn xấp xỉ 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ấp xỉ (n) gọi thuật tốn xấp xỉ-(n) Ta ln có: (n) ≥ Nếu (n) nhỏ giải pháp xấp xỉ gần với giải pháp tối ưu Thuật toán xấp xỉ-1 cho giải pháp tối ưu (nghĩa (n)=1) 1.2 Yêu cầu thuật toán xấp xỉ: Một thuật toán xấp xỉ 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ƯƠNG PHÁP QUY HOẠCH ĐỘNG GIẢI BÀI TỐN BA LƠ 0-1 1.1 Phương pháp Quy hoạch động (Dynamic Programming) Phương phá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ương pháp chia để trị thường đóng vai trò chủ đạo việc thiết kế thuật toán Trong phương pháp quy hoạch động lại tận dụng phương phá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ương phá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ương phá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ương phá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ương phá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áp toá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 0 0 0 0 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 0 0 0 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 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] 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 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 Nhận xét đánh giá Phương pháp quy hoạch động Bài toán túi dễ dàng giải Phương phá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ương phá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ương phá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ương phá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ương phá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

Ngày đăng: 23/05/2018, 14:44

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w