xbtianlang
发表于 2011-5-31 17:19:37
经过近2小时的计算,6×7的哈密顿回路是:
2011-5-31 15:41:03
Total: 1067638
2011-5-31 17:14:07
按照这样的递增速度,9×10的,即使经年累月也几乎算不出来。
KeyTo9_Fans
发表于 2011-6-1 03:34:05
我写了一个程序,可以快速计算$6$*$n$的棋盘的马步回路总数,结果如下:
棋盘规模?回路总数?程序运行时间
$6$*$7$:?$1067638$?$20s$
$6$*$8$:?$55488142$?$42s$
$6$*$9$:?$3374967940$?$56s$
$6$*$10$:?$239187240144$?$70s$
……
当行数达到$8$时,每增加$1$行,运行时间增加$14s$。(在答案小于$2^64$的前提下)
通过搜索以上数据,发现这个工作已经被别人在半年前率先完成了:
http://oeis.org/A175881
所幸的是,网上暂时未能搜索到$7$*$2n$的棋盘的马步回路总数。
我应该尽快改进我的程序,争取率先完成$7$*$2n$的棋盘的马步回路总数的计算工作。
xbtianlang
发表于 2011-6-1 08:54:36
我的程序这几天刚设计出来,所以效率很低,7×8的算了整整一个通宵才到3000万,估计有几十亿。
版主既然能算6*10,就直接设计7*10,8*10,9*10好了。
mathe
发表于 2011-6-1 11:02:45
我写了一个程序,可以快速计算$6$*$n$的棋盘的马步回路总数,结果如下:
棋盘规模?回路总数?程序运行时间
$6$*$7$:?$1067638$?$20s$
$6$*$8$:?$55488142$?$42s$
$6$*$9$:?$3374967940$?$56s$
$6$*$10 ...
KeyTo9_Fans 发表于 2011-6-1 03:34 http://bbs.emath.ac.cn/images/common/back.gif
非常不错,链接里面已经算到很多项了:
0, 0, 0, 0, 8, 9862, 1067638, 55488142, 3374967940, 239187240144, 15360134570696, 964730606632516, 61989683445413228, 4005716717182224826, 255967892553030600920, 16378998506224697063588, 1050504687249683771795632, 67351449674771471216148786, 4314151246752166099728445868, 276453522147273309254029785276, 17717606001764726850971209939188, 1135386328785418512845166305951994, 72754625853111517738642395445641832, 4662311340698795306229004946849255108, 298772700964630993744576968415214630040, 19145888052227167790585189427230454709502, 1226902568798073025855948189578313739199398, 78622502118507651703659030426757524782646558, 5038287048556094010756276060713112469110084532, 322863244258188584511076820531771298243292346804, 20689713115693125810120458424283134088711708746418, 1325838052128808846982470604742513077251389064878480, 84962322582242436449028078490147227914653412498469176, 5444553480688572729507994773339404670293124094670063400, 348897761885575809340513599895637906535045836867112425442, 22358059291249098112956347313304579317330515128430578229580, 1432748662105938633370488721737295472216003424322051173765262, 91813368745075979865082473968848043302481279531417429418851766, 5883582334056740305836749071273843581025553554521365508472081512, 377031597006006571424070743308269493020186682009428464253448495336
mathe
发表于 2011-6-1 12:54:22
此题与走格子路线数统计问题:
http://bbs.emath.ac.cn/viewthread.php?tid=517
是同一类问题。
在走格子路线数统计问题里,$4$种走法的位移为:
$(0,1)$、$(1,0)$、$(0,-1)$、$(-1,0)$
我们可以根据 ...
KeyTo9_Fans 发表于 2011-5-27 14:48 http://bbs.emath.ac.cn/images/common/back.gif
状态数目随着行的数目增加而迅速增加。对于9*n问题,不知道计算到5行时状态数目增加到多少。如果这时状态数目还不是多的离谱(比如规模在百万左右就还可以),我们可以将9*5行状态结果保存起来。然后同样另外一侧的5行也是这些状态,两边进行匹配就可以了。而匹配过程中,我们可以做一些简单索引,比如两边如果匹配,它们的联通分支数目必须相等,这样可以部分增加匹配的速度。
而同样,如果我们能够将9*6的所有状态都计算出来,那么反向的9*6的状态也同样在里面了,它们最边界两行必将重叠,于是应该可以相互计算对方的状态,由此可以更快的计算总数目
xbtianlang
发表于 2011-6-1 13:36:14
2011-6-1 13:12:50
path 1
128 3141126 9182320
4133027 6152421 817
29 2 5122510 7161922
path 2
128 3141126 9161922
4133027 6152421 817
29 2 5122510 7182320
path 3
128 3241126 9201714
4233027 6211215 819
29 2 5222510 7181316
path 4
128 3241126 9181316
4233027 6211215 819
29 2 5222510 7201714
path 5
128 3122510 7182320
4133027 6152421 817
29 2 5141126 9161922
path 6
128 3122510 7161922
4133027 6152421 817
29 2 5141126 9182320
path 7
128 3222510 7201714
4233027 6211215 819
29 2 5241126 9181316
path 8
128 3222510 7181316
4233027 6211215 819
29 2 5241126 9201714
path 9
12825 8 52023121714
26 730 324 918152211
29 227 619 421101316
path 10
12825 8 52023101316
26 730 324 918152211
29 227 619 421121714
path 11
1282518 520231411 8
261730 32415 6 92213
29 2271619 42112 710
path 12
1282518 5202312 710
261730 32415 6 92213
29 2271619 4211411 8
path 13
12825 619 421121714
26 730 324 918152211
29 227 8 52023101316
path 14
12825 619 421101316
26 730 324 918152211
29 227 8 52023121714
path 15
128251619 4211411 8
261730 32415 6 92213
29 22718 5202312 710
path 16
128251619 42112 710
261730 32415 6 92213
29 22718 520231411 8
2011-6-1 13:12:50
棋盘: 回路数
3*10: 16
4*10: 0
5*10: 13311268
6*10:239187240144
7*10: ?
8*10: ?
9*10: ?
以10为边长,可能有点大,不知道有没有更好的扩充方法?
KeyTo9_Fans
发表于 2011-6-1 16:19:21
经过2小时30分钟的计算,得到7*8棋盘的马步回路总数是34524432316。
由于我的笔记本电脑内存不够大,我只能将中间状态的数据写到硬盘上。
在硬盘上读写数据比在内存中读写数据慢10倍以上。
每个状态需要用16字节的数据表示。
中间状态数目的峰值是69414932,占用了1.04GB的硬盘空间。
计算8*9棋盘的马步回路总数估计要用30GB的硬盘空间,5天的时间。
如果是9*10的棋盘,大概需要800GB空间,6个月的时间。
mathe
发表于 2011-6-1 22:22:52
8*9的资源要求不大
9*10的就不行了需要优化
KeyTo9_Fans
发表于 2011-6-2 11:03:04
本帖最后由 KeyTo9_Fans 于 2011-6-2 11:09 编辑
7*2n棋盘的闭马路总数如下:
7*2: 0
7*4: 0
7*6: 1067638
7*8: 34524432316
7*10: 1250063279938854
7*12: 38350427205194670084
7*14的闭马路总数太多,我们只知道这个数除以2^64的余数为2987064776549805854。
#####
现在暂时没有空闲的台式机可用,而我的笔记本电脑空不出30GB的硬盘空间,所以暂时不能计算8*n棋盘的闭马路总数。
等到一个月后我的台式机把另外一个程序跑完了,才可以计算8*n棋盘的闭马路总数。
mathe
发表于 2011-6-2 11:20:31
可以上载源代码吗?我可以帮你运行。不过我要在Linux上运行。