我正在一個Gomoku遊戲,我需要一個高效的數據結構來存儲板狀態, 我想過把它存儲在一個二維數組中,但我相信有更多高效的方式。 謝謝Gomoku董事會代表
0
A
回答
0
在時間效率方面,因爲我相信你會主要做索引查找,所以一個數組幾乎是最好的選擇 - 它支持持續時間的這種查找,具有低常數因子。
在空間效率方面:
每個正方形可以是空的,或由播放器填充。所以最多有3種可能性。爲了獲得最大的空間利用效率,我們可以將我們的整個電路板存儲爲3進製表示形式,但是,由於計算機工作在二進制模式,因此我們需要處理整個電路板以確定給定平方的值(因此只需索引查找就可以了需要時間與董事會的大小成正比 - 如果時間真的不是一個問題,你可以考慮這一點)。相反,我建議使用每平方2位,這將允許我們指出4種可能性中的一種(第4種未被使用)。
許多語言都有某種bitset的實現,允許你使用一系列位,這對於上述是完美的。
你也只想要一個位集(而不是2D),因爲在處理二維結構時通常會涉及一些內存開銷。從2D到1D的轉換很簡單 - 我們可以用x*height + y
或y*width + x
將2D索引轉換爲1D。儘管我會推薦首先確定你需要執行這種優化 - 我相信Gomoku主板通常很小,所以即使是笨重的表示也能完美工作(儘管一些AI技術可以製作很多副本,所以,如果你這樣做,最小的表示將是有意義的)。
相關問題
- 1. Pinterest董事會名單
- 2. 董事名單
- 3. 董事會未做出一塊移動
- 4. 評論董事會刪除評論
- 5. 董事會在C掃雷艇
- 6. 的Mips - 印刷遊戲的董事會
- 7. mocha,node.js,ReferenceError:董事會沒有定義
- 8. 從看板董事會過濾史詩
- 9. Facebook FBML FB:董事會的麻煩
- 10. Gomoku中的Minimax代表性好嗎?
- 11. Gomoku啓發式
- 12. Jquery Flot條形圖不適合董事會
- 13. 將項目和董事會連接到Jira API
- 14. 如何從董事會獲得有效的鄰居?
- 15. 查詢董事會的挑戰,需要一些指點
- 16. 如何使用數組索引中魯董事會
- 17. Pinterest API:是否有可能獲得祕密董事會?
- 18. Trello API - 使用ID獲取組織的董事會
- 19. 多個項目的TFS董事會合並
- 20. 團結 - 參數超出範圍建立董事會
- 21. 如何禁用「聯繫董事會管理員」?
- 22. TFS 2012中積壓和董事會頁面
- 23. n皇后,檢查有效的董事會
- 24. 董事會是否提出封裝的底層架構依賴?
- 25. 如何打開一個新的董事會使用Trello的API
- 26. 如何找到您的Pinterest董事會ID
- 27. phpbb - 如何限制訪問董事會索引
- 28. Gomoku datas representation in C
- 29. 如何從Gomoku開始?
- 30. 執行董事會的備份和對文件進行某些操作
爲什麼你會認爲有更高效的數據結構?您需要支持哪些操作在2D數組中效率低下?我對Gomoku並不是很熟悉,但是您似乎主要做索引查找,對此,選擇的數據結構是一個數組。 – Dukeling
我正在尋找更好的內存效率 – YonBruchim