我理解minimax和alpha-beta修剪的基础知识。在所有文献中,他们谈论最佳情况的时间复杂度是O(b ^(d / 2)),其中b =分支因子,d =树的深度,基本情况是所有首选节点都是首先扩大。
在我的“最佳案例”的例子中,我有一个4级的二叉树,所以在16个终端节点中,我需要扩展最多7个节点。这与O(b ^(d / 2))有何关系?
我不明白他们是怎么来到O(b ^(d / 2))。
拜托,有人可以向我解释一下吗?吃了很多!
答案 0 :(得分:16)
O(b ^(d / 2))对应于α-β修剪的最佳情况时间复杂度。 Explanation:
具有(平均或常数)分支因子b和搜索 d深度,评估的叶节点位置的最大数量 (当移动顺序为pessimal时)为O(b b ... * b)= O(b ^ d) - 与简单的极小极大搜索相同。如果移动命令搜索 是最优的(意味着总是首先搜索最佳动作) 评估的叶节点位置的数量约为O(b * 1 * b * 1 * ... * b) 奇数深度和O(b * 1 * b * 1 * ... * 1)表示均匀深度,或O(b ^(d / 2))。在里面 后一种情况,搜索的层数是均匀的,有效的 分支因子减少到它的平方根,或等价地, 使用相同的计算量,搜索可以达到两倍。
b * 1 * b * 1 * ...的解释是所有第一个玩家的移动 必须研究找到最好的一个,但对每一个,只有最好的 第二个玩家的举动需要反驳除了第一个(和最好的)之外的所有人 第一个玩家移动 - alpha-beta确保没有其他第二个玩家移动 需要考虑。
简单地说,你每两个级别“跳过”:
O描述了当参数趋向于特定值或无穷大时函数的限制行为,因此在您的情况下,精确地比较O(b ^(d / 2))与b和d的小值并不真正使感。