Deutsch 内部的干涉机制
前情提要:前面我们用过最小的例子证明:量子可以"叠加着一次问完所有情况"——用 H 门把输入变成叠加,一次调用黑盒就相当于同时问了 0 和 1,再用干涉让"常数型"和"平衡型"两类盒子在结果上现出完全不同的图案。那个加速虽只是查询次数从 2 次降到 1 次,机制却是真的;而且当输入变成 n 个比特时,经典约要 2^(n-1) 次,量子仍只要 1 次。那个加速到底藏在哪?这一篇拆开它——答案是干涉。
一、钩子:加速从哪来
经典做法:要判断一个函数是"常函数"还是"平衡函数",最坏得试一大半输入。Deutsch 用一次量子询问就分清——省下的不是"算力",而是"询问次数"。秘密在:量子把所有输入同时送进黑盒,再让答案互相干涉。
二、两类函数
设定很简单:函数 f 吃一个比特,吐一个比特。只有四种可能,归两类:
- 常函数:f 永远吐 0,或永远吐 1;
- 平衡函数:f 对一半输入吐 0、一半吐 1。
经典要区分它们,得问至少两次(问一次可能刚好都撞同 output)。量子问一次。
三、所有输入,一次喂入
把输入比特先过 H 门,变成"所有输入"的等权叠加——一次就把全集摆上台面。再让黑盒 U_f 作用上去:它不改输入寄存器,而是把答案"写"到另一个辅助比特的相位里(回顾第 16 篇:相位藏在振幅里,平时看不见,但干涉时会现身)。
四、干涉:错的抵消,对的放大
黑盒之后,再对输入寄存器做一组 H 门,然后测量。精妙在这一步:
- 若 f 是常函数:所有路径的相位一致,做一次 H 后全部相消,只剩全 0 态——测出来必是 0;
- 若 f 是平衡函数:路径间相位正负交错,相消后全 0 态被抹平,必留下非 0 信号——测出来不是全 0。
于是只测一个比特,就分出两类。
graph LR
IN["所有输入叠加: 一次全喂入黑盒"] --> U["黑盒给每个输入打相位标记"]
U --> INT["再经 H 门干涉: 常函数全相消, 平衡函数留信号"]
INT --> OUT["测一个比特, 立刻分辨两类"]
五、小结与预告
这一篇,把第 7 篇的"迷你加速"落到了机制:
- 量子把所有输入叠加一次喂入黑盒,而非逐个试;
- 黑盒把答案写进相位,再经 H 门干涉:常函数全相消、平衡函数留信号;
- 最终只测一个比特即分辨两类——省的是询问次数,根子是干涉。
干涉让"错答案消失、对答案放大",是 Shor、Grover 共通的底色。下一篇《Grover 的振幅放大为什么是 根号N》:你会看到 Grover 把搜索看成"在 N 个叠加态里朝目标方向旋转箭头",每步转过约 1/√N 弧度,约 √N 步就把目标振幅抬到接近 1——所以是扎实的二次加速,而非指数加速。
下次见。