博弈 個人 見解

2021-09-06 18:24:50 字數 3753 閱讀 6129

由於周測**,做了好久的博弈題,找了好多關於博弈的相關資料,感覺自己,似乎還是動了那麼一點點。臨睡前,就小小的總結一下,希望以後看到的時候,可以有所感悟吧!!

接下來是正題。

講到博弈, 事實上也就是找規律,可是知道一般的博弈型別能夠高速便捷的解決這個問題。

博弈的型別大致有下面幾種:巴什博弈,威佐夫博奕,尼姆博弈。除此之外還有斐波那契博弈,sg模板等

巴什博弈:

巴什博奕(bash game):

僅僅有一堆n個物品,兩個人輪流從這堆物品中取物,規定每次至少取乙個,最多取m個。最後取光者得勝。

顯然,假設n=m+1,那麼因為一次最多僅僅能取m個,所以,不管先取者拿走多少個,後取者都可以一次拿走剩餘的物品,後者取勝。因此我們發現了怎樣取勝的法則:假設n=(m+1)r+s,(r為隨意自然數,s≤m),那麼先取者要拿走s個物品,假設後取者拿走k(≤m)個,那麼先取者再拿走m+1-k個,結果剩下(m+1)(r-1)個,以後保持這種取法,那麼先取者肯定獲勝。總之,要保持給對手留下(m+1)的倍數,就能最後獲勝。

這個遊戲還能夠有一種變相的玩法:兩個人輪流報數,每次至少報乙個,最多報十個,誰能報到100者勝。

巴什博弈主要內容是:n%(m+1)是否為零。 要是為零的話,就是先手輸,否則,先手贏

威佐夫博奕:

威佐夫博奕(wythoff game):有兩堆各若干個物品,兩個人輪流從某一堆或同一時候從兩堆中取相同多的物品,規定每次至少取乙個,多者不限,最後取光者得勝。

這樣的情況下是頗為複雜的。我們用(ak,bk)(ak ≤ bk ,k=0,1,2,...,n)表示兩堆物品的數量並稱其為局勢,假設甲面對(0,0),那麼甲已經輸了,這樣的局勢我們稱為神秘局勢。前幾個神秘局勢是:(0,0)、(1,2)、(3,5)、(4,7)、(6,10)、(8,13)、(9,15)、(11,18)、(12,20)。

能夠看出,a0=b0=0,ak是未在前面出現過的最小自然數,而 bk= ak + k,神秘局勢有例如以下三條性質:

1。不論什麼自然數都包括在乙個且僅有乙個神秘局勢中。

因為ak是未在前面出現過的最小自然數,所以有ak > ak-1 ,而 bk= ak + k > ak-1 + k-1 = bk-1 >ak-1 。所以性質1。成立。

2。隨意操作都可將神秘局勢變為非神秘局勢。

其實,若僅僅改變神秘局勢(ak,bk)的某乙個分量,那麼還有乙個分量不可能在其它神秘局勢中,所以必定是非神秘局勢。假設使(ak,bk)的兩個分量同一時候降低,則因為其差不變,且不可能是其它神秘局勢的差,因此也是非神秘局勢。

3。採用適當的方法,能夠將非神秘局勢變為神秘局勢。

假設面對的局勢是(a,b),若 b = a,則同一時候從兩堆中取走 a 個物體,就變為了神秘局勢(0,0);假設a = ak ,b > bk,那麼,取走b   - bk個物體,即變為神秘局勢;假設 a = ak ,   b < bk ,則同一時候從兩堆中拿走 ak - ab - ak個物體,變為神秘局勢( ab - ak , ab - ak+ b - ak);假設a > ak ,b= ak + k,則從第一堆中拿走多餘的數量a - ak 就可以;假設a < ak ,b= ak + k,分兩種情況,第一種,a=aj (j < k),從第二堆裡面拿走 b - bj 就可以;另外一種,a=bj (j < k),從第二堆裡面拿走 b - aj 就可以。

從如上性質可知,兩個人假設都採用正確操作,那麼面對非神秘局勢,先拿者必勝;反之,則後拿者取勝。

那麼任給乙個局勢(a,b),如何推斷它是不是神秘局勢呢?我們有例如以下公式:

