博弈論入門之巴什博奕

自為風月馬前卒發表於2018-02-22

巴什博奕

巴什博奕:

兩個頂尖聰明的人在玩遊戲,有\(n\)個石子,每人可以隨便拿\(1-m\)個石子,不能拿的人為敗者,問誰會勝利

巴什博奕是博弈論問題中基礎的問題

它是最簡單的一種情形對應一種狀態的博弈

博弈分析

我們從最簡單的情景開始分析

當石子有\(1-m\)個時,毫無疑問,先手必勝

當石子有\(m+1\)個時,先手無論拿幾個,後手都可以拿乾淨,先手必敗

當石子有\(m+2-2m\)時,先手可以拿走幾個,剩下\(m+1\)個,先手必勝

我們不難發現,面臨\(m+1\)個石子的人一定失敗。

這樣的話兩個人的最優策略一定是通過拿走石子,使得對方拿石子時還有\(m+1\)

我們考慮往一般情況推廣

  • 設當前的石子數為\(n=k*(m+1)+r\)

先手會首先拿走\(r\)個,接下來假設後手拿走\(x\)個,先手會拿走\(m+1-x\)個,這樣博弈下去後手最終一定失敗

  • 設當前的石子數為\(n=k*(m+1)\)

假設先手拿\(x\)個,後手一定會拿\(m+1-x\)個,這樣下去先手一定失敗

程式碼

#include<cstdio>
int main()
{
    int n,m;
    scanf("%d%d",&n,&m);
    if(n % (m+1) !=0) printf("first win");
    else printf("second win");
    return  0;
}

題目

題解

題解

題解

相關文章