歡迎光臨本網頁。在這個網頁中,你可玩一個「爆炸彈」遊戲,並從中學到「模算術」(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)。例如根據某些研究,中國象棋也是一種存在「必不敗攻略」的遊戲(有興趣的讀者請參閱陳健行之《象棋有必不敗之法?》),不過由於象棋棋例複雜,變化太多,即使是最強大的電腦也難以算出它的攻略。至於本文介紹的爆炸彈遊戲,由於它規則簡單,所以容易找到它的攻略。