- +1
從小玩到大的超級瑪麗,計算復雜性是怎樣的?
機器之心轉(zhuǎn)載
作者:張諸俊
吃蘑菇長大的「超級瑪麗」比你想象的更復雜。

今天我們就來詳細介紹一下關(guān)于這個游戲的計算復雜性的研究。在文中我們將看到如何設置地圖使得超級瑪麗能夠模擬一些計算困難的問題,從而說明該游戲在計算理論的角度下是難解的。
本篇的第 1 節(jié)介紹一個 NP-hard 框架;第 2 節(jié)介紹應用框架證明「超級瑪麗」屬于 NP-hard;第 3 節(jié)介紹一個 PSPACE-hard 框架;第 4 節(jié)介紹「超級瑪麗」屬于 PSPACE-hard 的歸約;第 5 節(jié)說明如何使歸約更完善;第 6 節(jié)進行總結(jié)。
1. NP-hard 框架
我們先來介紹一個用于證明一類 2D 游戲困難性的框架,這個框架來自文獻 [1] 。我們假設在這類 2D 游戲中,玩家操控一個角色在地圖上移動,玩家的目的是使該角色到達地圖上的某個位置。比如 SMB 的目標就是讓瑪麗從出生點到達旗桿,再比如之前介紹過的華容道玩具的目標就是讓特定的滑塊移動到出口,再再比如 STG 游戲就是操縱可以發(fā)射子彈的角色避開敵方彈幕和地形到達關(guān)底。
框架使用的歸約問題是經(jīng)典的 3-SAT 問題(3-conjunctive normal form satisfiability,3 - 合取范式可滿足問題)。該問題指的是給定一個由若干子句的合取構(gòu)成的公式,其中每個子句包含 3 個項,判斷是否存在對變量的賦值使得該公式可滿足。我們希望通過使用 2D 游戲模擬 3-SAT 問題,從而將 3-SAT 歸約到 2D 游戲。
我們用一個例子來說明如何進行這樣的模擬。對于公式
我們可以構(gòu)造如下圖的 2D 游戲框架

和
這兩個子句中的 x 為 T 后整個子句就為 T。接下來無論選擇的是從 variable 部件的左側(cè)出口還是右側(cè)出口離開,角色都將進入到第二個 variable 部件,繼續(xù)對變量 y 的賦值進行模擬。當所有變量的賦值都確定后,角色進入到驗證過程(check in 路徑),角色需要從右側(cè)依次通過所有的 clause 部件才能最終達到最左側(cè)的 finish 部件。而每個 clause 部件只有當之前角色從上方進入并打開至少一次后,才允許角色從右側(cè)進入并通過。
為了實現(xiàn)這個 NP-hard 框架,我們需要在 2D 游戲中實現(xiàn) 5 個部件,分別是 start、finish、variable、crossover、clause,其中 crossover 部件用于處理框架中路徑的交叉。容易驗證,如果某個 2D 游戲能夠?qū)崿F(xiàn)這些部件,那么就能用這個游戲模擬 3-SAT 的任意實例,也就是說 3-SAT 可以歸約到這個 2D 游戲,從而就說明這個游戲就屬于 NP-hard 了。
不過,有時候在游戲中直接構(gòu)造 variable 和 clause 部件可能會比較復雜,所以我們可以對這個框架進行一些修改,使得部件更加原子化一點。修改之后的框架含有 start、finish、turn、switch、merge、one-way、crossover、door 這些部件。start 和 finish 部件的含義與修改之前是一樣的;turn 部件用于路徑的轉(zhuǎn)向;switch 和 merge 部件其實是同樣的,通常是一個三叉路口;one-way 部件保證游戲角色只能向一個方向移動,功能類似單行道;door 部件包含兩條互不連通的路徑,當一條路徑被角色通過后(開門),角色才能通過另一條路徑。
對于公式
,對應的修改后的框架如下。

2. 超級瑪麗屬于 NP-hard
我們使用上一節(jié)的框架來說明「超級瑪麗」屬于 NP-hard,為此我們需要在游戲中實現(xiàn) start、finish、variable、crossover、clause 這些部件,我們逐一進行說明。

finish 部件:需要以大瑪麗的狀態(tài)從左下方進入部件,撞掉一個磚塊后才能到達旗桿;如果以小瑪麗的狀態(tài)進入則不能通關(guān)。



現(xiàn)在所有的部件都實現(xiàn)了,而且歸約顯然可以在多項式時間內(nèi)完成,所以我們就有以下定理
定理 1:「超級瑪麗」屬于 NP-hard。
3. PSPACE-hard 框架
接著,我們介紹一個用于證明 2D 游戲?qū)儆?PSPACE-hard 的框架,這個框架來自文獻 [1] 和 [3]。它使用的歸約問題是 TQBF 問題(True Quantifified Boolean Formula),指的是問某個含有 「存在」 和「任意」符號的邏輯公式是否可滿足,比如問公式
的真值是否是 T。
這里我們對原始論文中的框架作了一些修改,希望能夠幫助理解。和之前 NP-hard 框架一樣,我們需要定義一些部件。NP-hard 框架中討論的部件我們就不再重復定義了,這里我們主要定義兩個部件,open-close door 和 alternation 部件。

