Báo cáo bài tập lớn môn học thuật toán ứng dụng đề tài quy hoạch động

11 0 0
Báo cáo bài tập lớn môn học thuật toán ứng dụng đề tài quy hoạch động

Đ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

Khái niệm - Quy hoạch động là một kỹ thuật trong lập trình giúp giải quyết một cách hiệu quảmột lớp vấn đề có các bài toán con chồng chéo và thuộc tính cấu trúc con tối ưu.Những bài toán

BÁO CÁO BÀI TẬP LỚN MÔN HỌC THUẬT TOÁN ỨNG DỤNG Đề tài: Quy hoạch động Nhóm sinh viên thực Nhóm 5 hiện: Thành viên nhóm: Giảng viên hướng dẫn: Hà Nội, ngày 18 tháng 10 năm 2022 MỤC LỤC I Giới thiệu chung về thuật toán 3 1 Khái niệm 3 2 Đặc điểm 3 3 Ý tưởng 3 4 Các bước thực hiện 3 5 So Sánh 3 II Mô Tả thuật toán .4 III Phương pháp 4 1 Phương pháp tiếp cận từ trên xuống hay phương pháp ghi nhớ 4 2 Phương pháp từ dưới lên hay phương pháp lập bảng 4 IV Đánh giá 5 1 Ưu điểm 5 2 Nhược điểm 5 2 V Ví dụ minh họa 6 1 Tìm dãy con chung tổng lớn nhất 6 2 Lát gạch đường đôi 7 3 I Giới thiệu chung về thuật toán 1 Khái niệm - Quy hoạch động là một kỹ thuật trong lập trình giúp giải quyết một cách hiệu quả một lớp vấn đề có các bài toán con chồng chéo và thuộc tính cấu trúc con tối ưu Những bài toán như vậy liên quan đến việc tính toán nhiều lần giá trị của các bài toán con giống nhau để tìm ra giải pháp tối ưu + Các bài toán con chồng chéo: Bài toán con là các bài toán nhỏ hơn của bài toán ban đầu Bất kỳ bài toán nào cũng có các bài toán con trùng nhau nếu việc tìm lời giải của nó liên quan đến việc giải cùng một bài toán con nhiều lần + Thuộc tính cấu trúc con tối ưu: Bất kỳ bài toán nào cũng có thuộc tính cấu trúc con tối ưu nếu giải pháp tối ưu tổng thể của nó có thể được xây dựng từ các giải pháp tối ưu của các bài toán con của nó 2 Đặc điểm - Dùng quyết bài toàn tối ưu theo nguyên lý “chia để trị” nhưng thực chất là một phương pháp cải tiến hơn của phương pháp giải quyết bài toán theo hướng đệ quy - Làm giảm độ phức tạp, giảm thời gian giải quyết bài toán 4 - Thường được tiếp cận theo hướng từ dưới lên trên 3 Ý tưởng - Tránh tính toán lại mọi thức hai lần, mà lưu giữ kết quả đã tìm được vào một bảng làm giả thiết cho việc tìm kiếm những kết quả của trường hợp đó - Chúng ta sẽ làm đầy dần giá trị của bảng này bởi các kết quả của những trường hợp trước đã được giải Kết quả cuối cùng là kết quả của bài toán cần giải 4 Các bước thực hiện - Bước 1: Lập công thức truy hồi - Bước 2: Tổ chức dữ liệu và chương trình - Bước 3: Truy vết, tìm nghiệm của bài toán dựa vào bảng phương án 5 So Sánh * So sánh thuật toán đệ quy và quy hoạch động - Quy hoạch động hầu hết được áp dụng cho các thuật toán đệ quy Đây không phải là sự ngẫu nhiên, hầu hết các bài toán tối ưu hóa đều yêu cầu đệ quy và quy hoạch động được sử dụng để tối ưu hóa 5 - Nhưng không phải bài toán nào sử dụng đệ quy cũng có thể sử dụng quy hoạch động Trừ khi có sự xuất hiện của các bài toán con chồng chéo như trong bài toán dãy fibonacci, một phép đệ quy chỉ có thể đạt được giải pháp bằng cách sử dụng thuật toán chia để trị Đó là lý do tại sao một thuật toán đệ quy như Merge Sort không thể sử dụng quy hoạch động, bởi vì các bài toán con không chồng chéo nhau * So sánh thuật toán tham lam so với quy hoạch động - Thuật toán tham lam tương tự như quy hoạch động theo nghĩa cả hai đều là công cụ để tối ưu hóa - Tuy nhiên, các thuật toán tham lam tìm kiếm các giải pháp tối ưu cục bộ hay nói cách khác, một sự lựa chọn tham lam, với hy vọng tìm ra giải pháp tối ưu toàn cục Do đó, các thuật toán tham lam có thể đưa ra một dự đoán có vẻ tối ưu vào thời điểm đó nhưng lại trở nên tốn kém và không đảm bảo mức tối ưu toàn cục - Mặt khác, quy hoạch động tìm ra giải pháp tối ưu cho các bài toán con và sau đó đưa ra lựa chọn sáng suốt để kết hợp các kết quả của các bài toán con đó để tìm ra giải pháp tối ưu nhất 6 II Mô Tả thuật toán - Quy hoạch động hoạt động bằng cách lưu trữ kết quả của các bài toán con để khi cần đến các giải pháp của chúng, chúng có thể được sử dụng và chúng ta không cần phải tính toán lại Kỹ thuật lưu trữ giá trị của các bài toán con này được gọi là ghi nhớ Bằng cách lưu các giá trị trong mảng, chúng ta có thể tiết kiệm thời gian tính toán các bài toán con mà chúng ta đã gặp phải - Quy hoạch động bằng cách ghi nhớ là một cách tiếp cận từ trên xuống Bằng cách đảo ngược hướng mà thuật toán hoạt động, tức là bắt đầu từ trường hợp cơ sở và hướng tới giải pháp cần tìm, chúng ta cũng có thể triển khai quy hoạch động theo cách từ dưới lên III Phương pháp 1 Phương pháp tiếp cận từ trên xuống hay phương pháp ghi nhớ Trong cách tiếp cận này, chúng ta sẽ cố gắng giải bài toán lớn hơn bằng cách lặp đệ quy để tìm lời giải cho các bài toán con nhỏ hơn Bất cứ khi nào chúng ta giải quyết một vấn đề con, chúng ta sẽ lưu kết quả của nó vào bộ nhớ để không phải giải quyết nó lặp đi lặp lại nếu nó được gọi nhiều lần Thay vào đó, chúng ta chỉ cần trả về kết quả đã được lưu Kỹ thuật lưu trữ kết quả của các bài toán con đã được giải quyết này được gọi là kỹ thuật ghi nhớ 7 2 Phương pháp từ dưới lên hay phương pháp lập bảng Lập bảng ngược lại với cách tiếp cận từ trên xuống và không sử dụng đệ quy Trong cách tiếp cận này, chúng ta giải quyết vấn đề “từ dưới lên” (tức là bằng cách giải quyết tất cả các vấn đề con liên quan trước) Điều này thường được thực hiện bằng cách điền vào một bảng với N chiều Dựa trên kết quả trong bảng, giải pháp cho vấn đề ban đầu sẽ được tính toán Lập bảng trái ngược với kỹ thuật ghi nhớ, vì trong kỹ thuật ghi nhớ, chúng ta sẽ giải quyết vấn đề và duy trì một bản đồ các vấn đề con đã được giải quyết Nói cách khác, trong kỹ thuật ghi nhớ, chúng ta thực hiện từ trên xuống theo nghĩa là chúng ta giải quyết vấn đề trên cùng trước (thường lặp lại xuống để giải quyết các vấn đề phụ) IV Đánh giá 1 Ưu điểm - Nhanh - Viết mã đơn gian - Viết đệ quy thích hợp với tư duy top-down nhưng thường chạy chậm hơn - Bottom-up chạy nhanh hơn nhưng đôi khi tính thừa không cần thiết 8 - Đánh đổi bộ nhớ lấy tốc độ - Tiết kiệm được thời gian thực hiện vì không cần phải tính đi tính lại nhiều lần một số bài toán con giống nhau 2 Nhược điểm - Hầu hết các vấn đề giải được bằng quy hoạch động là bài giải bằng chia để trị - Nhưng không phải bài chia để trị nào cũng giải được bằng quy hoạch động - Nếu số bài toán con tăng quá nhanh, quy hoạch động sẽ không khả thi - Thích hợp với xử lý số nguyên hơn là số thực - Đòi hỏi mọi bài toán con phải được giải tối ưu V Ví dụ minh họa 1 Tìm dãy con chung tổng lớn nhất 9 10 2 Lát gạch đường đôi 11

Ngày đăng: 21/03/2024, 16:24

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

  • Đang cập nhật ...

Tài liệu liên quan