Algorithm minimax算法如何在Tictoe上工作?
我已经阅读了很多关于minimax算法的文档,以及它在tic tac toe游戏中的实现,但是我真的很难应用它。 下面是我读过的链接,以及一个使用java的示例 考虑到伪代码: 以下是我的问题:Algorithm minimax算法如何在Tictoe上工作?,algorithm,artificial-intelligence,minimax,Algorithm,Artificial Intelligence,Minimax,我已经阅读了很多关于minimax算法的文档,以及它在tic tac toe游戏中的实现,但是我真的很难应用它。 下面是我读过的链接,以及一个使用java的示例 考虑到伪代码: 以下是我的问题: 1.我将传递什么到签名节点,它是当前玩家的有效移动吗? 2.什么是+和-无穷大,它们可能的值是什么? 3.minimax与电路板上占用的单元之间的关系是什么。 4.什么是子节点?如何从中提取值? 5.如何确定最大允许深度? 节点是包含已播放单元格信息的网格 ±∞只是一个占位符,您可以使用编程语言中的in
1.我将传递什么到签名节点,它是当前玩家的有效移动吗?
2.什么是+和-无穷大,它们可能的值是什么?
3.minimax与电路板上占用的单元之间的关系是什么。
4.什么是子节点?如何从中提取值?
5.如何确定最大允许深度?
节点
是包含已播放单元格信息的网格±∞
只是一个占位符,您可以使用编程语言中的int.maxValue
或任何其他“大”/“小”值。它稍后用作与节点计算值的比较,0
可能已经是有效值。(如果我们分配+∞
到bestValue
,我们希望min(bestValue,val)
和max(bestValue,val)
用于-∞代码>
首先,不要在一个问题中问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
}