1. 程式人生 > >模板:博弈論常用SG函式

模板:博弈論常用SG函式

博弈論常用SG函式

一個局面的 SG 為 mex(後繼局面的 SG),mex 運算為集合中沒出現的最小的自然數。幾個 局面的和的 SG 為單個的 SG 異或,SG 不為 0 時先手必勝,SG 為 0 時後手必勝。

Nim Game

n 堆石子,每次可以從一堆裡面取任意個石子。對於一堆石子,SG 函式就是石子數。整個 遊戲的 SG 函式是每一堆石子的 SG 函式的異或和。 必勝:SG 不為 0,必敗:SG 為 0。

Bash Game

每次最多取 m 個石子,其他同 Nim。一堆石子的 SG 函式為石子數 mod(m + 1)。 必勝:SG 不為 0,必敗:SG 為 0。

Nim-k Game

每次最多可以同時從 k 堆石子進行操作,這 k 堆可以取不同數量的石子。 一堆石子的 SG 函式為石子數,對每一個二進位制位單獨算,求 SG 函式每一個二進位制位 1 的個數 mod(k + 1),如果都為 0,則必敗,否則必勝。

Anti-Nim Game

不能取石子的一方獲勝。 必勝:SG 不為 0 且至少有一堆石子數大於 1,SG 為 0 且每一堆石子數都不超過 1 必敗:其餘為必敗。

Anti-SG Game SG

遊戲中最先不能行動的一方獲勝。 必勝:SG 不為 0 且至少有一個遊戲的 SG 大於 1,SG 為 0 且每一個遊戲的 SG 都不超過 1 必敗:其餘為必敗。

Staircase Nim

階梯博弈,每次可以從一個階梯上拿掉任意數量石子放到下一層階梯,不能操作的為輸。 SG 函式為奇數階梯上的石子的異或和,如果移動偶數層的石子到奇數層,對手一定可以 繼續移動這些石子到偶數層,使得其 SG 不變。 必勝:SG 不為 0,必敗:SG 為 0。

Lasker’s Nim Game

n 堆石子,每次可以從一堆裡面取任意個石子,或者選擇某堆至少為 2 的石子,分成兩堆 非空石子。 SG(0) = 0,SG(1) = 1,SG(2) = 2,SG(3) = 4。 對於 k ≥ 1,SG(4k) = 4k−1,SG(4k+1) = 4k+1,SG(4k+2) = 4k+2,SG(4k+3) = 4k+4。

Wythff Game

有兩堆石子,每次可以從一堆或者兩堆裡拿走一樣數目的石子,不能取的為輸。 必敗態為 (1,2)(3,5)(4,7)(6,10)…,差為 1、2、3、4… 每一對數的第一個數為前面沒出現的最小的正整數。
遞推公式:a[k]=⌊k(1+√5)/2⌋,b[k]=a[k]+k

翻硬幣遊戲

n 枚硬幣排成一排,有的正面朝上,有的反面朝上。遊戲者根據某些約束翻硬幣(如:每 次只能翻一或兩枚,或者每次只能翻連續的幾枚),但他所翻動的硬幣中,最右邊的必須是從正 面翻到反面。誰不能翻誰輸。 需要先開動腦筋把遊戲轉化為其他的取石子游戲之類的,然後用如下定理解決: 局面的 SG 值等於局面中每個正面朝上的棋子單一存在時的 SG 值的異或和。

每一次只能翻轉一枚硬幣

SG(0) = 0,SG(k) = 1(k > 0)。

每一次可以翻轉一枚或兩枚硬幣

SG(n) = n。

Twins Game

每次必須翻動兩個硬幣,而且這兩個硬幣的距離要在可行集 S = 1,2,3 中,相當於 Bash Game。

每一次必須翻連續的 n 個硬幣

SG(nk) = 1(k > 0),其他 SG 函式值為 0。

Ruler Game

每一次可以翻任意長度的連續一段硬幣,SG(x) 為 x 中包含的 2 的最高次冪,即 SG(x) = ⌊log2 x⌋+ 1

相關推薦

模板博弈論常用SG函式

博弈論常用SG函式 一個局面的 SG 為 mex(後繼局面的 SG),mex 運算為集合中沒出現的最小的自然數。幾個 局面的和的 SG 為單個的 SG 異或,SG 不為 0 時先手必勝,SG 為 0 時後手必勝。 Nim Game n 堆石子,每次可以

