memoization

    5热度

    1回答

    我发现this answer和this wiki page是Haskell中备忘录的优秀介绍。但是,他们确实给我留下了一个问题,我希望能够得到解答: 在我看来,所使用的技术要求您“打开”(如在“访问内部”中)数据结构你用来存储你的memoization。例如,1实现表结构,并且2在section 3中实现树。是否有可能用预先制作的数据结构做类似的事情?例如,假设您认为Data.Map真的很棒,并且

    1热度

    1回答

    与我通过哈斯克尔寻找到的CRC继续,我写了下面的代码生成一个表CRC32计算: crc32Table = listArray (0, 255) $ map (tbl 0xEDB88320) [0..255] tbl polynomial byte = (iterate f byte) !! 8 where f r = xor (shift r (-1)) ((r .&. 1) * p

    1热度

    2回答

    缓存实例变量的技术有一个特定的“学术”名称,但我不记得它。请帮助我。 def current_user @current_user ||= User.find(session[:user_id]) end 编组被称为编组。 延迟加载称为延迟加载。 描述的技术被称为...?

    15热度

    5回答

    我编写了Haskell中的0-1 Knapsack problem。我对迄今为止所达到的懒惰和普遍性水平感到非常自豪。 我开始提供创建和处理惰性2D矩阵的函数。 mkList f = map f [0..] mkTable f = mkList (\i -> mkList (\j -> f i j)) tableIndex table i j = table !! i !! j 我再做出

    6热度

    7回答

    是否有一种Pythonic的方式来封装一个懒惰的函数调用,从而在第一次使用函数f()时,它调用一个先前的函数g(Z)并在连续调用f()返回一个缓存值? 请注意,memoization可能不是一个完美的选择。 我: f = g(Z) if x: return 5 elif y: return f elif z: return h(f) 代码工作,但我想它重组,

    9热度

    2回答

    我正在处理一些相当计算密集型计算,处理numpy矩阵和ndarrays,并从一些挖掘中,有大约12种方法而不是来实现记忆,通常充满冲突和问题ndarrays是可变对象。 有没有人遇到一个相当普遍的memoisation装饰,可以处理numpy对象?

    1热度

    3回答

    在最近优化一些代码时,我们最终执行了我认为是“记忆式”的“类型”,但我不确定我们应该这么称呼它。下面的伪代码不是实际的算法(因为我们在我们的应用程序中几乎不需要阶乘因子,并且发布了所述代码是一个触发攻击),但它应该足以解释我的问题。这是原文: def factorial (n): if n == 1 return 1 return n * factorial (n-1) 很

    3热度

    1回答

    假设我想实现Levensthein distance(编辑距离)的通常动态编程算法。这是很容易拿出递归: editDistance [] ys = length ys editDistance xs [] = length xs editDistance (x:xs) (y:ys) | x == y = editDistance xs ys | otherwise = mi

    6热度

    2回答

    假设我们有一个IO动作如 lookupStuff :: InputType -> IO OutputType 这可能是简单的东西,如DNS查找,或对不随时间变化数据的一些Web服务调用。 让我们假设: 操作不会抛出任何异常和/或从未发散 如果不是为IO单子,该功能将是纯的,即结果对于相同的输入参数总是相同的 该操作是可重入的,即它可以安全地从多个线程同时调用。 lookupStuff操作相当(

    1热度

    1回答

    下面的代码是一个流行的topcoder问题的答案FourBlocks(您需要登录)。该解决方案使用位掩码记忆法,使用大小为1的块和大小为4的方块查找网格中的最大和。任何人都可以帮助我理解它的工作原理吗?这是干什么的 int[][] d = new int[m + 1][1 << n] // why 1<<n ? 又如何函数rec()适合在广场?其唯一的比较2位。 import java.uti