演算法的對抗性
① 濡備綍鐞嗚В璁$畻妯″紡鐨勪笉瀹氭у規姉鍔涚殑褰卞搷
璁$畻妯″瀷鏈韜鐨勪笉紜瀹氭э紝瀹為檯搴旂敤涓鐨勪笉紜瀹氭с
1銆佺敱浜庤$畻鏈虹▼搴忕殑綆楁硶涓瀛樺湪鐫涓嶇『瀹氭ф垚鍒嗭紝渚嬪傜┓涓懼拰鎼滅儲榪囩▼銆佽娉曞垎鏋愮▼搴忎腑鐨勫氱嶅彲鑳芥х瓑錛岃繖浜涗笉紜瀹氭ф垚鍒嗕嬌寰楄$畻緇撴灉鍏鋒湁澶氱嶅彲鑳斤紝鑰屽苟闈炲敮涓紜瀹氱殑緇撴灉銆
2銆佸湪宸ョ▼緇撴瀯欏圭洰涓錛岀敱浜庡獎鍝嶅彲闈犳х殑鍚勭嶅洜緔犲瓨鍦ㄧ潃涓嶅畾鎬э紝渚嬪傝嵎杞姐佹潗鏂欑瓑鐨勪笉紜瀹氭э紝浠ュ強緇撴瀯鏈韜鐨勪笉紜瀹氭х瓑錛岄兘浼氬硅$畻妯″紡浜х敓褰卞搷銆
② beta剪枝是相對於什麼節點而言的
beta剪枝是相對於極大極小節點而言。
Alpha-beta剪枝是一種搜索演算法,用以減少極小化極大演算法(Minimax演算法)搜索樹的節點數。這是一種對抗性搜索演算法,主要應用於機器遊玩的二人游戲(如井字棋、象棋、圍棋)。
當演算法評估出某策略的後續走法比之前策略的還差時,就會停止計算該策略的後續發展。該演算法和極小化極大演算法所得結論相同,但剪去了不影響最終決定的分枝。
注意:
Alpha-beta的優點是減少搜索樹的分枝,將搜索時間用在「更有希望」的子樹上,繼而提升搜索深度。該演算法和極小化極大演算法一樣,都是分支限界類演算法。若節點搜索順序達到最佳優化或近似最佳優化(將最佳選擇排在各節點首位),則同樣時間內搜索深度可達極小化極大演算法的兩倍多。
在(平均或恆定)分枝因子為b,搜索深度為d層的情況下,要評估的最大(即招法排序最差時)葉節點數目為O(b*b*...*b) =O(b)——即和簡單極小化極大搜索一樣。若招法排序最優(即始終優先搜索最佳招法),則需要評估的最大葉節點數目按層數奇偶性,分別約為O(b*1*b*1*...*b)和O(b*1*b*1*...*1)(或O(b) =O(√b))。
其中層數為偶數時,搜索因子相當於減少了其平方根,等於能以同深度搜索兩次。b*1*b*1*...意義為,對第一名玩家必須搜索全部招法找到最佳招式,但對於它們,只用將第二名玩家的最佳招法截斷——alpha-beta確保無需考慮第二名玩家的其他招法。但因節點生成順序隨機,實際需要評估的節點平均約為O(b)。