(算法设计与分析)第三章动态规划-第一节1:动态规划基本思想、框架
创始人
2024-04-05 16:13:32

文章目录

  • 一:动态规划简介
    • (1)最优化问题
    • (2)动态规划基本概念和思想
  • 二:动态规划框架
    • (1)数学描述
    • (2)代码描述
  • 三:动态规划算法步骤

一:动态规划简介

(1)最优化问题

  • 注意:更多最优化问题及理论内容可了解专栏最优化理论与方法

最优化问题:有nnn个输入,问题解由nnn个输入的一个子集组成,这个子集必须满足某些事先给定的条件,这些条件称为约束条件

  • 满足约束条件的解称为问题的可行解(不唯一)
  • 使目标函数取得极值的可行解称之为最优解

这类问题就称之为最优化问题

(2)动态规划基本概念和思想

动态规划:1957年,美国数学家Richard Bellman等人在研究多阶段决策问题的最优性原理中,创建了一种最优化问题求解方法——动态规划。动态规划算法的基本思想和分治法类似,即也将待求解问题分解为若干子问题,但是经分解得到的子问题往往不是相互独立的(也即是相互重叠的),每个子问题是问题求解过程中的一个阶段

在这里插入图片描述

分治法在解决适合用动态规划解决的题目时会重复计算公共子问题,效率极低,甚至在求解多项式量级的子问题数目时也可能耗费指数时间

  • 例如斐波那契数列问题就需要重复计算很多公共子问题
    在这里插入图片描述

动态规划在解决问题时会用一个表保存此阶段子问题的解,当下一求解阶段需要再次计算此子问题时可以通过查表获得该子问题的解而不用再次求解,从而避免了大量重复计算

  • 例如上图斐波那契数列问题,计算f(19)f(19)f(19)时就把f(18)f(18)f(18)和f(17)f(17)f(17)保存下来,等到f(18)f(18)f(18)计算时,直接在表中查找f(17)f(17)f(17)即可

在这里插入图片描述

最后需要重复一下,动态规划解决的问题一定具有最优子结构的性质。什么是最优子结构呢,举个例子:你们年级有20个班,并且已经知道每个班的最高分,那么全年级成绩最高分是多少?我想在这样的情况下,你肯定不会遍历全年级同学,而是会直接比较每个班的最高分然后得出结论。所以这里 “班级最高”就是“全年级最高”的最优子结构

二:动态规划框架

(1)数学描述

  • 这里我们用一个付款问题(也称“找零钱”问题) 来描述一下动态规划类题目的整体框架

付款问题:超时的POS机要找给顾客货币数量最少的现金

假定POS机中有nnn张面值为pi(1≤i≤n)p_{i}(1\leq i \leq n)pi​(1≤i≤n)的货币,用集合P={p1,p2,...,pn}P=\{p_{1},p_{2},...,p_{n}\}P={p1​,p2​,...,pn​}表示,如果POS机需支付的现金为AAA(问题的输入)。那么它必须从PPP中选取一个最小子集SSS,使得

pi∈s,∑i=1mpi=A(m=∣S∣)p_{i}\in s,\quad\sum\limits_{i=1}^{m}p_{i}=A(m=|S|)pi​∈s,i=1∑m​pi​=A(m=∣S∣)

  • 这是问题的可行解

如果用向量X=(x1,x2,...,xn)X=(x_{1}, x_{2},...,x_{n})X=(x1​,x2​,...,xn​)(解向量)表示SSS中选取货币的结果,则

xi={1pi∈S0pi∉Sx_{i}=\left\{ \begin{aligned} 1 & \quad p_{i}\in S \\ 0 & \quad p_{i}\notin S \\ \end{aligned} \right. xi​={10​pi​∈Spi​∈/S​

  • 这是可行解表现形式

那么POS机支付的现金必须满足

∑i=1mpi=A\sum\limits_{i=1}^{m}p_{i}=Ai=1∑m​pi​=A

  • 这是问题的约束条件

并且

d=min∑i=1mpid=min\sum\limits_{i=1}^{m}p_{i}d=mini=1∑m​pi​

  • 这是问题的目标函数

(2)代码描述

动态规划论题目五花八门,但如果你做得多了,你会发现这类题目的代码具有一个特点,那就是多重for循环

# 初始化“最简单情况”
dp[0][0][...]=base case;
# 状态转移
for 状态1 in 状态1 的所有取值for 状态 2 in 状态2的所有取值for...dp[状态1][状态2][...]=求最值(选择1,选择2,...);

三:动态规划算法步骤

动态规划算法步骤:动态规划算法会涉及如下三个基本要素,写动态规划算法的过程就必须对这三个要素逐个击破

  • 重叠子问题((算法设计与分析)第三章动态规划-第一节2:动态规划之使用“斐波那契数列”问题说明重叠子问题如何解决)
  • 最优子结构((算法设计与分析)第三章动态规划-第一节2:动态规划之使用“找零钱”问题说明最优子结构如何解决)
  • 状态转移方程(本质就是如何填表)

其中重叠子问题和最优子结构相对来说比价容易解决,而 状态转移方程直接决定了你是否可以做出相应的题目,所以在写状态转移方程前你一定要思考以下几点

  • 这个问题的最简单情况是什么
  • 这个问题有什么状态
  • 对于每个状态,可以做出什么选择使得状态发生改变
  • 如何定义dp数组(动态规划数组,也即上文中说的表) 来表现状态和选择

相关内容

热门资讯

埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...