威佐夫博弈的定義是:
有兩堆若干個物品,兩人輪流從某一堆物品中取至少乙個或同時從兩堆中取相同數量的物品,不能不取,最後把物品全部取完者勝利現在給出兩堆物品的數量 \(n,m\) 判斷先手是否有策略必勝
我們用 \((a,b)\) 表示第一堆數量為 \(a\) ,第二堆數量為 \(b\) 的局勢,並規定 \(a\leq b\) ,因為所有局勢經過互換後都能表示為這樣的形式
定義乙個奇異局勢為先手必輸的局勢,可以發現 \((0,0),(1,2),(3,5)\) 等都是奇異局勢,設 \(p_k\) 為包含了前 \(k\) 個奇異局勢中的所有數字的集合,設 \(a_=\operatorname(p_k),b_=a_k+k\) ,觀察規律,猜想第 \(k+1\) 個奇異局勢為 \((a_,b_)\) ,下面我們來證明這一猜想:
先證明幾個命題:
任何自然數都包含在乙個且僅在乙個奇異局勢中
用歸納法:
綜上,任何自然數都包含在乙個奇異局勢中
若自然數 \(b\) 包含在兩個奇異局勢中,那麼顯然只有一種情況 \((a,b),(b,c)\) 這與 \(\operatorname\) 的定義矛盾,若包含在 \(m\geq 2\) 個奇異局勢中,那麼任取兩個奇異局勢都不滿足條件
綜上,任何自然數都僅包含在乙個奇異局勢中
任何操作都可以將奇異局勢變為非奇異局勢
我們只要證明:任何操作都無法將奇異局勢變為另乙個奇異局勢即可
設存在操作能將第 \(i\) 中奇異局勢 \((a_i,b_i)\) 變為第 \(j\) 種奇異局勢 \((a_j,b_j)\) ,由於 \(b_i-a_i=i,b_j-a_j=j\) 所以無法通過兩堆同時取相同數量物品的操作轉變,而由命題1可得這兩個局勢中的四個數互不相等,所以改變一堆數量的操作最多使兩數相等,另兩數仍不等,所以這種操作不存在,得證
所有非奇異局勢都可以通過適當方法轉換為奇異局勢
設集合 \(a=\\},b=\\}\) ,由命題1可知: \(a\cup b=\mathbb\)
對於局勢 \((a,b)\) ,若 \(a\not\in a\) 且 \(b\not\in b\) ,則 \(a\in b\) 且 \(b\in a\) ,互換 \(a,b\) 後即可得到 \(a\in a\) 或(且) \(b\in b\) 的情形,下面我們對(或)這一情形的所有情況進行分類討論:
綜上,命題得證
由命題2,3可得我們構造的奇異局勢滿足先手必輸,這一構造策略是正確的
那麼如何快速判斷乙個局勢是否是奇異局勢呢?這需要引入beatty定理:
證明:由 \(\frac+\frac=1\) 且 \(a,b\) 為整數可得 \(a,b>1\)
所以 \(\lfloor(n+1)a\rfloor = \lfloor na+a\rfloor >\lfloor na\rfloor+1 > \lfloor na \rfloor\) ,所以任意整數最多在 \(p,q\) **現一次,不會重複,滿足集合的互異性
若 \(k\in p,k\in q\) ,則有 \(k< na ,進一步得到:
\[\frac<\frac<\frac,\frac<\frac<\frac\\
\rightarrow\frac<\frac+\frac=1<\frac\\
\rightarrow k
與 \(m,n\) 是整數矛盾,所以 \(p\cap q=\emptyset\)
若 \(k\not\in p\) 且 \(k\not\in q\) ,則有 \(\lfloor na\rfloor < k < \lfloor(n+1)a\rfloor,\lfloor mb\rfloor < k < \lfloor(m+1)b\rfloor\) ,進一步得到:
\[na
同理,有關於 \(b\) 的結論,兩式相加得:
\[\frac<\frac+\frac<\frac\\
\rightarrow m+n
而 \(m+n+2\) 與 \(m+n\) 之間只包含了乙個整數,矛盾,所以 \(p\cup q=\mathbb\)
而代表奇異局勢第乙個和第二個數的集合 \(a,b\) 如果忽略 \(0\) ,也滿足beatty定理的形式
所以 \(a_i\) 可以表示為 \(\lfloor ix\rfloor\) ,\(b_i\) 可以表示為 \(\lfloor ix\rfloor+i=\lfloor i(x+1)\rfloor\) ,所以有:
\[\frac+\frac=1,x=\frac
\]巧妙之處在於,這正好是**分割率!
至此,我們得到了第 \(i\) 個奇異局勢的通項公式:
\[(\lfloor\fraci\rfloor,\lfloor\fraci\rfloor)
\]luogu p2252
#includeusing namespace std;
const double r = (sqrt(5.0) + 1.0) / 2.0;
int main()
博弈論 威佐夫博弈
1.威佐夫博弈的條件 1 人數為兩人 2 物品為兩堆,每乙個人在取物品的時候要麼在一堆中取若干物品,要麼在兩堆中取相等的物品。每次至少乙個,可以取完這一堆。3 先手必敗的條件 在奇異局勢下必敗。2.ok,如果你不是很懂什麼叫做奇異局勢,那麼聽我解釋。我們知道物品兩為兩堆,每一堆的數量數a,b。我們記...
博弈論 威佐夫博弈
理論分析 問題 首先有兩堆石子,博弈雙方每次可以取一堆石子中的任意個,不能不取,或者取兩堆石子中的相同個。先取完者贏。分析 首先我們根據條件來分析博弈中的奇異局勢 第乙個 0 0 先手輸,當遊戲某一方面對 0 0 時,他沒有辦法取了,那麼肯定是先手在上一局取完了,那麼輸。第二個 1,2 先手輸,先手...
博弈論入門之威佐夫博弈
威佐夫博弈是一類經典的博弈問題 有兩堆石子,兩個頂尖聰明的人在玩遊戲,每次每個人可以從任意一堆石子中取任意多的石子或者從兩堆石子中取同樣多的石子,不能取得人輸,分析誰會獲得勝利 威佐夫博弈不同於nim遊戲與巴什博奕,它的特殊之處在於不能將兩堆石子分開分析。前輩們在對該博弈遊戲做了大量的探索之後最終找...