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]那样在数组中同时生成,我该怎么做?
在单次评估中生成这些排列的列表需要超过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)
| 归档时间: |
|
| 查看次数: |
594 次 |
| 最近记录: |