sg函數的理解


sg,是用來判斷博弈問題的輸贏的,當sg值為0的時候,就是輸,不為0就是贏;

在這之前,我們規定一個對於集合的操作mex,表示最小的不屬於該集合的非負整數。 舉幾個栗子:mex{0,1,2}=3,mex{1,2,3}=0,mex{0,1,3}=2;

而我們要求的sg的值就和這個有關,定義SG函數:SG(x)=mex{ SG(y) | y是x的后繼,也就是經過操作可以取得的剩下值 }。

舉個栗子:比如一堆石子,我們可以取任意個,那么x個石子的石子的sg值是多少呢?

可以知道,0個石子sg為0,一的時候我們可以取一個,剩下0,的sg是0,那么mex(0)就是1,所以1的sg為1。

遞推下去當為x的時候我們可以取1~x個,那么剩下的值石子個數就是x-1到0個,他的mex(...)就是x,所以這個例子的x值得sg值就是x;

那么,sg可以為我們做什么呢?比如Nimm問題,多堆的時候,我們只需要將每個sg值亦或一下,如果是0就會輸,不是就贏,也就是將每堆的數量亦或就可以了


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM