如何选择算法?
How to choose an algorithm?
我必须为给定的问题选择一个算法:
游戏有两个玩家:x 和 o。玩家交替轮流,玩家 x 在每场游戏开始时先移动。
玩家 x 从位置 (1,1) 开始,而 o 从 (8,8) 开始。
每一回合,玩家都可以像国际象棋中的女王一样移动(在八个方向中的任何一个方向),只要她的路径不穿过已经填满或占据的方格。移动后,玩家腾出的space被指定为已填满,不能再次移动。请注意,只有被占用的 space 被填充,而不是整个路径。
当一名玩家无法移动时,游戏结束,另一名玩家获胜。给定的时间是 1 分钟。
坐标 (1 1) 表示棋盘的左上角。
板被指定为行列表。每行都是一个条目列表:
是一个空方块
是一个实心方块
x是x玩家的当前位置
o为o玩家当前位置
那是本地搜索算法还是 A*?看起来和国际象棋差不多,但同时我也看不出这个游戏的目标...
万分感谢!
这是一个zero sum game,有两个玩家,每个代理都有完整的'knowledge'世界。
处理此类问题的一般方法是minimax algorithm。
简而言之,算法的思想是试图为每一步找到最大保证 "value"。这是通过在你的回合中采用 "max" 的可能性并在对手的回合中采用 "min" 的可能性来完成的(假设他也试图最大化他的利润,所以最大化他的利润就是最小化你的利润)。
该算法递归地查看所有可能的游戏状态,直到一定深度,然后选择您可以采取的最佳策略。
您可能需要一些启发式函数来评估每个游戏状态(因为由于分支因子较大,算法不太可能拥有整个游戏树)。该算法将使用这种启发式方法为您和对手选择最佳着法。
我必须为给定的问题选择一个算法:
游戏有两个玩家:x 和 o。玩家交替轮流,玩家 x 在每场游戏开始时先移动。
玩家 x 从位置 (1,1) 开始,而 o 从 (8,8) 开始。
每一回合,玩家都可以像国际象棋中的女王一样移动(在八个方向中的任何一个方向),只要她的路径不穿过已经填满或占据的方格。移动后,玩家腾出的space被指定为已填满,不能再次移动。请注意,只有被占用的 space 被填充,而不是整个路径。
当一名玩家无法移动时,游戏结束,另一名玩家获胜。给定的时间是 1 分钟。
坐标 (1 1) 表示棋盘的左上角。
板被指定为行列表。每行都是一个条目列表:
是一个空方块
是一个实心方块
x是x玩家的当前位置
o为o玩家当前位置
那是本地搜索算法还是 A*?看起来和国际象棋差不多,但同时我也看不出这个游戏的目标...
万分感谢!
这是一个zero sum game,有两个玩家,每个代理都有完整的'knowledge'世界。
处理此类问题的一般方法是minimax algorithm。
简而言之,算法的思想是试图为每一步找到最大保证 "value"。这是通过在你的回合中采用 "max" 的可能性并在对手的回合中采用 "min" 的可能性来完成的(假设他也试图最大化他的利润,所以最大化他的利润就是最小化你的利润)。
该算法递归地查看所有可能的游戏状态,直到一定深度,然后选择您可以采取的最佳策略。
您可能需要一些启发式函数来评估每个游戏状态(因为由于分支因子较大,算法不太可能拥有整个游戏树)。该算法将使用这种启发式方法为您和对手选择最佳着法。