假币称量问题是最古老的算法谜题之一:有 枚外观完全相同的硬币,其中混有若干枚假币——所有真币重量相同,所有假币重量也相同,但假币比真币轻。我们手里只有一架天平,每次称量可以把任意两堆数量相同的硬币分别放上左右盘,天平只回答一个比特:平衡倾斜(它不告诉我们哪一边更轻)。目标是用尽可能少的称量次数,把所有假币的位置全部找出来。

本词条讨论该问题的”多假币”版本:已知假币恰好有 枚,并且承诺 。我们将看到:

  • 经典算法(包括任何自适应策略)需要 次称量,而且这一信息论下界在量级上是紧的;
  • 量子算法只需要 次称量——不仅把对 的依赖压到了四次根,而且完全消去了对 的依赖

这个问题的研究历史本身就很有启发性。早在 1997 年,Terhal 与 Smolin 就解决了 的特例:他们证明单次量子查询即可在 枚硬币中找出唯一一枚假币,而经典算法需要 次称量(见文末 Zoo 编号 137)。十几年后,Iwama、Nishimura、Raymond 与 Teruyama 把结果推广到一般的 ,给出 的量子算法(Zoo 编号 136),本词条讲解的正是后者的构造。

为什么这个问题值得放进查询复杂度一章?因为它是”用弱 oracle 模拟强 oracle”这一范式的教科书式例子。天平 oracle 只告诉我们”两边假币数是否相等”,信息量少得可怜;而我们真正想要的是能直接回答”某个子集里假币数的奇偶性”的 inner-product parity oracle——有了它,Bernstein–Vazirani 算法一次查询就能读出整串 。Iwama 等人的核心想法是:用量子叠加同时尝试所有随机分盘方案,用振幅放大把”存在平衡分盘”这一事件放大成可测的信号,从而近似地模拟出 parity oracle。整个算法因此是三个我们已经学过的工具的嵌套:

  1. 随机分盘 + 天平称量:把”假币数为偶数”转化为”存在平衡分盘方案”;
  2. 振幅放大(见 Grover 与振幅放大):把 的平衡概率放大到常数,代价是 次称量;
  3. Bernstein–Vazirani 算法(见 Bernstein–Vazirani 算法):用模拟出的 parity oracle 一次恢复假币串。

标题中的”四次方加速”(quartic speedup)指的是量子查询数 的四次根;后文会看到这个 恰好是”两次开平方”各贡献一半的产物。

1. 问题的精确表述与 Balance Oracle

1.1 物理设定

用长度为 的比特串

标记假币的位置: 当且仅当第 枚是假币。这里 是 Hamming 权重,即假币总数。承诺条件 的作用要到本节末才能看清:它用来消除一类oracle 本身永远无法消除的二义性。

设真币重量为 ,假币重量为 。一次称量用一个查询串

来描述: 表示把第 枚放左盘, 表示放右盘, 表示本次不称。约束 保证左盘的硬币数 与右盘的硬币数 相等——这是天平称量的物理前提:只有两盘数量相同,重量的差异才能归因于假币。

1.2 天平答案的代数形式

天平的回答是

为什么”倾斜”恰好对应 ?直接计算左右两盘的重量差。注意 只对”被称量的假币”非零:它在左盘假币上取 ,在右盘假币上取 。因此

