我想知道我是否可以加快排列的产生.具体来说,我正在使用[az]中的8个,我想使用[a-zA-Z]中的8个和[a-zA-Z0-9]中的8个.我所知道的将很快占用大量的时间和空间.
即使仅使用小写ASCII字符的长度为8的排列也需要一段时间并生成千兆字节.我的问题是我不理解底层算法,所以我无法弄清楚我是否可以将问题分解成比我以后可以加入的更小的任务.
我用来生成排列列表的python脚本:
import string
import itertools
from itertools import permutations
comb = itertools.permutations(string.ascii_lowercase, 8)
f = open('8letters.txt', 'w')
for x in comb:
y = ''.join(x)
f.write(y + '\n')
f.close()
Run Code Online (Sandbox Code Playgroud)
有谁知道如何将其划分为子任务并将它们放在一起?有可能吗?
我可能只是尝试(可能)更快的方式,但我遇到了C++及其std :: next_permutation()的问题,所以我无法验证它是否可以加速甚至一点点.
如果我可以将它分成16个任务,并在16个Xeon CPU上运行,那么加入结果,这将是很棒的.