标签: reduction

证明支配集是NP完全的

这是个问题.我想知道是否有明确有效的证据:

顶点覆盖:输入无向G,整数k> 0.是否有顶点S的子集,| S | <= k,覆盖所有边?

支配集:输入无向G,整数k> 0.是否有一个顶点S的子集,| S | <= k,它支配所有顶点?

顶点覆盖了它的入射边缘,并支配它的邻居和自身.

假设VC是NPC,证明DS是NPC.

np-complete reduction

5
推荐指数
2
解决办法
1万
查看次数

OpenCL浮点数减少

我想对我的内核代码(1维数据)应用reduce:

__local float sum = 0;
int i;
for(i = 0; i < length; i++)
  sum += //some operation depending on i here;
Run Code Online (Sandbox Code Playgroud)

我想要有n个线程(n =长度),最后有1个线程来计算总和,而不是只有1个线程执行此操作.

在伪代码中,我希望能够写出这样的东西:

int i = get_global_id(0);
__local float sum = 0;
sum += //some operation depending on i here;
barrier(CLK_LOCAL_MEM_FENCE);
if(i == 0)
  res = sum;
Run Code Online (Sandbox Code Playgroud)

有办法吗?

我总和有竞争条件.

parallel-processing multithreading reduction opencl race-condition

5
推荐指数
1
解决办法
8446
查看次数

Flow Shop到布尔可满足性[多项式时间减少]

我联系您,以便了解"如何将流水车间调度问题转换为布尔可满足性".

我已经为N*N Sudoku,N-queens和Class调度问题做了这样的减少,但是我对如何将Flow shop转换为SAT有一些问题.

SAT问题看起来像这样:

SAT问题的例证

目标是:使用不同的布尔变量,找到每个变量的效果,以使"句子"成立.(如果可以找到解决方案).

我使用遗传算法创建自己的求解器,能够找到解决方案并证明什么时候没有.现在,我尝试不同的NP问题,比如Flow Shop.

流水车间调度问题是车间或集团车间的一类调度问题,其中流量控制应能够为每个作业进行适当的排序,并在一组机器或其他资源上进行处理1,2,...,m符合给定的处理订单.

特别是在最小的空闲时间和最少的等待时间的情况下,期望保持连续的处理任务流.

Flow shop调度是作业车间调度的一个特例,其中对所有作业执行所有操作的严格顺序.

流水车间调度也可以应用于计算设计的生产设施.

