Artificial intelligence 效用函数极小极大搜索
嗨 我搞不懂如何用极大极小搜索来确定上的效用函数 解释它与任何游戏,你可以使用极大极小搜索 基本上我是问你如何确定效用函数Artificial intelligence 效用函数极小极大搜索,artificial-intelligence,minimax,Artificial Intelligence,Minimax,嗨 我搞不懂如何用极大极小搜索来确定上的效用函数 解释它与任何游戏,你可以使用极大极小搜索 基本上我是问你如何确定效用函数 喝彩效用值只是玩家在游戏中达到某个特定状态时收到的任意值。例如,在Tic-tac-toe中,你的效用函数可以是1表示胜利,0表示平局,或者-1表示失败。 在此基础上运行minmax最多只能找到一组导致1(胜利)的操作 另一个例子是国际象棋(并不是说你可以在一盘国际象棋上运行minimax)。假设你的效用函数来自一个特定的数字,该数字基于你捕获或丢失的棋子的价值确定在特定状态
喝彩效用值只是玩家在游戏中达到某个特定状态时收到的任意值。例如,在Tic-tac-toe中,你的效用函数可以是1表示胜利,0表示平局,或者-1表示失败。 在此基础上运行minmax最多只能找到一组导致1(胜利)的操作
另一个例子是国际象棋(并不是说你可以在一盘国际象棋上运行minimax)。假设你的效用函数来自一个特定的数字,该数字基于你捕获或丢失的棋子的价值确定在特定状态下移动的效用值与程序员的经验和他/她的游戏知识有关。
终端状态的效用值很容易确定。例如,在Tic tac toe中,玩家X的终端状态是当X以对角线、垂直或水平方向对齐时。创建这种状态的任何移动都是终端状态,您可以创建一个函数来检查该状态。如果是终端状态,则函数返回1或-1。 如果您的玩家代理是玩家X,在玩家X移动后,它确定玩家O将获胜,则函数返回-1。如果函数确定这是它自己的赢棋,则返回1。 如果所有单元格都被最后一次可能的移动占用,并且没有人获胜,则函数返回零 这只是在终端状态。评估中间状态是至关重要的,因为即使在3x3游戏中,也有很多组合要考虑。如果你包括对称移动,你有9个!Tic tac toe中的可能状态。对于这些中间情况,您需要提供一个评估函数,该函数返回每个状态的分数,因为它们与其他状态相关 假设我将终端状态值赋值为810、0和-810。每一步的得分为810/(#步数)。因此,如果我在6个动作中达到终点状态,分数将是810/6=135。在9个动作中,比分为90分。以这种方式构建的评估函数将有利于更快到达终端状态的移动。但是,它仍然计算为叶节点。不过,我们需要在到达叶节点之前进行求值,但这也可能是求值函数的一部分。 假设在下面的游戏中,玩家1是X,那么X接下来移动。以下是X的合法移动(行、列): (1) 0,0 (2) 0,2 (3) 2,0 (4) 2,1 (5) 2,2 ||O|| |O | X | X| |||| 每次移动的效用值应该有利于最佳移动。 在这种情况下,最好的动作是(2)或(5)。因此,一个评估函数将分配一个效用值81,例如,每个效用值都是81。移动(4)对于X玩家来说是最糟糕的移动(也会保证你输给一个智能玩家),所以函数会给这个移动赋值-9。移动(1)和(3)虽然不理想,但不会使您失败,因此我们可能会指定一个1。
因此,当minimax评估这5个移动时,因为您的玩家X是max,所以选择(2)或(5) 如果我们专注于选项(2)或(5),那么游戏将在两步之后进入终端状态。因此,在现实中,评估函数应该比当前的合法移动早两步返回效用值。(此策略遵循深度限制搜索的路线,在该路线中,您的函数在特定深度进行计算,并在不到达叶节点或终端状态的情况下生成实用程序值) 现在我要回到我的第一句话。效用值将由程序员根据游戏知识编写的评估函数确定 希望我没有把你搞糊涂