【发布时间】:2012-02-01 19:03:40
【问题描述】:
假设我们有一个元素列表:
[{dog,1},{dog,2},{cat,1},{cat,2},{bird,1},{bird,2},...]
我想将此列表中所有可能的permutations 存储在 RAM 中。
由于列表可能很长(10 个或更多元素),存储它需要大量空间(阶乘 N)。
例如,如果我有一个列表,它消耗大约 70 字节的空间并且有 12 个元素,那么我需要12! * 70 ~ 31 GB。如果我在列表中再添加一个元素,那么将排列存储在 RAM 中可能会变得不可行。
有没有比下面的 Erlang 表示更有效的表示来将所有排列保留在内存中?
[{dog,1},{dog,2},{cat,1},{cat,2},{bird,1},{bird,2},...]
(我知道原子dog在原子表中只存储一次,但由于它在每个排列中都重复,因此需要N个内存)。
也许这些排列可以以某种字节表示形式存储? (对不起,我是字节和二进制的新手)。
毕竟只是相同的元素,只是以不同的方式重新排列。
【问题讨论】:
标签: erlang permutation ram data-representation