关于mma运算能力的提问
mathematica吧
全部回复
仅看楼主
level 4
停留半个月哈
楼主
代码Length@Subsets@Range@21会输出结果2097152。而运算Length@Subsets@Range@22的时候电脑直接死机了。为了测试运行这行代码不是因为电脑配置和mma版本的局限,在https://mathematica.wolframcloud.com在线运行,输出结果$Aborted。
上面的结果应该是4194304,为什么区区四百多万,mma运算不出来呢?
2017年12月11日 04点12分
1
level 10
信手繁华
没问题
11.2 8g内存
2017年12月11日 04点12分
2
停留半个月哈
10.4 4g内存就直接死机了,本来还想算更大的。。。
2017年12月11日 04点12分
孺子剑牛不群
@停留半个月哈
10.4算到24无压力,8G内存。你的4G内存有点太小了吧,现在旗舰手机的内存都已经是6G了
2017年12月11日 07点12分
level 12
Alexander0620
有人(好像是 Wellin )说过(大意):使用 MMA,限制能力的是硬件。
2017年12月11日 07点12分
3
level 8
孺子剑牛不群
为了测试运行这行代码不是因为电脑配置和mma版本的局限,在wolframcloud.com在线运行。
这个可说明不了是不是”电脑配置和mma版本的局限“,至少免费版的限制很多(内存、时间等),配置往往还比不上主流的PC,只是方便电脑上没有装mma的人临时用用而已。
Subsets是一次性生成所有的列表的,肯定是很吃内存的,内存不够可以用Do循环实现不难;python里面有个itertools里有对应的功能,支持惰性计算,没测试应该能节省内存吧,速度也不见得更快
2017年12月11日 07点12分
4
停留半个月哈
感谢你的回复,每一条我都认真看了,还有一个问题要请教,就是用Do循环生成所有的列表,能不能提供一个思路,我接触的函数太有限了写不出来。谢谢你!
2017年12月26日 04点12分
level 8
孺子剑牛不群
2017年12月11日 07点12分
5
level 8
孺子剑牛不群
测试了一下Python,表现比mma要好(下面mma的写法比直接用Subsets更快)
2017年12月11日 07点12分
6
level 8
国士无双-泰坦
2017年12月11日 07点12分
7
吧务
level 15
xzcyr
该说的大家基本都说了……“区区四百多万”,你可是生成了四百多万个子集啊喂。这个问题最好解法或许是用lazy list,可是Mathematica现在还没内置相应的函数,不过,姑且有人写过,参看这帖:
https://mathematica.stackexchange.com/a/86142/1871
还有,如果只关心子集的数目的话,那我们完全可以:
Sum[Binomial[22, i], {i, 0, 22}]
Sum[Binomial[n, i], {i, 0, n}]
2^22
2018年01月06日 07点01分
8
1