亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

2048游戲的最佳算法是什么?

2048游戲的最佳算法是什么?

忽然笑 2019-11-04 14:15:13
我最近偶然發現了2048游戲。您可以通過在四個方向上任意移動相似的圖塊來合并它們,以制作“更大”的圖塊。每次移動后,新的圖塊都會出現在隨機的空白位置,其值為2或4。當所有方框都已填滿且沒有可合并磁貼的移動,或者您創建的值為時,游戲終止2048。第一,我需要遵循明確定義的策略才能實現目標。因此,我想到了為此編寫程序。我當前的算法:while (!game_over) {    for each possible move:        count_no_of_merges_for_2-tiles and 4-tiles    choose the move with a large number of merges}我做的是在任何時候,我會嘗試合并與價值觀的瓷磚2和4,就是我努力2和4瓷磚,盡可能最小。如果以這種方式嘗試,所有其他磁貼將自動合并,并且該策略看起來不錯。但是,當我實際使用該算法時,在游戲終止之前我只能得到4000點。最高分數AFAIK略高于20,000點,這比我目前的分數還大。是否有比以上更好的算法?
查看完整描述

3 回答

?
慕村9548890

TA貢獻1884條經驗 獲得超4個贊

我是該線程中其他人提到的AI程序的作者。您可以查看AI 行動或閱讀源。


目前,考慮到每次移動大約100毫秒的思考時間,該程序在我的筆記本電腦上的瀏覽器中的javascript中運行時,可以實現約90%的獲勝率,因此雖然效果不理想(但?。?,但它的表現還不錯。


由于該游戲是離散的狀態空間,完美的信息,基于回合的游戲(如國際象棋和西洋跳棋),因此我使用了已被證明可用于這些游戲的相同方法,即帶有alpha-beta修剪的minimax 搜索。由于已經有很多關于該算法的信息,因此,我將僅討論在靜態評估函數中使用的兩種主要啟發式方法,這些啟發式方法將其他人在這里表達的許多直覺形式化。


單調性

這種試探法試圖確保圖塊的值都沿著左/右和上/下方向都增加或減少。僅憑這種啟發式方法就可以捕捉許多其他人提到的直覺,即更高價值的瓷磚應聚集成一角。它通常會阻止越來越孤立的小有價值的瓷磚和將保持板非常有組織,有更小的磚級聯并填充到大磚。


這里有一個完美的單調格的屏幕截圖。我通過運行設置了eval函數的算法來忽略其他啟發式算法,而僅考慮單調性,從而獲得了此結果。


完美單調的2048板


光滑度

僅上述啟發式方法趨向于創建其中相鄰區塊的值減小的結構,但是當然為了合并,相鄰區塊需要具有相同的值。因此,平滑度啟發式方法只是測量相鄰圖塊之間的值差,以盡量減少此計數。


關于Hacker News的評論者從圖論的角度對該想法進行了有趣的形式化。


這是一個完美平滑的網格的屏幕截圖,這要歸功于出色的模仿叉。


完美光滑的2048板


免費瓷磚

最后,免費磁貼太少會受到懲罰,因為當游戲板太狹窄時,選項會很快用完。


就是這樣!在優化這些條件的同時搜索游戲空間會產生非常好的性能。使用這樣的通用方法而不是顯式編碼的移動策略的一個優點是該算法通??梢哉业接腥で页龊跻饬系慕鉀Q方案。如果您觀察它的運行,它通常會做出令人驚訝但有效的舉動,例如突然切換它要面對的墻或角。


編輯:

這是這種方法的強大功能的演示。我取消了圖塊值的上限(因此在達到2048后繼續保持不變),這是八次試驗后的最佳結果。


4096


是的,這是4096和2048的乘積。=)這意味著它在同一塊板上完成了3倍難以捉摸的2048瓦片。


查看完整回答
反對 回復 2019-11-04
  • 3 回答
  • 0 關注
  • 1955 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號