牛客小白賽7 B自殺遊戲 (博弈論SG函式

時間限制:C/C++ 1秒,其他語言2秒 空間限制:C/C++ 32768K,其他語言65536K 64bit IO Format: %lld 題目描述 Alice和Bob產生了不可調節的矛盾,於是他們相約一起玩一個自殺遊戲,輸的人就會從這個世界上消失。 遊戲開始時,

博弈論SG函式的解釋與運用

序:博弈是資訊學和數學試題中常會出現的一種型別,演算法靈活多變是其最大特點,而其中有一類試題更是完全無法用常見的博弈樹來進行解答。 尋找必敗態即為針對此類試題給出一種解題思路。 此類問題一般有如下特點: 1、博弈模型為兩人輪流決策的非合作博弈。即兩人輪流進行決策,並且兩人

Kotlin學習之常用高階函式filter

與filter相似的還有以下幾個: filterNot()和filterNotTo():與filter相反,這兩個函式會過濾出不符合條件的元素; filterIndexed()和filterIndexedTo():這兩個函式接受(Int,T)->Boolean型別的函式,同時檢

POJ 2311 Cutting Game 博弈論 SG 函式的理解

傳送門 這題是對 SG 函式本質理解的一個絕佳的題目 之前我們做題的時候大多都是 Nim 博弈,想當然的認為 SG 函式用二進位制數表示一個局面用的是棋子個數,並且也只適用於這個局面,甚至認為 SG 函式只能解決 Nim 類的題目,並且想當然的認為最初狀態(即0的時候) SG = 0

Numpy攻略Numpy常用函式之斐波那契數列

NumPy 是一個 Python 的第三方庫,代表 “Numeric Python”,主要用於數學/科學計算。 它是一個由多維陣列物件和用於處理陣列的例程集合組成的庫。 1.sqrt函式:計算平方根 示例:黃金分割比的計算 程式碼段如下: import numpy #使

MySqlSQL常用操作、函式、事物和索引

MySQL是一個關係型資料庫管理系統,在開始學習MySQL資料庫前,讓我們先了解下RDBMS的一些術語: 資料庫: 資料庫是一些關聯表的集合。 資料表: 表是資料的矩陣,在一個數據庫中的表看起來像一個簡單的電子表格。 列:一列(資料元素) 包含了相同的資料,例如郵政編碼

JSK 習題圖類遊戲-SG函式-dfs法

思路: 對於圖上的sg函式,常用dfs或深度優先搜尋 程式碼: #include <iostream> #include <math.h> #include <vector> #include <string.h>

博弈論知識點總結(巴什博奕 威佐夫博弈 尼姆博弈 SG()函式介紹)

總結 真心感謝博主,終於知道為什麼尼姆博弈用異或來解決。 SG函式模板: void init()//根據題目要求進行修改 { a[0]=1; for(int i=1;i<=32;i

第六課js常用物件和函式

  這節課講講js常用的物件和函式   //這課講js常用物件和函式 //判斷一個物件是否是陣列 // Array.isArray(); //開啟一個新頁面,其實是傳送一個請求 /**  * @Param url: 要開啟的頁面的連結(要傳送請

uva1482Playing With Stones (SG函式

題意:有N堆石子,每次可以取一堆的不超過半數的石子,沒有可取的為輸。 思路:假設只有一堆,手推出來,數量x可以表示為2^p-1形式的必輸。 但是沒什麼用,因為最後要的不是0和1,而是SG函式;所以必輸的為0,那麼其他的呢? 我們可以發現SG=0的位置是1,3,7,15,31....  &nbs

HDOJ 1848 Fibonacci again and again --- SG函式模板

Problem Description 任何一個大學生對菲波那契數列(Fibonacci numbers)應該都不會陌生,它是這樣定義的: F(1)=1; F(2)=2; F(n)=F(n-1)+F(n-2)(n>=3); 所以,1,2,3,5,8,13……就是菲

noip複習聯賽常用模板

快速排序: #include<bits/stdc++.h> using namespace std; #define maxn 100000 #define read(x) scanf("

hihor 學習日記hiho一下 第四十六週(SG函式

http://hihocoder.com/contest/hiho46/problem/1 這個SG函式算是講的比較易懂了, AC程式碼: #include <bits/stdc++.h> using namespace std; #define LL long l

《崔慶才Python3網路爬蟲開發實戰教程》學習筆記(2)常用函式的安裝與配置

python的一大優勢就是庫函式極其豐富,網路爬蟲工具的開發使用也是藉助於這一優勢來完成的。那麼要想用Python3做網路爬蟲的開發需要那些庫函式的支援呢? 與網路爬蟲開發相關的庫大約有6種,分別為: 請求庫:requests,selenium,ChromeDrive

博弈論-SG函式SG定理

1.SG函式和SG定理是一個十分神奇的東西,有了它,絕大部分的博弈都可以被統一到這個上面,都可以使用SG函式解決。是一種解決博弈問題的十分方便的手段。 2.首先給出一些基本的定義:mex運算,這個是作用在集合上的運算,具體的含義就是:找出不屬於當前集合最小的非負整數,可能你有點暈,我們看幾個例子

2019.01.03-sg函式模板

#include<bits/stdc++.h> #define il inline #define _(d) while(d(isdigit(ch=getchar()))) using namespace std; const int N=1e5+5; int f[

JUnit自動化單元測試(三)常用註解和測試函式詳細講解

@Test:將一個方法修飾成一個可測試的方法;只有@Test修飾之後,這個方法才會被JUnit執行。 @Test(expected=XXException.class):表示這個方法一定會丟擲某個異常

python3__深度學習TensorFlow__常用內建函式說明

tf.constant (value, dtype=None, shape=None, name="Const", verify_shape=False): 建立一個常數張量 value: 常數值,或list dtype: 結果張量中元素的型別 shape:

博弈論進階之SG函式

SG函式 個人理解:SG函式是人們在研究博弈論的道路上邁出的重要一步,它把許多雜亂無章的博弈遊戲通過某種規則結合在了一起,使得一類普遍的博弈問題得到了解決。 從SG函式開始,我們不再是單純的同過找規律等方法去解決博弈問題,而是需要學習一些博弈論中基本的定理,來找到他們的共同特點 那麼就先介紹幾個最基本的定理(