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

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

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

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

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



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

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

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

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



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

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

[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元服務(wù)抵扣券免費(fèi)領(lǐng)取,直充到 AWS 賬戶用以抵扣服務(wù)消費(fèi),輕松體驗(yàn)6大應(yīng)用場(chǎng)景。
? THE END
轉(zhuǎn)載請(qǐng)聯(lián)系本公眾號(hào)獲得授權(quán)
投稿或?qū)で髨?bào)道:content@jiqizhixin.com
原標(biāo)題:《從小玩到大的超級(jí)瑪麗,計(jì)算復(fù)雜性是怎樣的?》
本文為澎湃號(hào)作者或機(jī)構(gòu)在澎湃新聞上傳并發(fā)布,僅代表該作者或機(jī)構(gòu)觀點(diǎn),不代表澎湃新聞的觀點(diǎn)或立場(chǎng),澎湃新聞僅提供信息發(fā)布平臺(tái)。申請(qǐng)澎湃號(hào)請(qǐng)用電腦訪問http://renzheng.thepaper.cn。





- 澎湃新聞微博
- 澎湃新聞公眾號(hào)
- 澎湃新聞抖音號(hào)
- IP SHANGHAI
- SIXTH TONE
- 報(bào)料熱線: 021-962866
- 報(bào)料郵箱: news@thepaper.cn
滬公網(wǎng)安備31010602000299號(hào)
互聯(lián)網(wǎng)新聞信息服務(wù)許可證:31120170006
增值電信業(yè)務(wù)經(jīng)營(yíng)許可證:滬B2-2017116
? 2014-2024 上海東方報(bào)業(yè)有限公司