跳转至

Chapter 05 : 数论与组合模型

组合群式

Abstract

我们以伪币辨识这个例子来讲解组合群式

问题描述

12 枚外观相同的硬币中有一枚是伪币,伪币质量与真币不同。天平一次称量只能比较两端质量大小,不能读出质量数值。能否用天平称量三次找出伪币,并说明伪币相对真币偏轻或偏重。

群式分为组合群试和概率群式。

  • 组合群式:假定 \(n\) 枚硬币中有 \(k\) 枚是伪币,如何用尽可能少的检测次数(在任何情况下)找出全部的伪币
  • 概率群试:假定 \(n\) 枚硬币相互独立地以概率 \(p\) 可能是伪币,如何找出全部的伪币,使平均检测次数尽可能少

上面👆的这个问题属于组合群式,概率群式会在 Chapter 06 : 随机模型 中介绍


特殊情况

我们的例题其实是特殊情况,\(n=12,k=1\)

我们称后一次称量依赖于之前称量结果的方案为自适应(Adaptive)的,否则称为非自适应(Non-Adaptive)的


自适应方案

硬币真伪的可能性共有 \(12\times 2=24\) 种。每一种称量结果对应一种可能性,不同称量结果对应的可能性各不相同


非自适应方案

自适应方案缺点在于三次实验不能同时进行,这对一些称量周期大的实验来说是不可接受的。因此我们考虑非自适应方案。

下面是一个可能发生的例子:

Example

如果伪币为重,则在 1、4、9、10 中,如果伪币为轻,则在 2、5、7、12 中

此时不知伪币轻重,但是可以确定伪币在补集 3、5、9、11 中

如果伪币为重,则在 3、4、7、11 中,如果伪币为轻,则在 1、5、8、12 中

把我们判断轻重的部分放在一起,可以得到如下的判断表

每个判断中取三组的交集,即可得到伪币的位置


一般结论

对于单伪币来说,对任意整数 \(w>2\)

  • 若 \(3\leq n\leq\frac{3^w−3}{2}\),则存在一种非自适应的称量方案,使用 \(w\) 次称量可从 \(n\) 枚硬币中辨别伪币并确定轻重
  • 若 \(n>\frac{3^w−3}{2}\),则不存在自适应的称量方案,用 \(w\) 次称量即可从 \(n\) 枚硬币中辨别伪币并确定轻重

自适应方案——Dyson 集

满足以下条件的 \(w\) 元向量子集 \(S\subseteq\{-1,0,1\}^w\) 称为 Dyson 集:

  • \(\sum\limits_{\mathbf{v}\in S}\mathbf{v}=\mathbf{0}\),确保天平两端硬币数相等
  • \(\mathbf{v}\in S\),则 \(-\mathbf{v}\not\in S\),确保伪币唯一且能判断轻重

首先我们需要构造出这样的向量集(即准备好称重方案)。例如对于上面的例子,\(w=3\),我们构造出如下的向量集合:

对应到那 12 个硬币,1 表示在天平左侧,−1 表示在天平右侧,0 表示不在天平上。我们可以验证,这个集合满足 Dyson 集的条件。

然后我们进行称量,如果得到下面的结果:

那么我们可以得到 1,0,1(1 表示为重)这样的向量,这个向量就与伪币有关。如果我们硬币的标记为 1,0,1,那它就是重伪币;如果为 -1,0,-1,那它就是轻伪币。(在这里就能找出 5 为伪币且是轻伪币)

Dyson 集如何构造?
  • 构造映射 \(f:\{−1,0,1\}\rightarrow\{−1,0,1\}\),使得 \(f(−1)=0,f(0)=1,f(1)=−1\)。例如\((−1,0,1,1)\rightarrow (0,1,−1,−1)\),这样的映射有如下性质:

    • \(x+f(x)+f(f(x))=0,f(f(x))=x\)
    • \(f(-x)=-f(f(x)),f(-f(x))=-x,f(-f(f(x)))=-f(x)\)

  • \(\mathbf{f}:\{-1,0,1\}^w\rightarrow\{-1,0,1\}^w\),则 \(\mathbf{f}(\mathbf{x})=(f(x_1),...,f(x_w))\)

  • 记集合 \(S(\mathbf{x})=\{\mathbf{x},\mathbf{f}(\mathbf{x}),\mathbf{f}(\mathbf{f}(\mathbf{x})),−\mathbf{x},−\mathbf{f}(\mathbf{x}),−\mathbf{f}(\mathbf{f}(\mathbf{x}))\}\),有如下性质:
    • \(S(\mathbf{x})\) 中向量两两不同
    • 对任意 \(\mathbf{v}\in S(\mathbf{x}),\mathbf{f}(\mathbf{v})\in S(\mathbf{x})\)
  • 记集合 \(S^+(\mathbf{x})=\{\mathbf{x},\mathbf{f}(\mathbf{x}),\mathbf{f}(\mathbf{f}(\mathbf{x}))\}\),有如下性质:
    • \(\mathbf{x}+\mathbf{f}(\mathbf{x})+\mathbf{f}(\mathbf{f}(\mathbf{x}))=\mathbf{0}\)
    • \(\mathbf{v}\)\(-\mathbf{v}\)\(S^+(\mathbf{x})\) 中至多出现一次

我们要选取的就是属于\(S^+(x)\) 的向量,确保 \(\mathbf{v}\)\(-\mathbf{v}\) 在不同的子集中不被重复选取

因为我们不要 \(\{1,1,⋯,1\},\{0,0,⋯,0\},\{−1,−1,⋯,−1\}\),也不要 \(S^-(\mathbf{x})=\{−\mathbf{x},−\mathbf{f}(\mathbf{x}),−\mathbf{f}(\mathbf{f}(\mathbf{x}))\}\) 中的向量,所以我们可选取的向量个数为 \(\frac{3^w−3}{2}\) 个,也就印证了一般结论中的第一个结论。

那么如何选取 \(\mathbf{v}\in S(\mathbf{x})\) 使得 \(\sum\limits_{\mathbf{v}\in S}\mathbf{v}=\mathbf{0}\) 呢?我们寻找 \(\{−1,0,1\}^w\)\(m=\frac{3^w−3}{6}\) 个向量 \(\mathbf{v}_1,\mathbf{v}_2,...,\mathbf{v}_m\),使得 \(\{-1,0,1\}^w=S(\mathbf{v}_1)\cup S(\mathbf{v}_2)\cup ... \cup S(\mathbf{v}_m)\cup\{-\mathbf{1},\mathbf{1},\mathbf{0}\}\) ,即每个 \(\mathbf{v}_i(i=1,2,...,m)\) 对应着不同的 \(S^+(\mathbf{x})\)

然后需要分情况讨论:

分情况讨论

因为 \(\mathbf{x}+\mathbf{f}(\mathbf{x})+\mathbf{f}(\mathbf{f}(\mathbf{x}))=\mathbf{0}\),所以我们选取 \(S^+(\mathbf{v}_1)\cup S^+(\mathbf{v}_2)\cup S^+(\mathbf{v}_3)\cup...\cup S^+(\mathbf{v}_k)\)

选取如下:

选取如下:

至此,我们给出了一般情况下的非自适应方案。这就是为什么我们在第一次称量中要把硬币分成三组的原因。

评论