【问题标题】:Memoization of Simple Arithmetic for loop简单算术 for 循环的记忆
【发布时间】:2013-12-03 23:34:47
【问题描述】:

在阅读另一篇关于 for 循环优化的有趣 post 时,我注意到其中一位评论者建议使用 memoization 技术。

我挖掘了一下以了解更多信息,并找到了几个如何记忆函数的示例,例如 factorialfibonacci 序列,仅举两个例子。

我可以遵循这些并理解总体思路,但我正在努力将其应用于简单的算术运算,例如原始帖子中的运算:

for (j=0; j < ARRAY_SIZE; j++) {
    sum += array[j];
}

已经计算出来的部分是多少?

是否有可能,或者评论者认为它可以在这里适用?


只是有兴趣在这篇文章中学习memoization 技术,我知道还有其他方法(例如展开)可以提供显着的优化。

【问题讨论】:

  • 评论者可能引用了您引用的代码由外部循环运行 200,000 次这一事实。如果这导致array 重复,那么记忆化会对其进行相当多的优化。
  • @ᴋᴇʏsᴇʀ 你证实了我的怀疑,因为没有其他人发表反驳论点,所以我会给你信用。请发布答案,我会将其标记为已接受。
  • @PortlandRunner 我添加了它。希望对您有所帮助

标签: c++ memoization


【解决方案1】:

这个 for 循环本身不能被记忆。 Memoization 适用于您可以存储以前解决的子问题并使用它们来计算更大的子问题/问题。因此,它与可以通过递归解决的函数密切相关,因为这也意味着将问题拆分为子问题。 (另见:Dynamic programming)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-31
    • 1970-01-01
    • 1970-01-01
    • 2011-08-07
    • 1970-01-01
    • 2018-12-13
    相关资源
    最近更新 更多