演算法學習————SG函式和SG定理
阿新 • • 發佈:2021-07-09
其實我自己也不是很明白吧
SG函式應用的場景
組合遊戲
在競賽中,組合遊戲的題目一般有以下特點
-
題目描述一般為A,B,2人做遊戲
-
A,B交替進行某種遊戲規定的操作,每操作一次,選手可以在有限的操作(操作必須合法)集合中任選一種。
-
對於遊戲的任何一種可能的局面,合法的操作集合只取決於這個局面本身,不取決於其它因素(跟選手,以前的所有操作無關)
-
如果當前選手無法進行合法的操作,則為負
必勝點和必敗點的概念
必敗點(P點) 前一個(previous player)選手將取勝的點稱為必敗點
必勝點(N點) 下一個(next player)選手將取勝的點稱為必勝點
SG函式
先定義mex(minimal excludant)運算,這是施加於一個集合的運算,表最小的不屬於這個集合的非負整數。例如mex{0,1,2,4}=3
對於任意狀態x,定義SG(x) = mex(S),其中S是x後繼狀態的SG函式值的集合。如x有三個後繼狀態a,b,c的SG值分別為SG(a),SG(b),SG(c),那麼SG(x)=mex{SG(a),SG(b),SG(c)}。 這樣當我沒有後繼狀態的時候集合S的終態必然是空集,所以SG函式的終態為SG(x)=0,當且僅當x為必敗點P時。
雖然我也不知道為什麼要這麼求,但是數學就是這麼神奇呀
SG定理
遊戲和的SG函式等於各子游戲的SG函式的Nim和。
公式說明:\(SG(x_1,x_2,x_3\dots x_n) = SG(x_1)\bigoplus SG(x_2)\dots\bigoplus SG(x_n)\)
應用
具體怎麼應用呢?我可以遞迴求出一部分情況的SG值,然後瞪眼發現規律
例題:[SDOI2009]E&D
`