MathLabs

第3問

嘘つき当てゲームでは、A が 1≤x≤N1\le x\le N を満たす整数 xx を選び、B に NN を知らせる。B は任意の正整数集合 DD について「xx は DD に属するか」と質問する。A は各質問に真または偽で答えられるが、任意の連続する k+1k+1 個の回答のうち少なくとも一つは真でなければならない。有限回の質問の後、B は高々 nn 個の正整数からなる集合 XX を指定し、x∈Xx\in X なら勝ちである。(a) n≥2kn\ge2^k なら B が勝利を保証できること、(b) 十分大きいすべての kk に対し、n≥1.99kn\ge1.99^k でどの戦略も勝利を保証できないものがあることを示せ。
ステップ 2/3: 候補が 2k2^k 個より多ければ一つ除外できる
ざっくり言うと

前の真の回答候補集合でまだ覆われていない候補の中で次の質問を選び、二つの大きな半分を保つ。最後に一つの候補が覆われない状態にする。

N≥2k+1⟹reduce the candidate set by oneN\ge2^k+1\Longrightarrow\text{reduce the candidate set by one}
詳しい解説

現在の候補集合 S の大きさが N≥2k+1N\ge2^k+1 だとする。D1D_1 を両側が少なくとも 2k−12^{k-1} 個になるよう選ぶ。P1P_1 の後、D2D_2 を選び、D2∩P1cD_2\cap P_1^c と D2c∩P1cD_2^c\cap P_1^c がそれぞれ少なくとも 2k−22^{k-2} 個になるようにし、j 回後の未被覆集合が二つの部分をそれぞれ少なくとも 2k−j2^{k-j} 個持つよう続ける。k 回後、P1∪⋯∪PkP_1\cup\cdots\cup P_k の外の一点を Dk+1D_{k+1} とする。Pk+1=Dk+1cP_{k+1}=D_{k+1}^c ならその一点を捨てる。Pk+1=Dk+1P_{k+1}=D_{k+1} なら S∖Dk+1S\setminus D_{k+1} 上で k 段階を繰り返す。すると Pk+1∪⋯∪P2k+1P_{k+1}\cup\cdots\cup P_{2k+1} は x を含み、少なくとも一つの候補を含まない。従って B は候補を一つ減らせる。これを繰り返して候補を 2k2^k 個以下にし、その全体を X とすればよい。