staircase nim 经典组合游戏
游戲開始時有許多硬幣任意分布在樓梯上,共n階樓梯從地面由下向上編號為0到n。游戲者在每次操作時可以將樓梯j(1<=j<=n)上的任意多但至少一個硬幣移動到樓梯j-1上。游戲者輪流操作,將最后一枚硬幣移至地上的人獲勝。
分析:
這個問題與nim游戲的區別在于移走的硬幣不是被扔掉而是被放進了另一堆硬幣之中,考慮能否將這一部分樓梯排除考慮范圍。奇數號樓梯只能將硬幣扔到偶數號樓梯之中,同樣偶數號樓梯上的硬幣也只會被扔上奇數號樓梯。只考慮奇數號樓梯nim,若偶數樓梯只作容器,那么游戲變為nim。當偶數號樓梯上的硬幣可以將硬幣移出時,我們是不是仍然可以用nim的方法判斷必敗狀態?
將奇數臺階的硬幣數nim和為0稱作條件A,結束狀態滿足條件A;任何滿足條件A的狀態都到達滿足條件A的狀態;任何不滿足條件A的狀態都可以到達滿足條件A的狀態(nim)。因此一個狀態為必敗狀態當且僅當它滿足條件A 
如果只考慮奇數位上,把奇數位上的硬幣放入偶數位,看做nim的取石子游戲。
那么這是我們類似可以得到奇數位的SG函數。如果我們可以做到使SG=0.
那么如果對方在奇數位上取硬幣,那么我們也類似nim在奇數位上取硬幣使SG值回到0;
如果對方在偶數位上取硬幣。那么我們就把他剛剛從偶數位上傳到奇數位上的硬幣數。
原封不動的再傳回偶數位。這樣就可以保持SG=0;
從而保證自己必勝~
Tips@USC:
由此可見單單是staircase nim就有多種變化
下面是給我啟示的一段話:
由于只能向左移,而且不能相互交叉。我們把兩個硬幣之間的空間看作石子堆,一次左移相當于把某個石子堆(樓梯j)的石子移到了右邊那個石子堆(樓梯j-1),最后的區間相當于最低的一層,題目實質就變成了階梯博弈。
[Souce]http://blog.sina.com.cn/s/blog_6a6aa7830100p4nb.html
這樣 對于POJ的這道題就很好理解了。
關鍵在于問題轉化,為何可以把偶數對的轉化成為Nim游戲?
臺階游戲類型1:每次移動1個,移動N位
下面模擬2個小石頭的情況:
|_ _ _ _ o _ _ _ _ o _ _ _|
可以這樣想,左邊的石子跑到左邊界,不就是單堆的Nim了?
上圖可以轉化成:
|o _ _ _ _ o _ _ _ _ _ _ _|
同樣地對于下圖,兩堆的情況:
|_ _ o _ _ o _ o _ _ o _ _|
可以轉化為:
|o_ _ o o _ _ o _ _ _ _ _ |
于是乎對于每兩個石子之間的空隙數,可以作為Nim游戲中的石子數,簡單的Nim大家都知道怎么做了.
WHY?
為何可以轉換呢?我們可以知道,可以通過平移來轉換成圖。為何可以平移轉換呢?
相當于A移動某組中左邊的石子,則B移動同組中右邊的石子相同距離。
同樣A移動某組中右邊的石子,則B移動同組中左邊的石子相同距離。
這樣就得到了平移的效果,于是乎,用Nim的方法就能把轉化后的問題解決了。
臺階Nim游戲類型2:
在介紹的時就是類型2,移動N個石子,每次一位。這樣以偶數號臺階為垃圾桶,A從奇數號(j)臺階拿走N個石子放于偶數號(j-1)臺階(相當于扔掉),B從中拿回來,放于奇數號(j-2)臺階;同理A從偶數號拿石子。在這種模型下轉化成Nim游戲,對奇數號臺階異或操作。
類型3:
每次移動1個,每次1位.這不算博弈吧。我自己想的...
類型4:
每次N位,一次M個。不知道怎么做... 求解釋....
轉載于:https://www.cnblogs.com/yefeng1627/archive/2013/03/31/2991680.html
總結
以上是生活随笔為你收集整理的staircase nim 经典组合游戏的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: opengl dfdx dfdy
- 下一篇: maven进行install时出现Fat
