memoization相关内容

python 2.7的记忆库

我看到 python 3.2 有 memoization 作为 functools 库中的装饰器.http://docs.python.org/py3k/library/functools.html#functools.lru_cache 不幸的是,它还没有向后移植到 2.7.是否有任何特定原因导致它在 2.7 中不可用?是否有任何 3rd 方库提供相同的功能,还是我应该自己编写? 解 ..
发布时间:2021-12-08 12:25:55 Python

使用什么类型在 Scala 中存储内存中的可变数据表?

每次调用函数时,如果给定参数值集的结果尚未记忆,我想将结果放入内存表中.一列用于存储结果,其他列用于存储参数值. 我该如何最好地实现这一点?参数有多种类型,包括一些枚举. 在 C# 中,我通常使用 DataTable.Scala 中是否有等价物? 解决方案 你可以使用 mutable.Map[TupleN[A1, A2, ..., AN], R] ,或者如果内存是一个问题,一个 ..
发布时间:2021-12-07 13:10:06 其他开发

如何使用动态规划确定最长递增子序列?

我有一组整数.我想使用动态规划找到该集合的最长递增子序列. 解决方案 好的,我将首先描述最简单的解决方案,即 O(N^2),其中 N 是集合的大小.还有一个 O(N log N) 解决方案,我也会描述.查看此处的高效算法部分. 我将假设数组的索引是从 0 到 N - 1.所以让我们定义 DP[i] 为以元素结尾的 LIS(最长递增子序列)的长度与索引 i.为了计算 DP[i],我们查 ..

什么是记忆化以及如何在 Python 中使用它?

我刚开始使用 Python,我不知道 memoization 是什么以及如何使用它.另外,我可以举个简单的例子吗? 解决方案 Memoization 有效地是指根据方法输入记住(“备忘录"→“备忘录"→要记住)方法调用的结果,然后返回记住的结果而不是再次计算结果.您可以将其视为方法结果的缓存.有关更多详细信息,请参阅 算法简介 (3e),Cormen 等人 中的定义第 387 页. 在 ..
发布时间:2021-11-30 23:52:27 Python

C++记忆化理解

