c++课堂——动态规划

embedded/2024/9/23 10:17:22/

 在我们写题中,总会遇到深搜和广搜超时的情况,这样就需要一个新的算法来帮助我们,那就是——动态规划

目录


动态规划介绍

例题

1、最优化子问题

2、不影响后续决策

点赞+关注!

动态规划介绍


        动态规划程序设计是对解最优化问题的一种途径、一种方法,而不是一种特殊算法。
        动态规划,英文是Dynamic Programming,简称DP,擅长解决“多阶段 决策问题”,利用各个阶段的递推关系,逐个确定每个阶段的最优决策,并最终得到原问题的最优决

例题


        蒜头君要回家,已知蒜头君在 (1,1) 位置,家在 (n,n) 坐标处。蒜头君走到一个点 (i,j) 会花费一定的体力 aij ,而且蒜头君只会往家的方向走,也就是只能往上,或者往右走。蒜头君想知道:他 回家需要花费的最少体力 是多少。
        例如下表所示,格子中的数字代表走到该格子花费的体力:
对于该表来说,共花费体力为:3+2+4+3=12。
543(家)
625
蒜头君34
        我们把走到一个点看做一个状态,走到一个点只有两种方式 ,一个是 从下面走到该点
一种是 从左边走到该点 。那么点 (i,j) 要么是从 (i−1,j) 走到 (i,j),要么是从点 (i,j−1) 走到所以从哪个点走
        到 (i,j) 就是一个决策,我们用 dp(i,j) 来代表走到点 (i,j) 一共花费的最少体力。
我们需要花费最少力气走到家,所以可以得到状态转移方程:
dp(i,j)=min( dp(i−1,j) , dp(i,j−1) )+ a ij
根据转移方程我们可以推出走到每个点花费的最少体力。
可以看出来,动态规划算法的核心是DP方程。
        所以说,状态转换方程(DP方程)就是算法的核心,那么设计DP方程,要有什么注意的呢?以下列出来几点!

1、最优化子问题


        从上面的算法三要素中,可以看出,dp方程是最优子问题中归纳而来的。什么才 是“最优子题”呢?不管之前决策是否是最优决策,都必须保证从现在开始的 决策是在之前的基础上最优。具体说我们默认dp1和dp2就是最优的,在此基 础上,得到最优的dp3。

2、不影响后续决策


由于上一条我们看到,如果dp1的决策会影响到dp2和dp3的决策,那么dp3 = dp2+dp1就不成了,所以,要一定保证,每个阶段的决策仅受之前决策的影响,但不影响之后阶段的决策

点赞+关注!


相关作品:mjyleon的博客系列作品


http://www.ppmy.cn/embedded/22857.html

相关文章

Spring Security OAuth2 统一登录

介绍 Spring Security OAuth2 是一个在 Spring Security 框架基础上构建的 OAuth2 授权服务器和资源服务器的扩展库。它提供了一套功能强大的工具和组件,用于实现 OAuth2 协议中的授权流程、令牌管理和访问控制。 Git地址:yunfeng-boot3-sercurity: Sp…

Qt学习笔记1.3.1 Qt Core-容器类

文章目录 简介容器类迭代器类JAVA风格迭代器STL风格迭代器隐式共享问题 foreach关键字其他容器类算法复杂度增长策略 来源: https://doc.qt.io/archives/qt-5.12/containers.html 简介 Qt库提供基于模板的通用容器类,相比STL容器类更轻量化、安全和易用。 容器类…

理清STM32的内存(ram)与flash(rom)空间

keil工程变异代码的时候,会有如下输出信息 code:代码机器编译后生成的一系列指令,永远只放在flsah,内存ram不会存在; RO-data:只读常量,永远只放在flash内,存ram不会存在;; RW-dat…

学习笔记-数据结构-线性表(2024-04-24)

对不带头节点的单链表进行就地倒置 函数的处理步骤如下: 初始化三个指针 p、q 和 r。p 用于追踪新链表的最后一个节点,最初设置为 NULL。q 指向当前正在处理的原链表的节点,最初是链表的头节点。r 用于临时保存 q->next,即下一…

迭代加深算法(IDDFS)在电商商品推荐中的应用方案

在电商平台上应用迭代加深深度优先搜索(IDDFS)算法来探索用户可能感兴趣的商品路径,可以创建一个更加个性化和动态的推荐系统,提供更加个性化和动态的购物体验。 通过利用IDDFS来探索用户可能感兴趣的商品路径。通过限制搜索深度,系统可以逐步展示从用户当前查看的…

ZISUOJ 数据结构--队列及其应用

说明: 基本都是bfs的常见模板题型,思路都很直接,不过后面有两道题很搞心态,它们给的坐标x、y是反的,导致刚开始一直错。题目还是要看仔细,不能先入为主。 题目列表: 问题 A: 围圈报数(完善程序…

特征提取(Feature Extraction)应用场景笔记(二)

让我们以一个交通管理系统为例,说明如何基于统计特征、频域特征和时域特征设计数据表示。 假设我们有大量的交通流量数据,包括车辆的速度、密度、道路拥堵情况等指标。我们的任务是让强化学习代理学习交通流量模式,并根据数据做出智能的交通信…

408计算机组成原理知识点——第五章 中央处理器

文章目录 CPU的功能和基本结构CPU的功能运算器和控制器的功能运算器的基本结构专用数据通路方式CPU内部单总线方式运算器的基本结构 控制器的基本结构CPU的基本结构 指令执行过程指令周期指令周期流程指令周期的数据流取指周期间址周期执行周期中断周期 指令的执行方案 数据通路…