第 8 课 · 第一个量子算法——Deutsch-Jozsa 与 Bernstein-Vazirani · 模块二:算法主线

D-J 问题设定:一个关于"承诺"的问题

  • 命题框(承诺的两种情形,量词写全):
    • 常数:$\exists c \in \{0,1\}$,$\forall x: f(x) = c$
    • 平衡:$|\{x : f(x)=1\}| = 2^{n-1}$(等价地 $|\{x : f(x)=0\}| = 2^{n-1}$)
  • 推导/演算步骤:
    1. 演算 $n=3$:输入共 $2^3 = 8$ 个;平衡 $\Rightarrow$ 恰 4 个输出 0、4 个输出 1;常数 $\Rightarrow$ 8 个全同(全 0 或全 1)
    2. 运气情形:查 $f(00\ldots 0)=0$、$f(11\ldots 1)=1$,两次查询即排除常数——但这是特定输入的巧合,不构成对一切承诺函数都正确的算法
    3. 最坏情形的根源:查 $2^{n-1}$ 个输入全得 0 时,"全 0 常数"与"恰好查遍取 0 那一半的平衡函数"与观测一致、不可区分(下页定量)
  • 结果框:任务 = 以最少查询次数,对一切满足承诺的 $f$ 确定性输出"常数/平衡"
类型definition-derivation