持續更新中……
最近學習了一下博弈論,發現好玩之餘,很考驗智商。
首先,我們要討論一些看似顯然但是十分有用的定義(公理)
我們定義先手必敗態為p,先手必勝態為n,任何乙個狀態不是n就是p,不是p就是n,沒有別的選擇。
有了上面的三條公理,我們就可以進行很多的思考了。
當然還有sg函式這個神器。
乙個狀態的sg函式是評估乙個點勝負的指標,假如算出來sg值為0,那麼必敗,否則必勝。
\(sg_x=mex\\)
也就是x可以轉移到的狀態y的sg值的mex就是當前的sg值,mex定義為這個集合內的數的最小沒有出現過的自然數,也就是自然數集意義下的補集的最小值。其中終止狀態的sg為0,可以用這個作為邊界遞推。
還要知道乙個\(sg\)定理:
\(sg=sg_1 \bigoplus sg_2 \bigoplus sg_3 \bigoplus \dots \bigoplus sg_n\)
什麼意思呢?這個就是說,假如乙個遊戲可以拆分成若干個互不影響的子遊戲時,這個遊戲的sg值就等於各個遊戲的sg值的異或和,可以用這個來快速計算很多可以拆分的局面。經常設好sg之後就用這個來打表猜結論(結合sg函式和三大公理)。
下面來具體講一下各種的遊戲,其中以nim遊戲最為重要。之後還會講一下各類博弈問題的處理方法(對抗搜尋(也就是博弈搜尋),二分圖博弈……)。
\(\quad\)
\(\quad\)
最基礎的題:bash v1
變形:另外一種問法
小變形:bash v2
再變形:bash v3
斐波那契博弈:bash v4
有下界的bash博弈:bash v5
\(\quad\)
最基礎的題:wythoff v1
\(\quad\)
最基礎的題:nim game
\(\quad\)
個人認為,環形博弈是對稱博弈的一種特殊情況,所以都歸在這裡講。
這個對稱博弈指的是:有n個石子圍成的乙個環,a和b輪流取石子,每次可以取[1,k]中的某個數個的相鄰的石子(原來的環上相鄰),誰不能操作誰輸,問誰贏?
分幾類來討論
\(k\geq n\),顯然肯定是先手勝。
\(k=1\),也就是一顆一顆取,顯然,n是偶數的時候先手勝。
\(k\not=1\)且\(k,一定是後手贏,因為先手取**你就對稱地取**,你不行了的時候,他肯定比你早不行的。
這就是對稱博弈,不算特別難。
\(\quad\)
棋盤類:hdu 2147
數字類:hdu 1525
日期類:hdu 1079
博弈論入門
博弈論 是二人或多人在平等的對局中各自利用對方的策略變換自己的對抗策略,達到取勝目標的理論。博弈論是研究互動決策的理論。博弈可以分析自己與對手的利弊關係,從而確立自己在博弈中的優勢,因此有不少博弈理論,可以幫助對弈者分析局勢,從而採取相應策略,最終達到取勝的目的。一.bash博弈 問題 只有一堆n個...
博弈論入門
參考 三個簡單的博弈論問題 博弈 1066 bash遊戲 原題傳送 有一堆石子共有n個。a b兩個人輪流拿,a先拿。每次最少拿1顆,最多拿k顆,拿到最後1顆石子的人獲勝。假設a b都非常聰明,拿石子的過程中不會出現失誤。給出n和k,問最後誰能贏得比賽。例如n 3,k 2。無論a如何拿,b都可以拿到最...
博弈論入門
什麼是博弈 通俗地講,博弈就是指遊戲中的一種選擇策略的研究。博弈的英文為 game 我們一般將它翻譯成 遊戲 而在英語中,game 的意義不同於漢語中的遊戲,它是人們遵循一定規則的活動,進行活動的人的目的是讓自己 贏 我們在和對手競賽或遊戲的時候怎樣使自己贏呢?這不但要考慮自己的策略,還要考慮其他人...