一、动态规划的定义以及术语
1.定义:将一个问题分解为子问题递归求解,并且将中间结果保存以避免重复计算的办法,就叫做“动态规划”
2.阶段:把求解问题的过程恰当地分成若干个相互联系的阶段,以便于求解,过程不同,所处的阶段就不同。
3.阶段变量:描述阶段的变量称为阶段变量。
4.状态:在动态规划解题策略中,把描述问题的一组变量称为一个“状态”。而某个状态下的值,就是这个状态所对应的子问题的解。
5.决策:在动态规划中,我们也把状态之间的迁移称为决策。
6.使用动态规划时满足的性质:(1)最优子结构:最优子结构指问题的最优解包含了子问题的最优解,它是动态规划方法可行的理论基础。
(2)重叠子问题:一个问题具有子问题重叠性质是指用递归算法自顶向下解这个问题时,用来解原问题的递归算法可以反复的解同样的子问题,而不是总在产生新的子问题。
二、例题
1.最长上升子序列(LIS(Longest Increasing Subsequence))
给定一个整数序列A1A2A3….An。求它的一个递增子序列,使子序列的元素个数尽量多,元素不一定要求连续。
例:序列0, 8, 4, 12, 2, 10, 6, 14, 9, 13, 11,15 的最长上升子序列是: 0,2,6,9,13,15 序列的长度为6 另一个长度为6的LIS是0,4,6,9,11,15
由此可见,一个序列的LIS(Longest Increasing Subseq

本文详细介绍了动态规划的概念,包括定义、阶段、状态、决策等关键术语,并通过最长上升子序列(LIS)的问题举例说明,探讨了最优子结构和重叠子问题的特性。此外,还讨论了LIS问题的$O(n^2)$解决方案,并提出通过二分查找优化到$O(n log n)$的时间复杂度。
最低0.47元/天 解锁文章
754

被折叠的 条评论
为什么被折叠?