(http://en.wikipedia.org/wiki/Flow_shop_scheduling)

结果是一系列工作将经历每个研讨会,图形结果将如下所示:

Flow Shop的图形结果

所以为了表示flow-shop实例,在输入中我有这样的文件:

2 4
4 26 65 62 
63 83 57 9 
Run Code Online (Sandbox Code Playgroud)

这个文件意味着我有2个商店和4个工作,每个工作的每个工作的持续时间都是.

目标:找到最小化C_max的序列,如果您愿意,可以找到最后一台机器上最后一个作业的结束日期.

我的Flow-Shop现在非常简单,但我不知道如何将它们形式化以便创建一个CNF文件来执行我的SAT求解器.

如果你们其中一个有一些想法:文章?一个想法的开始?

这个问题的下一部分:Flow/Job Shop到布尔可满足性[多项式时间缩减]第2部分

algorithm optimization reduction sat

5
推荐指数
1
解决办法
972
查看次数

如何使用简化并行化这个for循环?

我试图通过使用Openmp使这个for循环并行化,我认识到在这个循环中减少了所以我添加了"#pragma omp parallel for reduction(+,ftab)",但它没有用,它给了我这个错误:错误:找不到'ftab'的用户定义缩减.

   #pragma omp parallel for reduction(+:ftab)
    for (i = 1; i <= 65536; i++) ftab[i] += ftab[i-1];
Run Code Online (Sandbox Code Playgroud)

c arrays parallel-processing openmp reduction

5
推荐指数
1
解决办法
370
查看次数

减少最大值的 Numpy 索引 - numpy.argmax.reduceat

我有一个平面数组b

a = numpy.array([0, 1, 1, 2, 3, 1, 2])
Run Code Online (Sandbox Code Playgroud)

以及c标记每个“块”开始的索引数组:

b = numpy.array([0, 4])
Run Code Online (Sandbox Code Playgroud)

我知道我可以使用归约找到每个“块”中的最大值:

m = numpy.maximum.reduceat(a,b)
>>> array([2, 3], dtype=int32)
Run Code Online (Sandbox Code Playgroud)

但是...有没有一种方法可以通过向量化操作(无列表、循环)找到<edit>块内最大值的索引</edit>(例如)?numpy.argmax

numpy vectorization reduction argmax numpy-ufunc

5
推荐指数
1
解决办法
1224
查看次数

Openmp和std :: vector的缩减?

我想让这段代码并行:

std::vector<float> res(n,0);
std::vector<float> vals(m);
std::vector<float> indexes(m);
// fill indexes with values in range [0,n)
// fill vals and indexes
for(size_t i=0; i<m; i++){
  res[indexes[i]] += //something using vas[i];
}
Run Code Online (Sandbox Code Playgroud)

这个文章它的建议使用:

#pragma omp parallel for reduction(+:myArray[:6])
Run Code Online (Sandbox Code Playgroud)

这个问题中,评论部分提出了相同的方法.

我有两个问题:

  1. 我不知道m在编译时,从这两个例子看来,它似乎是必需的.是这样吗?或者,如果我可以在这种情况下使用它,我需要?在以下命令中替换#pragma omp parallel for reduction(+:res[:?])什么?m还是n
  2. 难道是相关的指标for是相对于indexesvals,而不是res,尤其是考虑到reduction是在后者做了什么?

但是,如果是这样,我该如何解决这个问题呢?

c++ parallel-processing vector openmp reduction

5
推荐指数
1
解决办法
3228
查看次数

英特尔编译器(C++)在std :: vector上减少OpenMP的问题

从OpenMP 4.0开始,支持用户定义的缩减.所以我在这里完全定义了C++中std :: vector的减少.它适用于GNU/5.4.0和GNU/6.4.0,但它使用intel/2018.1.163返回减少的随机值.

这是一个例子:

#include <iostream>
#include <vector>
#include <algorithm>
#include "omp.h"

#pragma omp declare reduction(vec_double_plus : std::vector<double> : \
                              std::transform(omp_out.begin(), omp_out.end(), omp_in.begin(), omp_out.begin(), std::plus<double>())) \
                    initializer(omp_priv = omp_orig)

int main() {

    omp_set_num_threads(4);
    int size = 100;
    std::vector<double> w(size,0);

#pragma omp parallel for reduction(vec_double_plus:w)
    for (int i = 0; i < 4; ++i)
        for (int j = 0; j < w.size(); ++j)
            w[j] += 1;

    for(auto i:w)
        if(i != 4)
            std::cout << i << std::endl;

    return 0; …
Run Code Online (Sandbox Code Playgroud)

c++ gnu intel openmp reduction

5
推荐指数
1
解决办法
201
查看次数

Haskell"源减少"

我正在修改即将到来的Haskell考试,我不理解过去论文中的一个问题.谷歌没有任何用处

fst(x, y) = x
square i = i * i
Run Code Online (Sandbox Code Playgroud)

i)源减少,使用Haskells懒惰评估,表达式:

fst(square(3+4), square 8)
Run Code Online (Sandbox Code Playgroud)

ii)使用严格的评估,源减少相同的表达式

iii)说明懒惰评估的一个优点和严格评估的一个优点

我不明白什么源减少?

evaluation haskell terminology reduction

4
推荐指数
2
解决办法
467
查看次数

4
推荐指数
1
解决办法
1707
查看次数

Java 8 Streams减少了删除重复项,保留了最新的条目

我有一个Java bean,就像

class EmployeeContract {
    Long id;
    Date date;
    getter/setter
}
Run Code Online (Sandbox Code Playgroud)

如果有一个很长的列表,我们在id中有重复但有不同的日期,例如:

1, 2015/07/07
1, 2018/07/08
2, 2015/07/08
2, 2018/07/09
Run Code Online (Sandbox Code Playgroud)

如何减少此类列表仅保留最近日期的条目,例如:

1, 2018/07/08
2, 2018/07/09
Run Code Online (Sandbox Code Playgroud)

?最好使用Java 8 ...

我从一开始就开始:

contract.stream()
         .collect(Collectors.groupingBy(EmployeeContract::getId, Collectors.mapping(EmployeeContract::getId, Collectors.toList())))
                    .entrySet().stream().findFirst();
Run Code Online (Sandbox Code Playgroud)

这给了我各个组内的映射,但是我被困在如何将其收集到结果列表中 - 我的流不是太强我害怕...

java collections reduction java-8 java-stream

4
推荐指数
1
解决办法
693
查看次数