Artificial intelligence Min-Max树-当Min可以在两个步骤中获胜时

Artificial intelligence Min-Max树-当Min可以在两个步骤中获胜时,artificial-intelligence,minmax,Artificial Intelligence,Minmax,所以,我一直在玩minmax trees,在一个双人棋盘游戏中创建一个简单的计算机播放器。我理解这个算法的基本原理,但有一个案例让我迷茫了。。。当MIN可以分两步获胜时会发生什么 例如,假设一个connect4/tic-tac-toe类型的游戏,其中两个玩家中只有一个可以拥有一个正方形。我如何让MAX占据一个正方形仅仅是为了防止MIN获得正方形 让我们尝试一个简化的示例(以漂亮的ASCII艺术形式显示),其中选项为左和右。假设树太大,无法一直遍历到终端状态,那么中间值是基于启发式函数计算的(下面

所以,我一直在玩minmax trees,在一个双人棋盘游戏中创建一个简单的计算机播放器。我理解这个算法的基本原理,但有一个案例让我迷茫了。。。当MIN可以分两步获胜时会发生什么

例如,假设一个connect4/tic-tac-toe类型的游戏,其中两个玩家中只有一个可以拥有一个正方形。我如何让MAX占据一个正方形仅仅是为了防止MIN获得正方形

让我们尝试一个简化的示例(以漂亮的ASCII艺术形式显示),其中选项为左和右。假设树太大,无法一直遍历到终端状态,那么中间值是基于启发式函数计算的(下面用*标记)-INF是MIN获胜的终端状态

                MAX (a)             
                /   \
               A     B
              /       \
           MIN (b)    MIN (c)     
           /  \       /  \
          A    B     A    B
         /     |     |     \
      -INF    *5    *22    *20
MIN将选择状态(b)中的动作A,得分为-INF
MIN将选择状态(c)中的动作B,得分为+20
MAX将选择状态(a)中的动作B,得分为+20

当然,问题是如果MAX选择B,那么MIN将执行动作A(因为该方块仍然可用),因此MIN将获胜。我需要让MAX认识到在状态(A)中拾取动作A的价值,以防止MIN在下一步中获取-INF

我会对代码进行一系列测试,以检查MIN是否能够获胜,但在我看来,算法应该考虑到这一点。我想我在确定关于MAX的值时遗漏了一个部分,这是造成这种情况的原因


(编辑以澄清)

如果您认为问题在于启发式功能。正如你所说,如果MAX在状态(a)中选择了B

MIN将执行动作A(因为该方块仍然可用),因此MIN将获胜


但是在树上,你用*22 not-Inf来标记它,因为它应该是这样的(MIN wins)。

极大极小树中的每个节点都是一个完整的游戏状态。当一个玩家选择一个动作时,游戏将移动到该状态,限制两个玩家的动作(无法从另一分支选择另一个动作)。因此,在您的示例中,如果在状态(a)中,玩家Max选择动作B,则游戏现在处于状态C。此时,最小玩家只有两个选择a(22)和B(20)。树的深度无关紧要;最大和最小玩家总是从游戏的当前状态中选择他们最好的动作

对于tic tac toe游戏,每个州都需要是一个完整的棋盘(当然是可行的)。例如,第一层是X可以放置其标记的每个可能位置。然后,这些状态的每个子级都将是O可以放置的每个可能的位置,给定父状态(其中X放置),等等


当您无法表示整个博弈树(例如,国际象棋)时,启发式很有帮助,但不会改变极小极大树的使用方式。

有一件事我不明白:如果MAX在状态(A)中选择了A,那么MIN是否可以在状态(b)中选择A(正如您所说,一个beeing A位置,它不再可用)。