博弈論進階之Every-SG

Every-SG

給定一張無向圖,上面有一些棋子,兩個頂尖聰明的人在作遊戲,每人每次必須將能夠移動的棋子進行移動,不能移動的人輸php

博弈分析

題目中的要求實際是「不論前面輸與否,只要最後一個棋子勝利,那麼就算勝利」html

這樣的話,能贏得遊戲必須贏spa

由於兩我的都頂尖聰明,所以當一我的知道某一個遊戲必定會輸的話,它必定會盡力縮短遊戲的時間,當它知道某一個遊戲必定會贏的話,必定會盡力延長遊戲的時間(畢竟都是爲了追求最終的勝利嘛233)htm

可是!咱們怎麼來處理時間的?暴力枚舉博弈樹確定是不可取的,so咱們來研究一下這個問題blog

定義Every-SG遊戲遊戲

  • 對於尚未結束的單一遊戲,遊戲者必須對該遊戲進行一步決策;
  • 其餘規則與普通SG遊戲相同

Every-SG遊戲與普通SG遊戲最大的不一樣就是它多了一維時間get

對於\(SG\)值爲\(0\)的點,咱們須要知道最少須要多少步才能走到結束,
對於\(SG\)值不爲\(0\)的點,咱們須要知道最多須要多少步結束class

這樣咱們用\(step\)變量來記錄這個步數變量

\(step(u) = \begin{cases} 0, & \text{$u爲終止狀態$}\\ max\{step(v)\}, & \text{ $sg(u)\neq 0\land v爲u的後繼\land sg(v)=0$ }\\ min\{step(v)\}, & \text{$sg(u)=0\land v爲u的後繼$} \end{cases}\)移動

定理

對於Every-SG遊戲先手必勝當且僅當單一遊戲中最大的step爲奇數。

定理是顯然的:最大的單一遊戲步數若是是奇數的話那麼確定是先手取得進行最後一步,不然必定是對手取走最後一個棋子。

例題

這種題目不怎麼好找,到如今也就找到一道

HDU 3595

題解

相關文章
相關標籤/搜索