要素のリストがあるとしましょう:
[{dog,1},{dog,2},{cat,1},{cat,2},{bird,1},{bird,2},...]
このリストのすべての可能な順列を RAMに保存したいと思います。
リストは非常に長くなる可能性があるため (10 要素以上)、それを格納するには多くのスペースが必要です (階乗 N)。
たとえば、約 70 バイトのスペースを消費し、12 の要素を持つリストがある場合、12! * 70 ~ 31 GB
. リストにもう 1 つの要素を追加すると、順列を RAM に格納できなくなる可能性があります。
次のErlang表現よりも、すべての順列をメモリに保持するためのより効率的な表現はありますか?
[{dog,1},{dog,2},{cat,1},{cat,2},{bird,1},{bird,2},...]
(アトムはアトムテーブルに一度だけ格納されることは知っていdog
ますが、順列ごとに繰り返されるため、N個のメモリが必要です)。
たぶん、これらの順列は、ある種のバイト表現で保存できますか? (申し訳ありませんが、私はバイトとバイナリの初心者です)。
結局のところ、それはまったく同じ要素ですが、さまざまな方法で再配置されています.