两盘的总重量分别为( 为左右盘硬币集合,

(即 ),真币的贡献 恰好抵消,于是

因为 ,天平平衡()当且仅当 ,即左右两盘的假币数相等。这里用到了一个关键假设:所有假币等重。如果假币轻重不一,重量差就不再是假币数之差的简单函数,整个构造都会失效。

天平的回答只有一个比特,量子化采用标准的相位 oracle 约定(与 Grover 算法中的相位翻转约定一致):

也就是说,倾斜的查询串相位翻转,平衡的查询串不变。注意这个 oracle 比”直接回答 “弱得多:它连 的符号都不给(天平不告诉我们哪边轻),更不用说具体数值了。

1.3 互补二义性与 承诺

Balance oracle 有一个与生俱来的盲区:

Lemma 1. 对任何合法查询串 (满足 ),都有 ,其中 的补串。因此,任何只使用 balance oracle 的算法——无论经典还是量子——都不可能区分

证明。由

所以 ,即 。Q.E.D.

这个结论的物理含义很直白:把”假币”与”真币”的身份整体互换,每次称量的平衡/倾斜结果完全不变(变的是倾斜的方向,而天平恰恰不报告方向)。换句话说,balance oracle 的世界里, 是同一个问题的两个名字。

承诺条件 正是用来在最后打破这个二义性的。两个候选串的 Hamming 权重满足

因此 恰好有一个小于 。算法无论输出 还是 ,只要取其中 Hamming 权重小于 (也就是权重为 )的那一个,就唯一确定了假币串。后文会看到,模拟出的 parity oracle 同样只能把 确定到”互补对” ,届时同样用这条承诺收尾。

2. 经典算法的瓶颈

在进入量子构造之前,先把经典极限讲清楚,这样才能看清量子加速到底加速了什么。

2.1 信息论下界

经典识别所有假币需要

次称量。推导分两步,每步都只用一个简单事实。

第一步,数候选。假币串 可以是 中任意一个权重为 的串,候选总数为 。天平每次只回答一个比特(平衡/倾斜),所以任何决策树式算法的称量次数 必须满足 ,即

第二步,估计 。我们用标准的组合不等式

下界的证明是逐项比较:

其中 成立,因为交叉相乘后等价于 ,即 ,即 。上界的证明:,而由 ,代入即得

对不等式取对数:

所以在 的范围内(,常数项 被吸收),

2.2 下界是紧的,瓶颈在哪里

这个下界在量级上是紧的:经典的自适应策略(大致思想是反复把”尚未排除的候选集合”对半分盘称量,逐步缩小每枚假币的搜索范围)可以用 次称量找出全部假币。因此经典查询复杂度就是

注意这个表达式的两个因子各自的来源: 是”定位一枚假币”所需的二分信息量, 是假币的枚数——经典算法本质上是一枚一枚(或一批一批)地找,总数随 线性增长。量子算法要做的,正是把这个关于 的线性依赖压成 ,并且彻底消去 因子。

3. 如果有 Inner-Product Oracle,一次查询就够

现在暂时忘掉天平,设想我们手里有一个强得多的理想 oracle:对任意 (注意定义域是普通比特串,不再是 ),它施加

其中 是模 2 内积。这是标准的 Bernstein–Vazirani oracle:在均匀叠加 上调用一次,相位反冲(phase kickback)把 写进相位,再做 就直接测得 ——一次查询恢复全部 个比特。

3.1 为什么必须限制在偶权查询

回到天平的世界,有一个物理约束立刻跳出来:能上天平的查询必须满足”两盘数量相等”。给定 ,最自然的分盘方式是把指标集 分成等大的两半,一半放左盘、一半放右盘。这要求 偶数。奇权查询根本无法上天平,所以我们只能退而求其次:把 Bernstein–Vazirani 限制在偶权查询的子空间上。问题是,只用偶权查询还能不能恢复 ?答案是”能,但只能恢复到互补对”。

3.2 偶权 Fourier 引理

权重为偶数的串恰好占 的一半,共 个(配对 给出一一对应,每对恰有一个偶权串)。考虑在偶权均匀叠加上调用理想 parity oracle:

Lemma 2. 对任意

证明。逐步计算 计算基 上的振幅。第一步,展开 Hadamard 变换的定义 ,代入得振幅

第二步用了 把两个相位合并成 。问题归结为求和式

第三步,用奇偶投影技巧把”只枚举偶权串”改写为代数运算。” 为偶数”的指示函数可以写成 (偶权时为 ,奇权时为 ),于是

第四步,分别计算两个和。 就是标准 Fourier 正交性: 时每项为 ;否则按坐标分解为 )。对 ,注意 ,所以指数可以按坐标分配:

其中最后一个等号是因为:因子 时等于 ,在 时等于 ,所以整个乘积非零当且仅当每一位 ,即 (全 1 串)。合并得

第五步,代回振幅。 非零当且仅当 ,即 ;此时

所以 。Q.E.D.

