SG函数和SG定理(Sprague_Grundy)
?
一、必勝點和必敗點的概念
???????P點:必敗點,換而言之,就是誰處于此位置,則在雙方操作正確的情況下必敗。
???????N點:必勝點,處于此情況下,雙方操作均正確的情況下必勝。
必勝點和必敗點的性質:
????????1、所有終結點是 必敗點 P 。(我們以此為基本前提進行推理,換句話說,我們以此為假設)
????????2、從任何必勝點N 操作,至少有一種方式可以進入必敗點 P。
????????3、無論如何操作,必敗點P 都只能進入 必勝點 N。
我們研究必勝點和必敗點的目的時間為題進行簡化,有助于我們的分析。通常我們分析必勝點和必敗點都是以終結點進行逆序分析。我們以hdu 1847 Good Luck in CET-4 Everybody!為例:
當 n = 0 時,顯然為必敗點,因為此時你已經無法進行操作了
當 n = 1 時,因為你一次就可以拿完所有牌,故此時為必勝點
當 n = 2 時,也是一次就可以拿完,故此時為必勝點
當 n = 3 時,要么就是剩一張要么剩兩張,無論怎么取對方都將面對必勝點,故這一點為必敗點。
以此類推,最后你就可以得到;
??????n????:???0????1????2????3????4???5????6 ...
position:??P????N???N????P???N???N???P ...
你發現了什么沒有,對,他們就是成有規律,使用了 P/N來分析,有沒有覺得問題變簡單了。
二、Sprague-Grundy定理(SG定理)
????????游戲和的SG函數等于各個游戲SG函數的Nim和。這樣就可以將每一個子游戲分而治之,從而簡化了問題。而Bouton定理就是Sprague-Grundy定理在Nim游戲中的直接應用,因為單堆的Nim游戲 SG函數滿足 SG(x) = x。
(NIM游戲:https://blog.csdn.net/luomingjun12315/article/details/45479073)
三、Sprague-Grundy函數(SG函數)
????????首先定義mex(minimal excludant)運算,這是施加于一個集合的運算,表示最小的不屬于這個集合的非負整數。例如mex{0,1,2,4}=3、mex{2,3,5}=0、mex{}=0。
????????對于任意狀態 x , 定義 SG(x) = mex(S),其中 S 是 x 后繼狀態的SG函數值的集合。如 x 有三個后繼狀態分別為?SG(a),SG(b),SG(c),那么SG(x) = mex{SG(a),SG(b),SG(c)}。?這樣 集合S 的終態必然是空集,所以SG函數的終態為 SG(x) = 0,當且僅當 x 為必敗點P時。
四、例題
http://poj.org/problem?id=2975
http://poj.org/problem?id=2960
https://ac.nowcoder.com/acm/contest/338/I
五、參考文章
https://blog.csdn.net/luomingjun12315/article/details/45555495
https://www.cnblogs.com/ECJTUACM-873284962/p/6921829.html
https://blog.csdn.net/kamisama123/article/details/77649118
?
總結
以上是生活随笔為你收集整理的SG函数和SG定理(Sprague_Grundy)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 矩阵快速幂(Matrix_Fast_Po
- 下一篇: 巴什博奕(Bash_Game)