Questions tagged «memoization»

在计算中,记忆是一种优化技术,主要用于通过使函数调用避免对先前处理的输入重复计算结果来加速计算机程序。




8
自下而上和自上而下有什么区别?
在自下而上方法(用于动态编程)在于首先查看“较小”的子问题,然后使用较小问题的解决方案解决较大的子问题。 在自上而下的在于,如果你已经计算出了解决方案之前,子问题解决一个“自然的方式”,并检查问题。 我有点困惑。两者有什么区别?


8
在Haskell中记忆化?
有关如何有效地解决Haskell中以下函数的所有问题的大量建议 (n > 108) f(n) = max(n, f(n/2) + f(n/3) + f(n/4)) 我已经在Haskell中看到了用于记忆斐波那契数的记忆示例,其中涉及(懒惰地)计算直到所需n的所有斐波那契数。但是在这种情况下,对于给定的n,我们只需要计算很少的中间结果。 谢谢



4
GHC Haskell中的备忘录何时自动生成?
我无法弄清楚为什么m1显然被记忆而m2不在以下内容: m1 = ((filter odd [1..]) !!) m2 n = ((filter odd [1..]) !! n) m1 10000000在第一次调用时大约需要1.5秒,而在随后的调用中则花费一小部分(大概是缓存列表),而m2 10000000总是花费相同的时间(每次调用都重建列表)。知道发生了什么吗?关于GHC是否以及何时记忆功能有任何经验法则吗?谢谢。
106 haskell  ghc  memoization 

9
在Python中缓存类属性
我正在用python写一个类,并且有一个属性,该属性将花费相对较长的时间来计算,因此我只想执行一次。此外,它会不会被类的每个实例需要的,所以我不想在默认情况下做到这一点在__init__。 我是Python的新手,但不是编程人员。我可以想出一种很容易做到这一点的方法,但是我一遍又一遍地发现,“ Pythonic”做事的方法通常比我在其他语言中的经验要简单得多。 在Python中是否有“正确”的方法来做到这一点?

3
R中的缓存/备注/哈希选项
我试图找到一种简单的方法来在R中使用Perl的哈希函数(本质上是缓存),因为我打算同时进行Perl样式的哈希并编写自己的计算备忘录。但是,其他人却打败了我,并准备了备忘录。挖掘的越多,我发现的就越多,例如memoise和R.cache,但差异尚不明确。此外,除了使用该hash包之外,还不清楚如何获得Perl风格的哈希(或Python风格的字典)并编写自己的备忘录,这似乎并不能支撑这两个备忘录包。 由于我找不到有关CRAN或其他地方的信息来区分这些选项,因此这也许应该是关于SO的社区Wiki问题:R中用于记忆和缓存的选项是什么,它们之间有什么区别? 作为比较的基础,这是我找到的选项的列表。另外,在我看来,所有这些都依赖于哈希,因此我还要注意哈希选项。密钥/值存储在某种程度上是相关的,但是它打开了大量有关DB系统的蠕虫(例如BerkeleyDB,Redis,MemcacheDB以及许多其他蠕虫)。 看起来这些选项是: 散列 摘要-为任意R对象提供哈希。 记忆化 memoise-一个非常简单的功能记忆工具。 R.cache-提供更多用于记忆的功能,尽管似乎其中一些功能缺少示例。 快取 hash-提供类似于Perl的hash和Python字典的缓存功能。 键/值存储 这些是R对象的外部存储的基本选项。 藏匿者 文件哈希 检查点 缓存器-这似乎更类似于检查点。 CodeDepends-一个OmegaHat项目,可作为基础cacher并提供一些有用的功能。 DMTCP(不是R包)-似乎支持多种语言的检查点,并且开发人员最近寻求协助来测试R中的DMTCP检查点。 其他 Base R支持:命名向量和列表,数据框的行和列名称以及环境中的项目名称。在我看来,使用列表有点麻烦。(也有pairlist,但已弃用。) 所述data.table包支持在一个数据表元素的快速查找。 用例 尽管我对了解这些选项最感兴趣,但是我有两个基本用例: 缓存:简单的字符串计数。[注意:这不是用于NLP,而是用于一般用途,因此NLP库是过大的;表是不够的,因为我不想等到整个字符串集都加载到内存中后再进行操作。Perl样式的哈希值在实用程序中是正确的。] 记忆巨大的计算。 之所以会出现这些问题,是因为我正在研究一些简单的代码概要分析,并且我真的很想只计算简单的字符串,看看是否可以通过记忆来加快一些计算。即使我不做备忘录,也能够对输入值进行哈希处理,这会让我看看备忘录是否有帮助。 注意1:“可再生性研究的CRAN任务视图”列出了几个软件包(cacher和R.cache),但未详细说明用法选项。 注意2:为了帮助其他人查找相关代码,这里有一些作者或软件包的注意事项。有些作者使用SO。:) Dirk Eddelbuettel:digest-许多其他软件包都依赖于此。 罗杰·彭:cacher,filehash,stashR-以不同的方式,这些地址不同的问题; 有关更多软件包,请参见Roger的网站。 Christopher Brown:hash-似乎是一个有用的软件包,但不幸的是,与ODG的链接断开了。 亨里克·本格森(Henrik Bengtsson):R.cache&哈德利·威克姆(Hadley Wickham):memoise-目前尚不清楚何时偏爱另一种包装。 注意3:有些人使用备忘录/记忆,其他人使用备忘录/记忆。如果您在四处搜寻,请注意。Henrik使用“ z”,Hadley使用“ s”。

4
python 2.7的备忘录库
我看到python 3.2在functools库中具有作为装饰器的备注。 http://docs.python.org/py3k/library/functools.html#functools.lru_cache 不幸的是,它还没有反向移植到2.7。有什么特定的原因,为什么它在2.7中不可用?是否有任何第三方库提供相同的功能,或者我应该编写自己的库?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.