標籤:

理論上,象棋的所有可能情況是一個有限值還是一個無限值?

我的直觀感受覺得可能是有限的,但是如果這個結論成立,那麼我假設有兩台能計算出所有可能性的計算機互相對弈,那麼是不是就意味著在確定先後順序後,整盤棋走勢和輸贏就已經確定了?


據計算機專業的人介紹,象棋變化理論上應該是可以窮盡的,比賽也是這種在挑戰對手和挑戰自我的狀態之下的過程。至於是否兩台計算機對弈勝負已定的問題,通過目前棋手和計算機的驗證,先走方的效率價值不足以獲勝,大家更認同後走方可以抗衡的說法。


在網上看到這樣的說法:

一盤國際象棋的變化總數達到10^123(這已經遠遠超過了目前所看到的宇宙中所有的原子總數),而一盤中國象棋的變化數量比這還要多得多,可達10^144以上。不知真假。但是我的直觀感受也是覺得是有限的。但是由於數量級太大,現有的計算水平是完全達不到的。

鑒於此,我覺得可以嘗試粗略的估計一下:

首先要知道每步有多少種選擇:

最開始,每方棋手有5個卒,車馬炮相士各2,將1

卒過河的話,每步有3種可能,不過河有1種,考慮過河的幾率比較低,算0.2吧,那麼(0.2*3+0.8*1)*5=7;

如果橫豎都沒有阻礙,車有9*9*2=162,假設阻礙導致車橫豎只有5格可走,那麼是5*5*2=50

炮類似,50

馬有8*2=16種

士與相均是有3、1兩種可能,1的可能性更大,大致取1.5*4=6;

將取2吧。

這樣的話,每步的可能性為7+50+50+16+6+2=131。

若一盤棋的期望步數是每人各下50步,那麼總的可能性為131^100。

但是隨著棋局的進行,棋子會越來越少,因此每步的可能性會越來越少。因此,開頭說的10^144的總可能性應該是靠譜的。

現在的最高性能超級計算機的計算速度是一萬萬億次每秒,即10^17/s,約3*10^24/year,那麼用這台計算機計算這些總可能性的話,需要10^120年。這是目前宇宙年齡的10^100倍以上。

即使把世界上所有的計算機都用上,也不會把這個數值降低多少。

因此總結如下:

1、可能性是有限的;

2、這個可能性的總量太大,因此至少短時間內不能實現窮舉


所有布局情況是有限值

但是整個棋局包含一個棋盤布局的鏈表,這種情況考慮到無意義走棋可以是無限的(直觀的說就是和局可以導致無限情況)

但是從勝負的角度來說只要考慮有限狀態就可以了


我只是補充一下上面段楠的計算。

首先其中循環局面和對稱局面未能剔除,其次很多顯然不可能的走法(比如第一步走帥五進一,車一進一,兵五進一等都是很明顯不能走的著法),還有一些是有悖棋理的冷僻招法(比如開局走相三進一或者兵九進一),這些都除去的話一個局面一般也就二十多種可能。比如開局第一步,可能的走法有:

兵三進一,炮二平五,炮二平四,馬二進三,相三進五(高手對戰中比較常見的走法)

炮二平三,炮二平六,炮二平七,炮二退一,馬二進一,仕四進五,相三進一,兵九進一(高手幾乎不用的冷僻走法。)

一共只有十三種走法。

後面有些局面選擇也很少,比如紅方走炮二平五,黑方正常的選擇只有炮2平5,炮8平5,馬2進3,馬8進7,勉強算上象3進5和象7進5,只有六種走法,其他走法都是嚴重不和棋理的,根本不用考慮。但如果紅方採用如飛相開局的話,黑方的選擇就會多起來了。

另外一方面是殘局由於子力少,走法就會增多起來,馬有八面威風都能走到,車炮也基本上橫豎兩條線都可以走,走法大大增加,有時可能會有四五十種走法。

