浅谈阶梯博弈
今天在POJ做了一道博弈題..進而了解到了階梯博弈…下面闡述一下我對于階梯博弈的理解..
首先是對階梯博弈的闡述…博弈在一列階梯上進行…每個階梯上放著自然數個點..兩個人進行階梯博弈…每一步則是將一個集體上的若干個點( >=1 )移到前面去..最后沒有點可以移動的人輸..
如這就是一個階梯博弈的初始狀態 2 1 3 2 4 … 只能把后面的點往前面放…如何來分析這個問題呢…其實階梯博弈經過轉換可以變為Nim..把所有奇數階梯看成N堆石子..做nim..把石子從奇數堆移動到偶數堆可以理解為拿走石子..就相當于幾個奇數堆的石子在做Nim..( 如所給樣例..2^3^4=5 不為零所以先手必敗)為什么可以這樣來轉化?
假設我們是先手…所給的階梯石子狀態的奇數堆做Nim先手能必勝…我就按照能贏的步驟將奇數堆的石子移動到偶數堆…如果對手也是移動奇數堆..我們繼續移動奇數堆..如果對手將偶數堆的石子移動到了奇數堆..那么我們緊接著將對手所移動的這么多石子從那個奇數堆移動到下面的偶數堆…兩次操作后…相當于偶數堆的石子向下移動了幾個..而奇數堆依然是原來的樣子…即為必勝的狀態…就算后手一直在移動偶數堆的石子到奇數堆..我們就一直跟著他將石子繼續往下移..保持奇數堆不變…如此做下去..我可以跟著后手把偶數堆的石子移動到0..然后你就不能移動這些石子了…所以整個過程..將偶數堆移動到奇數堆不會影響奇數堆做Nim博弈的過程..整個過程可以抽象為奇數堆的Nim博弈…
其他的情況…先手必輸的…類似推理…只要判斷奇數堆做Nim博弈的情況即可…
為什么是只對奇數堆做Nim就可以…而不是偶數堆呢?…因為如果是對偶數堆做Nim…對手移動奇數堆的石子到偶數堆..我們跟著移動這些石子到下一個奇數堆…那么最后是對手把這些石子移動到了0..我們不能繼續跟著移動…就只能去破壞原有的Nim而導致勝負關系的不確定…所以只要對奇數堆做Nim判斷即可知道勝負情況…
轉載于:https://www.cnblogs.com/AWCXV/p/7626734.html
總結
- 上一篇: 【78.89%】【codeforces
- 下一篇: 【t081】序列长度(贪心做法)