博弈之SG函式

2021-08-06 08:32:53 字數 2406 閱讀 5588

前幾天在網上學習了一下sg函式,稍微了解了大概,覺得自己動手理一下可以加深印象。

sg函式的使用似乎都和nim遊戲有關。

首先理清幾個概念:

p點:必敗點,處於此位置時,在雙方採取最佳策略時必敗。

n點:必勝點,處於此位置時,在雙發採取最佳策略時必勝。

p點與n點的性質:

1.所有終結點都是必敗點。(比如取石子時面對三堆石子的狀態是(0,0,0),則無法取物,敗。而(0,0,0)為終結點,由此可得此性質。)

2.從必勝點n可以一步到達必敗點p;(所有能一步走到p的就是n點)

3.p只能進入n點。(通過一步只能到達n的是p點。)

通常分析必勝點和必敗點都是以終結點逆序分析的。

下面介紹sg定理和sg函式:

sg定理:

各個遊戲sg函式的nim和 等於遊戲和的sg函式。(即如果當前狀態由幾個部分組成,則當前狀態的sg等於這幾個部分sg的異或值。和nim遊戲一樣,如果每堆有x個石子,則這一堆的sg為x,n堆的sg為每堆sg的異或。)這樣就可以將遊戲劃分為若干個子遊戲,然後對每乙個子遊戲分而治之,從而簡化問題。

而bouton定理(狀態(x1,x2,x3)為必敗狀態,當且僅當x1^x2^x3=0,即nim和為0)可以看做是sg定理在nim遊戲中的運用(練習:uvalive/la 5059+uva 10561+uva 12293)。

sg函式

首先定義mex(minimal excludant)運算,這是施加於乙個集合的運算,表示不屬於該集合的最小非負整數。如:mex=3,mex=0,mex{}=0。

對於任意狀態x,定義sg(x)=mex(s),其中s是x後繼狀態的sg函式的集合。比如x有3個後繼狀態:sg(a)、sg(b)、sg(c),則sg(x)=mex。若x為終態,則x的後繼狀態為空集,所以sg(x)=mex{}=0。即集合s的終態為空集,所以x為必敗點p 當且僅當 sg函式的終態為sg(x)=0。

(因為x為必敗點,所以當到達終態時,x的後繼為空集,即在選擇之前已經取光,無法進行任何選擇,所以sg(x)=0)

(乙個狀態是必敗態當且僅當它所有後繼都是必勝態;乙個狀態是必勝態當且僅當至少有乙個後繼是必敗態。)

來個網上的例子加深下對後繼狀態的了解。

【例項】取石子問題

有1堆n個石子,每次只能取個,先取完者勝,則各個狀態的sg值為多少?

首先知道當狀態x=0時,無法選取石子,沒有後繼狀態,所以sg[0]=mex{}=0,可以取的狀態為f=。

當前有1個石子(即面對狀態x=1),只能取走1個石子,所以剩餘個,sg[1]=mex=mex=1。

(0即為1的後繼狀態。)

當前有2個石子(即面對狀態x=2),只能取走1個石子,所以剩餘個,sg[2]=mex=mex=0。(1為2的後繼狀態。)

當前有3個石子(即面對狀態x=3),可以取走1,3個石子,所以剩餘個,sg[3]=mex=mex=1。

當前有4個石子(即面對狀態x=4),可以取走1,3,4個石子,所以剩餘個,sg[4]=mex=mex=2;

當前有5個石子(即面對狀態x=5),可以取走1,3,4個石子,所以剩餘個,sg[5]=mex=mex=3;

以此類推……

可以得到: x

0123

4567

8sg[x]01

0123

201 由上述例項可以得到sg函式求解步驟:

1.使用陣列f將可改變當前狀態的方式記錄下來。(如上述中每次只能取個石子,則f=。)

2.使用另乙個陣列標記當前狀態x的後續狀態。

3.最後模擬mex運算,即搜尋未被標記的最小非負值,將其複製給sg[x]。

4.不斷重複2-3步,至完成1-n的sg函式值。

網上還給了一道實戰演練:hdu-1848。(鏈結)

還有一些組合博弈的題目,先列下來,慢慢刷。

poj 2234 matches game

hoj 4388 stone game ii

poj 2975 nim

hoj 1367 a stone game

poj 2505 a multiplication game

zju 3057 beans game

poj 1067 取石子遊戲

poj 2484 a funny game

poj 2425 a chess game

poj 2960 s-nim

poj 1704 georgia and bob

poj 1740 a new stone game

poj 2068 nim

poj 3480 john

poj 2348 euclid's game

hoj 2645 wnim

poj 3710 christmas game 

poj 3533 light switching game

主要參考部落格:

博弈sg函式

sg函式 個人認為還是用於三種方法都無法解決的情況,如按特殊數字取石子 我們把整個博弈過程抽象為有向無環圖 1.幾項準備工作 mex求最小非負整數mex 0,mex 3,mex 0 sg x mex 就是石頭變少的繼 這樣sg就滿足幾個性質 1.sg x 0時,它的後繼都不為零 2.sg x 0時,...

博弈SG函式

題意 乙個棋盤有n行,每行20格仔,都有一些棋子,兩個人輪流進行這個操作 選擇某一行乙個棋子移動到該行右邊第乙個空的格仔。不能進行的人輸。問先手是否能贏。分析 sg函式的應用,當時自己做的時候沒做出來qaq。終結點是這一行沒有棋子可以走,即0,然後逆推出其他結點的sg函式。每一行的狀態看成是乙個結點...

SG函式博弈函式

必勝點和必敗點的概念 p點 必敗點,換而言之,就是誰處於此位置,則在雙方操作正確的情況下必敗。n點 必勝點,處於此情況下,雙方操作均正確的情況下必勝。必勝點和必敗點的性質 1 所有終結點是 必敗點 p 我們以此為基本前提進行推理,換句話說,我們以此為假設 2 從任何必勝點n 操作,至少有一種方式可以...