Deutsch-Jozsa 演算法存在誤差(probability of error)嗎?
就是那個最早的量子演算法,判斷一個函數是把所有輸入變為0,還是一半輸入變為0一半變為1的演算法。
我看了覺得這個演算法是準確沒有誤差的。但因為前文舉了一個隨機演算法(隨機取k個數看是否一樣,有的誤差)的例子作為類比,導致我有點混淆了(英文閱讀能力較差),不敢確信。
謝邀. Deutsch-Jozsa 演算法是沒有誤差的. (這一點不同於基於 Quantum Fourier Transform 的 Phase Estimation 的演算法). Deutsch-Jozsa 演算法設計了一個場景, 使得量子計算相對經典計算能夠進行指數級加速:
考慮黑箱(oracle)函數, 設法確定是 balanced 還是 constant, 即
- balanced: 對的個可能的輸入(就是一個位字元串), 恰巧有一半,剩下一半;
- constant: 對的個可能的輸入, 或者.
下面我簡單地做一些分析.
1. 確定性的經典演算法
注意到 balanced 就是有一半的輸入結果一樣, 那我們直接試個不就好了(抽屜原理). 所以確定性的經典演算法的時間複雜度是.2. 非確定性的經典演算法
但是這樣的嘗試次數還是太多了, 如果我們減少嘗試次數, 那麼我們是否可以給出對此時結果正確的概率的估計呢? 具體來說, 對於嘗試個位不同字元串的情況, 那麼錯誤幾率是. 怎麼理解呢?
- 嘗試個字元串, 我們不知道的任何信息.
- 嘗試個字元串和. 如果自然好辦, 肯定是 balanced. 否則, 是constant 的可能只是比剛才大了一點, 即.
- 嘗試個字元串, 如果存在, 顯然是 balanced. 否則, 是 constant 的可能只是比之前大了一些, 即.
很明顯, 這時候的時間複雜度是. 當時, 演算法就變成確定性的了.
3. 確定性的量子演算法
下面討論量子演算法情形. 借用 Wikipedia 上的圖:
考慮自左向右的純態的時間演化, 記, 對於每一條豎線:
- 初態為
- 這裡用到了 Hadamard Gate 的性質:
- 這裡的酉變換為, 為了使得線路可逆. 張量積的第二部分為ancilla qubit, 對結果事實上沒有貢獻.
- 再次利用 Hadamard Gate 的性質: , 那麼:
- constant: ;
- balanced: .
從而, 預處理(準備初態)需要, 而執行演算法只需要一次計算. 總的時間複雜度是.
看起來這是個並沒有什麼用的例子 (也許是暫時如此, 就跟 Simons 演算法一樣, 見評論區討論). Deutsch-Jozsa 演算法的重要性, 純粹是因為它是第一個表明量子計算在某些情形下具有指數級加速(相對經典計算)能力的例子. 此外, 這裡的討論其實相當樸素, 並沒有用到對量子可計算性和量子計算複雜性理論中對量子圖靈機的一般定義, 不過這一問題還是屬於的(類似).
Reference
[1] Wikipedia. Deutsch-Jozsa Algorithm.
[2] Michael Nielsen et al. Quantum Computation and Quantum Information. Cambridge. 2010.
推薦閱讀:
※如何評價美國宣布已經研製出世界上第一台量子計算機?
※量子計算機的實現是否一定需要離子阱和激光冷卻?
※想在研究生階段起做量子計算和量子信息的研究如何著手?
※關於量子信息,國際上哪些大學做得好?
※如何評價中國科學家把石墨烯薄膜生產速度提高了150倍?