重複局面

重複局面不論是在真人對弈,還是象棋AI中,都要儘量避免。

確認局面重複非常簡單,遍歷zobrist 隊列就可以了。但後續處理比較麻煩,要不同情況具體分析。

一.  在AI中

在搜索算法中,發現局面重複,首先判斷重複的性質:

(1) 爲了進攻而導致重複(具體又可爲了捉將和捉子)

(2) 遭受攻擊,爲了逃避而觸發重複。

(3) 無意義的廢棋。

僅情況(2)被允許,其它情況予以剪裁。

二. 在對弈中

結合象棋規則,首先判斷最近局面是否存在反覆(存在長將或長捉的跡像)。如果局面反覆,判斷最後一步性質(使用第一部分中的算法),如果不屬於(2),禁止着法。

三. 解將還將

AI搜索算法中一般都會採用將軍延伸。僅依靠前面兩部分的方法,解將還將會無休止地進行下去。解決辦法是在將軍延伸前做一個局面是否存在反覆的判斷(第二部分中的方法),如果存在,則不做延伸。

總結:

算法要在判斷的準確性和運算速度上找到平衡。因爲完善的判斷是較爲複雜的,爲了提升速度,不得不犧牲一點準確度。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章