1. 程式人生 > >對博弈的深度理解之為什麼異或【轉】

對博弈的深度理解之為什麼異或【轉】

曉神對博弈的理解已經超出了我的理解了,超強!




昨晚上一道博弈題讓我又理解了一下博弈,趕緊掏出我的小本子;

1 尼姆博弈我們都是知道的如果是每一個狀態的sg值異或完後如果是非零先手必有勝的策略否則沒有,

這裡再說一下是為什麼我們可以這麼想,我們就是要判斷先手是否是能先把石子取完:

博弈實際上是平衡問題,如果是當前狀態是平衡的,那麼先手不論怎麼取,後手都跟著進行相同的操作的話,後手是一定會贏的,

如果當前的狀態不是平衡狀態,那麼這個人可以通過一次操作將它變成是平衡的,然後後者就面對了平衡狀態,那麼後者就是必輸了,就是判斷當前是不是平衡狀態,如果這裡有兩堆數量(11)一樣的石子,一次只能對一堆進行操作,先手不論怎麼取後者都能將他轉換成平衡狀態,先手必輸,我們可以來看一下是為什麼

11 二進位制    1 0 1 1

第一堆        1 0 1 1

第二堆        1 0 1 1

    第一個人拿走 1中的1個     1 0  1 0

    第二個人拿走2中的1個      1 0  1 0

----------------------------------------------------

    第一個人拿走1中的3個      1 0  0  0

     第二個人拿走2中的3個     1 0   0  0

------------------------------------------------------

   第一個人拿走1中的4個          1   1   1

   第二個人拿走2中的4個          1    1   1

我們會發現平衡狀態就是所有的堆異或完了等於0

否則就是不平衡,就是有將石子先取光的策略,這些以前就懂但是下面的是當時懂得;

2 因為可以對兩堆同時進行,操作取走相同數量的石子,在之前的時候我一直是以為威佐夫只能用黃金分割來做,但是細細想了就是和尼姆的sg是一樣的,對於這裡的兩堆石子我們可以進行的操作是可以任取一堆中石子,也可以同時取兩堆中相同數量的石子,先把石子取完的人可以獲勝,問一下先手是否是有必勝的策略,為什麼會有黃金分割的求算方法,因為如果是採用sg的方式的話,時間複雜度是o(n*n)但是如果是採用黃金分割的方法,可以採用o(1)的時間複雜度判斷當前是否是能必勝,還是太菜了,,,,

所有的博弈其實都是sg

不論是棋盤博弈,還是樹鏈博弈,都是sg求算,只不過有時可能會超時,具體的題目要根據題目的特點來簡化sg的求算;

        

        




昨晚上一道博弈題讓我又理解了一下博弈,趕緊掏出我的小本子;