博弈遊戲的實質是乙個有向無環圖,從乙個頂點出發,兩個選手交替從乙個節點到另乙個節點,最終無點可走的選手失敗。
下圖可見,y1,y2,y3是頂點的子問題,不能同時達到。y4,y5是y1的子問題,g1,g2……gm是y4的子問題。
首先定義乙個mex取的是不屬於mex集合的最小非負整數,比如mex=0,mex=2.
再定義乙個sg函式,sg(x)表示節點x處的可選節點個數
每個局面都有乙個sg值,當sg值為0時,為必敗局面。
sg[y1]的值為 mex,即取不屬於這個集合的最小非負整數。
如果y1可達狀態中有必敗態,即sg值為0的狀態,則sg[y1]必定不為0。
若y1可達狀態中均為必勝態,即sg值均大於0,則sg[y1]必定為0。
mex用來處理後繼局面,而異或處理同時存在的子遊戲。如局面y4由g1,g2
…等子遊戲組成,這些子遊戲同時存在,因此sg[y4]= sg[g1] xor sg[g2] xor sg[g3]…,此處的證明與nim遊戲證明一致
未完待續……
博弈論 (SG函式)
首先定義mex minimal excludant 運算,這是施加於乙個集合的運算,表示最小的不屬於這個集合的非負整數。例如mex 3 mex 0 mex 0。對於乙個給定的有向無環圖,定義關於圖的每個頂點的sprague grundy函式g如下 g x mex,這裡的g x 即sg x 例如 取石...
博弈論SG函式
有n堆石子,每次可以從第1堆石子裡取1顆 2顆或3顆,可以從第2堆石子裡取奇數顆,可以從第3堆及以後石子裡取任意顆 這時看上去問題複雜了很多,但相信你如果掌握了本節的內容,類似的千變萬化的問題都是不成問題的。現在我們來研究乙個看上去似乎更為一般的遊戲 給定乙個有向無環圖和乙個起始頂點上的一枚棋子,兩...
博弈論 SG函式
學習博弈論不得不提一哈sg函式 關於sg函式的一些概念就不多說了 說下我自己的理解sg函式記錄為0的是p狀態 不為0記錄的是n狀態 相當於有個週期再迴圈 p n狀態輪番出現 sg模板 include include include define maxn 1000 using namespace s...