【问题标题】:About randomness and minmax algorithm with alpha beta pruning关于带有 alpha beta pruning 的随机性和 minmax 算法
【发布时间】:2016-04-30 07:28:34
【问题描述】:

在 alpha beta 算法中随机选择一个节点的子节点会比按顺序选择它们更有可能被截断吗?

这是我的添加标记为 *** 的伪代码。

function alphabeta(node, depth, α, β, maximizingPlayer)
     if depth = 0 or node is a terminal node
         return the heuristic value of node
     arrange childs of node randomly ***
     if maximizingPlayer
         v := -∞
         for each child of node
             v := max(v, alphabeta(child, depth - 1, α, β, FALSE))
             α := max(α, v)
             if β ≤ α
                 break (* β cut-off*)
         return v
     else
         v := ∞
         for each child of node
             v := min(v, alphabeta(child, depth - 1, α, β, TRUE))
             β := min(β, v)
             if β ≤ α
                 break (* α cut-off*)
         return v

我在一个四人连线游戏中运行了一个小样本,它似乎运行得更快了一点,但是当我实际计算有和没有随机性的截止值时,会有更多没有随机性的截止值。这有点奇怪。

是否有可能证明它更快(或更慢)?

【问题讨论】:

    标签: algorithm random artificial-intelligence alpha-beta-pruning minmax


    【解决方案1】:

    在 alpha beta 算法中随机选择一个节点的子节点会比按顺序选择它们更有可能被截断吗?

    这取决于。如果没有明确随机化,孩子的顺序是什么?

    当移动列表已经按分数排序时出现最佳截止(alpha-beta 修剪的最高量) - 即,最好的移动首先出现,然后是次优的移动,依此类推。

    当然,如果我们已经知道什么是最好的移动,我们一开始就不需要搜索它。

    那么,许多游戏引擎所做的是缓存特定位置的先前评估并根据先前的分数对移动表进行排序(假设先前已评估该位置)。这样的缓存分数通常不再准确,因为事件视界现在更远,但使用它们可以作为搜索的良好指南。

    【讨论】:

    • 这真的很奇怪,但随机选择实际上比按分数排序并记住下一次搜索的顺序要快...这是一个四连棋游戏,棋盘大小为 8*8,深度为 6所以它并不小。
    • 在象棋这样的游戏中,在本质上比四连线或黑白棋这样的游戏更不混乱的游戏中,按照先前得分排序移动的策略可能更有效。对于后一种类型的游戏,先前评估的位置的得分往往变化更大。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-09
    相关资源
    最近更新 更多