浅谈算法——博弈论
注:下列游戲都建立在雙方都有最優(yōu)策略的情況下,若未加以說明,則每人每次至少取一個石子。
例1:取石子游戲之一
有兩個游戲者:A和B。有n顆石子。
約定:兩人輪流取走石子,每次可取1、2或3顆。A先取,取走最后一顆石子的人獲勝。
問題:A有沒有必勝的策略?
分析:這是小學(xué)必備奧數(shù)題之一,我們可以很容易的知道,當(dāng)n為0,4,8,12……時,A必定會輸,因?yàn)椴徽揂取多少,B只要和A共同取走4即可;當(dāng)n不為0,4,8,12……時,A只需要將n取成4的倍數(shù),這樣就變成了B先取,B一定會輸,所以A一定會贏。
經(jīng)過我們的分析發(fā)現(xiàn),對這個游戲而言,0,4,8,12……這些狀態(tài)是對于先手的必敗狀態(tài),而其他狀態(tài)是對于先手的必勝狀態(tài),因此,我們現(xiàn)在介紹一下有關(guān)博弈的一些名詞和概念
1、平等組合游戲
- 兩人游戲。
- 兩人輪流走步。
- 有一個狀態(tài)集,而且通常是有限的。
- 有一個終止?fàn)顟B(tài),到達(dá)終止?fàn)顟B(tài)后游戲結(jié)束。
- 游戲可以在有限的步數(shù)內(nèi)結(jié)束。
- 規(guī)定好了哪些狀態(tài)轉(zhuǎn)移是合法的。
- 所有規(guī)定對于兩人是一樣的。
因此我們的例1提到的游戲即為一個平等組合游戲,但是我們生活中常見的棋類游戲,如象棋、圍棋等,均不屬于平等組合游戲,因?yàn)殡p方可以移動的棋子不同,不滿足最后一個條件;而我們后續(xù)提到的游戲,以及博弈中的其他游戲,基本屬于平等組合游戲
2、N狀態(tài)(必勝狀態(tài)),P狀態(tài)(必敗狀態(tài))
像例1的分析一樣,0,4,8,12……等狀態(tài)就是對于先手的P狀態(tài)(必敗狀態(tài)),其他的則是對于先手的N狀態(tài)(必勝狀態(tài))。
那么我們定義兩個狀態(tài)之間的轉(zhuǎn)換:
- 所有的終止?fàn)顟B(tài)都為P狀態(tài)
- 對于任意的N狀態(tài),存在至少一條路徑可以轉(zhuǎn)移到P狀態(tài)
- 對于任意的P狀態(tài),只能轉(zhuǎn)移到N狀態(tài)
證明過于簡單,這里不再贅述,我們只需要明白一點(diǎn),每個人都會選擇最策略即可。
當(dāng)然這里所說的都是最后走步的人獲勝的游戲,至于那些走到最后失敗的游戲,我們在最后做了一個簡單的講解(Anti Nim)。
例2:取石子游戲之二
將例1的游戲擴(kuò)展一下,我們定義一個集合S=p1,p2,...,pk(k∈Z?)S=p1,p2,...,pk(k∈Z?)S={p1,p2,...,pk}(k∈Z?)S={p1,p2,...,pk}(k∈Z?)S={p1,p2,...,pk}(k∈Z?) S=\{{p_{1},p_{2},...,p_{k}}\}(k \in Z^*)S=p1,p2,...,pk(k∈Z?)S=p1,p2,...,pk(k∈Z?)S={p1?,p2?,...,pk?}(k∈Z?)a=ak?,b>bk?,那么,取走
總結(jié)
- 上一篇: 多线程java 银行_Java 多线程
- 下一篇: 计算机网络技术期末考试复习总结