TRƯỜNG ĐẠI HỌC HỒNG ĐỨC KHOA: CNTT & TT BÀI TẬP LỚN MƠN: PHÂN TÍCH VÀ THIẾT KẾ THUẬT TỐN ĐỀ TÀI: “SỬ DỤNG PHƯƠNG PHÁP QUI HOẠCH ĐỘNG GIẢI BÀI TOÁN CÁI TÚI” Họ tên : Đỗ Viết Vũ Mã Số Viên : 1561030049 Lớp : K18 –ĐHCNTT Giáo viên HD : Trịnh Thị Phú Thanh Hóa, tháng 4, năm 2017 MỤC LỤC MỤC LỤC Lời mở đầu I CƠ SỞ LÝ THUYẾT Khái niệm Cách tiếp cận Các bước giải toán với cấu trúc tối ưu .4 Các bước giải toán quy hoạch động II BÀI TOÁN CÁI TÚI .5 Mơ hình tốn Xây dựng hướng giải .5 a Nhập xuất liệu b Xây dụng bảng tính phương pháp qui hoạch động c Xây dựng hàm tìm giá trị lớn .5 d Xây dựng hàm truy vết tìm kết III CHƯƠNG TRÌNH BÀI TỐN CÁI TÚI SỬ DỤNG PHƯƠNG PHÁP QUI HOẠCH ĐỘNG Chương trình Yêu cầu chạy IV DEMO CỦA BÀI TOÁN CÁI TÚI .9 Dữ liệu đầu vào .9 Kết a Bảng tính sử dụng phương pháp QHĐ .9 b Kết toán V KẾT LUẬN 10 Ưu điểm .10 Khuyết điểm 10 Hướng phát triển 10 TÀI LIỆU THAM KHẢO .11 Lời mở đầu Cùng với phát triển khoa học kĩ thuật, công nghệ thông tin nói chung mơn phân tích thiết kế thuật tốn nói riêng ngày ứng dụng rộng rãi nhiều lĩnh vực Với sở liệu khổng lồ, việc đưa phương pháp nhằm giải vấn đề tìm kiếm liệu có hiệu nhanh chóng ln quan tâm nhà phát triển phần mềm Thơng thường có nhiều phương pháp để giải toán Việc truy suất liệu chưa đạt hiệu cao Sử dụng phương pháp quy hoạch động giải pháp làm tăng hiệu suất thao tác xử lý Vấn đề đặt : để giải toán túi, cần dùng phương pháp để đạt hiệu cao Để giải vấn đề ta tìm hiểu phương pháp quy hoạch động I CƠ SỞ LÝ THUYẾT Khái niệm - Quy hoạch động phương pháp giảm thời gian chạy thuật tốn thể tính chất toán gối (overlapping subproblem) cấu trúc tối ưu (optimal substructure) Cách tiếp cận - Top-down (Từ xuống): Bài toán chia thành toán con, toán giải lời giải ghi nhớ để phòng trường hợp cần dùng lại chúng Đây đệ quy lưu trữ kết hợp với - Bottom-up (Từ lên): Tất tốn cần đến giải trước, sau dùng để xây dựng lời giải cho toán lớn Cách tiếp cận tốt không gian nhớ dùng cho ngăn xếp số lời gọi hàm Tuy nhiên, việc xác định tất toán cần thiết cho việc giải tốn cho trước khơng trực giác Các bước giải toán với cấu trúc tối ưu - Chia toán thành toán nhỏ - Giải toán cách tối ưu cách sử dụng đệ quy - Sử dụng kết tối ưu xây dựng lời giải tối ưu cho toán ban đầu Các bước giải toán quy hoạch động - Tên ý nghĩa biến phục vụ sơ đồ lặp - Cách khai báo biến - Sơ đồ (công thức) lặp chuyển từ bước sang bước - Giá trị đầu biến tham gia tính lặp - Tham số điều khiển lặp: thay đổi từ đâu đến đâu - Kết quả: đâu làm để dẫn xuất II BÀI TỐN CÁI TÚI Mơ hình toán Bài toán xếp túi (hay toán ba lơ) tốn tối ưu hóa tổ hợp Bài toán đặt tên từ vấn đề chọn quan trọng bỏ vừa vào túi (với giới hạn khối lượng) để mang theo chuyến Các toán tương tự thường xuất kinh doanh, toán tổ hợp, lý thuyết độ phức tạp tính tốn, mật mã học toán ứng dụng Xây dựng hướng giải a Nhập xuất liệu - Chọn phương án khai báo biến toàn cục - Chọn cách nhập liệu từ bàn phím xuất bảng tính hình b Xây dụng bảng tính phương pháp qui hoạch động - Hàm mục tiêu f: tổng giá trị túi (vali) - Nhận xét: giá trị túi phụ thuộc vào hai yếu tố, giá trị túi trọng lượng đồ vật Do ta dùng mảng hai chiều để lưu trữ F[i][j]: tổng giá trị lớn túi xét từ vật thứ đến vật thứ i trọng lượng không vượt j - Khi xét đến f[i][j] giá trị bảng phương án đượ tối ưu - Tính f[i][j] có khả xảy ra: Nếu f[i][0] = f[0][j] = Nếu a[i] > j f[i][j]=f[i-1][j] Nếu a[i]