使用mathematica 5.2生成大量排列

raj*_*fin 1 wolfram-mathematica

我正在使用Mathematica 5.2.我使用命令Tuples生成排列,例如:

In[1]:=Tuples[{0,1},3]

Out[1]={{0,0,0},{0,0,1},{0,1,0},{0,1,1},{1,0,0},{1,0,1},{1,1,0},{1,1,1}}
Run Code Online (Sandbox Code Playgroud)

但问题是,当我想通过将0和1放在20多个位置来生成所有可能的排列时,由于内存容量不足,Tuples命令无法提供输出.例如,如果我想使用0和1生成大量的排列,例如,

 Tuples[{0,1},25]
Run Code Online (Sandbox Code Playgroud)

命令"Tuples"没有给出输出,它给出一条消息,说没有足够的内存空间来生成如此大量的排列,那么我该如何处理这个问题呢?是否还有其他产生更大排列的过程?或者,如果我想逐个生成每个排列而不是像输出[1]那样在数组中同时生成,我该怎么做?

sak*_*kra 5

在单次评估中生成这些排列的列表需要超过3 GB的内存.这是使用Mathematica 8生成的输出:

In[1]:= NumberForm[ ByteCount [ Tuples[{0, 1}, 25] ], DigitBlock -> 3]
Out[1]//NumberForm= 3,355,443,368
Run Code Online (Sandbox Code Playgroud)

Mathematica 5.2内核是一个32位可执行文件,无法处理所需的内存量.您可以使用Do循环来一次生成一个排列:

With[{n = 4}, Do[Print[IntegerDigits[i, 2, n]], {i, 0, 2^n - 1}]]
Run Code Online (Sandbox Code Playgroud)