這個 open-close door 相當于是一個狀態(tài)存儲器,門的開閉相當于 0 和 1,每一個 open-close door 部件保存了 1bit 的信息。這也是為什么加上這個部件后,框架的復雜性可以到達 PSPACE-hard。
接著我們介紹 alternation 部件,它其實是一個輔助部件,用于簡化框架的描述。我們可以用其他部件的組合來實現(xiàn) alternation 部件,不必真的在 2D 游戲中實現(xiàn)它。

現(xiàn)在我們就可以用例子來說明如何構(gòu)造 PSPACE-hard 框架,對于公式
2D 游戲的框架如下圖

容易驗證,這個框架模擬了 TQBF 問題。因此,如果 2D 游戲中能實現(xiàn) start、finish、turn、switch、merge、one-way、crossover、open-close door 這些部件,那么這個 2D 游戲就屬于 PSPACE-hard。
另外有一點需要提一下,NP-hard 框架中的部件的每條路徑只會被角色通過一次,而 PSPACE-hard 框架中的路徑就可能會被通過很多次了,這在構(gòu)造部件時是需要注意的。
4. 超級瑪麗屬于 PSPACE-complete
為了證明「超級瑪麗」屬于 PSPACE-hard,我們需要在游戲中實現(xiàn) start、finish、turn、switch、merge、one-way、crossover、open-close door 部件,其中很多部件是非常簡單的,就不提了,這里就介紹一下 crossover 和 open-close door。
注意,這里與 NP-hard 證明中不同的是,瑪麗總是處于小瑪麗狀態(tài)的。



5. 完善歸約
在給出最后的定理前,歸約中的兩個小 bug 可能需要再討論一下。
一個 bug 是 open-close door 部件中央的火球。在「超級瑪麗」原始游戲中,似乎沒有像這樣將火墻(球)放置在空格中的例子。不過這個問題比較好解決,只要把中央的火球替換成下面這樣的一大排火墻就行了。這樣一來,刺猬的移動不受影響,但是瑪麗無法通過這些火墻。

處理掉這兩個小 bug 后,我們終于能放心地得到下面的定理了
定理 2:「超級瑪麗」屬于 PSPACE-complete。
6. 總結(jié)
我們介紹了兩個用于證明 2D 游戲計算復雜性的框架,并詳細解釋了如何用這兩個框架討論「超級瑪麗」的計算復雜性。「超級瑪麗」最終被證明是屬于 PSPACE-complete。事實上,文獻 [2] 還討論了一些含有其他元素(比如使用管道移動、獲得金幣獎勵生命)的「超級瑪麗」游戲的復雜性。
如果要評選最有趣的關(guān)于電子游戲計算復雜性的論文,我相信「超級瑪麗」這個肯定能上榜。最后附一下論文的截圖

[1] Greg Aloupis, Erik D Demaine, Alan Guo, and Giovanni Viglietta. Classic Nintendo games are (computationally) hard. Theoretical Computer Science, 586:135–160, 2015. arXiv 鏈接
[2] Erik D. Demaine , Giovanni Viglietta, and Aaron Williams. Super Mario Bros. Is Harder/Easier than We Thought. 8th International Conference on Fun with Algorithms (FUN 2016).
[3] Giovanni Viglietta. Gaming is a hard job, but someone has to do it! Theory of Computing Systems, 54(4):595–621, 2014. arXiv 鏈接
數(shù)據(jù)工程師專屬福利!1000元服務抵扣券免費領(lǐng)取,直充到 AWS 賬戶用以抵扣服務消費,輕松體驗6大應用場景。
? THE END
轉(zhuǎn)載請聯(lián)系本公眾號獲得授權(quán)
投稿或?qū)で髨蟮溃篶ontent@jiqizhixin.com
原標題:《從小玩到大的超級瑪麗,計算復雜性是怎樣的?》
本文為澎湃號作者或機構(gòu)在澎湃新聞上傳并發(fā)布,僅代表該作者或機構(gòu)觀點,不代表澎湃新聞的觀點或立場,澎湃新聞僅提供信息發(fā)布平臺。申請澎湃號請用電腦訪問http://renzheng.thepaper.cn。





- 報料熱線: 021-962866
- 報料郵箱: news@thepaper.cn
互聯(lián)網(wǎng)新聞信息服務許可證:31120170006
增值電信業(yè)務經(jīng)營許可證:滬B2-2017116
? 2014-2025 上海東方報業(yè)有限公司




