今天a了張子蘇大神的的題,感覺神清氣爽。
一篇對於多層nim博弈講的很透徹的博文:
問題1:今有若干堆火柴,兩人依次從中拿取,規定每次只能從一堆中取若干根, 可將一堆全取走,但不可不取,最後取完者為勝,求必勝的方法。
定義:若所有火柴數異或為0,則該狀態被稱為利他態,用字母t表示;否則, 為利己態,用s表示。
注意:這篇博文是先定義s和t,再通過它們的性質推出結論。
[定理1]:對於任何乙個s態,總能從一堆火柴中取出若干個使之成為t態。
證明:若有n堆火柴,每堆火柴有a(i)根火柴數,那麼既然現在處於s態, c = a(1) xor a(2) xor … xor a(n) > 0;
把c表示成二進位制,記它的二進位制數的最高位為第p位,則必然存在乙個a(t),它二進位制的第p位也是1。(否則,若所有的a(i)的第p位都是0,這與c的第p位就也為0矛盾)。
那麼我們把x = a(t) xor c,則得到x < a(t).這是因為既然a(t)的第p位與c的第p位同為1,那麼x的第p位變為0,而高於p的位並沒有改變。所以x < a(t).而
a(1) xor a(2) xor … xor x xor … xor a(n)
= a(1) xor a(2) xor … xor a(t) xor c xor … xor a(n)
= a(1) xor a(2) xor… xor a(n) xor a(1) xor a(2) xor … xor a(n)
= 0這就是說從a(t)堆中取出 a(t) - x 根火柴後狀態就會從s態變為t態。證畢。
[定理2]:t態,取任何一堆的若干根,都將成為s態。
證明:用反證法試試。
若c = a(1) xor a(2) xor … xor a(i) xor … xor a(n) = 0;
c' = a(1) xor a(2) xor … xor a(i') xor … xor a(n) = 0;
則有:c xor c' = a(1) xor a(2) xor … xor a(i) xor … xor a(n) xor a(1) xor a(2) xor … xor a(i') xor … xor a(n) = a(i) xor a(i') =0
進而推出a(i) = a(i'),這與已知矛盾。所以命題得證。
[定理 3]:s態,只要方法正確,必贏。
最終勝利即由s態轉變為t態,任何乙個s態,只要把它變為t態,(由定理1,可以把它變成t態。)對方只能把t態轉變為s態(定理2)。這樣,所有s態向t態的轉變都可以有己方控制,對方只能被動地實現由t態轉變為s態。因為全零屬於t態,故s態必贏。(不能單單從對稱拿取來考慮這個問題。例如a=b xor c,然後求sg這種情況。因為證不出來。。定理1只是說存在這種情況,並沒有說對稱拿取。)
[定理4]:t態,只要對方法正確,必敗。
由定理3易得。
問題2:今有若干堆火柴,兩人依次從中拿取,規定每次只能從一堆中取若干根, 可將一堆全取走,但不可不取,最後取完者為負,求必勝的方法。
【未完待續】
組合在一起
本節我們將神經網路的知識總結,串起來講,是我們有乙個整體的影響,搞明白神經網路的過程 首先訓練神經網路架構的選取 訓練神經網路的實現過程 1 隨機初始化權重,是它們都接近0 2 實現前向傳播演算法,使得每乙個輸入x都得出結果y 3 計算出代價函式j 4 實現反向傳播演算法計算出偏導數 5 使用梯度檢...
博弈論(一) Nim遊戲
重點結論 對於乙個nim遊戲的局面 a1,a2,an 它是p position當且僅當a1 a2 an 0,其中 表示位異或 xor 運算。nim遊戲是博弈論中最經典的模型 之一?它又有著十分簡單的規則和無比優美的結論,由這個遊戲開始了解博弈論恐怕是最合適不過了。nim遊戲是組合遊戲 combina...
09 組合在一起
從我們的 hello world 程式開始,我們已經取得了很大進展!稍微發揮一點想象力並作一些調整,我們的程式將會成為一件十分有用的東西。讓我們加快推進開發,讓我們把這個程式變為乙個更有用的公司目錄程式。我們已經對前面的示例作了如下調整 l 調整了第二個tab選項卡以使它包含公司的關於資訊。l 在資...