当前位置: 首页 > news >正文

DP问题如何确定dp数组的定义以及如何推导状态转移方程?

下面给出一套体系化、可复用、适用于所有 DP(尤其是复杂 DP)的问题解法框架

内容分为两部分:

  1. 如何确定 dp 数组的定义(状态定义)
  2. 如何推导状态转移方程(状态转移)

① 如何确定 DP 数组的定义?(状态定义的三原则)

DP 的本质是:
定义一个状态,使其可以准确、唯一描述问题的“子问题”,并且可以由更小的子问题组合而来。

你需要遵循三个原则:


原则 1:状态必须“可描述问题某一部分的最优解”

DP 的常见状态定义模板:

  • dp[i]:处理前 i 个元素时的最优值
  • dp[i][j]:处理前 i 个元素,且满足 j 条件时的最优值
  • dp[i][j][k]:i/j/k 表示不同维度的约束和记录信息

你判断一个状态是否合理:

它是否能“代表一个完整的子问题”?
它是否能唯一地描述问题到某一步为止的最优解?

如果不能唯一决定子问题,即状态“不够描述信息”,你就需要增加维度。


原则 2:状态要包含“决定未来选择所需的最小信息”

例如:

  • 股票问题必须记录是否持股,否则无法决定是否可以卖
  • 背包问题必须记录已经用的容量,否则无法决定能否放下物品
  • 最短路需要记录当前节点,否则无法决定下一个节点

一句话:

状态中应包含做下一步决策必须的最小信息,但不能过多。


原则 3:状态必须让转移变得可能(能从前面推导)

判断一个状态是否“可转移”:

  • 当前状态是否可以从过去(i-1、容量减去重量等)推导?
  • 是否存在明确的动作(例如:买、卖、放、不放)?

如果无法从前一个状态推到当前,就说明状态设计错误。


② 如何推导状态转移方程?(DP 的四步推导法)

确定状态之后,推导 DP 方程遵循 4 步:


步骤 1:分析“最后一步动作”

DP 适合分析问题的最后一步:

如股票问题的最后一步可能是:

  • 最后一天不持股 → 状态来自昨天不动 或 今天卖出
  • 最后一天持股 → 状态来自昨天持股 或 今天买入

如背包问题的最后一步:

  • 第 i 个物品选择“不放”
  • 第 i 个物品选择“放入”

DP 的公式本质就是写出所有可能的最后一步,再从中选择最优。


步骤 2:列出所有可能的前序状态

根据最后动作,找出所有可能的来源状态。

比如股票问题:

dp[i][j][0] ← dp[i-1][j][0]                        (昨天不持股)
dp[i][j][0] ← dp[i-1][j][1] + prices[i]  (昨天持股,今天卖)

或者背包:

dp[i][w] ← dp[i-1][w]                     (不放)
dp[i][w] ← dp[i-1][w - weight[i]] + val[i](放)

DP 的核心就是找到所有“来源”。


步骤 3:写出“取最大值/最小值/求和”等运算

经典形式是:

dp[i] = best(所有候选来源)

这里的 best() 根据题目是最大利润/min 的代价/是否可达/有多少种方案而不同。


步骤 4:处理初始化(i=0 或边界状态)

初始化最容易写错。
它通常由“边界条件”和“状态定义”自然决定:

股票例子:

dp[0][j][1] = -prices[0]
dp[0][j][0] = 0

背包例子:

dp[0][0] = 0
dp[0][w>0] = -∞(无法达到)

③ 使用这套方法总结——DP 的逻辑流程图

➤ 第一步:确定需要记录哪些信息?→ i:枚举到哪→ j:是否需要记录额外维度(交易次数/容量/元素和)➤ 第二步:写出 dp[i][...] 的含义→ dp[i][j] 表示什么?➤ 第三步:分析第 i 步有哪些“动作”→ 买/卖?放/不放?取/不取?移动方向?➤ 第四步:写出来自哪些前序状态→ dp[i][j] 可以从 dp[i-1][j], dp[i][j-1], ... 来?➤ 第五步:写出 max / min 选择→ dp[i][j] = max/min( 所有可能来源 )➤ 第六步:初始化→ dp[0][...] 的含义要与 dp 定义一致➤ 第七步:最终答案选哪一个

总结(浓缩成 3 句话)

  1. dp 数组的定义 = 子问题的最小完备描述
    (必须包含做下一步决策所需的所有信息,但不能冗余)

  2. 状态转移 = 枚举“最后一步动作”,找出所有来源状态
    (DP 方程是从所有可能来源中取最优)

  3. 初始化必须和状态含义数学上一致
    (初始化错 1 个符号,整个 DP 会严重错)


http://www.rkmt.cn/news/59429.html

相关文章:

  • Java高效开发实战:10个让代码质量飙升的黄金法则
  • 11月24日
  • 动态=静态(转化思想,类似扫描线)
  • 抖音投流健康领域领航者——苏州诊途赋能品牌全域增长 - langchain
  • 程序人生必读:如何通过读书会提升工艺深度与广度
  • 效率与安全的双引擎:聚焦合同管理中的印章文识别技术
  • 新露谷物语-新手指南:
  • ddddocr: 滑块验证码的一个例子
  • 恢复Windows图片查看器
  • B2B企业必看:2025年5家TOB场景GEO服务商深度测评
  • UFS简介
  • 上海高温炉品牌推荐:聚焦行业技术与服务实力
  • 北京婚姻律师事务所推荐:如何选择专业婚姻家事法律服务机构
  • 医疗健康领域GEO优化(AI平台推广):5家垂直服务商技术与案例解析
  • Android显示界面覆盖状态栏
  • 工业洗地机十大品牌推荐 聚焦企业清洁设备优选
  • 北京专业打离婚官司的律所哪家好?相关机构信息整理
  • 2025 最新运动木地板厂家推荐排行榜:体育馆 / 篮球场 / 舞蹈室 / 羽毛球馆专用实木枫木柞木防滑耐磨减震优质厂家
  • 【AIOPS】AI Agent 专题【左扬精讲】(MCP+A2A+LangChain/LangGraph)—— 纯 Go 实现 AIOPS AI Agent:Function Calling
  • 工业吸尘器品牌推荐:实力之选与选购参考
  • QVector
  • 基于Boost电路、MPPT算法、逆变器和10kV配电网的光伏并网系统建模
  • 贝丽得珠光粉质量到底如何?从5个核心维度拆解行业头部企业的品质逻辑
  • 学培课堂靠谱吗?从课程质量到口碑的深度分析
  • 2025年电线电缆厂家五星推荐:鑫佰亿线缆,电力电缆、高压电缆、中压电缆、低压电缆、全品类电缆守护用电安全
  • 五年一贯制专转本机构有哪些?2025年行业机构盘点
  • DRAM
  • 2025年ai优化公司权威推荐榜单:ai搜索优化/ai优化效果/geo优化推广源头公司精选
  • Minimind-一个开源LLM项目的代码分析2:模型训练
  • 20251124