博弈論學習筆記

2022-05-21 18:48:10 字數 4354 閱讀 9377

好久以前不記得在那本初賽資料上看到第一章就是博弈論,看了一頁紙,(那時候還不知道有多難,就只是感性地用數學去理解),感覺不難,就沒搞了。

考了好幾次博弈論的題,發現毛都不會,又老聽旁邊 \(mital\) 和 \(skounputer\) 講什麼 \(sg\) 函式,心態**,於是還是決定自己學一下。

蒟蒻決定先把幾個經典的例子學會了,再去考慮有沒有什麼可以合併總結的吧。

參考:

(當年我看的就是這個,賊簡單,所以就沒往後學了qaq)

模型:給定一堆 \(n\) 個石頭,兩個人博弈,依次取 \([~1,m~]\) 個石頭,若不能取了,則當前操作者輸。問是否必勝?

\(\quad(1)\)如果當前有 \(1\) ~ \(m\) 個石子,那麼顯然先手一定能一次性全部取完,先手必勝。

\(\quad\)於是我們考慮什麼時候起先手不一定必贏呢?

\(\quad(2)\)如果當前正好有 \(m+1\) 個石子,因為先手至少取乙個但又不能完全取完,所以會留下 \(1\) ~ \(m\) 個石子給後手處理,後手顯然是可以一次性取完的,所以先手必敗。

\(\quad(3)\)如果我們再多幾個石子 \((~\le m~)\) ,那麼顯然先手可以把石子數取到 \(m+1\) 的狀態,即狀態 \(2\) ,由於此時的先手,即整場的後手在狀態 \(2\) 下必敗,所以先手必勝。

\(\quad\)發現了嗎?只要 \(n\) 不為 \(m+1\) 的倍數,那麼每次先手只要把石子數取到 \(m+1\) 的倍數,就能使下乙個操作者即後手必敗,即自己必勝。

\(\quad\)這裡,我們把 \(m+1\) 稱為必敗態。那麼我們可以發現,對於乙個當前狀態,如果他已經是必敗態了,那麼當前操作者必輸;如果下一步可以使狀態轉移到必敗態,那麼下乙個操作者必敗,則當前操作者必勝。

\(\quad\)要注意的是,無論是必敗態還是必勝態,他都僅僅是乙個狀態,表示當前操作者勝負的狀態,而與操作者是誰無關。

\(\quad\)很顯然我們又可以發現,對於每乙個石子個數即每乙個狀態,我們可以唯一的知道他是必勝態還是必敗態,即他要麼是必敗態要麼是必勝態,不會有不一定這一種狀態。那麼我們應該怎麼得到它是什麼狀態呢?

\(\quad\)這裡我們可以使用一棵樹來表示對於當前的 \(n\) 的所有的操作。

\(\quad\)這是 \(n=3,m=2\) 的情況下的操作樹。

\(\quad\)顯然,我們發現有許多的狀態使重複的,於是我們可以把樹精簡為一張有向無環圖。如下:

\(\quad\)我們從 \(0\) 開始向上遞迴。

\(\quad\)因為 \(0\) 是必敗態(先手已經沒有可取的了,直接輸),所以能夠轉換到他的狀態 \(1,2\) 是必勝態(因為 \(1,2\) 的下一步可以直接轉到必敗態 \(0\) ,所以下乙個操作者必敗,即當前操作者必勝),而 \(3\) 也是必勝態,(他能轉換到必敗態 \(0\) ,因為所有操作者都非常聰明,所以先手一定會選擇這乙個方案,所以當前操作者必勝)。

\(\quad\)由上,我們又可以發現,如果乙個狀態可以轉移到必敗態,那麼他一定是必勝態,無論他還可不可以轉移到別的必勝態;如果乙個狀態所能轉移到的狀態全都是必勝態,即沒有必敗態,那麼他一定是必敗態。

綜上,我們得到了只有乙個操作空間(即只有一堆石頭)時的做法。但是有的時候我們有很多個操作空間(即有很多堆石子),屆時我們該怎麼辦呢?

模型:有n堆石子,可以從任意一堆中拿若干個石子(不能不拿),沒法拿的人失敗。問誰會勝利?

\(\quad\)我們按照套路,從簡單的情況入手。

\(\quad\)當只有一堆石子的時候,先手可以全部拿走,先手必勝,為必勝態。。

\(\quad\)當有兩堆石子且石子個數相同的時候,先手不論拿多少,後手都可以從另一堆中拿同樣多的石子,那麼無論如何第一堆的最後乙個是先手拿的,則下一狀態為後手操作下的必勝態,先手必敗,為必敗態;否則(兩堆石子數不同),那麼先手可以把石子數取到兩堆相同,下一狀態則為後手操作下的必敗態(兩堆石子數相同),先手必勝。

\(\quad\)當有三堆的時候呢?

\(\quad\)當有n堆的時候呢?

\(\quad\)這樣玩下去確實是很繁瑣,不過前輩們總結出了一條非常厲害的規律!

