有點散亂, 將就著看吧.
首先是博弈論的基礎, 即 n 和 p 兩種狀態: n 為必勝狀態, p 為必敗狀態.
對於n, p兩種狀態, 則有
1. 沒有任何合法操作的狀態, p;
2. 可以移動到p局面的情況為n狀態;
3. 可以移動到的所有狀態均為n狀態, 則當前情況為p狀態.
然後就可以引入sg函式了.
首先定義mex運算, 這是施加於乙個集合的運算, 表示最小的不屬於這個集合的非負整數。
for instance,
mex = 3、mex = 0、mex{} = 0。
對於乙個給定的有向無環圖, 定義關於圖的每個頂點的sprague-grundy函式g如下:g(x) = mex, 這裡的g(x)即
sg[x]。
例如:取石子問題, 有1堆n個的石子, 每次只能取個石子, 先取完石子者勝利, 那麼各個數的sg值為多少?
sg[0] = 0, f = ,
x = 1時, 可以取走1-f個石子, 剩餘個, mex = , 故sg[1] = 1;
x = 2時, 可以取走2-f個石子, 剩餘個, mex = , 故sg[2] = 0;
x = 3時, 可以取走3-f個石子, 剩餘個, mex = , 故sg[3] = 1;
x = 4時, 可以取走4-f個石子, 剩餘個, mex = , 故sg[4] = 2;
x = 5時, 可以取走5-f個石子, 剩餘個, mex = , 故sg[5] = 3;
以此類推…..
x 0 1 2 3 4 5 6 7 8
sg 0 1 0 1 2 3 2 0 1
這裡的sg函式與上面提到的n, p兩種狀態實際上是吻合的, 當 sg[i] == 0 時, 處於p狀態; 否則處於n狀態. 數學 nim博弈 SG函式
若乙個遊戲滿足 由兩名玩家交替行動 在遊戲程序的任意時刻,可以執行的合法行動與輪到哪名玩家無關 不能行動的玩家判負 則稱該遊戲為乙個公平組合遊戲。nim博弈屬於公平組合遊戲,但城建的棋類遊戲,比如圍棋,就不是公平組合遊戲。因為圍棋交戰雙方分別只能落黑子和白子,勝負判定也比較複雜,不滿足條件2和條件3...
BZOJ1188 SG函式學習小記
sg函式用來求博弈過程中某一情況下是先手必敗 p position 還是先手必勝 n position 性質 所有的先手必敗 p position 當且僅當 sg 0 所有的先手必勝 n position 當且僅當 sg 0 結束局面 t position sg 0 可以理解為無法繼續操作了所以先手...
函式學習總結
1.為什麼定義函式,使用函式 在程式的設計過程中,會在許多地方出現想同的 為了減少 數量,讓程式變得更加美觀,此時可以將這段程式單獨作為乙個整體,並用識別符號起乙個名字,當時使用時,直接呼叫函式名即可。這段程式叫作子程式,就是我們所說的函式。2.函式的定義 1 定義的語法形式 資料型別 函式名 形式...