但殘局的好處是有很多情況是不用再推演了的,比如走到車兵對士象全,那麼無論黑方怎樣抵抗,只要紅方不出大漏著都是有辦法獲勝的了,推演可以到此截至。又比如單車對士象全的官和局面,只要幾步之內不丟子,也無需再推演,如何守和有固定的走法。另外還有一些象棋理論認為很容易獲勝的:比如殘局時一方多一大子兩兵以上,或者中局多兩大子以上,只要幾步之內不被將死、捉死、抽吃,也都認為是很容易獲勝的局面,這些也可以不必再推演了。

所以平均一下一步應該是按二十種走法算足夠了。

按照以上的簡化總步數也應該能減小一些,四十步就夠了

20^80 大概是 1.2*10^104左右,不過這依然是個很龐大的數字,以可預見的未來的計算能力不可能窮舉。


有限。


如果使用窮舉的辦法,理論上是一個有限值,但是對於人類來講,太大的有限值也相當於無限值。計算機在很早就已經戰勝人類的象棋選手了,靠的並不是無腦的窮舉,而是一種Alpha-beta演算法。這種演算法的本質是一種二分搜索樹(通俗來講就是列出所有可能的步驟),但是會根據一些條件,刪除掉不必要的分支。這樣,使得計算機能在可接受的步驟內得到最優解。由於圍棋的變化太大,Alpha-beta演算法無法很好的使用,這也是為什麼圍棋是人類最後被計算機戰勝的棋類遊戲。而Alpha go 使用的是機器學習的方法。


有的時候數學上「解存在」和「你解得出來」是兩個概念,就好比實係數多項式函數當最高項為奇次時至少有一個實根,但是求根公式你推不出來。

傳統意義上的棋類在規則完善的條件下「所有可能情況」都是有限的,這裡以國際象棋為例,從過程和狀態兩個角度進行分析:

1.過程

每一步每個棋手可走的棋步數是有限的:王不超過8種、後不超過27種……或者按照最極(sheng)端(shi)的方式考慮,步數少於棋子數16*棋盤格數64,這是一個有限值,而國際象棋規定,連續50回合沒有吃子判和,也就是說最多持續不會超過30個50回合(除了王都吃光了),那麼國際象棋的總可能數小於(16*64)^(50*2*30),而這個數是有限大的。由於我們之前所有的數字都是取極端並且做了很大的放大,實際上的值遠遠小於這個數。

2.狀態

下面從另一個角度考慮,一盤國際象棋,如果雙方在「磨棋」,那麼上一個回合和下一個回合局勢重複(重複次數多了會造成三次重複和),而這種重複在實際比賽中是沒有任何意義的。所以我們考慮所有棋子擺在棋盤上共有多少種可能。還是簡單粗暴地算一下:一共有64個格子,每個格子上的棋子有不超過12種可能(白黑雙方的車、馬、象、王、後、兵),所以狀態數小於12^64種,這個數字還是有限大的,事實上這些狀態中甚至包含了64個白王之類的這種極端情況,實際的狀態數還是會遠小於這個數。

同理可證,中國象棋的「所有可能情況」也是有限的。再加上正規比賽中,雙方有時間限制,而走棋是需要時間的,所以總步數一定會受到這個限制。

然而這個數值太過龐大,計算機hold不住,所以不要考慮用暴力窮舉的方式能夠遍歷所有可能。


任何體育運動都是無極限的,不可能出現兩場一樣的比賽,棋類也是一樣。正如世界上不會有兩個一模一樣的東西,可以從哲學意義上來考慮。


推薦閱讀:

象棋中的卧槽馬為什麼叫「卧槽」馬?
象棋為何不能按兵不動?
路邊下象棋的人為什麼常勝?
許銀川和胡榮華巔峰誰厲害?個人傾向許。?
象棋和軍棋,請說明哪個更好玩以及理由?

TAG:計算機 | 象棋 |