相关疑难解决方法(0)

Data.MemoCombinators如何工作?

我一直在寻找Data.MemoCombinators的来源,但我无法真正看到它的核心位置.

请向我解释所有这些组合器背后的逻辑以及它们如何在实际编程中加速您的程序实际工作的机制.

我正在寻找这个实现的细节,并可选择与其他Haskell方法进行比较/对比来进行memoization.我理解什么是memoization,而不是在寻找它的工作原理.

haskell combinators memoization

38
推荐指数
3
解决办法
2911
查看次数

Haskell中动态编程的高效表

我在Haskell中编写了0-1背包问题.到目前为止,我对于懒惰和普遍性水平感到自豪.

我首先提供了创建和处理惰性2d矩阵的函数.

mkList f = map f [0..]
mkTable f = mkList (\i -> mkList (\j -> f i j))

tableIndex table i j = table !! i !! j
Run Code Online (Sandbox Code Playgroud)

然后我为一个给定的背包问题制作一个特定的表格

knapsackTable = mkTable f
    where f 0 _ = 0
          f _ 0 = 0
          f i j | ws!!i > j = leaveI
                | otherwise = max takeI leaveI
              where takeI  = tableIndex knapsackTable (i-1) (j-(ws!!i)) + vs!!i
                    leaveI = tableIndex knapsackTable (i-1) j

-- weight …
Run Code Online (Sandbox Code Playgroud)

haskell knapsack-problem memoization dynamic-programming lazy-evaluation

15
推荐指数
2
解决办法
3522
查看次数

Haskell中的动态编程

Haskell是否提供动态编程的任何工具?在过程语言中,我将使用数组来存储基于递归关系的计算.我如何在Haskell中做类似的事情?

haskell dynamic-programming

0
推荐指数
1
解决办法
583
查看次数