蛇打算法

时间:2014-07-23 12:32:32

标签: algorithm

在一个网格(10 * 10)中,有两条蛇:A和B.在每一回合中,蛇再落后一条。所以它看起来像这样:

第1步:

. . . . . . . . . .
.                 .
.     B           .
.                 .
.                 .
.                 .
.                 .
.     A           .
.                 .
. . . . . . . . . .

第2步:

. . . . . . . . . .
.                 .
.     _B          .
.                 .
.                 .
.                 .
.     A           .
.     |           .
.                 .
. . . . . . . . . .

第3步:

. . . . . . . . . .
.                 .
.     __B         .
.                 .
.                 .
.     A           .
.     |           .
.     |           .
.                 .
. . . . . . . . . .

每只蛇的目标是比以前的生存更长时间,如果他撞到墙上或某人体内的一部分,他就死了,对手就赢了。

问题是,如果有任何众所周知的算法可以决定蛇应该走哪条路?我唯一能想到的是非常简单,可能没用。

4 个答案:

答案 0 :(得分:2)

游戏应该可以打败吗?一般来说,如果蛇只是想要生存,它应该进入开放空间/最大可能空间......

你需要做的是,(在许多游戏中完成(如国际象棋))根据某些评分系统为给定情境分配值。他们计算下一个可能的"状态" (你移动了,或者敌人移动了)。比较这两个州并选择一个更好的州。

你可以评分"使敌人更小的可能性+使自己的可能性更大"。你也可以假设敌人的蛇会选择基于类似的系统(我假设是人类玩家)。

答案 1 :(得分:1)

您可以尝试Alpha-Beta修剪/深度限制方法或Expectimax搜索。这样每条蛇将根据给定的深度计算出最佳的游戏方式,因为很难枚举整个空间。

答案 2 :(得分:0)

你的蛇应该试图分开一部分区域并留在较大的区域内,而对手应该在另一侧。一旦完成,你只需走到最近的墙上,然后上下走,直到你到达墙壁,然后向前移动一步。这应该是可能的,直到你的对手死亡,因为你有更多的空间。

你的蛇应该检测到另一只蛇尝试相同并应该阻止它。防止意味着试图走进隔离墙的较大一侧。

答案 3 :(得分:0)

虽然minmax和alpha-beta修剪似乎是不可避免的,但是你可能想要考虑convex hull算法来开始移动,因为对于自由点的凸包,这对于你来防止封闭空间是很好的方法墙壁的边界,提供更多的董事会位置访问,改善游戏中的长寿性变化。