证明的第三步到第四步值得停下来体会:限制在偶权查询上,代价是把 Fourier 变换的输出从”单点 “变成了”两点 “。这不是分析不够精细,而是信息真的丢失了——奇权查询恰好携带区分 的那部分信息,而我们用不了它们。好在这与 Lemma 1 的互补二义性是同一个二义性,并不造成额外损失:测量得到 各以概率 ,然后用 承诺取权重较小的那个即可。

至此,整个算法的”顶层设计”完成了:只要我们能用 balance oracle 模拟出(近似)parity oracle ,剩下的就是一次偶权 Bernstein–Vazirani。 接下来两节解决唯一剩下的问题:奇偶相位从哪里来。

4. 随机分盘:把”假币数为偶”变成”可能平衡”

4.1 分盘方案与奇偶性的联系

固定一个偶权查询 ,记其支持集

一次天平查询对应一个分盘方案:把 平分为左右两盘 ,其中 ;左盘对应 ,右盘对应 。设这个子集中恰好有

枚假币(注意 ,且 正是我们想模拟的奇偶相位)。天平平衡当且仅当两盘假币数相等(第 1.2 节的结论),即

由此立刻得到奇偶性的关键观察:

  • 为奇数 不是整数,任何分盘方案都不可能平衡——所有 种分盘全部倾斜;
  • 为偶数:平衡当且仅当左盘恰好分到 枚假币,这样的分盘方案确实存在。

也就是说,“是否存在平衡分盘”这一性质恰好等于” 为偶数”。如果我们能可靠地探测前者,就实现了后者,也就实现了 parity oracle 的相位 。边界情形 也自动正确:子集中没有假币,任何分盘都平衡,相位为

4.2 随机分盘的平衡概率

怎样探测”存在性”?朴素的经典思路是随机试:均匀随机地选一个等分方案 (共 种),称一次;如果运气好碰到平衡分盘就知道了。这引出核心量——随机分盘的平衡概率。当 时,超几何分布给出精确值

分子是从 枚假币中选 枚、从 枚真币中补足剩下 个位置的方式数,分母是所有等分方案数。

这个精确表达式不方便直接使用,我们采用如下启发式处理(这是本算法分析中模型依赖的一步,稍后会说明其地位):当子集远大于假币数()时,每枚假币近似独立地以概率 落入左盘,于是”恰好 枚落左盘”的概率趋近于二项分布的中项

用 Stirling 公式 估计中心二项式系数:

因此

最后一步用了 数值小例子(即 )时 )时 ,与渐近值 已经很接近。

小结这一节的逻辑链:

“奇偶之分”被翻译成了”平衡概率是零还是 “。但 太小,直接随机尝试需要 次称量——下一节用振幅放大把这个开销再开一次平方。

4.3 一处必须交代的保留条款

上面的 是在”子集远大于假币数、各假币近似独立落盘”的启发式极限下得到的;对一般的 ,精确的超几何概率需要更细致的分析。这个启发式步骤在原论文(Zoo 编号 136)中对应 big-pan(大盘)一类的结构性假设;同样地,第 5 节将要使用的”均匀随机分盘”对应论文中的 random-partition 结构。正如第 6 节会强调的:论文只在满足这些结构的算法框架内给出了匹配的查询下界证据,不能据此宣称 是无条件最优的。本词条保留这一限定,后文所有涉及 的复杂度表述都应在这一启发式框架下理解。

5. 振幅放大与四次根的来源

5.1 把分盘方案放进叠加

经典随机尝试的量子化是彻底的:不要”随机选一个分盘”,而是对所有分盘方案取均匀叠加。具体地,对每个处于叠加态中的偶权查询 ,附加一个辅助寄存器,相干地制备

这一步不消耗任何 oracle 查询:给定 ,枚举其支持集的所有等分方案是一个已知的、可逆的经典计算,可以做成不含 oracle 的酉电路。接着调用一次 balance oracle,把所有平衡分盘标记出来(相位翻转)。此时辅助寄存器的态可以分解为

其中 是所有平衡分盘的(归一化)均匀叠加, 是倾斜分盘的叠加, 就是第 4 节的平衡概率。

5.2 第一次开平方:概率变成振幅

