SG函数
定義:
mex(minimal excludant)運算,這是施加于一個集合的運算,表示最小的不屬于這個集合的非負整數。例如mex{0,1,2,4}=3、mex{1,3,5}=0、mex{}=0。
設SG(x) = { SG(a),SG(b),SG(c) };
設集合S = {?SG(a),SG(b),SG(c) };
SG(x) = mex(S)
則 S 是 x 后繼狀態 SG 函數元素的集合。
SG(x) = 0;//當且僅當 x 為必敗點 P 時
SG函數的性質:
首先,所有的目標位置所對應的頂點(沒有出邊的頂點),其SG值為0,因為它后繼狀態的集合為空集,對于所有g(x) = 0的頂點x ,它的所有前驅 y 都滿足 g(y) != 0,對于所有 g(x) != 0的頂點x,它存在一個后繼頂點y滿足g(y) = 0。
SG函數的意義:
1、當g(x) = k 時,都存在x的一個后繼 y 滿足 g(y) = i(0<=i < k),顯然成立
2、當某枚棋子的SG值為 k 時,可以將它變為[0,k)但不能不變。這與Nim游戲相似,每次選擇一堆數量為k的石子,可以將它變為小于k的數量,但不能不變。這表明,如果將n枚棋子所在頂點的SG值看作棋子的個數,那么Nim游戲的必勝策略都對應與原來n枚棋子的必勝策略!
3、對于 n 枚棋子,設它們對應的SG值分別為(a1,a2,...,an),再設局面(a1,a2,...,an)
時的Nim游戲的一種必勝策略為把 ai 變成 k,那么原游戲的一種必勝策略就是把第i枚棋子移動到一個SG值為k的頂點。這就相當于可以看作,每次最聰明的操作是按照Nim游戲SG(N)值來移動,例如我們想把SG(N)值變為SG(小于N),就滿足最聰明移動,但我們真正移動的又不是SG(N)的值,移動的是原來頂點N的值,SG(小于N)的值是我們想要的最聰明的值。
總結
- 上一篇: HALCON示例程序holes.hdev
- 下一篇: python简单笔记