2013-04-26 26 views
2

我已經實現了alpha迭代加深的搜索,我已經閱讀了幾種技術,通過搜索先前深度搜索出現的最佳移動來進一步優化算法。alpha beta搜索迭代加深駁斥表

據我所知,我可以在動態長度列表中存儲上一次深度搜索的主要變化嗎?例如,假設我已搜索到深度爲4的PV:[1,0,2,3]表示在深度1處選擇移動數字1,在深度2處選擇移動數字0,在深度3處選擇移動數字2等...,然後進行深度5搜索,該算法將首先從該先前深度PV搜索節點的孩子。

這就是你所說的反駁表嗎?從這個​​反駁表的

描述:對於每次迭代,所述搜索產生用於從每個根移動到導致在任一正確的極大極小分數或它的值的上限的葉節點的路徑。 d - 1層搜索的路徑可以用作搜索的基礎。通常,搜索先前迭代的路徑或反駁移動作爲當前迭代檢查的初始路徑將證明足以反駁更深一層的移動。

如果不一樣,你能解釋一下反駁表究竟是什麼(因爲對我來說,兩者似乎都是平等的,但我不知道),使用反駁表的優點是什麼,而不是我首先提到的方式?

回答

1

從您的鏈接提供的描述中,我假設反駁表或多或少地將三角PV表的概念擴展到所有根移動。換句話說,不僅最好的根移動,而且所有的根移動都與三角形PV-Table相關聯。

雖然我可能被誤認爲是因爲我以前從未使用過或甚至沒有聽說過這種技術。在今天的世界裏,分配一個足夠大的transposition tables沒什麼問題,與標準轉座表技術killer moveshistory tables(儘管許多引擎不再使用後者)相比,我沒有看到任何反駁表的優點。

我的建議:如果您還沒有實施換位表和殺手動作,我強烈建議從那裏開始改進移動排序。