怎樣設計一個演算法可以高效的完成2048遊戲?
01-22
一開始我想因為數字是隨機出現的所以沒有這樣的演算法,但後來一想就算是隨機出現數字,仍然可以以概率為參數設計演算法。
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系列在安裝時,出現安裝程序檢測到計算機重新啟動的過程中可能暫停..怎麼辦?
※電腦什麼瀏覽器好用?
※被哈工大計算機系錄取了,問一下這個專業咋樣?
※當年的千年蟲真的有那麼嚴重么?還是消息散布者的陰謀?
※為什麼中國能夠製造出世界上最快的超級計算機?