并行算法生成排列

时间:2018-05-30 08:22:00

标签: permutation

我正在尝试生成长度达50的字符串排列。这意味着50! (50个阶乘串=约3.041 * 10 ^ 64)。考虑到不可能使用单个虚拟机或进程,我有以下并行算法。我打算计算到许多虚拟机的计算:

说输入字符串是“abcdef” 1)具有从公共全局池中删除请求并对其进行处理的功能。请求对象由两个变量组成:ancestorSequence,remainingCollection 2)调用函数后,执行以下操作:  2a)如果remainingCollection有两个字符,则打印此列表:      [ancestorSequence + remainingCollection [0] + remainingCollection [1],ancestorSequence + remainingCollection [1] + remainingCollection [0]  否则请执行以下操作  2b)创建以下请求并将其添加到公共全局池:    2b1)(ancestorSequence + remainingCollection [0],remainingCollection without remainingCollection [0])    2b2)(ancestorSequence + remainingCollection [1],remainingCollection without remainingCollection [1])    2b3)(ancestorSequence + remainingCollection [2],remainingCollection without remainingCollection [2])   等等,直到    2bn)(ancestorSequence + remainingCollection [n-1],remainingCollection without remainingCollection [n-1]

我们总是可以通过让每个函数接受多个这样的请求来进行优化。请让我知道你对此的看法。

0 个答案:

没有答案