Chinaunix首页 | 论坛 | 博客
  • 博客访问: 44387
  • 博文数量: 20
  • 博客积分: 1400
  • 博客等级: 上尉
  • 技术积分: 230
  • 用 户 组: 普通用户
  • 注册时间: 2009-01-21 22:20
文章分类
文章存档

2011年(1)

2009年(19)

我的朋友
最近访客

分类:

2009-07-10 05:26:58

    什么是“最佳开局”?

    比如,五将四兵二横的全部有解场景,有37861个,但是不是有可能找到至少若干个场景,通过这些场景的求解过程,就包容了这37861个场景(这里镜像与正像看作等同)。这似乎有些难,要包容这37861个场景,预计要3000个左右,但也挺有意思的,就算3000个吧,这3000个可就是五将四兵二横的“最佳开局”啦。

    要完成这个工程,就要在乱哄哄的37861个场景中,寻找经纬,理清脉络,它可比人的十二经脉复杂多啦。

    笔者检了一个最容易的七将无兵的全部有解场景作为起点,因为七将无兵的全部有解场景仅50个。得到一般“最佳开局”24个,严格“最佳开局”16个。

    怎么“最佳开局”还有“一般”和“严格”?

    “一般”,好理解,就是瓤括全部可能性。但有的场景很相似,真的很相似,孪生姐妹,多胞胎似的。比如:

    不把它们全部收录吧,就不能算“包容”,把它们全部收录吧,又难说是“最佳开局”。不得已啊,只得分出个“一般”与“严格”来。

    具体情形不介绍了,华容道爱好者自在地探索吧。笔者不希望把有趣弄得没趣。

    通过对七将无兵的操作,总结出“最佳开局”实现的具体的方法,我是这样做的:取一个“门类”,不断地从最佳步数最大的场景(并保存于另一个文档)进行解题,在解题过程中出现的当然场景(或者是它的镜像),如果在数据库中存在的就把它去除。最后保存于另一个文档中的场景就是“一般最佳开局”。如果要分出“严格最佳开局”,就要看最佳步数相同的场景是不是极相似,像孪生姐妹,多胞胎似的,就再把它去除,最后得到的就是这个门类的“严格最佳开局”。但这“严格最佳开局”个数的设定,有点受个人喜恶所左右。

    另一个方法,有待更多的实践:在解题过程中会出现许多“搜索场景”,“当然场景”只是其中的一小部分,如果把出现的“搜索场景”(或者是它的镜像)在数据库中就把它去除,最后出现的或许更能贴近“严格最佳开局”。在对七将无兵的操作后,得到12个“严格最佳开局”。七将无兵的全部有解场景,恰巧也仅有12个最佳步数为1步的开局场景。这一定是巧合,因为有“异途同归”的情形。但有一点是可以肯定的:用这个方法得到的“严格最佳开局”一定不会多于最佳步数为1步的开局场景的数量。这是多么的精炼啊。并且使用这个方法,程序设计也好处理得多。

    用“另一个方法”处理五虎困操二横,得到“严格最佳开局”334个。与最佳步数为1步的开局场景的数量不合。五虎困操二横的最佳步数为1步的开局场景的数量是217个。

    究其原因,是没有把场景搜索的活做穷。因为当前是为了得到“严格最佳开局”,而不是为了得到“最佳步数”。经改进后,得到五虎困操二横的“严格最佳开局”仅77个。够精炼吧。用这77个“最佳开局”可以绰绰有余的覆盖37861个五虎困操二横的有解场景。

    以上是笔者在处理这个命题的实践中所走过的路,看得出走了一大段弯路,最终确定了得到“严格最佳开局”的方法。

自然牛

阅读(844) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~