對博弈的深度理解之為什麼異或【轉】
昨晚上一道博弈題讓我又理解了一下博弈,趕緊掏出我的小本子;
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的求算;
昨晚上一道博弈題讓我又理解了一下博弈,趕緊掏出我的小本子;