hujunhua 发表于 2012-4-5 11:45:06

Permutations\::outmem: "The result of evaluating Permutations[{1,2,3,4,5,6,7,8,9,10,11}] would have 1756339200 bytes, which does not fit in available memory"
n=11我算不了

hujunhua 发表于 2012-4-5 11:54:53

我是真的忘了Mathematica里的注释符。见笑啊:)

mathe 发表于 2012-4-5 12:18:48

10多分钟了,n=11还没有算出来。
hujunhua 发表于 2012-4-5 11:32 http://bbs.emath.ac.cn/images/common/back.gif
这个很正常,排序太多了。
所以对于n大一些,还得用我的方法,可以先用某些排序去过滤。要不然先随机产生n个排序吧。然后再次根据前面这些序列的结果,穷举余下的序列。如果余下序列数目不多了,就可以继续用你的方案了。其实后面部分同数独程序的搜索挺类似的。

wayne 发表于 2012-4-5 13:25:03

29# hujunhua
:loveliness:
那是我公司用的机子。
最开始是我个人用的,
后来改成android每日构建的服务器啦,
我现在用的机子是dell optilex 980,也还行。
可我不敢随便安装D版软件啊~~

wayne 发表于 2012-4-5 13:30:16

32# hujunhua
Mathematica一半都是用 (**)来注释的。
但自从见到了老大的注释,我觉得用字符串语句来当做注释更简洁!
老大的创意,我不得不赞啊!

wayne 发表于 2012-4-5 13:31:58

31# hujunhua
哇,光Mathematica程序就要近2G的内存呢,
老大的机子难道低于2G内存吗

hujunhua 发表于 2012-4-5 15:06:37

谢谢wayne提醒,这回记住不会忘了。
我那样注释是要费编译的吧,不知道运行的时候会不会有影响。要是记得注释符谁用这种憨招,我说过不会编程的,这哈真是贻笑大方啊。

连注释都不会,还敢贴程序,哎呀呀,笑死人了。

hujunhua 发表于 2012-4-5 17:16:56

策略的存在性

将23#的那个程序的第7、8行中的1换成-1,就成了选猜每组的最末一个排列。这是显示策略存在的最简陋方法了。 运行结果如下:牌张数n=4,最多次数=6,频数分布为{1,3,6,8,5,1}
期望次数为3.66667牌张数n=5,最多次数=8,频数分布为{1,4,13,34,48,15,4,1}
期望次数为4.58333 牌张数n=6,最多次数=10,频数分布为{1,5,21,74,182,257,152,25,2,1}
期望次数为5.71389牌张数n=7,最多次数=12,频数分布为{1,6,30,130,437,1057,1629,1278,403,63,5,1}
期望次数为6.96448 牌张数n=8,最多次数=13,频数分布为{1,7,41,207,858,2802,6819,11059,11024,5816,1502,170,14}
期望次数为8.29348牌张数n=9,最多次数=15,频数分布为{1,8,53,308,1508,6076,19638,47782,84144,99069,70190,27666,5737,664,36}
期望次数为9.6495 牌张数n=10,最多次数=18,频数分布为{1,9,67,434,2416,11530,45552,144850,360692,676529,911952,823005,462812,155340,30123,3308,176,4}
期望次数为11.0723貌似策略对期望次数的影响不大,但是对最多次数的影响不小。为了方便对比,将前面的结果转过来。牌张数n=4,最多次数=6,频数分布为{1,3,6,8,5,1}
期望次数为3.66667牌张数n=5,最多次数=8,频数分布为{1,4,13,30,46,19,5,2}
期望次数为4.69167牌张数n=6,最多次数=11,频数分布为{1,5,21,72,162,239,152,47,17,3,1}
期望次数为5.88889 牌张数n=7,最多次数=12,频数分布为{1,6,30,125,401,980,1536,1343,513,91,11,3}
期望次数为7.07698 牌张数n=8,最多次数=14,频数分布为{1,7,41,203,796,2589,6466,11028,11110,6086,1676,281,32,4}
期望次数为8.36012牌张数n=9,最多次数=20,频数分布为{1,8,53,300,1410,5594,18184,46623,84433,99460,70393,28932,6513,829,106,31,6,2,1,1}
期望次数为9.69137 牌张数n=10,最多次数=20,频数分布为{1,9,67,427,2288,10679,41849,137055,354588,678128,909649,819130,470281,165028,34577,4515,491,36,1,1}
期望次数为11.1053

hujunhua 发表于 2012-4-5 17:29:00

为了更好地观察策略的影响程度,最好是将1或者-1取成一个小组长度范围内的随机整数。但是不可两行都用随机函数,怎么将第7行的随机数传给第8行,有点费周折。
Wayne, 给想想辙?

wayne 发表于 2012-4-6 10:53:55

39# hujunhua
随机的产生某一序列的其中一个排列,可用RandomSample 函数。
随机的取出某一序列的其中一个元素,可用RandomChoice函数,

针对老大的提的问题,可以将随机数先存到某个变量里面,然后后面再引用这个变量的值,不知是否答对了
页: 1 2 3 [4] 5 6
查看完整版本: 猜排列问题