博弈論 Bash博弈

2021-10-14 20:45:01 字數 1060 閱讀 2412

首先談一下最簡單的bash博弈。bash博弈是這樣的:兩個人,n個物品,每個人每次都可以取走1-m個物品,取走最後乙個物品的人勝利。問先手在什麼條件下必勝。

#include

#define ll long long

#define inf 0x3f3f3f3f

#define fi first

#define se second

#define endl '\n'

#define ios std::ios::sync_with_stdio(false),cin.tie(0), cout.tie(0)

using

namespace std;

intread()

void

write

(int x)

const

int n =

5e5+

100;

const ll inf =

0x3f3f3f3f3f3f3f3f

;/**

bash game:

(1)二人遊戲

(2)n個物品

(3)每個人能夠取走1-m個物品

(4)取走最後乙個物品的取勝

(5)如果n%(m+1)==0,這個時候先手必敗。否則先手必勝。

*/int

main()

return0;

}

bash博弈先手必敗的條件就是n%(m+1) == 0,我們來分析一下這個情況。

首先假設n=m+1,這個時候無論先手第一次拿多少個,由於剩下的物品數量一定是小於等於m的,所以後手一定可以一次拿完。所以這個時候先手必敗。

如果n是m+1的倍數,其實也很簡單的,因為無論先手一次拿多少個物品,後手總是可以做出這樣的策略:拿的物品和先手加在一起恰好是m+1個,這樣若干回合之後一定又會回到我們說的第一種情況,先手必敗;

如果n不是m+1的倍數,先手一定可以將剩餘物品數量變為m+1的倍數,又回到了上一種情況,後手最後會面對第一種情況,先手必勝。所以結論得證。

博弈論 Nim博弈

1.nim博弈的起源很早,至於歷史我們就不再說了,直接說它的使用場景。1 依舊是兩個人博弈,但是物品時n堆,每一堆有ai個。2 每個人可以挑選一堆取走若干個,但是不能不取。3 最先取完所有物品的人獲勝。4 結論 所以堆的物品的數量異或起來是0,先手必敗。2.乙個nim博弈的例項 nim博弈。乍一看這...

博弈論 博弈混合

給你乙個n m的棋盤,然後給你4種棋子,分別是 1.王 能橫著走,或者豎著走,或者斜著走,每次可以走1格 2.車 可以橫著走或者豎著走,每次可以走無數格 3.馬 走日字形,例如 如果現在在 1,1 可以走到 2,3 即先走一格直線,然後斜著走一格 4.王后 可以橫著走,或者豎著走,或者斜著走,每次可...

Nim博弈(博弈論)

1.題目 給定n堆石子,兩位玩家輪流操作,每次操作可以從任意一堆石子中拿走任意數量的石子 可以拿完,但不能不拿 最後無法進行操作的人視為失敗。問如果兩人都採用最優策略,先手是否必勝。思路 必勝狀態 a1 a2 an 0 可以走到某乙個必敗狀態 必敗狀態 a1 a2 an 0 走不到任何乙個必敗狀態 ...