动态规划的理解
刚刚在看y总讲的二维费用背包再结合了最近看的一些书思考了一下,突然感觉一下子茅塞顿开,就浅浅的谈一下我的看法,大佬不喜勿喷QAQ
状态空间:就好像暴力枚举,把所有可能的情况全部遍历到,而dp就是对状态空间一个合理的遍历,要求不重不漏
按照闫氏dp分析法来看,里面的集合就对应着状态空间,就是令f是个啥
而状态计算,状态转移这个很关键了
通俗的来说就是上一个状态转移到下一个状态的过程,方程式(记住:状态转移是上一层转到这一层!!!这一层的状态空间还需要遍历,还需要分类)
而集合的划分则是现在状态的一个分类(高中数学的分类讨论都做过有木有啊有木有)
拿刚刚看的01背包举例:
现在的一个状态面临啥,面临着对于一个物品选还是不选的问题
状态计算又是个啥,则要在状态转移的基础上去计算(因为dp本质是个记忆化搜索,对于前面的状态都计算过并且记录下来了,可以直接用,这个之前做多重背包应该深有体会吧)
上一层的状态已经知道,那转移就具体分析好了
对于目前的状态分析:(因为就是想知道这一层的状态表示)
不选:前i个物品的重量已经知道,要是不选,状态转移:上一个状态转移到目前的状态,上一个还是i-1,变得只是物品的种类
所以不选的状态表示就是f[i-1][j][k]
选:(DP还要求的式等价变形):
上一个状态要是转移到目前的状态,上一个状态的式子是f[i-1][j-v[i][k-w[i]],转移过来就是上一个+新物品的重量和体积
哈哈,废话有点多,只是为了方便我自己理解
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具