這兩天主要在看關於博弈論的內容,總的來說有的巴什博奕,威左夫博弈,尼姆博弈,斐波那契博弈等。最後還有最經典的組合博弈。可能是我比較笨,關於尼姆博弈及其sg函式還沒完全看明白。就先整理一下看懂的吧。
1,巴什博奕
來自:只有一堆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)的倍數,就能最後獲勝。那麼這個時候只要n%(m+1)!=0,先取者一定獲勝。
這個遊戲還可以有一種變相的玩法:兩個人輪流報數,每次至少報乙個,最多報十個,誰能報到100者勝。
分析此類問題主要放法是:p/n分析:
p點:即必敗點,某玩家位於此點,只要對方無失誤,則必敗;
n點:即必勝點,某玩家位於此點,只要自己無失誤,則必勝。
三個定理:
一、所有終結點都是必敗點p(上遊戲中,輪到誰拿牌,還剩0張牌的時候,此人就輸了,因為無牌可取);
二、所有一步能走到必敗點p的就是n點;
三、通過一步操作只能到n點的就是p點;
這個是比較好理解的,包括m+1倍的設定恰巧保證的勝利。
2,斐波那契博弈
首先,說明下任何乙個正整數都可以被分解為若干斐波那契數和
來自:題意:
一堆石子有n個,兩人輪流取,先取者第1次可以取任意多個,但不能全部取完,以後每次取的石子數不能超過上次取子數的
2倍。取完者勝.先取者負輸出"second win".先取者勝輸出"first win"。
比如,我們要分解83,注意到83被夾在55和89之間,於是把83可以寫成83=55+28;然後再想辦法分解28,28被夾在21和
34之間,於是28=21+7;依此類推 7=5+2,故83=55+21+5+2。
如果 n 是 fibonacci 數,比如 n = 89。89前面的兩個fibonacci 數是34和55。如果先手第一次取的石子不小於34
顆,那麼一定後手贏,因為 89 - 34 = 55 = 34 + 21 < 2*34,注意55是fibonacci數。此時後手只要將剩下的全部
取光即可,此時先手必敗。故只需要考慮先手第一次取得石子數 < 34 即可,於是剩下的石子數 x 介於 55 到 89 之
間,它一定不是乙個 fibonacci 數。於是我們把 x 分解成 fibonacci 數:x = 55 + f[i] + … + f[j],其中
55 > f[i] > … > f[j],如果 f[j] ≤ 先手一開始所取石子數 y 的兩倍,那麼對後手就是面臨 x 局面的先手,所以
根據之前的分析,後手只要先取 f[j] 個即可,以後再按之前的分析就可保證必勝。
下證:f[j] ≤ 2y
反證法:假設f[j]>2y,則 y < f[j]/2 = (f[j-1] + f[j-2])/2 < f[j-1]。而最初的石子數是個斐波那契數,即
n = f[k] = x + y < f[k-1] + f[i] + … + f[j] + f[j-1] ≤ f[k-1]+f[i]+f[i-1] ≤ f[k-1]+f[k-2] ≤
f[k] (注意第乙個不等號是嚴格的),矛盾!f[j] ≤ 2y得證。
像83=55+21+5+2,先手取走2,後手取得數就不可能把5取走,導致先手再取走剩下的5後還保證後手繼續無法取走21,依次耗下去就可以先手必勝。
3威左夫博弈
問題:首先有兩堆石子,博弈雙方每次可以取一堆石子中的任意個,不能不取,或者取兩堆石子中的相同個。先取完者贏。
beatty定理:對於任意滿足1/a+1/b=1, 的正無理數a,b,都有結論:[a],[2a],[3a],[4a]......[b],[2b],[3b],[4b]......都是不同的數,而且覆蓋正整數集。
推薦:我就不搬大佬的部落格了吧,包括定理證明和推導都很詳細,反正就是,綜上所述,取a=(sqrt(5)+1)/2,b=(sqrt(5)+3)/2,那麼([ak],b[k])(k=1,2,3,4......)就是所有的負態。
int main()
return 0;}
就先整理到這吧,明天結束尼姆博弈及其sg函式的部分。然後看部落格尤其是組合博弈。
必須繼續加快速度!!!
ACM訓練日記 7月17日
先無關的吐槽一下 做夢都想不到我掛的第一科居然是離散,偏偏是有把握的科掛的我是真的很懵,如果我真的沒學明白那到所謂了,但我為什麼覺得期末卷子感覺挺簡單的,為什麼就不能重新核對卷子分數?我承認離散學的一般,但是是否真的掛科,我還是抱有乙個巨大的質疑。抱歉不該把無關的心情扯進來,今天還繼續學習了一些快速...
ACM訓練日記 7月22日
感覺這個周一直在做題看題,有些題目確實有些難度,有的時候連看懂題解都會成為一種奢侈,就像牛客多校第二場的題目,g題的那個思維,對字首和與字首價值和的利用真的巧妙,雖然這個題是感覺能出,可那個 的細節處理對我確實是一種挑戰,另外,好不容易看懂了j題,思路大致與我當時樹形dp的定義法一樣,可還是那個狀態...
ACM訓練日記 7月23日
今天做了第一場杭電的多校練習賽,還是有許多欠缺,在1007題上還有許多疑問,官方給的題解確實沒學過阿貝爾變換,迷你改天還要仔細學習一下,但是在直播的時候又講了另一種方法完完全全和我們推得規律一樣,方法也一樣,唯一乙個不同就是它對長度在做了乙個小優化,可疑問的是我在此按照up主講的優化完還是超時,到現...