Tối ưu hóa bộ nhớ
Bài học 12 trên 15 trong khóa học Nhập môn quy hoạch động của Coddy.
Trong quy hoạch động, chúng ta thường dùng bảng hoặc ma trận để lưu lời giải cho các bài toán con. Tuy nhiên, trong một số trường hợp, bảng có thể quá lớn và tiêu tốn quá nhiều bộ nhớ. Đây là lúc kỹ thuật tối ưu hóa bộ nhớ phát huy tác dụng. Các kỹ thuật tối ưu hóa bộ nhớ giúp giảm lượng bộ nhớ cần thiết để giải một bài toán quy hoạch động.
Một kỹ thuật tối ưu hóa bộ nhớ phổ biến là dùng mảng cuộn, còn gọi là mảng trượt. Thay vì lưu toàn bộ bảng, ta chỉ lưu một phần của bảng tại mỗi thời điểm và loại bỏ các giá trị trước đó khi tính các giá trị mới. Cách này có thể giảm đáng kể lượng bộ nhớ cần thiết để giải bài toán.
Thử thách
KhóTrong thử thách này, bạn được cho một mảng số nguyên. Nhiệm vụ của bạn là tìm độ dài của dãy con tăng dài nhất (LIS) trong mảng. Dãy con tăng là một dãy số trong mảng, trong đó mỗi số lớn hơn số đứng trước nó. LIS là dãy con tăng dài nhất như vậy. Bạn phải triển khai lời giải bằng kỹ thuật tối ưu hóa bộ nhớ.
Tự làm thử
def lis_length(arr):
# Viết code ở đâyTất cả bài học trong Nhập môn quy hoạch động
1Giới thiệu về quy hoạch động
Quy hoạch động là gì?Vì sao quy hoạch động quan trọng?Ứng dụng trong nhiều lĩnh vực3Thuật toán quy hoạch động
Dãy con chung dài nhấtBài toán cái ba lôBài toán đổi tiềnKhoảng cách chỉnh sửaTự luyện tập: Trình biên dịch Python online