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 则 B 获胜。证明:(a) 若 n≥2kn\ge2^k,B 可以保证获胜;(b) 对充分大的每个 kk,存在 n≥1.99kn\ge1.99^k 使任何策略都不能保证获胜。
第 2/3 步:候选超过 2k2^k 个时 B 可排除一个
通俗地说

在尚未被前面可能的真实集合覆盖的候选中继续提问,并保持两个足够大的半块,直到有一个候选未被覆盖。

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 次后,取 Dk+1D_{k+1} 为 P1∪⋯∪PkP_1\cup\cdots\cup P_k 外的一个单点。若 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 可将 N 减少一。反复操作直到候选至多剩 2k2^k 个,再把整个候选集作为 X。