我试图了解记忆在 C++ 中的工作原理,所以我查看了 Fib 中使用的记忆示例.序列. std::mapfibHash;int memoized_fib (int n){std::map::iterator fibIter = fibHash.find(n);if( fibIter != fibHash.end() ) return *fibIter;int fib_val;if( n 我对 ..
发布时间:2021-11-18 04:43:41 C/C++开发

Java:自动记忆

在我的代码中有几个函数,使用记忆化很有意义(甚至似乎是强制性的). 我不想单独为每个功能手动实现.有什么方法(例如就像在Python中)我可以只使用注释或做其他东西,所以我会在我想要的那些功能上自动获得它? 解决方案 Spring 3.1 现在提供了一个 @Cacheable 注释,正是这样做的. 顾名思义,@Cacheable 用于划分可缓存的方法——即,将结果存储到缓存中的 ..
发布时间:2021-11-10 22:13:29 Java开发

酸洗过程是确定性的吗?

Pickle 是否总是为某个输入值产生相同的输出?我想在腌制内容相同但插入/删除历史不同的字典时可能会有问题.我的目标是使用 Pickle 和 SHA1 创建函数参数的“签名",以实现 memoize. 解决方案 我想在腌制内容相同但插入/删除历史不同的字典时可能会遇到问题. 对: >>>pickle.dumps({1: 0, 9: 0}) == pickle.dumps({9 ..
发布时间:2021-06-02 19:27:23 Python

V8 中的 JSON.stringify() 是确定性的吗?

我还没有看到(还没有?)JSON.stringify 在 Node.JS 中是不确定的. 不能保证它在规范级别上是确定性的. 但是 V8 呢?它的实现是否具有确定性?是否可以保证它在未来的 V8 版本中保持确定性? 编辑: 确定性我的意思是无论 json_str 的值是什么,以下断言都是正确的.(鉴于该值是一个有效的 JSON 字符串.) const obj = JSON ..
发布时间:2021-06-02 19:27:20 前端开发

记忆装饰器保持存储的值

我有一个像这样的备忘录装饰器: def memoize(obj):从 functools 导入包装缓存 = {}@wraps(obj)def memoizer(*args, **kwargs):如果 args 不在缓存中:缓存[args] = obj(*args, **kwargs)返回缓存[参数]返回记忆器 但是,我不确定这个函数是否正常工作,因为在我看来,每次调用装饰函数时,它都会将 ca ..
发布时间:2021-06-02 19:27:17 Python

我试图在 Python 中解决最佳总和问题,但我无法弄清楚问题,请提出问题

该函数应返回一个数组,其中包含加起来正好等于目标总和的最短数字组合.如果有两种(或更多)可能性,则返回其中任何一种. def bestSum(targetSum, numbers, memo = {}):如果备忘录中有 targetSum:返回备忘录 [targetSum]如果 targetSum == 0:返回 []如果目标总和<0:返回无最短组合 = 无对于 num 数字:余数 = targ ..
发布时间:2021-06-02 19:27:11 Python

Python-记忆和Collat​​z序列

当我在做欧拉计划中的问题14 时,我发现我可以使用一件事称为备忘录来加快我的流程(我让它运行了15分钟,但它仍然没有返回答案).问题是,我该如何实施?我已经尝试过,但是遇到了keyerror(返回的值无效).这让我感到烦恼,因为我很确定,我可以对此应用备注,并更快地获取它. lookup = {}def countTerms(n):arg = n计数= 1而n不是1:计数+ = 1如果不是n% ..
发布时间:2021-05-31 20:44:19 Python

某个地方有基于对象身份的线程安全的备注库吗?

我知道回忆似乎是堆栈溢出时haskell标记上的一个常年话题,但我认为这个问题以前从未问过. 我知道Haskell的几个不同的“现成"记忆库: 备忘组合器和备忘包,它们利用涉及惰性无限数据结构的漂亮技巧,以纯功能性方式实现备忘.(据我了解,前者稍微灵活一些,而后者在简单情况下更易于使用:请参见论文,作者是Peyton-Jones,Marlow和Elliott,基本上为您担心了其中的大多 ..
发布时间:2021-05-13 20:36:20 其他开发

我可以记住Python生成器吗?

我有一个名为 runquery 的函数,该函数调用数据库,然后逐行产生行.我写了一个备忘录装饰器(或更准确地说,我只是从这个stackoverflow问题中偷了一个)在随后的调用中,它只会产生一个空序列,大概是因为生成器的值只能产生一次. 如何修改适用于Python生成器的备忘录装饰器?我意识到我有时需要将其存储在内存中,但我想在装饰器中处理它,而不修改原始函数. 记忆功能的当前代码为 ..
发布时间:2021-05-10 18:44:20 Python

记忆化python函数

这是一小段代码,可以将每个函数转换为其备注版本. def memoize(f):#记忆给定的函数fdef memf(* x):如果x不在memf.cache中:memf.cache [x] = f(* x)返回memf.cache [x]memf.cache = {}返回memf 例如,如果我们有一个如下的函数 fib ,该函数将返回第 n 个斐波那契数: def fib(n):如果n ..
发布时间:2021-05-09 20:02:14 Python

Python中的递归,记忆和可变默认参数

“基本"的含义不只是使用lru_cache.所有这些都是“足够快"的-我并不是在寻找最快的算法-但是时间让我感到惊讶,所以我希望我可以学习一些关于Python“工作"的方式. 简单循环(/尾递归): def fibonacci(n):a,b = 0,1如果(a,b)中的n:返回n对于_范围(n-1):a,b = b,a + b返回b 简单的记忆: def fibonacci(n, ..
发布时间:2021-05-06 21:01:53 Python

为什么此解决方案在JavaScript中有效,但在C ++中却花费太长时间?(动态编程)

这是我的 canSum 函数需要执行的操作: 给出目标总和 x ,并返回 true ,前提是可以通过添加给定数组中的元素来获得该总和,前提是可以使用数组元素任何次数. 示例: canSum(7,{2,3})->真的canSum(7,{2,4})->错误的 下面是我用C ++重写的JavaScript代码.出于某种原因,即使我使用了记忆功能,C ++版本对于大量输入也花费了太长时 ..
发布时间:2021-05-03 19:06:30 C/C++开发

识别等效的varargs函数调用以进行记忆

我正在使用此装饰器的变体来进行记忆: #请注意,此装饰器将忽略** kwargsdef memoize(obj):缓存= obj.cache = {}@ functools.wraps(obj)def备忘录(* args,** kwargs):如果args不在缓存中:缓存[args] = obj(* args,** kwargs)返回缓存[参数]返回备忘录 我想知道,有没有一种合理的方式同时 ..
发布时间:2021-04-29 20:42:11 Python