培训
你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
了解量子 oracle
oracle
可能首先尝试定义
可以通过引入第二个 m
$$\begin{\begin{align} O(\ket{x}\otimes\ket{y}) =\ket{x}\otimes\ket{y \oplus f(x)}. \end{align} $$
现在
提示
对于
重要的是,如果以这种方式为每一种计算基态定义 Oracle,
$$\begin{align}H\ket{+}& =\frac{1}{\sqrt{{2}}H(\ket{0} + \ket{{1}) ={2}}\frac{1}{\sqrt{(H\ket{0} + H\ket{1}) \& =\frac{1}{\sqrt{2}}(\ket{+ + \ket{}{-}) =\frac12 (\ket{{0} + \ket{{1} +{0} \ket{-{1}\ket{ ) 。 =\ket{{0} \end{align} $$
定义 oracle
$$\begin{\begin{align}\ket{\psi}&放大 器; =\sum_{x \in \{0、1\}^n、y \in \{0、1\}^m}\alpha(x、y) \ket{x}\ket{y}。 \end{align} $$
此处,
$$\begin{\begin{align}O \ket{\psi}& =O \sum_{x \in \{0, 1\}^n, y \in \{0, 1\}^m\alpha}(x, y) \ket{x\ket{}y\&}amp; =\sum_{x \in \{0, 1\}^n, y \in \{0, 1\}^m}\alpha(x, y) O \ket{x}\ket{y\&}amp; =\sum_{x \in \{0, 1\}^n, y \in \{0, 1\}^m\alpha}(x, y) \ket{x}\ket{y \oplus f(x)}. \end{align} $$
或者,可以通过将基于输入的阶段应用于 O,将 f
如果阶段 Oracle 作用于最初处于计算基态
备注
请注意
更普遍的是,可以扩大 oracle 的这两种视图来表示经典函数,后者返回实数,而不是只返回一位。
选择实现 oracle 的最佳方式在很大程度上取决于如何在给定算法中使用此 oracle。 例如,Deutsch-Jozsa 算法依赖于以第一种方法实现的 Oracle,而 Grover 的算法依赖于以第二种方法实现的 Oracle。
有关详细信息,请参阅 Gilyén 1711.00465 中的讨论。