注意这里已经发生了一次开平方:平衡事件的概率是 ,但它在量子态中以振幅 出现。由 ,平衡分支的振幅只有

这正是振幅放大框架(见 Grover 与振幅放大)的标准输入:一个以振幅 落在”好状态”上的制备过程。

5.3 第二次开平方:振幅放大的 Grover 加速

振幅放大定理说:若一个酉过程以概率 制备出好状态,则只需调用该过程 次,就能把好状态的概率放大到常数。套用到这里(,“好状态”= 平衡分盘):

次调用。每次调用包含一次 balance oracle 查询(用来标记平衡分盘),其余都是无 oracle 的可逆计算。所以探测”是否存在平衡分盘”的查询成本是 次称量

对比两条路线,可以清楚地看到两次开平方各在哪里:

  • 经典随机尝试:重复 次称量;
  • 量子路线:概率先开平方变成振幅 (第一次开平方),振幅放大再开平方,迭代数 (第二次开平方)。

总查询数关于 的指数是 。由于 ,最坏情况取 ,得到 次称量——这就是”四次方加速”的全部来历。

5.4 施加相位与清除辅助寄存器

完成”寻找平衡分盘”的放大之后,按结果给 分支打上奇偶相位:

  1. 若放大成功(找到了平衡分盘):由第 4 节,这意味着 为偶数,施加相位
  2. 若不存在平衡分盘 为奇数,所有分盘恒倾斜,放大必然失败):施加相位
  3. 反向运行分盘制备与振幅放大的全部电路(uncompute),把辅助寄存器恢复到 ,只留下相位。

净效果就是在 上实现了

即 parity oracle。相位取值的正确性直接来自第 4.1 节的对应关系:平衡存在

5.5 为什么是”近似”实现,以及总账目

上面的描述隐含了一个简化:振幅放大把成功概率放大到接近 ,但对不同的 分支, 不同、所需的精确迭代次数也不同,而我们并不知道各分支的 。统一运行固定的 次迭代后,各分支会残留小的错误振幅,所以第 5.4 节实现的是 parity oracle 的近似版本。好在 Bernstein–Vazirani 的读出对小的常数级相干误差是稳健的——最终算法是一个有界错误算法;当 已知时还可以进一步做成零错误(见第 6 节)。

最后清点总查询数,这也是整个算法最漂亮的一笔账:

  • 的均匀叠加,第 5.1–5.4 节的模拟过程是相干地、一次性地作用在所有分支上的——每个分支的放大并行进行,总查询数由最坏分支决定,即 不需要乘上分支数
  • 模拟完成后,执行一次偶权 Bernstein–Vazirani(第 3 节),它不引入新的 oracle 类型,parity 查询已经包含在上一步中;
  • 测量得到 ,用 承诺取权重较小者。

总查询复杂度:

对比经典的 :量子算法把关于 的依赖从线性压到四次根,并把 因子整体消去。

6. 精确性、已知 与下界边界

本节交代算法的若干精细性质与已知结果的边界,其中包含若干保留条款,阅读复杂度结论时应一并记住。

已知 时的零错误版本。 如果 事先已知,那么每个分支上可能的 取值范围也是已知的。此时可以用精确振幅放大(exact amplitude amplification,即通过调整反射算子中的相位,把成功概率精确放大到 的变体)或分阶段搜索:按 的可能取值分阶段运行放大,每个阶段用恰好匹配的迭代次数。这样每个分支的奇偶相位都是精确的,最终算法零错误。

未知 时。 如果 未知,可以用变长的量子搜索(QSearch 型策略:指数增长地试探迭代次数)得到有界错误的 型算法,代价是停止时机与精确相位校正的处理更复杂。本词条不展开细节。

经典下界回顾。 第 2 节已经证明经典算法需要 次称量,它来自”答案只有一比特、候选串有 个”的纯信息论论证。

量子下界的现状(保留条款)。 量子算法把对 的依赖完全消去了,但一个匹配的、无条件的 量子查询下界尚未被证明。原论文(Zoo 编号 136)只对满足 big-pan 与 random-partition 等结构性假设的一类算法给出了该下界的证据——也就是说,“在这个框架内 是最优的”,而不是”任何量子算法都不可能做得更好”。因此 不能写成无条件最优;这是本问题仍然开放的一面。

