博弈論一般性解法總結

2021-07-26 12:28:12 字數 722 閱讀 8508

用乙個 n 元組(a1, a2, …, an),來描述遊戲過程中的乙個局面,局面用s表示;

用符號#s,表示局面 s 所對應的二進位制數;

定義集合 g(#s)為局面s的下一步可能出現的局面的二進位制數的集合;

令非負整數集為全集,集合 g(x)表示集合 g(x)的補集;

定義函式 f(n):f(n)=min,即 f(n)等於集合 g(n)中的最小數;

設局面 s=(a1, a2, …, an),則ans=f(a1)+f(a2)+…+f(an),此處的「+」為一位的二進位制加法;

若ans=0,則後行者必勝,反之先行者勝。甲乙從n堆石頭a1,a2,a3,…,an中取石頭,每次只能且必須從其中任意一堆中取不少於1個石頭(可以全部取完),誰無法繼續取,誰則輸。若甲先取,則問甲是否必勝。

分析:

假設給定局面為(3,3,7,4)共4堆石頭。

g(0)={},g(0)=,f(0)=0;(沒有下乙個局面)

g(1)=,g(0)=,f(1)=1;(取1個,剩0個)

g(2)=,g(0)=,f(2)=2;(取1個,剩1個;取2個,剩0個)

g(3)=(0,1,2),g(0)=,f(3)=3;

……….(以此類推)

最後得:x1

2345

67f(x)12

3456

7 ans=f(3)+f(3)+f(7)+f(4)=1,因此甲必勝。

一般性原則

1 遵循原來的編碼風格 當更改原來的 的時候,你的所有改變都應遵循原來的風格,不要引入乙個新的風格,不要試圖更改原來的 僅僅用來符合新的風格。在乙個檔案內擁有不同的 風格會使程式非常的難以閱讀和理解。從寫原來的 來改變它的風格有可能會引入一些可以避免的過失或錯誤。2 遵循最少意外原則 這個原則是建議...

錢包的一般性介紹

最近有很多朋友問我關於錢包的一些知識,為避免重複回答,下文做簡要一般性介紹,以後有人再問就直接給本文章的鏈結 顧名思義,錢包是用來儲存錢的。但在數字貨幣的世界中,錢包裡面並沒有 錢 錢包賬戶裡有多少 錢 都是記錄在區塊鏈上的,錢包裡只是儲存了賬戶對應的 私鑰,賬戶是從私鑰相應的公鑰衍生出來的。只要有...

GDI 中發生一般性錯誤

替代方法 建立非索引映像。建立索引映像。這兩種情況下,原始 位圖 上呼叫 bitmap.dispose 方法刪除該檔案上鎖或刪除要求,流或記憶體保持活動。建立非索引影象 即使原始映像被索引格式中該方法要求新影象位於每畫素 超過 8 位 非索引畫素格式。此變通方法使用 graphics.drawima...