當 \(n\) 堆石子的個數的異或和等於 \(0\) 的時候,先手必敗,否則先手必勝。

為什麼呢?

證明如下:

設每堆石頭個數分別為 \(a_1,a_2...a_n\) ,異或符號為 \(\oplus\) 。

如果 \(a_1 \oplus a_2 \oplus ... \oplus a_n=0\) ,那麼無論先手怎麼取,後手只要取掉一部分石頭來維持異或和為 \(0\) 。最後只剩乙個堆有石頭的時候,異或和不為零為這一堆的石子個數,那麼此時就是後手的回合,他可以一波取完,所以異或和為 \(0\) 的狀態為當前操作者的必敗態。

我們設石頭堆數量異或和為 \(s(~s!=0~)\) ,那麼 \(a_1 \oplus a_2 \oplus ... \oplus a_n=s\) 。

設 \(s\) 的二進位制最高位為第 \(k\) 位,那麼一定存在至少乙個 \(a_i\) 的第 \(k\) 位為 \(1\) ,否則異或和的最高為不可能為 \(1\) 。

所以我們把等式左右同時異或上 \(s\) ,則等式左邊為 \(0\) ,所以當前狀態為當前操作者即後手的必敗態;

而這個異或的操作,由於 \(a_i\) 和 \(s\) 的最高位都是 \(1\) ,那麼異或後最高位結果就是 \(0\) ,顯然是比原數要小,所以我們可以視為第 \(i\) 個石頭堆被取走了一些石頭使他變成了 \(a_i \oplus s\) 個石頭。

綜上,如果所有石頭堆的異或和為 \(0\) ,那麼為先手的必敗態;否則為先手的必勝態。

模型:n堆石子,每次從不超過k堆中取任意多個石子,最後不能取的人失敗。

\(這個很重要!!!\)

定義: \(sg(~x~)=mex(~v1,v2,...vm~)\)

其中 \(v\) 表示當前 \(x\) 可以轉移到的狀態的 \(sg\) 值, \(mex\) 表示在這個集合中沒出現的最小自然數。

其中,如果 \(sg(~x~)==0\) ,表示他可以轉移到必敗態,即他的下乙個狀態可以是必敗態,則狀態 \(x\) 為必勝態。否則反之。

內容:對於乙個問題,如果存在很多個操作空間,其 \(sg\) 值分別為 \(sg_1,sg_2...sg_n\) 。

如果 \(sg_1 \oplus sg_2 \oplus ... \oplus sg_n==0\) ,則先手必輸。

你一定會驚呼:這不就是 \(nim\) 遊戲嗎?

重看 \(num\) 遊戲,你會發現其中每堆石子的 \(sg\) 值都恰好為這堆石子的數量,且每堆石子之間都是相互獨立的。

所以\(nim\)遊戲可以當作對 \(sg\) 定理的乙個很好的證明。

看到這裡,有些讀者可能要問了:我們為什麼要用 \(mex\) 來定義 \(sg\) 函式呢?對於 \(nim\) 遊戲來說 \(sg\) 的值就是石子個數,那麼其他的博弈問題呢? \(sg\) 函式還有用嗎?為什麼呢?

首先解決第乙個問題:為什麼要用 \(mex\) 來定義 \(sg\) 函式呢?

由定義我們可知,只要有任意一種操作能使下一步為下一步操作者的必敗態,那麼這個狀態即為當前操作者的必勝態,由於必敗態為 \(0\) ,所以我們取 \(mex\) 的時候只要能夠通往 \(0\)

\(sg\)就一定是 \(0\)。

這裡給出的 \(sg\) 的本質是sg的本質應該是將n維nim遊戲對映到1維nim遊戲

講的很玄乎,其實意思就是說把多個操作空間的博弈問題轉化為乙個。

再通俗的解釋一下,就是說我們可以發現 \(sg\) 函式把每個操作空間轉化為了乙個一維的值,於是問題轉化為了 \(n\) 個 \(sg\) 值得相關問題,這就是乙個一維的問題了,然後異或起來就得出了最終結果。

綜上,對於單個操作空間的博弈遊戲,我們有三種處理方式:模擬找規律、神仙腦補以及操作圖;對於多個操作空間的博弈遊戲,我們使用 \(sg\) 函式把他轉化為一維問題,通過異或來解決(一般情況下)(注:這個異或操作的 \(nb\) 一點的名字叫做 \(bouton's~theorem\) )。

博弈論學習筆記

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表示當射手射向左路而門將撲向右路時,射手...

學習筆記 博弈論

博弈論的題比較重思路,都比較好寫,所以我打算腦內做題不寫 梳理一下遇到的博弈論題目的思路。題意是給乙個由數字0 9和問號構成的字串,長度為n,n為偶數 需要注意可能沒有問號 b和m兩人輪流用數字替換問號,m先手,若所有問號都被替換後前一半的數字之和等於後一半的數字之和,b勝,否則m 勝。考慮三種情況...