DP总结之零:动态规划概述

零、前言

1.三个性质

有必要对动归的三个性质进行一些说明分析,以后的所有题都要贯穿这些思想

(1)相同子问题:

一个大问题分解为若干小问题,小问题与大问题形式上相同(用箭头表示了状态的转移关系)

①数字三角形:从某一个点到底边的最大和<=其正下方点到底边的最大和和斜下方点到底边的最大和

②最长上升子序列:以某一个点i为结尾的最长上升子序列<=这个点之前任何一个满足a[j]<=a[i]的j为结尾的最长上升子序列

③爬楼梯:走n步的走法<=走n-1步的走法,走n-2步的走法

(2)最优子结构:

问题是最优的,它的子问题也必须是最优的

感觉蕴含在了相同子问题里面,大问题是求最优解,小问题当然也是求最优解,不过也说明了 有的问题虽然可以将大问题分解为若干相同的小问题,但大问题的最优解不等于若干小问题最优解的堆积,这一点很关键

(3)无后效性:

dp只能用于当前决策与过去状态无关的问题,即过去的决策是否会使得当前的决策受限,当前有的决策不能做或产生其他新决策

①数字三角形:在已知,正下方点到底边的最大和,斜下方点到底边的最大和,的情况下,可以确定该点到底边的最大和,无需考虑走到当前点的路径不同的话会不会导致现在的决策有一些不能做这样的问题

②最长上升子序列:(已知i,j定义的情况下)dp[i]必然会由dp[j]产生,无需考虑dp[j]内部到底有哪些元素,是否会导致a[i]不能选这样的问题

③爬楼梯:已知走n-1步的走法,走n-2步的走法,无需考虑这些走法中某些走法是不是可能导致当前无法走1步或2步这样的问题

2.解题步骤

1.确定状态,注意维度

扫描二维码关注公众号,回复: 1025591 查看本文章

2.确定状态转移方程,注意无后效性和边界设定

3.确定使用递推还是记忆化搜索来实现(可以递归的一定可以记忆化搜索,但有的只能记忆化搜索)

3.递推和记忆化搜索的问题

1.递推:(自底向上)问的是n状态,从1状态推得

2.记忆化搜索:(自顶向下)问的是n状态,从n状态搜索需要的子状态,求出子状态并记录

猜你喜欢

转载自blog.csdn.net/qq_41333528/article/details/80359508
今日推荐