查找表和动态编程

Ahm*_*leh 6 algorithm

在旧游戏时代,我们习惯于拥有一个预先计算的sin和cos,...等值的查找表,因为在那些旧CPU中计算这些值的速度很慢.

这被认为是一种动态编程技术吗?或动态编程必须解决一直计算或排序的递归函数?

更新:在动态编程中,关键是要有一个memoization表,这是sin,cos查找表的解决方案,那么该技术的真正区别是什么呢?

Rom*_*kar 4

我想说的是,就我在你的问题中看到的情况而言,这不是动态规划。动态规划更多地是通过解决较小的子问题来解决问题,并创建从较小的子问题中获得问题解决方案的方法。

你的情况看起来更像是记忆

对我来说,如果你的问题是计算,并且你有公式从, , ..., 的数组中cos N进行计算,那么你可以计算,并运行 i 从 0 到 N 的计算。cos icos 0cos 1cos i - 1cos 1sin 1

也许有人会纠正我:)

dynamic programming关于与范式的不同之处,还有一个有趣的引述divide-and-conquer

为了使动态规划适用,问题必须具有两个关键属性:最优子结构和重叠子问题。如果一个问题可以通过组合非重叠子问题的最优解决方案来解决,则该策略称为“分而治之”。这就是为什么归并排序和快速排序不属于动态规划问题。