怎樣設計一個演算法可以高效的完成2048遊戲?


一開始我想因為數字是隨機出現的所以沒有這樣的演算法,但後來一想就算是隨機出現數字,仍然可以以概率為參數設計演算法。


Nilsson的《人工智慧》12章敵對搜索策略就可以。可以認為是人類和計算機在對弈,人類可以使得方塊移動併合並,計算機則是在空白處隨機放置一個2或4的塊。當前格局作為根節點,把隨後走法可能造成的格局作為樹的一個子節點,使用深度優先方法,往後看幾步(可能5步差不多?),一種走法走了足夠多步數之後開始嘗試另一種走法,全部試完了之後對每一種走法用一個評價函數進行評分,選擇最有利的一種即可。然後把其它沒有用上的刪除,稱為剪枝。不過這樣子效率很低,還有一種αβ搜索可以及時剪枝,效率會稍微高一點。


技術問題應該直接去技術網站。

stackoverflow 上已經有過熱烈討論,此為鏈接:What is the optimal algorithm for the game, 2048?

附加一個高票兄台在github上提供的AI演示:2048 大致上下圖這樣,演算法重點是:

ensure that the values of the tiles are all either increasing or decreasing along both the left/right and up/down directions.

代碼請參考他給的鏈接

下面附圖是我看了他的說明後手動測試的一個截圖


謝邀!

但是!

啊啊啊我都是手刷的(*"▽"*)?

再說我只是一隻通信工程大一的菜雞呃呃

沒了。。圖太多不想發┐(─__─)┌


計算機不可能產生隨機數這個原則不知道還適用不?搞到他的落子演算法,以後就看你的心情了,分分鐘的事。


推薦閱讀:

Adobe系列在安裝時,出現安裝程序檢測到計算機重新啟動的過程中可能暫停..怎麼辦?
電腦什麼瀏覽器好用?
被哈工大計算機系錄取了,問一下這個專業咋樣?
當年的千年蟲真的有那麼嚴重么?還是消息散布者的陰謀?
為什麼中國能夠製造出世界上最快的超級計算機?

TAG:演算法 | 計算機 | 2048小遊戲 |