ak =[k(1+√5)/2],bk= ak + k   (k=0,1,2,...,n 方括號表示取整函式)神秘的是當中出現了**切割數(1+√5)/2 = 1。618...,因此,由ak,bk組成的矩形近似為**矩形,因為2/(1+√5)=(√5-1)/2,能夠先求出j=[a(√5-1)/2],若a=[j(1+√5)/2],那麼a = aj,bj = aj + j,若不等於,那麼a = aj+1,bj+1 = aj+1+ j + 1,若都不是,那麼就不是神秘局勢。然後再依照上述法則進行,一定會遇到神秘

局勢。

威佐夫博奕的思想就是那個公式:推斷等號兩邊是否相等a(a是較小的數)==floor((b-a)*((sqrt(5.0)+1)/2))

要是相等的話就是先手輸,否則先手贏

尼姆博弈:

尼姆博弈基本思想:

兩人從n堆物品中取隨意個,先取完者勝。

即將n堆物品的數量異或,得到的值假設為0,則先手敗,反之先手勝。

假設要求先手在勝的條件下,到神秘局勢的方法數,則推斷異或的值與每一堆原值異或後(結果應該表示該堆沒有參加異或時的異或值)與原值比較大小,

假設小於,則方法數加一。且相應的方法後,該堆的數目應變為異或的值與每一堆原值異或的值。

尼姆博弈的主要內容就是:對每堆的數量進行異或運算

fibonacci』s game(斐波那契博弈)

斐波那契博弈模型,大致上是這種:

有一堆個數為 n 的石子,遊戲兩方輪流取石子,滿足:

1. 先手不能在第一次把全部的石子取完;

2. 之後每次能夠取的石子數介於1到對手剛取的石子數的2倍之間(包括1和對手剛取的石子數的2倍)。

約定取走最後乙個石子的人為贏家,求必敗態。

**)分析:     

n = 2時輸出second;    

n = 3時也是輸出second;

n = 4時,第乙個人想獲勝就必須先拿1個,這時剩餘的石子數為3,此時不管第二個人怎樣取,第乙個人都能贏,輸出first;

n = 5時,first不可能獲勝,由於他取2時,second直接取掉剩下的3個就會獲勝,當他取1時,這樣就變成了n為4的情形,所以輸出的是second;  

n = 6時,first僅僅要去掉1個,就能夠讓局勢變成n為5的情形,所以輸出的是first;     

n = 7時,first取掉2個,局勢變成n為5的情形,故first贏,所以輸出的是first;    

n = 8時,當first取1的時候,局勢變為7的情形,第二個人可贏,first取2的時候,局勢變成n為6得到情形,也是第二個人贏,取3的時候,second直接取掉剩下的5個,所以n = 8時,輸出的是second;   

…………     

從上面的分析能夠看出,n為2、3、5、8時,這些都是輸出second,即必敗點,細緻的人會發現這些滿足斐波那契數的規律,能夠判斷13也是乙個必敗點。     

借助「zeckendorf定理」(齊肯多夫定理):不論什麼正整數能夠表示為若干個不連續的fibonacci數之和。n=12時,僅僅要誰能使石子剩下8且此次取子沒超過3就能獲勝。因此能夠把12看成8+4,把8看成乙個站,等價與對4進行"氣喘操作"。又如13,13=8+5,5本來就是必敗態,得出13也是必敗態。也就是說,僅僅要是斐波那契數,都是必敗點。

所以我們能夠利用斐波那契數的公式:fib[i] = fib[i-1] + fib[i-2],僅僅要n是斐波那契數就輸出no。

經常使用的博弈型別,基本就是這些。以後碰見很多其它的再來補充。

mysql個人見解

mysql基本原理 僅個人理解 mysql屬於c s架構,即客戶端和服務端互動 1.連線 例php mysqli connect 以客戶端發起請求,mysql服務端進行接收並處理,其中客戶端每發起的一次鏈結mysql均起乙個執行緒來維持乙個socket 套接字 此時會有服務端資源的開銷,因此mysq...

BGP 個人見解

bgp是一種用於自治系統之間的動態路由協議,主要用於交換as之間的可達路由資訊,構建as域間的傳播路徑,防止路由環路的產生,並在as級別應用一些路由策略.bgp作為事實上的internet外部路由協議標準,被廣泛應用於isp之間 1,bgp是一種外部閘道器協議,起作用不在於自動發現網路topo,而在...

VXLAN 個人見解

virtual extensible local area network 採用mac in udp的封裝方式,是nvo3 network virtualization over layer 3 中的一種網路虛擬化技術。通過將虛擬機器發出的資料報封裝在udp中,並使用物理網路的ip mac作為out...