7. 的直观特例(含完整手算)

一般的构造比较间接,先看 的特例能建立直觉:此时连振幅放大都不需要。

7.1 一枚假币时,balance oracle 就是 parity oracle

时,任何查询子集内至多有一枚假币。取偶权查询 ,把子集 任意等分到两盘,逐情形分析:

  • 假币不在 ):两盘全是真币且数量相等,天平必平衡,
  • 假币在 ):唯一的假币落在某一盘,该盘更轻,天平必倾斜,

两种情形合并就是

balance oracle 精确等于 parity oracle,无须随机分盘、无须振幅放大——因为”存在平衡分盘”这个随机事件退化成了确定事件。于是对所有偶权 取均匀叠加、调用一次 balance oracle、再做 ,由 Lemma 2 直接得到

测量后用权重判据(,而 )挑出 单次量子称量就找到了唯一假币的位置,而经典算法需要 次(信息论下界 次,二分称量可以达到)。这正是 Terhal–Smolin 的”单量子查询检索数据库”思想(Zoo 编号 137),也是整个 算法的灵感起点。

7.2 的完整手算

把第 7.1 节的论证在最小非平凡例子 上完整算一遍。设第 2 枚是假币,即 (假币位置就是我们要找的答案)。

第一步,列出全部 个偶权查询串,并计算相位 只有第 2 位为 1,内积就是 的第 2 位):

相位
00000
00110
01011
01101
10010
10100
11001
11111

查询后的态为

第二步,施加 。按 Lemma 2 的证明,输出态在 上的振幅是 ,其中 。逐个检验:

  • ,同样
  • 其余 (例如 ):,振幅为

可以直接验证归一化:。最终态为

第三步,测量以各 的概率得到 。由承诺 ,取 Hamming 权重为 的那个: 保留, 排除。答案:第 2 枚是假币。全程只用了一次称量(以量子叠加的形式)。

8. 小结与习题

小结

  • 问题与 oracle 枚硬币中恰有 枚等重的轻假币;balance oracle 只判断左右两盘假币数是否相等(),不报告哪边更轻,也不返回内积奇偶。
  • 互补二义性:balance oracle 永远区分不了 );承诺 用 Hamming 权重在最后消除这一二义性。
  • 经典瓶颈:信息论下界 ,且在量级上紧。
  • 算法骨架:理想 parity oracle + 偶权 Bernstein–Vazirani 一次恢复 ;限制偶权查询的代价恰好是同一个互补二义性,无额外损失。
  • 随机分盘:子集中假币数 为奇数时永不平衡; 为偶数时随机分盘以 的概率平衡(启发式/模型依赖的一步,见第 4.3 节)。
  • 四次根的来源:概率 振幅开一次平方(),振幅放大再开一次平方();取最坏 得总查询 ,与 无关。
  • 边界 已知时可做成零错误;匹配的 无条件量子下界尚未证明,现有证据限于 big-pan、random-partition 等结构化框架。

习题

  1. (计算)用 Stirling 公式 推导 ,并给出渐近常数(即证明它 )。
  2. (证明)补全 Lemma 2 的细节:证明 中偶权串恰有 个,并验证求和式 ,从而偶权 Fourier 态只支持在 上。
  3. (概念)解释算法中两次”开平方”分别出现在何处:第一次把什么量变成什么量,第二次把什么量变成什么量?由此说明为什么总查询是 的四次根,以及”quartic speedup”一词的含义。
  4. (概念)说明承诺 怎样消除互补二义性:如果 会发生什么?结合 Lemma 1 说明为什么这个二义性不可能靠改进 oracle 查询来消除。
  5. (计算)设子集大小 ,其中恰有 枚假币。写出随机等分时平衡概率的精确超几何表达式,并证明当 固定时它趋于 。(提示:比较 的渐近比值。)
  6. (手算)在 (第 3 枚为假币)的设定下,仿照第 7.2 节列出全部偶权查询串及其相位,计算 后的态,并验证最终测量结果经权重判据后唯一确定

参考文献


参考资料