动态编程的记忆或制表方法

Mad*_*ady 22 algorithm recursion dynamic-programming time-complexity

使用动态编程可以解决许多问题,例如最长的增加子序列.这个问题可以通过使用2种方法来解决

  1. Memoization(自上而下) - 使用递归来解决子问题并将结果存储在某个哈希表中.
  2. 制表(自下而上) - 使用迭代方法通过首先解决较小的子问题然后在执行更大的问题期间使用它来解决问题.

我的问题是哪种方法在时间和空间复杂性方面更好?

beh*_*nam 33

简答:这取决于问题!

记忆化通常需要更多的代码,是那么直接,但在一些问题计算的优势,主要是那些你并不需要计算整个矩阵的所有值达到了答案.

制表更简单,但可能会计算不必要的值.如果确实需要计算所有值,则此方法通常更快,因为开销较小.