カードゲームの勝者の簡易版
私はこの問題をMathOverflowで質問しましたが、満足のいく答えはありませんでした。 Winnerと呼ばれるカードゲームを簡略化した次の2人用ゲームを考えてみましょう。(次の定式化は、MathOverflowに関するGuillaume Brunerieのコメントから引用されました。) AとBの2人のプレーヤーがいます。各プレーヤーにはカードのセット(サブセット)があり、両方のプレーヤーから見ることができます。ゲームの目的は、自分のカードを取り除くことです。最初のプレイヤーはテーブル上のカードをプレイし、次に他のプレイヤーは(厳密に)より大きなカードをプレイする必要があります。その後、テーブル上のカードは捨てられ、他のプレイヤーは再び任意のカードをプレイすることから始めます(その後に大きなカードが続きます)。そして、2人のプレイヤーのうちの1人がカードを使い果たしてゲームに勝つまで続きます。{1,…,n}{1,…,n}\{1,\dots,n\} プレイヤーにとって最高の戦略を知りたい(彼が勝てる場合)。 正式な定義 示す最初のプレーヤのカードのセットがあるゲームの構成、第二のプレーヤーのカードのセットである、及びテーブル上の最大のカードである、テーブルにカードがないことを意味します。最初のプレーヤーが構成勝利戦略を持っているかどうかを指定して、アルゴリズムに指定して計算したいと思います。w(i,A,B)w(i,A,B)w(i,A,B)AAABBBiiii=0i=0i=0i,A,Bi,A,Bi,A,Bw(i,A,B)w(i,A,B)w(i,A,B) 正式には、次のように定義された関数を計算するアルゴリズムが必要です。fff ましょう、。Zn={1,2,⋯,n}Zn={1,2,⋯,n}\mathbb{Z}_n = \left\{1, 2, \cdots, n\right\}Bool={False,True}Bool={False,True}\mathrm{Bool} = \left\{\mathrm{False}, \mathrm{True}\right\} 関数f:{0,1,⋯,n}×2Zn×2Zn→Boolf:{0,1,⋯,n}×2Zn×2Zn→Boolf:\;\left\{ 0, 1, \cdots, n \right\} \times 2^{\mathbb{Z}_n} \times 2^{\mathbb{Z}_n} \to \mathrm{Bool} where f(i,A,B)=⎧⎩⎨⎪⎪⎪⎪FalseTrueTrueFalseB=∅B≠∅∧∃j∈A:j>i,f(j,B,A−{j})=FalseB≠∅∧f(0,B,A)=Falseotherwisef(i,A,B)={FalseB=∅TrueB≠∅∧∃j∈A:j>i,f(j,B,A−{j})=FalseTrueB≠∅∧f(0,B,A)=FalseFalseotherwise f ( i, A, B ) = \begin{cases} \mathrm{False} & B = \emptyset \\ \mathrm{True} & B \ne \emptyset …