零散点小总结(25.10.28)

今天练习了Dp,主要把Dp重新看待了一下,有以下几点

  1. Dp其实本质是一种表,用于储存子问题的答案

  2. Dp中其实还有枚举,只是由于子问题被存入表中了,所以减少了时间复杂度

  3. 一个搜索其实就是Dp的暴力解,有很多的子问题,但是由于重复会使时间很大

  4. 所以变相的看一下,如果使搜索的每个状态下都做到最优,就可以方便后面的求解,所以Dp的最优子结构相当于松弛,使每个最小

  5. 所以在写Dp可以从搜索入手,先把搜索写出来,之后看搜索用了哪些状态和如何转移决策,用于启发自己的Dp状态设计

  6. 其实有很多时候记忆化搜索 \(≈\) Dp

  7. 然后再提一下记忆化搜索,是记录每种状态,然后去进行搜索,所以要注意每种选择/约束的状态,可以用于设置记忆数组

  8. 再说说关于最优子结构和无后效性的证明:

    最优子结构

    其实在分步做决策求解的时候,本质是在一个子问题上去做一个决策得到A问题的最优解,但是需要一步步去搜,时间复杂度会爆,所以直接使用Dp作为表存储,去把子问题做到最优解,然后再去分着去看一堆子问题加上一些决策如何达到A问题,这样子就满足了最优子结构,所以把每个问题做到最优解并存储,就成为了Dp

    无后效性

    可以理解为一个充分不必要条件,前面的问题可以推出最优的后面,但是后面的问题无法推出最优的前面,所以满足无后效性,后面无法改变前面的最优子问题,同时可以让最优子问题和无后效性的条件满足

posted @ 2025-10-28 21:16  Yuriha  阅读(13)  评论(0)    收藏  举报