
五大常用算法之二:动态规划算法(最详细全面的讲解)
最优化原理:最优解包含最优子结构,即最优解的子问题也达到最优。 无后效性:某阶段状态一旦确定,不受该状态以后决策的影响。 有重叠子问题:子问题之间存在重叠,一个子问题在下一阶段可能被多次使用。 划分阶段:根据问题的时间或空间特征将问题分解为若干阶段,注意阶段必须是有序或可排序的。 确定状态和状态变量:用不同的状态表示问题发展到各个阶段的各种客观情况,满足无后效性。 确定决策并写出状态转移方程:通过相邻两个阶段的状态关系确定决策和转移方程。 寻找边界条件:为状态转移方程提供递推终止条件。 分析最优解的性质并刻画其结构特征。
发布日期:2021-05-08 01:40:30
浏览次数:22
分类:精选文章
本文共 687 字,大约阅读时间需要 2 分钟。
动态规划基础知识
一、基本概念
动态规划是一种解决多阶段最优化决策问题的方法。每次决策都依赖于当前的状态,并随即引发状态的转移。这种基于阶段的最优化决策过程被称为动态规划。
二、基本思想与策略
动态规划的基本思想与分治法类似,通过将问题分解为若干子问题按顺序求解。每个子问题的解为下一个子问题提供有用信息。在求解每个子问题时,列出所有可能的局部解,保留那些可能达到最优的局部解,丢弃其他解。通过逐步解决各子问题,最终得到初始问题的最优解。
由于动态规划问题通常具有重叠子问题特性,为了减少重复计算,每个子问题的不同阶段的不同状态会被存储在一个二维数组中。
动态规划与分治法的主要区别在于:分解后的子问题往往不是独立的,而是有序的或可排序的,下一个子阶段的求解通常建立在上一个子阶段的解基础上。
三、适用的情况
动态规划适用于以下三个性质的问题:
四、求解的基本步骤
动态规划的设计通常包括以下几个步骤:
实际应用中,可以通过以下步骤设计动态规划:
发表评论
最新留言
初次前来,多多关照!
[***.217.46.12]2025年04月01日 19时09分50秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
创建自己的Docker基础镜像
2019-03-06
使用Jenkins来实现内部的持续集成流程(上)
2019-03-06
HTTP 协议图解
2019-03-06
Python 简明教程 --- 20,Python 类中的属性与方法
2019-03-06
Python 简明教程 --- 21,Python 继承与多态
2019-03-06
KNN 算法-理论篇-如何给电影进行分类
2019-03-06
Spring Cloud第九篇 | 分布式服务跟踪Sleuth
2019-03-06
CODING 敏捷实战系列课第三讲:可视化业务分析
2019-03-06
使用 CODING DevOps 全自动部署 Hexo 到 K8S 集群
2019-03-06
工作动态尽在掌握 - 使用 CODING 度量团队效能
2019-03-06
CODING DevOps 代码质量实战系列最后一课,周四发车
2019-03-06
CODING DevOps 深度解析系列第二课报名倒计时!
2019-03-06
CODING DevOps 线下沙龙回顾二:SDK 测试最佳实践
2019-03-06
翻译:《实用的Python编程》03_01_Script
2019-03-06
数据结构第八节(图(下))
2019-03-06
基础篇:异步编程不会?我教你啊!CompletableFuture
2019-03-06
基于Mustache实现sql拼接
2019-03-06
气球游戏腾讯面试题滑动窗口解法
2019-03-06
POJ 2260 Error Correction 模拟 贪心 简单题
2019-03-06
POJ - 1328 Radar Installation 贪心
2019-03-06