-4

ここでの私の主な目標は、私の研究プログラムのためにこのプログラムから結果を取得することです。そのため、誰かがダウンロードできるような順列セットの準備が整ったデータベースを持っている場合でも、ここでの私の探求に役立ちます.

そうは言っても、自分で生成できれば、私がやっていることには利点があります。

プログラム:

import itertools
set=['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l']
perm=list(itertools.permutations(set, 12))
print perm

私が直面している問題は、ハードウェアの問題です。

私のハードウェア仕様は次のとおりです。

imac 27in late 2012
Mac OSX Mountain Lion
8GB 1600MHz DDR3 RAM
Intel 3.4GHz i7
1TB HD with a bit more than 50% free space.

プログラムを実行しようとすると、プログラムを開いたままにしておくのに十分なメモリが起動ディスクにないというメッセージが表示され、プログラムを強制終了するように求められます。フリーズし、ハード再起動後にアクセス許可を修正して、すべてを再びスムーズに実行する必要があるため、次のようになります。

システムがそれを処理できることがわかっていない限り、このプログラムをそのまま実行してテストすることはお勧めしません。

しかし、私の推定では、このプログラムは (私が思うに) サイズ 12 でリストを出力します! これは途方もなく大きい... 500,000,000 を超える順列 (出力の実際のサイズは 12 未満かもしれません! しかし、指数関数よりもはるかに大きい)。

では、どうすればこのデータを取得できますか? 新しいシステムが必要ですか? その場合、どのくらいのスペースまたは RAM が必要ですか?

または、プログラムを扱いやすいチャンクに分割するために使用できるトリックはありますか?

4

1 に答える 1