如何选择算法?

时间:2015-05-21 19:23:13

标签: algorithm artificial-intelligence 2d-games

我要为给定的问题选择算法:

游戏中有两个玩家:x和o。在每场比赛开始时,玩家需要先轮流,玩家x先移动。

玩家x从位置(1,1)开始,而o从(8,8)开始。

每回合,玩家可以像国王一样在国际象棋中移动(在八个方向中的任何一个方向),只要她的路径不穿过已经填满或被占用的方格。移动后,玩家腾出的空间被指定为已填满且无法再次移动。请注意,只填充了占用的空间,而不是整个路径。

当一名玩家无法再移动时,游戏结束,另一名玩家将成为获胜者。给出的时间是1分钟。

坐标(11)表示电路板的左上角。

将板指定为行列表。每行都是一个条目列表:

  • 是一个空方

  • 是一个填充方格

x是x播放器的当前位置

o是o玩家的当前位置

这是本地搜索算法还是A *?它似乎与国际象棋相似,但与此同时我无法真正看到这场比赛的目标......

感谢!

1 个答案:

答案 0 :(得分:1)

这是一个zero sum game,有两个玩家,每个代理人都有完整的知识'世界。

处理此类问题的一般方法是minimax algorithm

简而言之,算法理念是试图找到最大保证值"值"对于每一步行动。这是通过采用" max"轮到你的可能性" min"在对手转向的可能性(假设他也试图最大化他的利润,因此最大化他的利润是最小化你的利润)。
该算法递归地查看所有可能的游戏状态,直到某个深度,并选择您可以采取的最佳策略。

您可能需要一些启发式函数来评估每个游戏状态(因为由于分支因子较大,算法不太可能拥有整个游戏树)。该算法将使用此启发式方法为您和对手选择最佳移动。