訓練
瞭解量子 Oracle
Oracle
您可能先嘗試定義
您可以引進第二個量子位緩存器$$來保存答案,以處理這兩個問題。
然後,在所有計算基礎狀態上定義 Oracle 的效果:針對所有 x \0、1\}^n
$$\begin{\begin{align}O(\ket{x y})\ket{= x\ket{}}\otimes\otimes\ket{y \oplus f(x).} \end{align} $$
現在
提示
重要的是,針對每個計算基礎狀態 x y 以這種方式定義 Oracle,也會定義 O
$$\begin{align}H\ket{+}& =\frac{1}{\sqrt{{2}}H( + \ket{{1}) =\frac{1}{\sqrt{{2}} (\ket{0}H\ket{0} + H\ket{1}) \& =\frac{1}{\sqrt{2}}(\ket{+} + ) =\frac{-}\ket{12 ({0}\ket{ + + \ket{\ket{{0}{1} -{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} $$
或者,您可以將 f 編碼為 Oracle
如果階段 Oracle 一開始以計算基礎狀態
注意
請注意,
更普遍地,可以擴大兩個 Oracle 檢視來表示傳統函式,以傳回實數,而不是只傳回單一位。
選擇實作 Oracle 的最佳方式,在很大程度上取決於此 Oracle 如何在指定的演算法內使用。 例如, Deutsch-Jozsa 演算法 依賴第一種方式實作的 Oracle,而 Grover 的演算法 則依賴以第二種方式實作的 Oracle。
如需詳細資訊,請參閱 Gilyén 1711.00465 中的討論。