Algorithm 在动态规划中,我总是必须填写整个表格吗?

Algorithm 在动态规划中,我总是必须填写整个表格吗?,algorithm,optimization,dynamic-programming,Algorithm,Optimization,Dynamic Programming,这样做时,我通常会急切地填充表(从下到上,而不是使用自顶向下的递归)。这将导致嵌套循环填充表中的所有值 我总是要把整张桌子填满吗 DP任务示例: 计算字符串hello和world之间的距离: h e l l o w 1 2 3 4 5 o 2 2 3 4 5 r 3 3 3 4 5 l 4 4 3 3 4 d 5 5 4 4 4 上面的示例(我希望没有出错)比较了hello和world的每个子字符串,并存储其差异。例如,he和wor的差异为3。进一步的计算基于存储的结果 确实有必要比较每个

这样做时,我通常会急切地填充表(从下到上,而不是使用自顶向下的递归)。这将导致嵌套循环填充表中的所有值

我总是要把整张桌子填满吗

DP任务示例:

计算字符串
hello
world
之间的距离:

  h e l l o
w 1 2 3 4 5
o 2 2 3 4 5
r 3 3 3 4 5
l 4 4 3 3 4
d 5 5 4 4 4
上面的示例(我希望没有出错)比较了
hello
world
的每个子字符串,并存储其差异。例如,
he
wor
的差异为3。进一步的计算基于存储的结果


确实有必要比较每个子字符串吗?

有时没有必要。对于某些DP问题,将永远不会使用大量的状态,因此您不必计算所有状态。利用这一点的一种方法是使用。您定义了一个计算DP状态的函数。函数首先检查该状态是否已计算。如果不是,则使用递归计算该状态。这种方法只计算实际使用的状态。

好的,使用这种方法,我们从自下而上的求值返回到自上而下的方法。最后,idk认为这在实践中是多么有益。你能给出一个你认为比自下而上的方法更好的任务的可复制的例子吗?如果愿意,可以使用提供一些准备运行的代码。