學習筆記 博弈論初步

2022-05-21 11:36:10 字數 1496 閱讀 2239

​ 想到一些很棒的台詞來著。

「白,我們總是在開始遊戲前就獲勝。」-空《遊戲人生》

「世界如此單純,沒有贏不了的比試,努力的話怎麼都有可能,世界單純明了,勝利、失敗、平局,那是愚蠢的小孩子所想過的事」-利庫《遊戲人生zero》

​ 簡要來說,就是智商爆表的人嘗試在遊戲開始之前就結束這個遊戲。並尋找到其方法(像我這種從五子棋到圍棋,鬥地主到英雄聯盟乙個都玩不好的是不是不該學這個啊),前提是這個遊戲公平。

​ 這種事最初的模型(連我都能會),給你n個石子,每次可以取 k 個(0\(x|n\),則先手必敗,否則先手必勝。

​ 首先在沒有平局的遊戲裡,我們要明白乙個事實,非必勝,則必敗。(見 零.前言),那麼來看看在這個博弈中,我們是如何取勝的。策略只有乙個。

跟著對方取,使得和為x

動動腦筋就知道為什麼可行了哦。

​ 哎呀其實我也不太明白這個東西,亂寫吧。有 n 堆石子,這次可以在任意一堆中隨便取,交替行動,無法行動者判負。建立模型吧,首先假設個數分別為 \(a_1,a_2...a_n\) 如此。那麼想像現在我輸了,那麼擺在我面前的是乙個怎麼樣的死局?答:均為0。這裡使用異或(別問我為什麼用就對了),令\(k=a_1 xor \;a_2\;xor\;...a_n\),顯然此時 k 為 0.

那麼不止這一種情況會使得 k=0 ,則有推論,在乙個 k=0的情況中,你已經輸了。那麼如何證明呢?首先 你的下一步一定會使得 k!=0
假設下一步 \(a_1\)處取走了 x,(a幾都一樣),則 \(k'=(a_1-x)xor\; a_2\;xor\;..a_n\; xor\;a_1\; xor \;a_1\)

\(=(a_1-x)xor\;a_1!=1\)

那麼又考慮到你的對手是一群魔鬼,並早已洞悉了推論,則他們會想方設法使你的上一步無效化,面臨同樣危險的局面,那麼他們又會如何出手呢?

手上有乙個k,從它的二進位制可以看到乙個最高位1,這個1存在的根源必定是某乙個數\(a_i\),此時我們只要讓\(a_i\)變換為\(a_i\;xor\;k\),就達到了目的

那麼可否變換呢?答案是可以。因為消掉了乙個最高位,所以變換之後會更小,符合規則。

​ 它,是乙個工具,是博弈論向前一大步的乙個美妙的工具。首先定義乙個函式 mex(s),為集合 s 中未出現的最小非負整數。然後給出\(sg(x)=mex(sg(y)),x->y\),那麼這麼定義有什麼用呢?

為什麼這麼設計能行我目前還沒有想清楚,不過他是對的。且當操作隨意(>1)時\(sg(x)=x\)

​ 看到上面最後一句話的時候,可能有人會有一些想法。是否尼姆博弈可以看作使用sg函式來進行計算的呢?如此是否能探尋到一些規律性的東西?

​ 那麼sg定理出現了,其表述為:乙個遊戲的sg值為其子遊戲的sg異或和。

如此便能將大遊戲化成小遊戲來解決問題,至於合理性我還沒想好。(將就看看吧)

博弈論初步

這是一道關於博弈的問題,希望以後考試中不會遇見 題目 p1290 歐幾里德的遊戲 下面直接上 includeusing namespace std typedef long long ll int main if m cout stan wins endl else cout ollie wins ...

博弈論學習筆記

eg hdu2149,2156 描述 只有一堆n個石子,每次能取1到m個物品,a先手,問誰能先取完石子 思路 這種問題的關鍵就在於能否取到關鍵點,比如,這裡只能能取到倒數m 2個石子,留下m 1個石子,則後者就必敗。結論 如果初始石子是 m 1 的倍數,則先手必敗,否則先手必勝。eg hdu2177...

博弈論學習筆記

個人實在太懶 所以直接抄啦 點球案例 在一次足球比賽罰點球時,罰球隊員可以選擇l,m,r三種不同射門路徑 門將可以選擇撲向左路或者右路 原則上講他也可以守在右路 lr l4,4 9,9 m6,6 6,6 r9,9 4,4 該錶表示各自的收益,其中,lr對應的9表示當射手射向左路而門將撲向右路時,射手...