我想知道我的当前工作区中每个对象使用了多less内存。 有没有一个简单的方法来做到这一点?
我试图find一种简单的方法来在R(本质上是caching)中使用类似Perl的哈希函数,因为我打算同时执行Perl风格的哈希和写我自己的计算记忆。 然而,其他人已经打了我一拳,并为包装meemisation。 我挖的越多,我发现的越多,例如memoise和R.cache ,但差异不是很清楚。 另外,还不清楚除了使用hash包以外,还可以如何获得Perl风格的哈希(或Python风格的字典)并编写自己的记忆,这似乎并不支持这两个记忆包。 由于我没有find有关CRAN或其他地方的信息来区分这些选项,所以也许这应该是一个关于SO的社区维基问题:R中的记忆和caching有什么select,它们有什么区别? 作为比较的基础,这里是我find的选项列表。 另外,在我看来,所有依赖哈希,所以我会注意到哈希选项。 键/值存储有点相关,但是打开了一大堆关于数据库系统的蠕虫(例如BerkeleyDB,Redis,MemcacheDB和其他数十个蠕虫)。 它看起来像选项是: 哈希 摘要 – 为任意R对象提供散列。 记忆化 记忆 – 一个非常简单的记忆function的工具。 R.cache – 为memoization提供了更多的function,虽然它似乎有些function缺乏示例。 高速caching 散列 – 提供类似Perl的散列和Python字典的cachingfunction。 键/值存储 这些是R对象外部存储的基本选项。 stashr filehash 检查点 cacher – 这似乎更像是检查点 。 CodeDepends – 支持cacher并提供一些有用function的OmegaHat项目。 DMTCP (不是R软件包)似乎支持一堆语言的检查点, 最近一位开发人员在R中寻求协助testingDMTCP检查点 。 其他 Base R支持:命名向量和列表,数据框的行和列名称以及环境中的项目名称。 在我看来,使用列表是有点混乱。 (也有pairlist ,但不赞成 。) data.table包支持快速查找数据表中的元素。 用例 虽然我最感兴趣的是了解选项,但我有两个基本用例: caching:简单的string计数。 [注意:这不是NLP,而是一般使用,所以NLP库是矫枉过正的; 表是不够的,因为我不希望等到整个string集被加载到内存中。 Perl风格的哈希处于正确的效用水平。] […]
我认为dynamic编程是记忆的一个子集。 这样对吗?
通过什么机制是这种斐波那契函数memoized? fib = (map fib' [0..] !!) where fib' 1 = 1 fib' 2 = 1 fib' n = fib (n-2) + fib (n-1) 并在相关的说明,为什么这个版本不是? fib n = (map fib' [0..] !! n) where fib' 1 = 1 fib' 2 = 1 fib' n = fib (n-2) + fib (n-1)
我不确定自己是否正确理解了自上而下的方法。 自下而上:是你首先看“小”子问题的地方,然后使用小问题的解决scheme来解决更大的子问题。 自上而下:以自然的方式解决问题,并检查是否已经计算出子问题的解决scheme。 我有点困惑。 有人可以解释吗? 有什么区别?
我刚开始Python,我不知道什么是memoization ,以及如何使用它。 另外,我可以有一个简单的例子吗?
我有一套整数。 我想使用dynamic编程来find该集合中时间最长的子序列 。