爆炸彈遊戲


引言

歡迎光臨本網頁。在這個網頁中,你可玩一個「爆炸彈」遊戲,並從中學到「模算術」(Modular Arithmetic) 中的「同餘」(Congruence Modulo)概念。本網頁亦會帶出「博奕論」(Game Theory)的某些概念。

遊戲簡介

遊戲開始時,畫面中會出現s枚炸彈,遊戲者與電腦須輪流引爆這些炸彈,每一回合最多只可引爆m枚炸彈,最 少必須引爆一枚炸彈。當剩下n枚炸彈時,遊戲便告結束,而最早令炸彈數減為n的那一方獲勝。本程式容許遊 戲者更改上述s、m、n等設定值,遊戲者亦可決定由哪一方先玩。為避免出現某些複雜情況,筆者規定n <= m以 及m < s。

現請瀏覽者點按下列連結,玩玩這遊戲,看你能否找出玩這個遊戲的竅門。該程式包含「遊戲說明」,瀏覽者 只需依照說明上的指示便可使用該程式,請選擇適合你電腦的程式。瀏覽者在認真研究玩這遊戲的竅門前 ,請勿過早閱讀以下的遊戲策略。

遊戲策略

由於這遊戲有多種遊戲設定,以下先就本程式的預設(Default)遊戲設定作出討論,即s = 37,m = 3,n = 1, 並由遊戲者先玩。相信遊戲者在玩過本遊戲後都會發現,當炸彈只剩下5枚而你是接著下來引爆炸彈的一方時, 無論你引爆多少枚炸彈,你都終將落敗,因為假如你引爆1枚炸彈,接著電腦必然引爆3枚(留下最後1枚,因而 獲勝);假如你引爆2枚炸彈,則電腦必然引爆2枚;假如你引爆3枚炸彈,則電腦必然引爆1枚。這樣你便處於必 敗之地。反過來說,如果在輪到你玩時,你能令剩下的炸彈數減為5,你便處於必勝之地。本來這個遊戲是以哪 一方最先令炸彈數減為1以定勝負的,可是經過上述討論後,我們可以把這個遊戲的勝敗關鍵向前推,即最先令 炸彈數減為5的那一方勝。

假如我們再細心想下去,那麼我們可以將遊戲的勝敗關鍵再向前推到9這個數,即最先令炸彈數減為9的那一方 勝。原因是假如你能把炸彈減為9時,那麼接著下來無論電腦引爆多少枚炸彈,你都總能把炸彈數減為5。例如 若電腦引爆3枚炸彈,你可引爆1枚...如此類推。

看到這裡,瀏覽者應能想到,這個遊戲的勝敗關鍵其實還可以繼續向前推到13、17、21等等(請瀏覽者自行推理 為何這些數字是勝敗關鍵)。這些數字(1、5、9、13、17、21)有甚麼共同特點?他們全都是4的倍數加1。在模 算術中,我們稱這些數字「在模4下同餘」(註1)。由此可見,玩這個遊戲的竅門就是設法使炸彈數變為與1同餘 的數。可是由於求餘數是一種「決定性」(Deterministic)的計算(即並無隨機成分),所以如果玩遊戲的雙方都 懂得這竅門,那麼在遊戲開始前便已決定了勝負:由於37 = 9 x 4 + 1(即37與1同餘),你無論如何都不可能令 炸彈數減為33(另一個與1同餘的數)。相反,無論你在開始時引爆了多少枚炸彈,電腦都總能令炸彈數減為33, 因此電腦處於必勝之地。

接著讓我們把上述結論推廣至其他遊戲設定值,先看看s的情況。基於與上段相同的理由,當s等於其他與1同餘 的整數(例如41、45等)時,電腦也是處於必勝之地。相反,當s並非與1同餘時,你便處於必勝之地。例如,假 設s = 36。那麼你只要在開始時引爆3枚炸彈,你便可把炸彈數變為一個與1同餘的數(即33)。此後無論電腦如 何玩,你都總能令炸彈數變為一個與1同餘的數,直至取得最後勝利。

