我目前使用移位表進行移動排序。使用迭代加深搜索,我將前一次迭代的極小極大值存儲爲下一次迭代的次序移動。這很好,很好。關於移位表的困惑(國際象棋程序設計)
這裏是我的困惑:
如果我發現我的換位表中的某個位置,然後我用移動訂購先前計算的得分(從迭代深化以前的迭代)。然而,如果這個位置的分數被更新(在返回minimax之後),並且該位置在另一個子樹中被重新找到(迭代加深的相同迭代) - 我不想只用它來移動排序...我應該能夠返回該值,因爲現在已經計算了該迭代的值並且是絕對的。
我的問題是:是不是標準有兩個換位表?一個用於前一次迭代,另一個用於迭代加深的當前迭代。所以我會首先檢查當前迭代的表格,看看最小值是否已經計算好,然後簡單地返回這個值。如果它不在此表中,我將使用該表作爲前一次迭代,以進行移動排序。如果兩者都不是,那麼這是我在這次搜索中從未見過的新職位。
是這種思路正確的,或者是有一個更有效的方法?
這個問題將是過於寬泛/意見。我會說這是值得嘗試使用兩個。如果它幫助你在更短的時間內獲得更多的成就,那麼它就是肉汁。如果它沒有,然後拋它。曾經是國際象棋程序員的新聞組。也許試着追蹤下來並在那裏詢問。這只是不適合這類問題的地方。 –
感謝您的快速回復。 – SethCS