有什么有效的策略來圍住神經貓?
“圍住神經貓”雖然是一個小游戲,但細細想來,其實也是一個很有意思、值得探討的數學問題。
【長文,多圖預警,慎入】
先拋出結論:
在原游戲的條件下,由于初始占有點的隨機性,在考慮最壞情況下(如一個點都沒占有),無法確保圍住神經貓。但是,當棋盤擴展到一定程度時(N
下面給出本人對這個問題較為詳盡的分析,個人觀點,僅供參考。
如覺得證明過于復雜,可直接看文末總結的本游戲技巧。
——————
從表面上看,神經貓能走到的格子數是9×9=81格,但這個“棋盤”并不是對稱的,神經貓只需要走4步就能到棋盤的邊緣,而一旦被神經貓逃到棋盤邊緣,游戲就結束了。
神經貓的逃跑策略是貪心算法,也就是說,它總是考慮當下離邊緣最近的路線。實際上,如下圖所示,神經貓4步可以走到的格子被深紅色標出,其中帶五角星的是棋盤的邊緣。
神經貓顯然會盡可能地往帶五角星的格子逃跑,而我們要做的便是在貓到達五角星格子以前,把它攔住。
為了便于討論,我們考慮更具有代表性的問題,如下圖所示:
問題描述:在一個邊長為M(上圖中M=5)正六邊形的棋盤上,要在最壞情況下,依然確保能抓住神經貓,令最小能滿足條件的M為N,求N的值。
解:
本文給出N的上界,即。
引理:
在下圖中,神經貓先行,它無法逃出。
經過窮舉,這個結論是容易證明的,下圖給出一種神經貓企圖逃出卻失敗的例子:數字代表次序,藍色的數字是神經貓的逃跑路線,橙色數字是我封堵的路線,請注意觀察橙2、4、6、12的封堵技巧。顯而易見,神經貓無法逃出。
引理證畢。
下面證明N=8時,無論神經貓用什么辦法,總存在策略將其圍住。
只需證明,初始狀態什么都沒有的時候,依然可以圍住神經貓即可(如下圖所示)。
由于第一步之前,我們并不知道神經貓往哪個方向逃走,因此如果神經貓足夠聰明,它顯然會根據你的堵截方向,向反方向逃跑,因此第一步的阻攔的作用是微乎其微的。故作較壞打算:假設神經貓先行。
由對稱性,不妨設神經貓第一步試圖左上方逃走,于是如下圖所示。
藍1向左上行,橙2攔在了一個很遠的地方,圍棋十訣有云:慎勿輕速。雖然敵人看起來很遙遠,但是還應該小心翼翼地漸漸靠近它,萬萬不可一開始就近身肉搏。
1)神經貓A是個楞頭青,認為只要努力就能沖出重圍,于是始終往左上跑
到橙6,由引理可知,神經貓已經無法從左上方逃走。
于是A企圖轉向,可是,如果它扭頭就走——
至橙12,我方已經占據了包圍藍方的有利地形,顯然神經貓已經無法從坐下方跑出了,如果它想從其它位置出去,則顯然更加不可能了。
如果A選擇慢慢轉向——
看起來似乎要逃出去了,但終究差一口氣啊……
神經貓A,撲街。
2)神經貓B似乎聰明了很多,它會視情況,選擇性地躲著敵人跑
看到橙2的堵截,B選擇了躲避,往又上走,可惜,我方技高一籌,放在了橙4的位置,如下圖所示——
至橙8,殊途同歸,由引理知,神經貓B依然無法逃脫。
神經貓B,撲街。
3)神經貓C是一個謹慎的貓咪,它見到敵人,盡量躲避
如下圖所示,藍5很及時的轉向,可是道高一尺,魔高一丈,橙6看似不著邊際,其實上是張開了一張大網,至橙8,C已經無法逃出了。
神經貓C,撲街。
4)神經貓D是一個膽小的貓咪,它見到敵人,扭頭就走
如下圖所示,藍3、5、7、9、11皆是躲著防線在跑,可是,至橙12,我方已經張開一個六邊形的大網,等著D的到來,D終究要面對被擒的現實。
神經貓D,撲街。
于是,神經貓終究逃不出我的手掌心。
其實細心的你應該已經發現,我只要想辦法盡快占據下圖的紫色圈就可以確保擒住神經貓了。
綜上所述,得證。
——————————
回到原游戲。從上面的分析可以感受到“圍住神經貓”的技巧精髓有如下幾點:
1、慎勿輕速。除非有援兵,否則應該要遠遠地張開一張大網,在己方很弱的情況下,切勿輕敵。因為你的速度不比神經貓快,所以直接近身堵截,你總是慢一步啦。
2、“二間跳”是一個很實用的防御手段,如下圖所示
當然,“二間跳”后的“雙飛燕”也是很重要的,這樣就徹底守住了。如下圖所示
3、由于游戲中神經貓比較笨,它在左上方有通道的情況下會一味地往左上方逃跑,而不會拐彎,所以,在左上防御充分的前提下,還是盡可能在其它位置做好防御,防患于未然嘛。
4、上面已經說了,當N=8的時候,我才能確保捉住神經貓,對于本題來說,相當比N=5略好一些,確實有些情況,因為自己子力太弱,自己根本無法捉住神經貓——這個時候,就放小貓咪一個生路好了,它很可憐的啦。
另外,用X步 擊敗(100-X)%的人 的這個計算方法還是第一次見到 有點逗 ,很能引爆朋友圈!
原文作者:曾加@知乎
- 目前還沒評論,等你發揮!