其次讓我們看看,假如我們更改n的值,例如把n設定為2時,情況將有何不同?在此情況下,最先令炸彈數減為 2的一方勝。基於與上述討論相類似的理由,在此遊戲設定值下,最先令炸彈數變為一個與2同餘的整數的那一 方必勝(各位可不妨想想當炸彈數是6、10、14等數字時的情況,便會明白箇中原因)。當n等於其他數字時,情 況也類此,即遊戲者的策略是設法令炸彈數變為與n同餘的數。

接著讓我們看看更改m的設定值對遊戲策略的影響。聰明的讀者應能推斷,這個m會影響同餘定義中的「模數」p (見註1),並且p = m + 1。這即是說,當m的值變更時,我們所考慮的同餘關係不再是就模4而言,而是就模(m + 1)而言。而我們的遊戲策略也相應更改為:設法使炸彈數變為在模(m + 1)下與n同餘的數。例如,假設s = 37,m = 4,n = 1。那麼由於37 = 7 x 5 + 2(即37並非在模5下與1同餘),你處於必勝之地。在開始時,你只 需引爆1枚炸彈,把炸彈數減為36(一個在模5下與1同餘的數),那麼無論接著下來電腦怎樣玩,它終必落敗。 (你知道怎樣玩嗎?試試用我的遊戲程式玩玩看。)

最後,我們考慮由誰開始玩對勝負的影響。根據以上所述,讀者應已明白,這個遊戲的勝負完全取決於遊戲的 設定值,因此變更開始玩遊戲者的先後次序只是把勝負方對調。

以上所述可以概括為下列遊戲策略,以及有關勝負的判斷(假設參與遊戲的雙方均懂得此策略):

假設s、m、n如上所述,若s在模(m + 1)下與n同餘,則後玩的一方必勝;反之,若s在模(m + 1)下並不與n 同餘,則先玩的一方必勝。必勝的一方的策略為,設法使炸彈數變為在模(m + 1)下與n同餘的整數。

總結

經過以上討論,相信讀者會感到,這個爆炸彈遊戲根本不能算作一種「遊戲」,因為遊戲未開始便已決定了勝 負。其實,根據現代「博奕論」(亦譯作「對策論」)(註2)的研究,上述這種現象毫不奇怪。事實上,某些遊戲 的確在開始對奕前便已決定勝負,或者準確點說,某些遊戲在理論上存在某方的「必勝攻略」或「必不敗攻略」 ,問題是我們能否找到這種「攻略」(註3)。例如根據某些研究,中國象棋也是一種存在「必不敗攻略」的遊戲 (有興趣的讀者請參閱陳健行之《象 棋有必不敗之法?》),不過由於象棋棋例複雜,變化太多,即使是最強大的電腦也難以算出它的攻略。至 於本文介紹的爆炸彈遊戲,由於它規則簡單,所以容易找到它的攻略。


註1:「同餘」的直觀意思就是具有相同的餘數。如果兩個整數a和b在除以p時所得餘數相同,我們就說a和b「 在模p下同餘」(Congruent Modulo p)。這裡的p稱為「模數」(Modulus)。例如5和9便是在模4下同餘。假如我 們要檢驗某兩個整數a和b是否在模p下同餘,我們其實不必分別求這兩個數除以p的餘數,而只需檢驗a - b是否 可被p整除。

註2:「博奕論」的英文名稱Game Theory照字面直譯本來是「遊戲理論」,這種理論最初本是由研究某些遊戲 而發展出來的。

註3:請注意這裡不是說任何遊戲都存在「必勝攻略」或「必不敗攻略」,只有滿足某些條件的遊戲 才存在這樣的攻略。我們可以想見,帶有高度或然性(即隨機性)的遊戲(例如隨機抽獎)是難以有甚麼攻略的。


返回數學專題
<script type="text/javascript">(function (d, w) {var x = d.getElementsByTagName('SCRIPT')[0];var f = function () {var s = d.createElement('SCRIPT');s.type = 'text/javascript';s.async = true;s.src = "//np.lexity.com/embed/YW/be0aa169de7f441c6473361be62c9ef6?id=ddad453e7753";x.parentNode.insertBefore(s, x);};w.attachEvent ? w.attachEvent('onload',f) :w.addEventListener('load',f,false);}(document, window));</script>