8得票3回答
在Haskell中动态减少列表

假设我有一个函数f,它接受一些输入并生成一个数字。在函数f中,根据输入创建了一个列表,然后使用foldl' g进行缩小以生成最终输出数字。因为所有中间列表都将被缩小,所以是否可能在不表达中间列表的情况下应用缩小函数g。这里的目标是限制用于存储(或表达,如果“存储”是一个不太准确的词)列表的内存...

8得票1回答
Haskell中的Eta约简

我试图在Haskell中简化这个函数,例如: mySum x y = x + y mySum x y = (+) x y mySum x = (+) x mySum = (+) -- it's Messi's goal! 我的函数有点复杂,但我真的做不到。我一直在找技术方案,比如修改右...

22得票5回答
使用OpenMP在数组上进行缩减操作是否可行?

OpenMP原生支持代表数组的变量的归约吗? 这应该像以下代码一样工作...float* a = (float*) calloc(4*sizeof(float)); omp_set_num_threads(13); #pragma omp parallel reduction(+:a) for...

10得票2回答
CUDA-为什么基于warp的并行规约较慢?

由于warp中的所有线程在定义上是同步的,因此我有一个基于warp的并行归约的想法。 因此,这个想法是输入数据可以被减少64倍(每个线程减少两个元素),而不需要任何同步需求。 与Mark Harris的原始实现相同,归约应用于块级别,数据在共享内存中。http://gpgpu.org/st...

16得票3回答
Lambda演算规约

大家好, 以下是我发现难以简化的lambda表达式,即我不知道如何解决这个问题。 谢谢。 (λm λn λa λb . m (n a b) b) (λ f x. x) (λ f x. f x) 这是我尝试过的,但我卡住了: 将上述表达式视为:(λm. E) M 等于 E = (λ...

14得票2回答
在λ演算中的按值调用

我正在学习类型与编程语言,Pierce在介绍按值调用规约策略时,举了一个术语id (id (λz. id z))的例子。内部redex id (λz. id z)先被规约为λz. id z,这是第一次规约的结果,然后外部redex被规约为正常形式λz. id z。 但是按值调用顺序被定义为“...

9得票1回答
Openmp和std::vector的reduction有什么关系?

我想让这段代码并行运行: std::vector<float> res(n,0); std::vector<float> vals(m); std::vector<float> indexes(m); // fill indexes with values...

7得票3回答
支配集问题的NP完备性证明

这里有一个问题。我想知道是否有一个清晰高效的证明: 顶点覆盖:输入无向图 G,整数 k > 0。是否存在一个顶点子集 S,|S|<=k,它覆盖了所有的边? 支配集:输入无向图 G,整数 k > 0。是否存在一个顶点子集 S,|S|<=k,它支配了所有的顶点? 一个...

13得票1回答
Raku(前身为Perl 6)的reduce函数和reduction metaoperator给出了不同的结果。

my @s=<1 2 3 2 3 4>; say reduce {$^a < $^b}, @s; say [<] @s; # -------- # True # False 我的问题有两个方面:首先,为什么缩减元操作符以不同方式处理<运算符?估计是因为缩减元操作符...

42得票5回答
在OpenMP中减少数组

我正在尝试并行化以下程序,但不知道如何在数组上进行约简。我知道这是不可能的,但是否有替代方法?谢谢。(我添加了对m的约简,但这是错误的,希望能得到如何解决它的建议。)#include <iostream> #include <stdio.h> #include <...