【动态规划】-【理论基础】-动态规划简要介绍及五步曲

重点:最优子结构,重叠子问题,五步曲

目录

1. 动态规划题型

2. 什么是动态规划

3. 动态规划的解题步骤


1. 动态规划题型

总的来说,动态规划有如下几类题型:

(1)基础题目:如斐波那契数,爬楼梯,不同路径,整数拆分等;

(2)背包问题:01背包,完全背包,多重背包等;

(3)打家劫舍问题:

(4)投票问题:只能买卖一次,可以买卖若干次等;

(5)子序列问题:连续,不连续,编辑距离等;

2. 什么是动态规划

动态规划(Dynamic Programming),简称DP,如果一个问题有很多重叠子问题,并且问题的解来源于很多子问题的解,那么这个题目使用动态规划来做是最有效的。其特点有以下方面:

(1)最优子结构

(2)重叠子问题

动态规划和贪心算法:二者都需要最优子结构,即大问题的整体最优解可通过一系列局部最优解得到。但区别是,动态规划当前问题依赖于子问题的解,贪心不依赖。所以有的问题贪心得不到最优解,DP一定能得到。

——动态规划一步一个选择,当前问题依赖于子问题的解,当前的解是根据上一个结果推出来的;贪心一步一个选择,但不依赖于子问题的解,直接选择;

——动态规划的条件是子问题的重叠性质,所以记录下来以后会用到;贪心是最优子结构性质加贪心性质,即整体最优解可以通过一系列局部最优得到;

——动态规划自底向上,贪心自顶向下。

动态规划和分治法:二者都是将问题分解成若干子问题。但DP的子问题不是相互独立的,所以需要记录下来。而分治法的子问题是相互独立的,所以不需要记录(如归并排序)。

——分治法用递归,DP用for循环嵌套,同时记录结果。

3. 动态规划的解题步骤

动态规划具有比较鲜明的特征,即最优子结构和重叠子问题。其状态转移公式(递推公式)很重要,拆分为以下五步:

(1)确定dp数组以及下标的含义;

(2)确定递推公式;

(3)dp数组如何初始化;

(4)确定遍历顺序;

(5)举例推导dp数组;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值