在旧游戏时代,由于在旧CPU中计算这些值的速度较慢,我们习惯于使用一张预先计算的sin和cos等值的查找表。
那被认为是动态编程技术吗?还是动态编程必须解决总是计算出来的或某种递归函数?
更新:
在动态编程中,关键是要有一个存储表,这是sin,cos查找表的解决方案,那么该技术的真正区别是什么?
最佳答案
对于您在问题中看到的内容,我会说不,这不是动态编程。 Dynamic programming更多地涉及通过解决较小的子问题来解决问题,并创建从较小子问题中获取问题解决方案的方法。
您的情况看起来更像memoization。
对我来说,如果您的问题是计算cos N
且您具有从cos i
,cos 0
,...,cos 1
数组计算cos i - 1
的公式,则可以将其视为DP,因此您可以计算cos 1
,sin 1
并为i进行从0到N的计算。
可能有人会纠正我:)
关于dynamic programming
与divide-and-conquer
范例有何不同,也有有趣的报价:
关于algorithm - 查找表和动态编程,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18528480/