Alpha-beta剪枝

✍ dations ◷ 2025-11-15 10:30:47 #Alpha-beta剪枝

Alpha-beta剪枝是一种搜索算法,用以减少极小化极大算法(Minimax算法)搜索树的节点数。这是一种对抗性搜索算法,主要应用于机器游玩的二人游戏(如井字棋、象棋、围棋)。当算法评估出某策略的后续走法比之前策略的还差时,就会停止计算该策略的后续发展。该算法和极小化极大算法所得结论相同,但剪去了不影响最终决定的分枝。

Allen Newell和Herbert A. Simon在1958年,使用了John McCarthy所谓的“近似”alpha-beta算法,此算法当时“应已重新改造过多次”。Arthur Samuel有一个早期版本,同时Richards、Hart、Levine和/或Edwards在美国分别独立发现了alpha-beta。McCarthy在1956年达特默思会议上提出了相似理念,并在1961年建议给他的一群学生,其中包括MIT的Alan Kotok。Alexander Brudno独立发现了alpha-beta算法,并在1963年发布成果。Donald Knuth和Ronald W. Moore在1975年优化了算法,Judea Pearl在1982年证明了其最优性。

Alpha-beta的优点是减少搜索树的分枝,将搜索时间用在“更有希望”的子树上,继而提升搜索深度。该算法和极小化极大算法一样,都是分支限界类算法。若节点搜索顺序达到最优化或近似最优化(将最佳选择排在各节点首位),则同样时间内搜索深度可达极小化极大算法的两倍多。

在(平均或恒定)分枝因子为,搜索深度为层的情况下,要评估的最大(即招法排序最差时)叶节点数目为(**...*) = ()——即和简单极小化极大搜索一样。若招法排序最优(即始终优先搜索最佳招法),则需要评估的最大叶节点数目按层数奇偶性,分别约为(*1**1*...*)和(*1**1*...*1)(或(/2) = (√))。其中层数为偶数时,搜索因子相当于减少了其平方根,等于能以同深度搜索两次。*1**1*...意义为,对第一名玩家必须搜索全部招法找到最佳招式,但对于它们,只用将第二名玩家的最佳招法截断——alpha-beta确保无需考虑第二名玩家的其他招法。但因节点生成顺序随机,实际需要评估的节点平均约为(3/4)。

一般在alpha-beta中,子树会由先手方优势或后手方优势暂时占据主导。若招式排序错误,这一优势会多次切换,每次让效率下降。随着层数深入,局面数量会呈指数性增长,因此排序早期招式价值很大。尽管改善任意深度的排序,都以能指数性减少总搜索局面,但排序临近根节点深度的全部局面相对经济。在实践中,招法排序常由早期、小型搜索决定,如通过迭代加深。

算法使用两个值alpha和beta,分别代表大分玩家放心的最高分,以及小分玩家放心的最低分。alpha和beta的初始值分别为正负无穷大,即双玩家都以可能的最低分开始游戏。在选择某节点的特定分枝后,可能发生小分玩家放心的最小分小于大分玩家放心的最大分(beta <= alpha)。这种情况下,父节点不应选择这个节点,否则父节点分数会降低,因此该分枝的其他节点没有必要继续探索。

下面为一有限可靠性版本的Alpha-beta剪枝的伪代码:

01 function alphabeta(node, depth, α, β, maximizingPlayer) 02      if depth = 0 or node是终端节点03          return 节点的启发值04      if maximizingPlayer05          v := -∞06          for 每个子节点07              v := max(v, alphabeta(child, depth - 1, α, β, FALSE)) 08              α := max(α, v)09              if β ≤ α10                  break 11          return v12      else13          v := ∞14          for 每个子节点15              v := min(v, alphabeta(child, depth - 1, α, β, TRUE))16              β := min(β, v)17              if β ≤ α18                  break 19          return v
alphabeta(origin, depth, -∞, +∞, TRUE) 

在这个有限可靠性的alpha-beta中,当v超出调用参数α和β构成的集合时(v < α或v > β),alphabeta函数返回值v。而与此相对,强化的有限可靠性alpha-beta限制函数返回在α与β包括范围中的值。

相关

  • 天然产物天然产物(英语:Natural product)是在自然界中由活生物产生的那些通常具有药理学或生物学活性的化学物质,可被用于药学上的药物研发与药物设计;而天然产物化学是运用现代化科学理
  • 碱性电池碱性电池(英文:Alkaline battery)指使用碱性电解液的电池,一般生活中指称碱性电池,指的是碱性锌锰电池。广义上,碱性电池使用的电极材料包括:锌-二氧化锰、锌-氧化汞、镉-氢氧化镍
  • 霍勒斯·威尔士霍勒斯·威尔士(英语:Horace Wells,1815年1月21日-1848年1月24日),美国牙科医生,现代麻醉学的先驱者。威尔士出生于佛蒙特州哈特福德(英语:Hartford, Vermont),在其在波士顿研读牙医技
  • 奥斯卡·扎里斯基奥斯卡·扎里斯基(英文:Oscar Zariski,原名Ascher Zaritsky,1899年4月24日-1986年7月4日)是犹太裔美国籍数学家,出生于沙俄科布林(英文Kobrin,俄文Ко́брын,今属白俄罗斯),任美国
  • 圣皮埃尔和密克隆群岛圣皮埃尔和密克隆(法语:Saint-Pierre-et-Miquelon),位于北大西洋上,其中最主要的岛屿是圣皮埃尔岛和密克隆岛(法语:Miquelon)(Miquelon)等。该群岛的几个主要岛屿中,圣皮埃尔岛面积约26
  • 茂林茂林区(茂林鲁凯语:Teldreka)是中华民国高雄市的一个市辖区,位于高雄市东北半叶东南端,北临桃源区,西邻六龟区、台湾省屏东县高树乡,东邻台湾省台东县延平乡,南接台湾省屏东县三地门
  • 西伯利亚历史西伯利亚的早期历史受到游牧民族的影响。人类最早出现在西伯利亚地区大约是在公元前45000年。蒙古人与西伯利亚森林地区的人们长期保持着联系。1206年,成吉思汗征服了所有蒙
  • 桥接配体桥接配体(或称桥联配体、桥连配体)是连接二个或二个以上原子(通常是金属原子)的配体。配体本身可以是单原子,也可以由多个原子组成。由于所有复杂的有机化合物都可以担任桥接配体
  • 四平市四平市是中华人民共和国吉林省下辖的地级市,位于吉林省西南部,与辽宁省相邻,北靠长春市、南临铁岭市。铁路、公路四通八达,是东北地区重要的交通枢纽,是一座工业城市。四平的历史
  • 消费主义消费主义(Consumerism)指相信持续及增加消费活动有助于经济的意识形态。创造出在生活态度上对商品的可欲及需求(多消费是好事)让资本主义可以提高工资及提高消费。消费主义为发