樂學丨圍棋中的數學原理
人機大戰話題近來一直熱度高居不下。前不久柯潔對AlphaGo圍棋大戰,AlphaGo3比0完勝。人工智慧因為這次圍棋大戰也再次被熱議,為什麼是選擇圍棋來與機器PK呢?這圍棋背後的神秘力量或許我們可以一起來感受下。
圍棋一向被譽為是人類大腦智慧的專利,圍棋的走法,幾乎和宇宙中原子數量相同,甚至更多,每回合有250種可能,一盤棋可以長達150個回合,共有1後面再加360個0種下法,這樣的計算量,對計算機來說叫暴力計算,非常殘忍而且很難實現(對數字不敏感的直接看下面的GIF圖更直觀。但正是因為這種深度和複雜,所以幾乎每個中國人都聽到的話就是,圍棋可以鍛煉數學思維和邏輯能力。別急,至少讓我們先看看圍棋中有哪些數學原理。很認真的。
圍棋的思維圖
圍棋,起源於中國,可以說是最早產生的一種棋類。相傳圍棋為堯所造,已經有4000年的歷史。最初圍棋可能與天文有聯繫,後來逐步變為純粹的策略遊戲。圍棋的規則很簡單,可以理解為雙方搶佔棋盤上的空間,對弈雙方誰圍起的空間越大誰就獲得勝利。這與如今的市場經濟體系是有相似之處的。
博弈論是二人在平等的對局中各自利用對方的策略變換自己的對抗策略,從而達到取勝目的理論與方法。其最早期的研究對象就是象棋,橋牌,賭博等。所以也可以用博弈論中的方法來研究圍棋。
在圍棋的一些基本概念,如死活,圍空,實地與勢中都蘊含著數學的原理。我們來細細看過。
有一句棋彥叫「多子圍空方勝扁」,其意思是用多顆棋子圍空的時候,棋型要盡量走成方形,也就是要有立體感,要把棋子的效率最大化,這樣能圍城大空。扁的棋型所佔目數少,子效很低,彈性小。這其實是一個約束條件下的最優化數學問題。
下棋時我們總是希望用盡量少的子圍出盡量大的空。當所用的子數一樣時,圍空越大越好。可以近似的把這個問題抽象為一個條件極值問題:矩形周長C為定值,求矩形面積S的最大值。
即求:
構造拉格朗日函數,
則可以列出方程:
解得:
由於空的最大值在區間內一定存在,所以易得:
就是最大值取得的條件,也就是說矩形為正方形時圍空的效率最高。有經驗的棋手布局時就會注意這一點,將子下得高低錯落有致,這樣易於高效的圍出空來,不至於下出扁平的臃腫的所謂「愚形」。
當然,關於圍空效率的問題,還有很多的棋彥,比如「金角銀邊草肚皮」,「莫壓四路,休爬二路」,「七子沿邊活也輸」等等,這些道理都較易明白,這裡就不再贅述了。
死活棋中的數學原理
圍棋的死活是最基本的一項規則,可能也是唯一的規則了,所以死活的研究對於每一個棋手都是非常重要的。在下圍棋時的計算主要就是死活和目數。對於一塊棋的死活的計算,最一開始我們利用較多的就是窮舉法,將可能的走法試一遍,來判斷棋的死活。當然這種方法最適用於簡單的死活,比如一些初學者做的死活題,因為此時可能性不多,能夠窮舉出來。對於一些複雜的死活問題,化歸的思想是非常有用和自然的,如果能夠試法將複雜問題轉化為自己已經知道結論的簡單問題,就能對自己的分析起到指導意義。比如我們一看到若干步之後能夠構造出經典的活棋形式,就可以斷定這片棋是活棋。
在對殺的過程中往往要判斷自己單個眼內的內氣是否滿足需求。眼中內氣的求法可用數列通項的遞推方法來計算。若大小為n的眼位有an口氣,則大小為n+1的眼有an+1口氣,an+1與an滿足的關係是
通過逐項相消的方法,可求得an的通項公式為
我們可以將該結論進行驗證,
結果均與人們平時所熟悉數據的一致。當然n≥7時的大眼是公活的,討論其氣數在實戰中意義不大,但是,這樣的分析問題的方法卻是值得借鑒的,因為這種遞推的方法有助於我們化繁為簡,加快計算速度。
圍棋盤上格點數為19×19的數學原理
縱橫十九道,迷煞多少人。圍棋的規則現在已經基本定型。圍棋的發展經理了一個漫長的過程。如今棋盤為19×19,也是經歷了歷史的演變。當然,圍棋盤為什麼是現在這個樣子一直還是有爭議的。但我們可以通過實地與外勢的平衡來分析這個問題。
圍棋盤上三路線被稱為地線,在地線上行棋容易將低路上的空地圍住。四路線被稱為勢,雖然不能完全控制住低路,但是對高路的圍空很有幫助。我們可以看一個極端的例子。對於N路棋盤(一般最小的棋盤為九路,即N≥9),若地線全部被黑棋佔領,勢線全部被白棋佔領(如下圖所示),
則雙方的圍空效率之差為
其中,
這一項當N≥9時單調遞減,
這一項也單調遞增,所以整個式子是單調遞增的。將N=18和N=19代入式子中,我們得到
可見N=19時|△λ| 取得最小值,即在十九路棋盤上行棋,雙方的效率基本一致,使得取地與取勢沒有明顯的優劣之分,這大大的拓寬了圍棋的戰術。所以圍棋使用十九路棋盤不是沒有道理的。
圍棋是異常複雜與有趣的。它本身就是雙方博弈的一種典型情況。圍棋的道理與現實生活其實是緊密相關的,比如棄子、脫先、以及取勢取地。這些特殊境況下的決策其實我們都會遇到。當然,很多情況下每個人找到的「最大的一手棋」都是不一樣的,或者更本就沒有這樣的一手棋,但是我們必須要通過仔細的推理,判斷來進行下去。
對於圍棋的研究還是挺有實際意義的。圍棋中無論是大問題還是小問題,我們可以嘗試將這些問題抽象成數學問題,看清它的本質,這樣對我們理解棋理甚至理解這個世界都是有好處的。
推薦閱讀:
※圍棋:一款古老的中國桌游
※圍棋騙著連載:(40)目外高掛的夾
※圍棋與象棋
※跟著職業棋手學棋感(一)
※通過「自我對弈」認清自我