Algorithm minimax算法如何在Tictoe上工作?

Algorithm minimax算法如何在Tictoe上工作?,algorithm,artificial-intelligence,minimax,Algorithm,Artificial Intelligence,Minimax,我已经阅读了很多关于minimax算法的文档,以及它在tic tac toe游戏中的实现,但是我真的很难应用它。 下面是我读过的链接,以及一个使用java的示例 考虑到伪代码: 以下是我的问题: 1.我将传递什么到签名节点,它是当前玩家的有效移动吗? 2.什么是+和-无穷大,它们可能的值是什么? 3.minimax与电路板上占用的单元之间的关系是什么。 4.什么是子节点?如何从中提取值? 5.如何确定最大允许深度? 节点是包含已播放单元格信息的网格 ±∞只是一个占位符,您可以使用编程语言中的in

我已经阅读了很多关于minimax算法的文档,以及它在tic tac toe游戏中的实现,但是我真的很难应用它。 下面是我读过的链接,以及一个使用java的示例

考虑到伪代码:

以下是我的问题:
1.我将传递什么到签名节点,它是当前玩家的有效移动吗?
2.什么是+和-无穷大,它们可能的值是什么?
3.minimax与电路板上占用的单元之间的关系是什么。
4.什么是子节点?如何从中提取值?
5.如何确定最大允许深度?

  • 节点
    是包含已播放单元格信息的网格

  • ±∞
    只是一个占位符,您可以使用编程语言中的
    int.maxValue
    或任何其他“大”/“小”值。它稍后用作与节点计算值的比较,
    0
    可能已经是有效值。(如果我们分配
    +∞
    bestValue
    ,我们希望
    min(bestValue,val)
    max(bestValue,val)
    用于
    -∞

  • 不知道你的意思

  • 子节点是可以进行的移动。一旦无法进行移动,将对板进行评估并返回分数

  • Tictatcoe中的搜索空间非常小,在其他游戏中会返回一个启发式分数,这取决于情况是否对玩家有利。在您的场景中,应该没有硬深度


  • 首先,不要在一个问题中问100个问题。问一个问题,试着理解并弄清楚你是否真的需要问另一个问题

    现在回答你的问题:

    我将传递给签名节点的是什么,它是否为 现在的玩家

    不,您将只传递
    节点
    深度
    最大化玩家
    (谁玩-最小或最大)。在这里
    为节点的每个子节点
    您可以找到该节点的可能移动。在实际场景中,您很可能会有一个类似
    getChildren
    的生成器,您可以使用它来获取您的子节点

    什么是+和-无穷大,它们可能的值是什么

    minimax算法只是尝试递归地在所有最小值上找到最大值。最大值玩家可能得到的最坏结果是-
    -无穷大
    。最小值的最坏结果是当最大值将得到
    +无穷大
    。所以这些只是开始值

    minimax和屏幕上被占用的单元格之间的关系是什么 董事会

    不知道你在这里是什么意思。Minimax是算法,占用的单元格是占用的单元格。这个问题类似于动态规划和csv文件之间的关系

    什么是子节点?如何从中提取值

    它们都是可以从您当前的位置到达的可能位置

    如何确定最大允许深度

    在标准极大极小值中,直到你到达树的末端。在树的末端,你的评估函数将给你一个奖励。因为树在大多数情况下太大,无法适应任何地方。人们使用截断并使用评估函数的近似值(启发式)最简单的方法是向前看,希望你的评估功能足够好,而你的对手认为向前看

    function minimax(node, depth, maximizingPlayer) 
    if depth = 0 or node is a terminal node
        return the heuristic value of node
    
    if (maximizingPlayer is TRUE) {
        bestValue = +∞
        for each child of the node {
            val = minimax(child, depth-1, FALSE)
            bestValue = max(bestValue, val)
        }
    
        return bestValue
    } else if maximizingPlayer is FALSE {
        bestValue = -∞
        for each child of the node {
            val = minimax(child, depth-1, TRUE)
            bestValue = min(bestValue, val)
        }
    
        return bestValue
    }