zYr 发表于 2010-2-3 20:15:22

围棋小游戏

游戏开始:棋盘中心(即天元)位置上有一白子

游戏规则:黑白双方轮流下一子。白子只能连续直着走而不能斜着走(即只能长而不能尖、跳、飞等)走到棋盘边界获胜;黑子可下任意位置,目的是阻止白棋到达边界,完全围住白棋获胜。
例:

问题:白棋有没有可能逃出黑棋围困?若可能,最少走几步?若不可能,求黑棋围住白棋的最优方案?(双方必须竭尽全力取胜,不得故意失败)

KeyTo9_Fans 发表于 2010-2-3 20:23:02

本帖最后由 KeyTo9_Fans 于 2010-2-3 20:26 编辑

俗话说九子锁金龟。

意思大概是黑子九步就把白子包围住了。

不过实际玩的时候,白子可下$11$~$13$步左右。

大概是因为外围边界被包围住了,但里面还有一些空隙可以透气。

所以真正锁死需要$11$~$13$步。

#####

具体是多少步,以及如何走,等我有空了编个程序模拟一下。

zYr 发表于 2010-2-3 20:35:51

2# KeyTo9_Fans


我想所谓九子大概是9步形成包围局势
实际需要18步才能完全围住
因为我只想到了这个办法 呵呵

不知道有没有更好的方法
是不是9步就能完全围住呢?

KeyTo9_Fans 发表于 2010-2-3 20:48:28

呵呵,我原来以为锁长蛇和锁金龟的步骤差不多。

看了楼上的演示才知道锁长蛇的步数比锁金龟的步数多一些。

因为金龟只是在跑的,而长蛇会伸长。

所以真正把长蛇锁住,需要多下几步才可以。

看来编程序模拟的时候要考虑的算法效率问题了。

zYr 发表于 2010-2-3 21:10:53

求一下有没有更好的解吧:)

KeyTo9_Fans 发表于 2010-2-3 21:22:27

手工求解比较麻烦吧?

我觉得还是编程序模拟比较合适。

或许这个话题可以放到编程擂台里。

如果谁对这个游戏比较感兴趣而且有空的话,就可以编程序模拟了。

我们试着列举所有可能的走法,然后看看双方的最佳策略是怎样的。

我估计黑子所运用的技巧大概就是3楼演示的那样了。

步数大概就是$18$回合左右吧。

#####

在$18$回合内,双方的走法都很多。

所以可能要注重算法效率的优化,不然短时间内可能列举不完。

所以我觉得把这个游戏作为一个擂台节目也许会很不错——

——如果列举完所有可能的走法是比较轻松的,那么就看谁设计的算法效率高;

——如果列举完所有可能的走法是比较困难的,那么就可以把参与者分成两队,一队扮演黑方,一队扮演白方,每个人都可以写一个AI,然后互相对战,看谁的AI比较强。

mathe 发表于 2010-2-4 06:35:58

就是天使和魔鬼问题

mathe 发表于 2010-2-4 06:48:29

关于这个题目,黑子前面8步可以分别下在4个角和4条边的正中央,然后在接下去只要都堵在边上,不要太笨了,肯定可以堵住。
而且对于这样的棋盘,还可以让白子先下一步,只要前8步中,根据白子的走向,优先下白棋方向一条边的中心,也必然可以堵住

mathe 发表于 2010-2-4 06:56:53

白先手不行,必须黑先,而且白最优策略不是4角加4个边的中心,而是4个角在加4个挨着角的位置

mathe 发表于 2010-2-4 06:59:50

或者开始8个位置就是8个挨着角的位置(这样角上就不要下了)。而这时白子最快也离边还有一步,正好堵上
页: [1] 2
查看完整版本: 围棋小游戏