跳转至

04 组合群式 - 伪币辨识

约 1243 个字 8 张图片 预计阅读时间 6 分钟

问题背景

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

组合群式

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

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

这个问题是组合群试的问题。概率群式我们将在疾病检测中讨论。

特殊情况

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

自适应方案

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

Alt text

非自适应方案

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

我们先给出十二枚硬币三种称量

Alt text

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

Alt text

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

Alt text

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

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

Alt text

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

一般结论

对任意整数w>2 - 若 3n3w32,则存在一种非自适应的称量方案,使用 w 次称量可从 n 枚硬币中辨别伪币并确定轻重。 - 若 n>3w32,则不存在自适应的称量方案,用 w 次称量即可从 n 枚硬币中辨别伪币并确定轻重。

一般情况的非自适应方案

构造要能实现非自适应方案,需要满足Dyson集,即满足以下条件的w元向量子集S{1,0,1}w

  • vSv=0,确保天平两端硬币数相等
  • vS,则vS,确保伪币唯一且确定轻重

我们要先构造出这样的向量集,然后再放上去称。例如,对于w=3,我们可以构造出如下的集合

S={(1,1,1),(1,1,0),(0,0,1),(1,1,1),(1,0,1),(0,1,0),(1,1,1),(0,1,1),(1,0,0),(1,1,0),(1,0,1),(0,1,1)}

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

如果最后的结果如下图所示,

Alt text

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

构造Dyson集

构造映射f:{1,0,1}{1,0,1},使得f(1)=0f(0)=1f(1)=1。例如(1,0,1,1)(0,1,1,1)

记集合S(x)={x,f(x),f(f(x)),x,f(x),f(f(x))}S(x)+={x,f(x),f(f(x))}。我们要选取的就是属于S(x)+的向量。

因为我们不要{1,1,,1}{0,0,,0}{1,1,,1},且不要S(x)={x,f(x),f(f(x))}中的向量,所以我们可选取的向量个数为3w32个,也就印证了一般结论中的第一个结论。

那么如何选取vS(x)使得vSv=0呢?我们先寻找{1,0,1}w3w36个基本向量,每个对应着不同的S(x)+

然后需要分情况讨论。

w 次称量可从 n 枚硬币中辨别伪币并确定轻重

  • n=3k时,因为x+f(x)+f(f(x))=0,所以我们选取:S+(v1)S+(v2)S+(v3)S+(vk)
  • n=3k+1Alt text
  • n=3k+2Alt text

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