在旧游戏时代,由于在旧CPU中计算这些值的速度较慢,我们习惯于使用一张预先计算的sin和cos等值的查找表。

那被认为是动态编程技术吗?还是动态编程必须解决总是计算出来的或某种递归函数?

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

最佳答案

对于您在问题中看到的内容,我会说不,这不是动态编程。 Dynamic programming更多地涉及通过解决较小的子问题来解决问题,并创建从较小子问题中获取问题解决方案的方法。

您的情况看起来更像memoization

对我来说,如果您的问题是计算cos N且您具有从cos icos 0,...,cos 1数组计算cos i - 1的公式,则可以将其视为DP,因此您可以计算cos 1sin 1并为i进行从0到N的计算。

可能有人会纠正我:)

关于dynamic programmingdivide-and-conquer范例有何不同,也有有趣的报价:

关于algorithm - 查找表和动态编程,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18528480/

10-12 18:49