我正在爲Android創建一個Connect 4應用程序,現在我正在使用一個極小極大算法,以及葉節點的alpha-beta prunning和啓發式評估函數。我還下令進一步最大限度地修剪過程。不幸的是,採用該策略時,該算法需要7秒的時間,導致我放棄它,轉而使用換位表。遊戲樹換位表(連接4)
現在,我已閱讀有關轉置表的信息,並已瞭解它們的工作原理,但我不確定如何繼續使用代碼中的實際實現。我不是Java專家,所以我需要任何幫助,你可以給我。
在我的遊戲中,我使用了一個int [42]數組作爲董事會職位。我想過使用哈希映射並存儲某種數據結構對象,其中每個對象都將包含棋盤位置(數組)和一個int「分數」變量(實際上這將是給予該位置的分數,評估函數)。但是,這意味着每次我想在桌子上放置一個新的棋盤位置時,我需要執行某種檢查來查看這個位置是否已經存在(??)。如果沒有,只能插入表格中?
我很樂意爲您提供有關此主題的任何技術幫助。如果需要的話,我可以提供一些代碼示例,但這是一個普遍問題,我認爲在這一點上它們確實不是必需的。
在此先感謝。
非常感謝你! ..我現在記得我聽說過Zobrist哈希概念,但從來沒有涉足過它。它會進一步探索,但只是你知道,我在編程方面的知識和經驗很少,會促使我使用更簡單和直接的farward技術。這也是我的搜索和評估功能不理想的原因,可能需要比實際需要更多的時間。但thx再次的信息,我想給你投票,但它不會讓我:) – user2030118
我已經添加了很多代碼示例。這並不難。如果你喜歡它,我認爲你仍然能夠接受答案。 – Zong
謝謝,我正在掃描你的代碼示例,它寫得很好。這個想法和操作對我來說是比較新的,我需要一些時間來閱讀和理解正在發生的事情。如果我看到我理解了這一點,我會爲它付出努力(至少試着在我的代碼中實現它)。再次感謝好的答案,非常感謝:)而且我會除了你的答案,我只是想等一些其他的答覆。 – user2030118