Deutsch-Jozsa 演算法存在誤差(probability of error)嗎?

就是那個最早的量子演算法,判斷一個函數是把所有輸入變為0,還是一半輸入變為0一半變為1的演算法。

  我看了覺得這個演算法是準確沒有誤差的。但因為前文舉了一個隨機演算法(隨機取k個數看是否一樣,有2^{-k}的誤差)的例子作為類比,導致我有點混淆了(英文閱讀能力較差),不敢確信。


謝邀. Deutsch-Jozsa 演算法是沒有誤差的. (這一點不同於基於 Quantum Fourier Transform 的 Phase Estimation 的演算法). Deutsch-Jozsa 演算法設計了一個場景, 使得量子計算相對經典計算能夠進行指數級加速:

考慮黑箱(oracle)函數f:{0,1}^n
ightarrow{0,1}, 設法確定f是 balanced 還是 constant, 即

  • balancedf: 對f2^n個可能的輸入s(就是一個n01字元串), 恰巧有一半f(s)=1,剩下一半f(s)=0;

  • constantf: 對f2^n個可能的輸入s, f(s)=0或者f(s)=1.

下面我簡單地做一些分析.

1. 確定性的經典演算法

注意到 balanced 就是有一半的輸入s結果一樣, 那我們直接試2^{n-1}+1個不就好了(抽屜原理). 所以確定性的經典演算法的時間複雜度是O(2^n).

2. 非確定性的經典演算法

但是這樣的嘗試次數還是太多了, 如果我們減少嘗試次數, 那麼我們是否可以給出對此時結果正確的概率的估計呢? 具體來說, 對於嘗試kn位不同01字元串的情況, 那麼錯誤幾率是epsilon leq frac{1}{2^{k-1}}. 怎麼理解呢?

    • 嘗試1個字元串, 我們不知道f的任何信息.
    • 嘗試2個字元串s_1s_2. 如果f(s_1) 
eq f(s_2)自然好辦, 肯定是 balanced. 否則, f是constant 的可能只是比剛才大了一點, 即epsilon < 1/2=P(f  constant|s_1 = s_2).

vdots

    • 嘗試k個字元串s_1, s_2, cdots, s_k, 如果存在s_i 
eq s_j (i 
eq j), 顯然f是 balanced. 否則, f是 constant 的可能只是比之前大了一些, 即epsilon < 1/2^{k-1} = P(f  constant|s_1 = s_2 = cdots = s_k).

很明顯, 這時候的時間複雜度是O(k). 當k geq 2^{k-1}+1時, 演算法就變成確定性的了.

3. 確定性的量子演算法

下面討論量子演算法情形. 借用 Wikipedia 上的圖:

考慮自左向右的純態的時間演化, 記|0
angle=egin{pmatrix} 1\0\ end{pmatrix}, |1
angle=egin{pmatrix} 0\1\ end{pmatrix}, 對於每一條豎線:

    1. 初態為psi_1=|0
angle^{otimes n} otimes |1
angle
    2. 這裡用到了 Hadamard Gate 的性質:psi_2=H^{otimes n}|0
angle otimes H|1
angle=frac{1}{2^{n/2}}(|0
angle+|1
angle)^{otimes n} otimes frac{1}{sqrt 2}(|0
angle -|1
angle)=frac{1}{2^n}sum_x|x
angle otimes frac{1}{sqrt{2}}(|0
angle-|1
angle)
    3. 這裡的酉變換為U_f : |x
angle|y
angle 
ightarrow |x
angle|yoplus f(x)
angle, 為了使得線路可逆. 張量積的第二部分為ancilla qubit, 對結果事實上沒有貢獻.psi_3 = frac{1}{2^{n/2}}sum_x|x
angle frac{1}{sqrt 2}(|f(x)
angle -|overline{f(x)}
angle)=(frac{1}{2^{n/2}}sum_x(-1)^{f(x)}|x
angle)otimes frac{1}{sqrt2}(|0
angle - |1
angle)
    4. 再次利用 Hadamard Gate 的性質: psi_4 = (frac{1}{2^{n/2}}sum_{x,y} (-1)^{f(x)oplus xcdot y}|y
angle)|1
angle, 那麼:
  • constantf: |x
angle = pm |0
angle ^n;
  • balancedf: langle 0|x 
angle ^{otimes n}=frac{1}{2^n} sum_{x} (-1) ^{f(x)} = 0.

從而, 預處理(準備初態)需要O(n), 而執行演算法只需要一次計算. 總的時間複雜度是O(n).

看起來這是個並沒有什麼用的例子 (也許是暫時如此, 就跟 Simons 演算法一樣, 見評論區討論). Deutsch-Jozsa 演算法的重要性, 純粹是因為它是第一個表明量子計算在某些情形下具有指數級加速(相對經典計算)能力的例子. 此外, 這裡的討論其實相當樸素, 並沒有用到對量子可計算性和量子計算複雜性理論中對量子圖靈機的一般定義, 不過這一問題還是屬於BQP的(類似Psubseteq BPP).

Reference

[1] Wikipedia. Deutsch-Jozsa Algorithm.

[2] Michael Nielsen et al. Quantum Computation and Quantum Information. Cambridge. 2010.


推薦閱讀:

如何評價美國宣布已經研製出世界上第一台量子計算機?
量子計算機的實現是否一定需要離子阱和激光冷卻?
想在研究生階段起做量子計算和量子信息的研究如何著手?
關於量子信息,國際上哪些大學做得好?
如何評價中國科學家把石墨烯薄膜生產速度提高了150倍?

TAG:演算法 | 量子物理 | 量子計算理論 |