• 沒有找到結果。

量子質因數分解在傳統電腦的模擬研究

N/A
N/A
Protected

Academic year: 2021

Share "量子質因數分解在傳統電腦的模擬研究"

Copied!
93
0
0

加載中.... (立即查看全文)

全文

(1)國立台中教育大學自然科學教育學系碩士論文. 指導教授: 葉聰文 博士. 量子質因數分解在傳統電腦上 的模擬研究 A Study of Simulation of Quantum Factoring Algorithm on the Traditional Computer. 研究生:顏銥屏撰. 中華民國 九十五 年 六 月.

(2) 摘要 本論文探討 Shor 量子質因數分解演算法實際運用的可行性。 我們利用傳統三 十二位元個人電腦及 QuaSi2 量子電路模擬軟體來建構量子模擬電腦並在其上進 行模擬演算。 本研究針對數字在 32 以下可進行質因數分解成兩個不同質數相乘的正整數進 行分析。 從模擬器上量子記錄器所記載的量子態振幅及量測機率等紀錄中, 分析 可能產生計算結果的各種量子態的分佈情形, 接著計算最可能量子態的對應分解 週期, 進而得到被分解整數的可能質因數分解。 因受演算法則的限制, 僅能針對 15 及 21 正整數進行量子質因數分解, 對於其他整數如 6 及 10 等則無法利用本演. 算法進行分析。 本研究在研究過程中發現進行模擬演算可能會遭遇下列的困難, 值得提出作 為相關研究的參考。 首先是模擬軟體的模擬量子位元數的限制, 使得本研究僅能 針對 32 以下的正整數進行研究。 其次是 Shor 量子分解演算法僅適用於計算分解 週期為偶數的正整數, 對於分解週期不為偶數的正整數則不適用。 最後是模擬分 析必須依賴人工進行逐步操作與分析, 將不利於分析工作量很大的模擬演算。 為增進對 Shor 分解法的研究, 本研究建議未來的量子模擬軟體最好具備下列 兩項功能。 其一是應具備能同時操作更多量子位元數的模擬器, 以方便驗證對大 數字進行 Shor 量子質因數分解計算的可行性; 其二是能將演算分析與模擬器結 合的模擬軟體以解決目前需要人工逐步操作的作業問題。 關鍵字: 量子演算法、 量子質因數分解、 量子電路.

(3) Abstract We investigated the applicability of Shor’s quantum factoring algorithm. By employing the quantum simulator 2 (QuaSi2) on a traditional personal computer of 32 bits, we can construct the simulation environment for performing algorithm and related analysis. We restricted to the positive integers smaller than 32, which can be factorized into a product of two different prime factor integers. According to the informations associated with the quantum states of the quantum registers, we analyzed the amplitudes of quantum registers with most probabilities to find out the factoring period and to derive the prime factors of the target integer. Due to the limitation of Shor’s algorithm, we can only analyze the target intergers 15 and 21. As for the other integers, such as 6 and 10, the employed factoring algorithm is inapplicable. According to our analysis, we found that there exist following limitations in the simulation. The QuaSi2 can only imitate at most 20 quantum bits. This limitation restricts the target integer that can not be greater than 64. The next limitation comes from the fact that the Shor’s quantum factoring algorithm can only be applied to the factoring period of even number. Since both performance of simulation and analysis of factoring algorithm require manual controls, it is indeed a time consuming work. In order to improve the studies of Shor’s factoring algorithm, we propose two suggestions for future simulators. The future simulator should be capable of a large enough number of quantum bits, in order to carry out.

(4) quantum factoring algorithm for large target integers. The future simulator can perform simulation and analyze the factoring algorithm in a integrated way. Keyword : Quantum Algorithm , Prime Factorization , Quantum Circuit. 4.

(5) 目錄. 1 緒論. 1. 1.1 簡介 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 1. 1.2 量子力學與資訊學的關係 . . . . . . . . . . . . . . . . . . . .. 3. 1.3 量子演算法 . . . . . . . . . . . . . . . . . . . . . . . . . . .. 4. 1.4 量子電路模擬器 . . . . . . . . . . . . . . . . . . . . . . . .. 5. 1.5 論文架構 . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 9. 2 量子質因數分解. 10. 2.1 質因數分解介紹 . . . . . . . . . . . . . . . . . . . . . . . .. 10. 2.2 古典質因數分解 . . . . . . . . . . . . . . . . . . . . . . . .. 10. 2.3 量子質因數分解 . . . . . . . . . . . . . . . . . . . . . . . .. 13. 3 量子電路. 16. 3.1 量子電路介紹 . . . . . . . . . . . . . . . . . . . . . . . . . .. 16. 3.2 量子基本閘 . . . . . . . . . . . . . . . . . . . . . . . . . . .. 17. 3.2.1. 哈達馬閘 . . . . . . . . . . . . . . . . . . . . . . . .. 20. 3.2.2. 控制反閘 . . . . . . . . . . . . . . . . . . . . . . . .. 21. 3.2.3. 量子控制旋轉閘 . . . . . . . . . . . . . . . . . . . .. 22. I.

(6) 3.3 量子傅立業轉換電路 . . . . . . . . . . . . . . . . . . . . . .. 23. 3.4 模指數電路 . . . . . . . . . . . . . . . . . . . . . . . . . . .. 25. 4 研究分析. 28. 4.1 模擬程式 . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 29. 4.2 模擬結果與分析 . . . . . . . . . . . . . . . . . . . . . . . .. 32. 4.2.1. (x,n)=(2,15) 的量子電路設計 . . . . . . . . . . . . .. 32. 4.2.2. 其餘七個數值的量子電路設計 . . . . . . . . . . . . .. 49. 5 結論. 58. 參考文獻 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 60. A 附錄一. 64. B 附錄二. 71. C 附錄三. 75. D 附錄四. 80. II.

(7) 圖目錄. 1.1 量子隱形傳輸圖示[3] . . . . . . . . . . . . . . . . . . . . . .. 4. 3.1 布洛赫球面 . . . . . . . . . . . . . . . . . . . . . . . . . . .. 18. 3.2 哈達馬閘作用在布洛赫球面的圖示 . . . . . . . . . . . . . . .. 20. 3.3 控制旋轉閘以y軸和 z 軸為軸心旋轉的圖示 . . . . . . . . . .. 23. 3.4 模指數的電路圖 . . . . . . . . . . . . . . . . . . . . . . . .. 25. 3.5 f (a) = 11a mod 15模指數電路圖示 . . . . . . . . . . . . . .. 26. 4.1 QuaSi2 軟體的介面 . . . . . . . . . . . . . . . . . . . . . . .. 29. 4.2 QuaSi2 的四個顯示視窗 . . . . . . . . . . . . . . . . . . . .. 30. 4.3 質因數分解的量子電路架構 . . . . . . . . . . . . . . . . . .. 31. 4.4 執行(x,n)=(2,15) 第一次的四個顯示視窗 . . . . . . . . . . .. 35. 4.5 執行(x,n)=(2,15) 第二次的四個顯示視窗 . . . . . . . . . . .. 37. 4.6 執行(x,n)=(2,15) 第三次的四個顯示視窗 . . . . . . . . . . .. 38. 4.7 執行(x,n)=(2,15) 第四次的四個顯示視窗 . . . . . . . . . . .. 39. 4.8 執行(x,n)=(2,15) 第五次的四個顯示視窗 . . . . . . . . . . .. 40. 4.9 執行(x,n)=(2,15) 第六次的四個顯示視窗 . . . . . . . . . . .. 42. 4.10 執行(x,n)=(2,15) 第七次的四個顯示視窗 . . . . . . . . . . .. 43. 4.11 執行(x,n)=(2,15) 第八次的四個顯示視窗 . . . . . . . . . . .. 44. III.

(8) 4.12 執行(x,n)=(2,15) 第九次的四個顯示視窗 . . . . . . . . . . .. 45. 4.13 執行(x,n)=(2,15) 第十次的四個顯示視窗 . . . . . . . . . . .. 46. 4.14 執行(x,n)=(2,15) 第十一次的四個顯示視窗 . . . . . . . . . .. 47. 4.15 執行(x,n)=(2,15) 第十二次的四個顯示視窗 . . . . . . . . . .. 48. 4.16 執行(x,n)=(4,15) 的四個顯示視窗 . . . . . . . . . . . . . . .. 52. 4.17 執行(x,n)=(7,15) 的四個顯示視窗 . . . . . . . . . . . . . . .. 53. 4.18 執行(x,n)=(8,15) 的四個顯示視窗 . . . . . . . . . . . . . . .. 53. 4.19 執行(x,n)=(11,15) 的四個顯示視窗 . . . . . . . . . . . . . .. 54. 4.20 執行(x,n)=(13,15) 的四個顯示視窗 . . . . . . . . . . . . . .. 55. 4.21 執行(x,n)=(8,21) 的四個顯示視窗 . . . . . . . . . . . . . . .. 56. 4.22 執行(x,n)=(13,21) 的四個顯示視窗 . . . . . . . . . . . . . .. 56. IV.

(9) 表目錄. 3.1 CNOT閘真值表 . . . . . . . . . . . . . . . . . . . . . . . .. 22. 4.1 執行 (x,n)=(2,15) 第一次量測結果 . . . . . . . . . . . . . .. 36. 4.2 執行 (x,n)=(2,15) 第二次量測結果 . . . . . . . . . . . . . .. 37. 4.3 執行 (x,n)=(2,15) 第三次量測結果 . . . . . . . . . . . . . .. 39. 4.4 執行 (x,n)=(2,15) 第四次量測結果 . . . . . . . . . . . . . .. 40. 4.5 執行 (x,n)=(2,15) 第五次量測結果 . . . . . . . . . . . . . .. 41. 4.6 執行 (x,n)=(2,15) 第六次量測結果 . . . . . . . . . . . . . .. 41. 4.7 執行 (x,n)=(2,15) 第七次量測結果 . . . . . . . . . . . . . .. 42. 4.8 執行 (x,n)=(2,15) 第八次量測結果 . . . . . . . . . . . . . .. 44. 4.9 執行 (x,n)=(2,15) 第九次量測結果 . . . . . . . . . . . . . .. 45. 4.10 執行 (x,n)=(2,15) 第十次量測結果 . . . . . . . . . . . . . .. 46. 4.11 執行 (x,n)=(2,15) 第十一次量測結果 . . . . . . . . . . . . .. 47. 4.12 執行 (x,n)=(2,15) 第十二次量測結果 . . . . . . . . . . . . .. 48. 4.13 執行 (x,n)=(2,15) 十二次量測結果的峰值總表 . . . . . . . .. 49. 4.14 執行 (x,n)=(4,15) 六次量測結果的峰值總表 . . . . . . . . .. 52. 4.15 執行 (x,n)=(7,15) 六次量測結果的峰值總表 . . . . . . . . .. 52. 4.16 執行 (x,n)=(8,15) 六次量測結果的峰值總表 . . . . . . . . .. 54. V.

(10) [. 4.17 執行 (x,n)=(11,15) 六次量測結果的峰值總表 . . . . . . . . .. 54. 4.18 執行 (x,n)=(13,15) 六次量測結果的峰值總表 . . . . . . . . .. 55. 4.19 執行 (x,n)=(8,21) 六次量測結果的峰值總表 . . . . . . . . .. 55. 4.20 執行 (x,n)=(13,21) 六次量測結果的峰值總表 . . . . . . . . .. 57. A.1 二進位和十進位的換算表 . . . . . . . . . . . . . . . . . . . .. 64. B.1 (x.n)=(2,15) 的十二次測量峰值及機率值 . . . . . . . . . . .. 71. VI.

(11) 第1章 緒論 1.1 簡介 於二十世紀初, 誕生了影響近代物理發展的兩大理論: 相對論與量子力學。 量子力學描 述的是原子世界的物理特性, 而相對論則適合描述高速運動系統。 一些科技的應用, 例 如半導體科技、 奈米科技等, 均必須考慮量子效應所造成的影響。 而未來的資訊科技, 也可能必須面對量子效應所造成技術上的困難。 因此, 量子物理學在實用科學上的應 用, 將會是二十一世紀科技發展的首要重點。 近代的資訊科技日新月異, 積體電路的尺寸越來越小, 但其運算速度卻是越來越快。 而當電晶體元件的尺寸, 小至奈米尺度時, 量子效應的影響將不容忽略。 這時若欲依傳 統製程技術來克服量子效應所衍生的技術問題, 可能會遭遇極大的技術難題。 因此, 若 能改變製造的方法, 從原子的層級來建造電晶體元件, 則前述的困難將不再產生, 且可 能發展出更有效率的計算機。 完全根據量子物理, 以原子為單位所建構的電腦, 就稱之 為 『量子電腦』。 依構想, 量子電腦可能比傳統電腦具有更高效率的運算能力。 傳統電 腦是以位元 (bit) 為運算的基本單位, 一個位元具有兩種可能的值, 0 或 1; 量子電腦 的運算單位則是量子位元 (quantum bit, 簡寫為 qubit), 一個量子位元存在的的狀 態, 可能是|0i或|1i, 也可能為這兩種狀態的疊加線性組合。 運用量子力學中光子的兩 個極化的狀態, 或是運用電子自旋的兩種自旋狀態來實現|0i和|1i的狀態, 以這種量子 位元來處理資訊, 就稱為量子資訊。 1.

(12) 第 1 章 緒論. 量子電腦具有兩個重要的特性: 線性疊加 (Superposition) 和量子糾纏 (Entan-. glement)。 以ψ 來描述量子的狀態, 若當時體系處於ψ1 的量子態時, 測量力學量A所 得結果是一個確切值a1 , (ψ1 稱為A的本徵態,A 的本徵值為a1 ), 又假設在ψ2 的量子 態下, 測量A所得的結果是另一個確切值a2 , 則在ψ = c1 ψ1 + c2 ψ2 所描述的量子狀 態下 (c1 和c2 為任意常數), 測量A得到的結果既可能為a1 , 也可能為a2 , 而測得結果 為a1 或a2 的相對機率是完全確定的, 就稱ψ 態為ψ1 態和ψ2 態的線性疊加態[1][2]。 量子糾纏(quantum entanglement) 指的是兩個或多個量子系統之間存在非古典 的強關聯。 例如兩個量子位元可構成糾纏態(|00i+|11i), 其特性是它不能被分解為兩 個單獨量子位元態的乘積。 因此糾纏態內量子位元間具有很強的相干性或關聯性, 其 中一個量子位元狀態被改變或被測量, 同時決定了糾纏態內所有其它位元狀態的變化。 量子糾纏的最重要特性就是它的非定域性 (Non-locality)。 量子力學中的非定域性是 指一旦兩個量子系統的狀態 (例如是兩光子的極化態) 構成糾纏態, 則不管後來這兩 個量子系統間的距離被分隔多遠, 並且它們之間可能不再存在力學上的交互作用, 只 要它們仍保持在糾纏態, 它們之間超強的量子關聯性就不會改變, 量子糾纏態的這種 非定域性是實現量子遠距 (隱形) 傳輸 (quantum teleportation) 的科學基礎。 當 一個量子系統接受到刺激時, 另一個量子系統也會有反應, 這也就是愛因斯坦所說的 『幽靈的長距離作用』。 若以|ψi來表示量子位元的狀態, 其數學式則表示為|ψi = C0 |0i + C1 |1i, 係 數C0 及C1 , 一般為複數且滿足歸一化條件|C0 |2 + |C1 |2 = 1。 藉由C0 、C1 的線性組 合, |ψi為介於|0i和|1i之間任何可能的狀態, |C0 |2 表示量到此量子位元為|0i的機率,. |C1|2 表示量到此量子位元為|1i的機率。 機率越大表示被量測到的機會也越大。 而傳統 電腦每一個資訊單位只能有 0 或 1 兩種可能的狀態。 因此, 由資訊單位所能記載的資訊 量來看, 量子電腦應該可以比傳統電腦能夠處理更多的資訊量, 這是量子電腦的一個. 2.

(13) 第 1 章 緒論. 優點。 本研究的目的是希望能依據 Shor 於 1994 年提出的量子質因數分解演算法, 利用 量子電路模擬軟體, 在傳統電腦上進行模擬運算, 以研究量子演算法的運算過程中量 子位元所含涉的物理變化, 並研究實現此量子演算法可能遭遇的困難。. 1.2 量子力學與資訊學的關係 英特爾 (Intel) 名譽董事長摩爾 (Moore) 在 1965 年提出”摩爾定律”, 指出晶片上 可容納的電晶體數目, 約每隔 18 個月便會增加一倍, 性能也將提升一倍”, 如果摩爾 的預測成真了, 那麼再過十幾年後, 傳統電腦的設計方式將達到極限。 在 1982 年時,. Feynman說明傳統電腦並不適合用來模擬量子力學的現象, 若能根據量子力學的定 律來設計量子電腦, 則可能可以解決這個問題。 量子資訊科學 (Quantum Information Science, 簡稱 QIS) 是指利用量子位 元來儲存和處理資訊科技的一門新興科學, 其中包括了: 物理、 數學、 工程、 通訊、 電 子等科學。 量子資訊科學的研究可概分成量子計算和量子資訊兩個部份, 量子計算是 研究如何利用量子電腦來進行計算, 而量子資訊的研究則包括量子通訊及量子密碼學。 雖然量子資訊科學擁有許多傳統資訊科學所沒有的優點, 但也有相對的缺點。 由於量 子狀態的測不準特性及量子系統容易受環境影響等量子效應, 使得任何觀測方法都會 立刻改變原本量子系統的狀態, 更可能會導致量子態間相干性的消失, 進而造成量子 演算發生錯誤, 而減低其運算效益。 量子電腦具有無窮的儲存空間, 例如:n 個 qubit 可以儲存 2 的 n 次方個資訊, 但. n 個 bit 則只能儲存 n 個資訊。 因此, 如果欲儲存整個宇宙中所有原子總數的資訊量, 則估計只要 500 個量子位元就能夠達成。 量子電腦具有平行處理資訊的能力, 是因為量子糾纏的特性。 最早提出量子糾纏態 的概念是 Einstein、Podolsky 及 Rosen 於 1935 年提出的, 一般稱為 EPR 效應[6]。 3.

(14) 第 1 章 緒論. 在1992 年時, Bennett與 Wiesner 提出了利用量子糾纏來實現高密度加密資料的非 定域傳輸理論[7]。 1993 年, 包括Bennett 在內等 6 人則提出 『傳達量子訊息, 而不需 要傳遞量子位元』 的觀點, 一般稱為量子隱形傳輸[3] [8], 使得相距遙遠的兩端(傳送 端和接收端) 可以進行非定域傳輸 (如圖1.1)。. 圖 1.1: 量子隱形傳輸圖示[3]. 近幾年來量子資訊已被人視為是個很有發展潛力且極具挑戰性的研究領域。 雖然目 前量子資訊還在實驗的階段, 距離實用的階段還很遙遠, 但已有不少專家學者投入於這 些相關問題的研究, 研發相關的技術, 而同時我們也該思考可以應用在哪些方面, 以及 如何使人們更易接受量子資訊。. 1.3 量子演算法 演算法是一種循序漸進解決問題的過程, 也是指一種可以在有限步驟內解決問題而建 立可重複應用的計算過程。 它可以將解題的過程分解成有限個計算步驟, 根據運算步 驟的多寡, 一般將欲解的問題分成NP 問題和 P 問題[4]。 當要將一個n位元的正整數 進行因數分解時, 利用傳統演算法來計算可能需要 exp(n1/3) 個步驟來完成, 其演算 步驟是呈指數型增加的問題稱為 NP 問題; 若是演算步驟可以在多項式步驟內完成的 4.

(15) 第 1 章 緒論. 則稱之為 P 問題。 量子演算法最大的優勢就是可以將 NP 問題轉變成 P 問題, 縮短 計算的時間。 量子演算法發展的歷史與現況: 1980 年, Benioff使用量子力學來設計杜林 (Tur-. ing) 機[9]。 1982 年, Feynman說明傳統的電腦並不適合用來模擬量子力學的現象 [10]。 1985 年, Deutsch提出第一台萬用的量子杜林機和量子平行計算的方法[11]。 1993 年, Yao提出量子電路的複雜度理論[12]。 1994 年Shor 提出了可以在多項式時 間內完成質因數分解和離散對數計算的量子演算法, 以實際的方式證明了以量子力學 的原理和特性為基礎所建構出來的量子電腦, 將具備超越傳統電腦的強大計算能力, 而 促使量子資訊學的發展 [13] [14] [15]。 1995 年時, Vedral、 Barenco、 Ekert 三個人 針對Shor 的量子質因數分解演算法中涉及計算餘數的部份, 提出了對立的量子電路 模型, 稱為模指數電路[16]。. 1996 年, Grover也發表了快速搜尋的量子演算法, 稱為Grover Search Algorithm [17]. 這個量子演算法可以在非排序的資料庫中快速的搜尋到我們所要的目 標。 舉例來說: 如果我們針對資料庫中進行N 筆資料中取 1 則的目標物來搜尋, 傳統的 √ 演算法要花大約 N/2 次才能找到目標物, 但利用 GSA 的方法只要 N 次就可達成, 而且當N越大, 兩者的差異就越大, 顯示量子電腦比傳統電腦可以節省更多時間。. 1998 年 IBM 實現了兩個量子位元的量子電腦; 1999 年 IBM 實現了三個量子位 元的量子電腦; 2000 年 8 月 IBM 宣布利用核磁共振 NMR 的技術製造出個五個量子 位元的量子電腦; 2001 年 12 月 20 日 IBM 更成功地使用七個量子位元的量子電腦來 求出 15 的兩個質因數 3 和 5。 七個量子位元的量子電腦相當傳統 128 位元的電腦[18]; 若想超越目前傳統電腦的能力, 只需要具有30 個量子位元的量子電腦即可達成。. 1.4 量子電路模擬器 量子電路可以解決量子演算法的問題, 但必須有一套量子電路的模擬器才能模擬出量 5.

(16) 第 1 章 緒論. 子電路, 目前已有一些量子電路模擬器的相關研究和探討, 以下就針對幾種模擬器來 介紹。. Emberson為了實現量子電子電路, 設計了一套軟體 Quantum Algorithm Designer, 簡稱 QAD 軟體[19]。 QAD可以讓我們了解如何利用量子電路來了解量子演 算的過程和監控各個演算步驟下量子位元的變化。 而利用QAD 模擬的結果可以顯示 量子電路是如何影響量子演算的每個步驟, 它的介面是以圖示顯現, 操作者更容易使 用。 QAD的目的是幫助使用者了解量子演算, 它是以 Java 2 vl.4 來設計的軟體, 並 用 Swing API 的模式來設計成 GUI(圖形使用者介面) 的模式, 可以提供 2D 和 3D 的圖來顯示量子電路的網狀結構, 且得到計算結果; 因為是以 Java 的語言撰寫, 所以 可跨平台來執行。 它的優點是 (1) 介面是使用圖示, 更易明瞭和操作, (2) 可變通的活 用量子電路網狀架構的設計, (3) 遵守一般的量子電路原理, 所以可以從書或是文章中 複製電路到 QAD 的軟體, (4) 能夠模擬古典演算法, (5) 能由演算法的每個不同步 驟去思考如何設計量子電路, (6) 利用此軟體可以有效的幫助任何想學習量子演算法 的人, (7) 設計出有很多量子位元的量子電路必須要在量子電腦上執行, (8) 能設計出 不同的閘 (H,T,CNOT,Swap...), 還可以重複運用這些閘來組合成不同的量子電路。. jQuantum[20]軟體是由Vries 開發的, 可以模擬 15 個量子位元, 是一套免費軟體。 它將輸入和輸出分成兩個區域 (x 暫存器和 y 暫存器), 包括有基本閘 (CN、CCN、H)、 旋轉閘和量子傅立業變換閘, 也可以進行 Shor 質因數分解的數值計算。 但首先必須 先安裝 Virtual Machine JRE1.4 才能執行。 jQuantum可以證明量子演算法並設 計量子電路, 這個程式被公開的原因一方面是因為希望可以檢查這些量子閘的正確性, 透過更多使用者和程式設計者提出建議來修正, 使這套軟體更有品質, 另一方面也是 希望有創新或是更完整的想法, 未來能修正這些量子閘和演算法。. Quantum Computer Emulatormv(QCE)[21]是由Michielsen 和 Raedt 開. 6.

(17) 第 1 章 緒論. 發的, 是被設計用來模擬 QC 硬體的物理模式, 目前 QCE (8.1.0) 版本可以處理 16 個量子位元。 需要在 Windows 98/NT/2000/ME/ XP環境下才能執行, 這套軟體 包含了量子計算和量子演算的基本概念, 可以執行 CN 閘、 CCN閘、 量子傅立業轉 換、Grover 資料搜尋演算法、Shor 演算法, 並且也有一些關於這幾種演算法的範例。. QuIDDpro[22]由Viamontes, Markov, 和 Hayes 三人所屬的 Quantum circuits group 在 2004 年開發出來的, 是需要在 Matlab 環境下使用的量子電腦模擬 器, 可進行量子態向量、 矩陣、 模擬電路之相關操作。 安裝 QuIDDpro 時, 需要搭配. Matlab,Octave 等軟體。 QuIDDpro在量子電路的模擬上, 具有快速、 使用方式容 易, 執行時所需要的記憶體不大等優點, 可在九分鐘內模擬 100 個量子位元及 10000 個量子閘所構成的電路。 不過與指數有關的電路模擬, 例如 Shor 的質因數分解, 還是 需要較多的電腦資源。. QCL[23]是Omer 在 1998 年所開發, 使用的是 LALR 語法, 運用簡化的符號和 文字來表示指令, 可表現出 Dirac 符號、 矩陣形式、 以及不同類型的閘, 像是哈達馬 閘、 控制反閘、 調換閘等的操作。 可解決 Shor 質因數分解等量子演算問題。. Open Qubit[24]軟體是由Pritzker 和其合作者組成的 Open Qubit 發展團隊所 開發, 所採用的是 Linux 作業系統。 Open Qubit 發展團隊是一個集合了物理學家、 電腦學家、 以及一般人的政府團隊, 希望創造出一個量子模擬的 API(Application. Programmer Interface)。 其主要操作畫面包含兩個: (1)QState描述量子狀態, n個 位元有2n 個複數振幅, 以描述各種可能的輸出態。 QState並提供 QRegister 處理設 備的記憶體。 (2)QRegister處理 QState 裡的位元, 提供基本的作用閘如Ry , Rz ,. Ph和 CNot 以及這些閘的應用。 OpenQubit的原始碼存於 GPL2(GNU Public Licence Version 2 ) 系統下, 須有原始碼軟體才可以使用。 Fraunhofer Quantum Computing Simulationg[25]是一個網路連結式的模擬. 7.

(18) 第 1 章 緒論. 器, 採用Linux 和 Myrinet 系統, 並搭配 QML 程式使用。 作者及維護者為 Ros´ e... 等人。 Fraunhofer Quantum Computing Simulation 是由德國聯合教育及研究部 門所支援, 可以模擬最多至 31 個量子位元的量子電路, 31 位元的 Hamiltonians 提 供網頁式編輯, 可安裝、 控制及分析模擬作業。 並提供網路連結式的容量處理系統, 及 圖示與文字的輸出和輸入。 Fraunhofer Quantum Computing Simulation 包含 了一般的單位元、 二位元及三位元的量子閘, 特別的閘如 Oracle、 Modulo 方程、 和. QFT 也有。 Quack[26]是一個在MATLAB 環境下使用的量子電腦模擬器, 包含了單一位元 么正閘, 可以建立 Pauli, Rotation, Hadamard, Phase和 π8 閘。 雙位元的有CN,. Swap, CCN和一般的控制么正閘。 具有單一位元及 Bell 量測, 利用傳統式的控制及 操作, 並可計算任一次系統的複數縮減機率。 提供了簡單的範例可下載, 例如二個量子 位元的 Grove 搜尋法等等。. QCSim(Quantum Compiling and Simulation)[27]是由Cass 在 2002 年所設 計的, 以 C++ 語言編寫, 搭配 QHDL 程式編寫量子位元的狀態, 系統的初始態, 閘 以及其作用的方式, 一旦開始編寫後就不夠改變量子位元數目。 QCSim內包含的量子 閘有 Hadamard, Pauli X, Pauli Y, Pauli Z, 各種 CNOT 閘等等, 也可以簡 單地增加新量子閘的原始碼。 Lane在 2003 年所編輯的 Qhdl2Jaq 和 Jaq2Qhdl 為 可配合 QCSim 所使用的程式, 此二軟體由 C++ 語言所寫成, Qhdl2Jaq可以將. QHDL 檔案轉變為 jaQuzzi 可以使用的檔案 (JAQ 檔), Jaq2Qhdl則將 JAQ 檔 案轉變為輸入 QCSim 可以輸出的檔案 (QHDL 檔)。 QCSim的原始碼以及需要用 到的軟體 (Qhdl2Jaq, Jaq2Qhdl, jaQuzzi) 其網頁由 Black 負責維護, 下載檔案 中包含了 BB84 的模擬, 電訊傳輸, Hamming 除錯碼, 7 位元 ECC, Grove演算法 等等範例。 QCSim因為記憶體容量的關係, 僅能模擬至 13 個量子位元。. 8.

(19) 第 1 章 緒論. 1.5 論文架構 本論文第一章為緒論, 首先先介紹研究動機, 接著再針對量子與資訊學的關係、 量子演 算法和量子電路模擬器直這三個部分, 回顧相關的文獻及參考資料, 最後一部分則是 本論文的架構。 第二章是說明古典質因數分解和量子質因數分解的差別, 先列出古典質因數分解的 計算步驟, 接著舉例驗證, 之後再列出量子質因數分解的計算步驟, 並舉例子證明。 第三章是介紹量子電路, 先介紹三個量子基本閘: 哈達馬閘、 控制反閘、 量子控制 旋轉閘, 接著介紹量子質因數分解會運用到的兩個電路, 一個是傅立業電路 (QFT), 另一個是求取餘數問題的模指數電路。 第四章是研究分析, 模擬 Shor 量子質因數分解, 先介紹模擬的方法和詳細步驟, 針對25 = 32以下可分解出質因數的正整數進行研究, 因受演算法則的限制, 僅能針對. 15 及 21 正整數進行量子質因數分解, 對於其他整數如 6 及 10 等則無法利用本演算法 進行分析。 利用 Quasi2 模擬器進行模擬, 分析模擬的結果後可找出週期, 便可求得質 因數。 第五章為結論, 說明本論文的貢獻, 且根據量測後的結果探討可再修正的部分, 提出建議或是提供未來的研究方向。. 9.

(20) 第2章 量子質因數分解 2.1 質因數分解介紹 質因數分解的意義是說當給予一個正整數, 而這個正整數可以分解成兩個質因數相乘, 因此利用修爾提出的量子質因數分解就可以計算出此兩個質因數。 當 n 的位元數很小時, 例如:n=143, 若要分解為兩個質因數 p=11 和 q=13, 是很 容易的。 但是當位元數增加, 例如:n=48600799, 若要分解為兩個質因數p = 5213和. q = 9323, 就困難許多了。 不過, 隨著科技的進步, 電腦計算速度會加快, 而且量子電 腦具有平行處理的能力, 因此, 仍會縮短質因數分解的時間。. 2.2 古典質因數分解 在介紹質因數分解之前, 得先了解質數和因數的基本觀念。 因數 (Divisor): 如果整 數 a 可以被整數 b 整除, 那麼我們稱 b 為 a 的因數, 數學上表示為b|a; 公因數. (Common Divisor ): 整數 f 可以整除整數 g 也可以整除整數 h, 數學上表示 為f |g 且f |h, 那麼 f 就是 g 和 h 的公因數。 而在公因數當中最大的數就稱之最大公因 數, 以 gcd(g,h) 來表示。 質數 (Prime Number): 如果一個大於 1 的整數 k 只有+1、. -1、+p、-p 四個因數, 稱此 k 為一個質數。 互質 (Relatively Prime Number): 如果 整數 g 和 h 的最大公因數為 1, 以數學表示為 gcd(g,h)=1, 那麼表示 g 和 h 互質。 模數 (Modulus): 如果 a=q×b+r, 可表示為 a=r(mod b), r稱之為模數, 例如:10 10.

(21) 第 2 章 量子質因數分解. mod 4 =2。 尤拉ϕ函數 (Euler Totient Function), ϕ(n)表示不大於 n 正整數且與 n 互質的正整數個數。 例如: 不大於 10 且與 10 互質的數有 1、3、7、9, 所以ϕ(n) = 4。 而尤拉函數值ϕ(n)基本的運算法為[28]:. ϕ(n) = (p − 1)(q − 1) = pq − p − q + 1 令. n − ϕ(n) + 1 = p + q 而數學式 x2 − Mx + n = 0,. x1 =. M +. √. M 2 − 4n M − , x2 = 2. 如果 M = n − ϕ(n) + 1 , 也就是. x2 − (p + q)x + pq = 0 因此,. x1|n , x2|n 如果 M 6= n − ϕ(n) + 1 , 那麼. x1 ∤ n , x2 ∤ n 接著就要探討質古典因數分解的方法。 古典質因數分解的計算步驟如下:. 11. √. M 2 − 4n 2.

(22) 第 2 章 量子質因數分解. 項目. 內容. 已知. 一個正整數n。. 目的. 求出兩個質因數 p 和 q, 即n = p × q 。. 步驟一 隨意找一個數 x, 使其和 n 互質, 即gcd(x, n) = 1。 步驟二 定義函數f (a) = xa mod n, 計算數列f (0), f (1), f (2), · · · 。 步驟三 算出數列 f(a)=f(a+r), 即可求出週期為 r。 r. r. 步驟四 計算p = gcd(x 2 − 1, n); q = gcd(x 2 + 1, n)。 結果. p、q 即可求出。. 證明步驟四:. f (0) = x0 mod n = 1 =⇒ f (r) = xr mod n = 1 =⇒ (xr − 1) mod n = 0. (2.1). r 2. r 2. r. =⇒ (x − 1) = (x + 1)(x − 1) r. r. =⇒ (x 2 + 1)(x 2 − 1) mod n = 0 r. r. =⇒ p = gcd(x 2 − 1, n) ; q = gcd(x 2 + 1, n) 舉個例子驗證:. (1) 當 n=15, 取 x=2, 則 gcd(2,15)=1。 (2) 由f (a) = xa mod n = 2a mod 15。 (3) f(0)=1,f(1)=2,f(2)=4,f(3)=8,f(4)=1,f(5)=2,. . . (4) f(a)=f(a+r),=⇒, 週期 r=4。 4. (5) p = gcd(2 2 − 1, 15) = gcd(3, 15) = 3。 12.

(23) 第 2 章 量子質因數分解 4. (6) q = gcd(2 2 + 1, 15) = gcd(5, 15) = 5。 (7) 即可求出 15 是 3 和 5 這兩個質數的乘積。 r. 上述尋找週期的方法是屬於較簡單也容易懂的方式, 但缺點是必須滿足X 2 為一個 正整數, 所以週期要為偶數, 若算出的週期為奇數時, 則此方法就不一定可以得到結 果。 因此, 這個方法並不適用所有的數。 為了避免因這個缺失而無法計算, 我們也可以 運用離散量子傅立業轉換(Discrete Fouricer Transform, DFT) 來求出週期[4], 而 離散傅立業轉換的定義為:. (1) 隨意找一個數m, 然後計算t = X m mod n。 (2) 數列.   1 if X j mod n = t, Cj =  0 if X j mod n 6= t. 《j = 0, 1, 2, · · · , q − 1, 總共有 q 點》 Pq−1 2 Cj cj = √ (3) 將數列歸一化,C , 而 S = j=0 Cj 。 s P i2πkj q 。 (4) 經離散傅立業轉換後,dk = √1q q−1 C × e j=0 j. (5) k = 0, 1, 2, · · · , q − 1, 總共有 q 點。. (6) 而|dk |2 的值會發生在k為 qr 的整數倍上, (7) 上一步中所求到的 r 值就是週期。 2.3 量子質因數分解. 1994 年 Shor 提出了有名的量子分解質因數演算法, 能在有限的時間內完成多位元數 字的質因數分解和離散對數。 量子質因數分解是利用古典質因數分解的基本概念推廣 出來的, 不同的是求出週期的方式, 量子質因數分解是以位元狀態來表示, 利用量子電 腦糾纏和疊加的特性, 以量子平行處理方法來計算結果, 可以更快速的求出週期。 13.

(24) 第 2 章 量子質因數分解. 破解量子質因數分解最重要的是量子傅立業轉換電路 (Quantum Fourier. Transform, QFT)、 和模指數電路 (modular exponentiation, MOD), 為量子 位元狀態的轉換。 當輸入端有 n 個量子位元時, 則其疊加態為 N −1 X j=0. Cj |ji. P −1 2 N = 2n , 且 N j=0 |Cj | = 1, 而量子傅立業轉換是將狀態|ji轉換成下面的式子: N −1 1 X i2πkj |ji −→ √ e q |ki N k=0. 代入式子後可得 N −1 X j=0. N −1 1 X i2πkj Cj [ √ e q |ki] N k=0. N −1 X. N −1 i2πkj 1 X = [√ Cj e q ]|ki N k=0 k=0. =. N −1 X k=0. dk |ki. 而|dk |2 是表示量子傅立業轉換的輸出狀態|ki的機率, 以數學式表示為 N −1 i2πkj 1 X dk = √ Cj e q N k=0. P −1 2 量子傅立業轉換是屬於么正變換, 所以, 要滿足 N k=0 |dk | = 1, 量測到的輸出狀態|ki是| rq i的λ倍, 可表示為. q |ki = |λ i r. 14. (2.2).

(25) 第 2 章 量子質因數分解. 之後必須運用到求取餘數的技巧, 再搭配數學上連續分數法就可求出週期[29], 連續分 數表示法:. 1. a0 +. 1. a1 +. 1 a3 + . . . 因此, 若能運用基本閘來設計這個量子傅立業轉換電路, 就可以進行量子質因數分 a2 +. 解, 求出給予的正整數可分解成哪兩個質因數。. 15.

(26) 第3章 量子電路 3.1 量子電路介紹 當積體電路越做越小, 小到如原子大小時, 就必須考慮到量子效應, 而當這個量子世界 來臨的時候, 許多傳統電路上的理論和應用就不適合了, 此時派上用場的就是以量子 力學為基礎的量子電路了。 想了解如何在量子計算系統中解決傳統電腦的問題, 就必須先了解量子閘和量子電 路的基本概念。 傳統的計算機是由電線和邏輯閘所組成的, 一般較常見的邏輯閘有三 種, AND閘、OR 閘、NOT 閘, 這些邏輯閘會對資料進行運算, 而電線的功能則是負 責傳送資料, 我們可由真值表來得到結果。 在量子電路中, 也有量子的基本閘, 例如: 反閘、 控制反閘、 單一位元處理閘、 控 制單一位元處理閘; 另有三個閘稱作萬用閘, 就是控制反閘(controlled-NOT gate,. CNOT gate)、 哈達馬閘 (Hadamard) 和控制旋轉閘 (CRm) 或是 π8 閘(T閘), 只 要有這三個閘就可以設計出所有的量子電路, 此量子電路中, 電線扮演的角色是傳送 具有量子疊加特性的量子位元, 而量子閘則是由各式么正變換所組成。 量子電路和一 般傳統電路的不同點是是量子電路到最後仍必須再進行量測才能讀到真正量子位元經 過運算後的結果, 一般傳統電路則不必。 之後還有一些人提出幾個理論來修正量子電路理論, 例如量子錯誤修正 (error- cor-. rection) 和容錯運算 (fault-tolerant computation) 等理論[5] [30], 這兩個理論說 16.

(27) 第 3 章 量子電路. 明兩個觀點, 第一個觀點是量子資訊科技與量子計算要能確實可行, 就必須讓量子邏 輯閘或是量子位元具有修正的能力; 第二個觀點是在設計量子電路時, 此量子電路必 須可以容忍某個程度的缺陷; 雖然目前現況, 關於如何能夠降低一個邏輯位元所需的 量子位元, 而仍有足夠的修正能力, 以及如何設計可容錯的量子電路, 仍只是在起步階 段, 但是, 至少這兩個理論證明了量子計算的可行性, 也說明即使個別的量子閘雖非完 美卻也是可以實行的量子計算。. 3.2 量子基本閘 若以|ψi來表示量子電腦的狀態, 單一量子位元的數學式可表示為|ψi = C0 |0i+C1 |1i,. C0、C1為複數且滿足|C0 |2 + |C1 |2 = 1, 以矩陣形式來表示為       1 0 C0  | ϕi = C0   + C1   =  0 1 C1. (3.1). 藉由C0 、C1 的線性組合, |ψi為任何可能的狀態, |C0 |2 表示量到此量子位元為|0i 的機率, |C1 |2 表示量到此量子位元為|1i的機率。 若是要將量子的狀態對應在一個球面 上(布洛赫球面,Bloch ball) , 式子可表示成. |ϕi = cos(θ)|0i + sin(θ)eiφ|1i 其中0 ≤ θ ≤ π, 而且0 ≤ φ < 2π, 任何量子的狀態以參數θ, φ表示, 都可以在布洛 赫球面找到相對應的一點 (如圖3.1)。 常見作用單一量子位元的量子閘包括了: 反閘 (N 閘)、 包立矩陣 (Pauli matri-. ces: σx, σy , σz ) 哈達馬閘(H)、 相位閘 (S), 而作用在多量子位元的閘則包括了: 控 制反閘 (CN 閘)、 控制控制反閘 (CCN 閘)、 控制旋轉閘 (CRm), 這些是基本的量 子閘, 其輸入和輸出是基底的線性組合, 並不是一般單一的布林值, 所以和一般布林電 路的邏輯閘不同。 17.

(28) 第 3 章 量子電路. 圖 3.1: 布洛赫球面. 量子電路是由量子閘所構成, 而量子閘可以表示成么正變換 (unitary transform) 的運算, 亦可以么正矩陣的運算來表示量子系統的時間進展。 一個單量子位元就是一 個2 × 2的么正矩陣, 2 個量子位元的量子閘為4 × 4的么正矩陣, 3 個量子位元的量子 閘為8 × 8的么正矩陣。 如:. . U =. 0 1 1 0.  . (3.2). 就是一個單量子位元的表示法。 舉例來說:(1) 單一量子位元的反閘 (NOT gate) , 其電路圖示如下。. '&%$ !"#. 它是將|0i和|1i的發生機率交換, 可以表示成         0 1 c c c0 · 0 = 1  N OT ·   =  1 0 c1 c0 c1. (2) 兩個量子位元的控制反閘 (CNOT 閘), 其電路圖示如下。 18. (3.3).

(29) 第 3 章 量子電路. • '&%$ !"#. 若以矩陣型式可表示如下:    c  0      c1     CN OT ·   =  c2      c3. 1 0 0 0.  . . . . c c   0  0      0 1 0 0   c1   c1  · =       0 0 0 1   c2   c3       c3 c2 0 0 1 0. (3.4). 因此, 由以上兩個例子可得知, 量子電路可以表示么正變換的矩陣。 若是把量子電路系 統擴充到兩個量子位元, 這時就會出現量子的疊加性, 原本不相干的兩個量子位元在 運算上會衍生出四種不同狀態。 傳統電路是將邏輯閘 (AND 閘、OR 閘、NOT 閘) 以串聯和並聯方式連接, 而量 子電路也是以串聯和並聯的方式連接組合, 如下圖。. H. 串聯. H. 並聯. H H. 量子電路是屬於可逆的運算, 可以從輸出端執行反運算得到原本輸入的量子位元狀 態, 這個性質非常重要, 因為量子電路在運算時, 運算的過程不會產生多餘的量子位 元, 也就不會消耗能量; 而且量子電路有並行處理的特性, 比起傳統電腦更有時效性。 以下分別說明三種萬用閘: 控制反閘 (CNOT gate)、 哈達馬閘 (Hadamard) 和 控制旋轉閘。 19.

(30) 第 3 章 量子電路 3.2.1 哈達馬閘. 哈達馬閘是針對一個量子位元進行的運算, 而其電路圖示如下。. H 而哈達馬閘作用在布洛赫球面上的方式是繞著 y = 0,x = z 這條直線為軸旋轉. 180 度 (如圖 3.2)。. 圖 3.2: 哈達馬閘作用在布洛赫球面的圖示. q. q 當輸入端為|0i時, 輸出端為 12 (|0i + |1i), 當輸出端為|1i時, 輸出端為. 1 2 (|0i. − |1i)。 而若以矩陣形式來描述則為  H =. 整個運算可以表示成:    c0 H · = c1. √1 2 √1 2. √1 2 −1 √ 2. √1 2 √1 2.   20. √1 2 −1 √ 2. c0 c1. .  . (3.5). . =. √1 (c0 2 √1 (c0 2. + c1 ) − c1 ).  . (3.6).

(31) 第 3 章 量子電路 3.2.2 控制反閘. 單量子位元的概念可以擴展到多量子位元, 控制反閘就是屬於多量子位元, 它是作用 在兩個量子位元上, 一個量子位元是當成控制 (Control) 位元, 另一個量子位元當 作是目標 (Target) 位元, 而在多量子位元閘中, 最基本的就是控制反閘。 也是最被常 使用的多量子位元閘。 CNOT閘會依照控制量子位元的狀態來決定目標量子位元的狀 態。 控制反閘的各種電路圖示如下。. •. •. '&%$ !"#. U. 控制反閘是一個 4 × 4 的矩陣, 如前述所示:  1 0   0 1 CN OT =   0 0  0 0. • •. • •. '&%$ !"#. U. 0 0. .   0 0   0 1  1 0. (3.7). 整個運算可以表示成. . . . c 1  0      c1   0   CN OT ·   =  c2   0    c3 0. 0 0 0.  . . . . c c   0  0      1 0 0   c1   c1  · =       0 0 1   c2   c3       c2 c3 0 1 0. (3.8). 由結果可知, 當第一個量子位元 (控制位元) 為 0 時, 輸出端的值不變; 當 (控制位元) 為 1 時, 它是將|10i和|01i的發生機率交換, 也就是說當控制位元為 X=1 時, 輸出端 21.

(32) 第 3 章 量子電路. 的 Y 值會由 0 變成 1 或是由 1 變成 0, 但是輸出端的 X 值仍不變。 CNOT真值表如表. 3.1所示。 表 3.1: CNOT 閘真值表 輸入 X Y 0 0 0 1 1 0 1 1. 輸出 X Y 0 0 0 1 1 1 1 0. 3.2.3 量子控制旋轉閘. 量子控制旋轉閘作用在任意兩個量子位元上, 其中一個量子位元當做控制位元, 另一 個量子位元則是改變一個相位角度 (phase angle)ejθik , 以矩陣形式來表示可為:   1 0 0 0     0 1 0 0  (3.9) Rm =    0 0 1  0   jθik 0 0 0 e. m=i-k+1, m定義為兩個量子位元的差值, i和 k 則表示兩個量子位元的輸入值, 如 果 m>0 時, 則 i>k, 由 i 當做控制位元; 若是 m<0 時, 則 i<k 由 k 當作是控制位 元。 由 m 值的正負號, 可決定旋轉的相位角ejθik 為順時鐘方向或是逆時鐘方向。 圖示 如下。 輸入端 Qubit i. Qubit k. •. 輸出端. 輸入端 m Qubit i. Qubit k. m. 控制旋轉閘在布洛赫球面的圖示 (如圖3.3)。 22. •. 輸出端.

(33) 第 3 章 量子電路. 圖 3.3: 控制旋轉閘以y軸和 z 軸為軸心旋轉的圖示. 3.3 量子傅立業轉換電路 QFT電路屬於么正轉換, 符合機率和為一的關係, 依照修爾提出的質因數分解的量子傅立業轉換電路[31], 如下: 以數學式表示為: n 2X −1. i=0. |Ci |2 =. n 2X −1. i=0. |C´i|2 = 1 ; i = 0, 1, 2, ..., 2n−1. (3.10). 量子傅立葉轉換就是要轉換: N −1 1 X i2πkj |ji −→ √ e q |ki N k=0. 也可以表示成. |ji −→. 1 2πi0·jn |1i)(|0i + e2πi0·jn−1jn |1i) . . . (|0i + e2πi0·j1j2 ...jn |1i) n (|0i + e 2 2 (3.11). ( 0 · jn ≡ jn · 2−1 ; 0 · jn−1 · jn ≡ jn−1 · 2−1 + jn · 2−2 ; 依此類推, 0 · j1 · j2 · · · jn ≡ j1 · 2−1 + j2 · 2−2 + · · · + jn · 2−n ) 23.

(34) 第 3 章 量子電路. QFT電路主要就是由哈達馬閘和量子控制旋轉閘所組成的, 哈達馬閘應用在第一 個量子位元, 狀態為:. 1 |j1 i −→= √ (|0i + e2πi0·j1 |1i)|j2 j3 ...jni 2 再運用控制旋轉閘(C − R2 ), 狀態則為:. 1 √ (|0i + e2πi0·j1 j2 |1i)|j2 j3 ...jni 2 如果連續使用C − R3 , C − R4 , ...C − Rn 作用在第一個量子位元上, 狀態會變成:. 1 √ (|0i + e2πi0·j1 j2 ...jn |1i)|j2 j3 ...jni 2 接著運用哈達馬閘作用在第二個量子位元|j2 i上, 然後再運用C − R2 , C − R3 , C −. R4, ...C − Rn−1, 可得狀態為: 1 √ (|0i + e2πi0·j1j2 ...jn |1i)(|0i + e2πi0·j2 ...jn |1i)|j3 ...jni 2 由這個原理可再繼續推導|j3 i, |j4 i, ...|jni, 得到最終的狀態為:. 1 2πi0·j1 j2 ...jn |1i)(|0i + e2πi0·j2 ...jn |1i) . . . (|0i + e2πi0·jn |1i) n (|0i + e 2 2. (3.12). 傅立業轉換量子電路圖示如下:. |j1 i |j2 i .. .. |jn−1 i |jn i. H. R2 · · · Rn−1 •. .. ... Rn H · · · Rn−2. •. •. • 24. Rn−1 H •. R2 •. H.

(35) 第 3 章 量子電路. 此 (4.12) 結果與上述的 (4.11) 量子位元順序相反, 因此, 量子傅立業轉換電路輸 出值還需再經過重新排序, 重排電路可以可以利用調換電路 (Swap circuit) 來完成, 如下圖。. |1i. •. '&%$ !"#. •. |0i. '&%$ !"# !"# • '&%$ |0i |1i 電路是由 3 個控制反閘構成, 可交換兩個量子位元的順序。 重新排序後的量子電路. 才會是最後的結果。. 3.4 模指數電路 量子質因數分解會運用到上述的傅立業轉換電路, 也會遇到取餘數的問題, 將餘數的 問題以模數的型式來表示, 而其中若是含有指數(xa mod n), 就稱此類的模數為模指 數, 因此, 模指數可以解決求取餘數的問題。 根據模指數理論來設計模指數的量子電路[32], 計算餘數的問題, 也可以比傳統電 腦更節省時間。 模指數的電路圖(如圖3.4),x 和 n 為常數。. 圖 3.4: 模指數的電路圖. 由於量子電路可以反運算, 輸入端的量子位元和輸出端的量子位元會一樣多, 因此, 可由輸出端推測輸入端的值。 輸入端的|bi用來儲存輸出的|xa mod ni。 將 a 表示成 二進制, 再進行xa mod n的計算, 而數學式如下:. a = aN −1 2N −1 + aN −22N −2 + . . . + a1 21 + a0 20 25.

(36) 第 3 章 量子電路. 代入xa mod n, 結果為:. xa mod n = xaN −1 2. N −1. = (xaN −12 = [x2. N −1. +aN −2 2N −2 +...+a1 21 +a0 20. N −1. · xaN −22. N −2. mod n. 1. 0. · . . . xa12 · xa0 2 ) mod n. (3.13). 0. mod n]aN −1 . . . [x2 mod n]a0 mod n. 0. 令(x2 ) mod n = g0 , 則 1. x2 mod n = g1 同理可得. x2. N −1. mod n = gN −1. 將g0 , g1 , . . . , gN −1 代入可得. xa mod n = [(gN −1)aN −1 · . . . (g1)a1 · (g0 )a0 ] mod n 利用上述的數學式來設計模指數的量子電路, 便可得到結果。 舉例來說. f (a) = 11a mod 15的模指數電路圖 (如圖3.5)。. 圖 3.5: f (a) = 11a mod 15模指數電路圖示. 以f (a) = 2a mod 15 為例來設計模指數的量子電路。 26. (3.14).

(37) 第 3 章 量子電路. f (a) = 2a mod 15 = 24a2+2a1 +1a0 mod 15 4. a2. 2. a1. (3.15). a0. = [(2 mod 15) (2 mod 15) (2 mod 15) ] mod 15 = (1a2 · 4a1 · 2a0 ) mod 15 因此, f (a)的值只和a1 , a0 有關, 有四種情形:. if a1 = 0, a0 = 0 =⇒ f (a) = 1 if a1 = 0, a0 = 1 =⇒ f (a) = 2. (3.16). if a1 = 1, a0 = 0 =⇒ f (a) = 4 if a1 = 1, a0 = 1 =⇒ f (a) = 8 而f (a) = 2a mod 15 模指數電路設計如下圖:. H H H H H H H H. •. • •. '&%$ !"#. '&%$ !"#. •. •. '&%$ !"#. • '&%$ !"#. 27. '&%$ !"#. •. • • '&%$ !"#. • '&%$ !"#. '&%$ !"#. •. • '&%$ !"#.

(38) 第4章 研究分析. 本研究的目的是針對 Shor 提出的量子質因數分解演算法來進行程式模擬, 可應用的 模擬器有 jQuantum、 QCE、 QCSim、QAD、QuIDDPro 等。 而此研究是則是利用. QuaSi2[33]模擬器來設計量子電路。 QuaSi是由Beth 教授 (任教於德國卡爾斯魯厄大學 Karlsruhe) 領導的 Instituts fur Algorithmen und Kognitive Systeme (IAKS) 組織所研發出來的, 歷 時三年時間 (1998-2000 年)。 這套軟體是以 java 語言編寫的, 特點是使用者可以利 用圖示介面輕易的建構和模擬量子電路, 能模擬 20 個量子位元並計算出函數值, 目前 仍在持續的研發中, 現今為 QuaSi2 的版本。 (如圖4.1) 執行 QuaSi2 後會出現四個視窗, 第一個視窗是設計完成的量子電路, 第二個視窗 是計算出函數值並顯示量子狀態, 第三個視窗是利用顏色的線段顯示各量子狀態的機 率波, 第四個視窗是利用顏色的線段顯示各量子狀態的振幅。 (如圖4.2) 我們可以選擇 輸入量子位元數的數值, 並增加所需的量子閘來設計電路 (第一個視窗), 設計完成後 按執行就可以由其他三個視窗得到結果, 由結果可以再進一步進行分析。. QuaSi2 的基本閘包含了 H 閘、CN 閘、CCN 閘、 測量閘, 沒有調換閘, 但也能達到 調換閘的功能, 並且可以讓使用者自訂閘的數值和名稱, 非常便利; 當於第一個視窗點 選任意位置時, 會顯示該位置的量子位元次序值和函數值。 QuaSi2 也可以執行 Shor 演算法和 Grover 演算法, 只要輸入所需的數值即可。 28.

(39) 第 4 章 研究分析. 圖 4.1: QuaSi2 軟體的介面. 4.1 模擬程式 參考文獻[15] [34]來描述Shor 量子演算法, 並且設計量子電路, 利用 QuaSi2 模擬器 執行可得到結果。 質因數分解演算法完整的量子電路架構如圖4.3, 而其演算法的詳細步驟如下述說明: 已知. 一個正整數 n。. 目的. 求出兩個質因數p1 和p2 , 即n = p1 × p2 。. 步驟一. 隨意找一個數x, 使其和 n 互質, 即gcd(x, n) = 1 且 1 ≤ x ≤ n − 1。 29.

(40) 第 4 章 研究分析. 圖 4.2: QuaSi2 的四個顯示視窗. 步驟二. 準備兩個暫存器 reg1 和 reg2, 而其個別的量子位元數L1 和L2 的範 圍為:2 log2 (n) ≤ L1 < 2 log2 (2n),log2 (n) ≤ L2 。. 步驟三. 將reg1 和 reg2 初始化:|reg1i = |0000 · · · 0i, |reg2i = |00 · · · 0i,. 步驟四. 利用 H 閘使 reg1 包含了|0i、|1i、|2i · · · |q − 1i狀態。 P 即|reg1i = √1q q−1 j=0 |ji。. 步驟五. |reg2i = |xj mod ni = |f (j)i。. 步驟六. 再對 reg1 進行量子傅立業轉換, 狀態變為 30.

(41) 第 4 章 研究分析. 圖 4.3: 質因數分解的量子電路架構. |reg1i =. √1 q. Pq−1 Pq−1 k=0. j=0. 而最後完整狀態|ψi即為. |ψi = |reg1i|reg2i = = 令|r(k)i =. =⇒ |ψi = 步驟七. Pq−1 j=0. 1 q. 2π. ω jk |ki, 此處ω = ei q. √1 q √1 q. Pq−1 Pq−1 k=0. Pq−1. k=0 |ki. ω jk |f (j)i. Pq−1. k=0 k|r(k)ik. j=0 ω. · |ki ·. jk. Pq−1. |ki|f (j)i ω jk |f (j)i. j=0. |r(k)i k|r(k)ik. 。. 量測 reg1 得一狀態|ki, 而其測量的機率狀態為 若是 rk mod q 6= 0, 則P rob(k) = 若是 rk mod q = 0, 則P rob(k) =. q0 2 πrkq0 r +1)+(r−z)sin ( qr ) q 2 r2 sin2 ( πrk q ) 2 z(q0 +r) +(r−z)q02 q 2 r2. zsin2 ( πrk q (. 其中r為週期,q = q0 + z,q0 = ry ,y 是整數 而量測到的狀態 k 會是 rq 的λ倍, 即k = λ qr 。(附錄四) 步驟八. 運用連分數法來估計週期r和倍數λ。. 步驟九. 將步驟二到步驟八執行了ln(m)次,2n2 ≤ m ≤ 3n2 , 加入量子計算後 可得足夠的r值, 由這些可能的 r 值估算出真正的週期 r。. 步驟十. 週期 r 得知後即可算出兩個質因數 p1 和 p2 , r. r. p1 = gcd(x 2 − 1, n) ; p2 = gcd(x 2 + 1, n)。. 31.

(42) 第 4 章 研究分析. 4.2 模擬運結果與分析 根據量子質因數分解演算法, 以 QuaSi2 軟體模擬, 可得到結果。 本研究挑選被分解的 正整數 n 為 15 和 21, 並選取與 n 互質的數 x, (x, n)則為(2, 15)、(4, 15)、(7, 15)、. (8, 15)、(11, 15)、(13, 15)、(8, 21)、(13, 21)等八種結果。 因篇幅有限, 在此章節只舉例(x, n)為 (2, 15)的模擬演算步驟, 而其他七個可依此 類推, 量測結果於此章節末列出。 4.2.1. (x,n)=(2,15) 的量子電路設計. 若取正整數 n 為 15、x 為 2, 量子電路如下圖:. H H H H H H H H. QF T −1 •. • •. '&%$ !"#. '&%$ !"#. •. •. '&%$ !"#. • '&%$ !"#. '&%$ !"#. •. • • '&%$ !"#. • '&%$ !"#. '&%$ !"#. •. • '&%$ !"#. 而其演算步驟如下: 步驟一. 取一個數 x=2 , gcd(2, 15) = 1. 步驟二. 準備兩個暫存器 reg1 和 reg2,. 2 log2 (15) ≤ L1 < 2 log2 (30) , log2(15) ≤ L2。 32.

(43) 第 4 章 研究分析. 而其個別的量子位元數L1 = 8和L2 = 4。 步驟三. 將 reg1 和 reg2 初始化:|reg1i = |00000000i, |reg2i = |0000i,. 步驟四. 利用 H 閘使 reg1 包含了|0i、|1i、|2i · · · |255i狀態。 P255 1 即|reg1i = √256 j=0 |ji。. 步驟五. |reg2i = |2j mod 15i = |f (j)i。. 步驟六. 再對 reg1 進行量子傅立業轉換, 狀態變為 P255 P255 jk i 2π 1 q |reg1i = √256 ω |ki, 此處 ω = e k=0 j=0 而最後完整狀態|ψi即為. P255 1 |ψi = |reg1i|reg2i = 256 k=0 |||r(k)i|| · |ki · P jk 令|r(k)i = 255 j=0 ω |f (j)i =. |r(k)i |||r(k)i||. (|1i + ω 1k |2i + ω 2k |4i + ω 3k |8i). +ω 4k (|1i + ω 1k |2i + ω 2k |4i + ω 3k |8i) +ω 8k (|1i + ω 1k |2i + ω 2k |4i + ω 3k |8i) +··· +ω 252k (|1i + ω 1k |2i + ω 2k |4i + ω 3k |8i) = (1 + ω 4k + ω 8k + · · · + ω 252k ) (|1i + ω 1k |2i + ω 2k |4i + ω 3k |8i) 因為|1i, |2i, |4i, |8i互為正交, 所以. |||r(k)i||2 = hr(k)||r(k)i = 4× | 步驟七. P63. j=0 ω. 4jk 2. |. 量測reg1 得一狀態|ki, 而其測量的機率狀態為 P63 4jk 2 2 4 P rob = k|r(k)ik | = × | 2 2 j=0 ω q 256 當在k = 0, 64, 128, 192 處附近有峰值, 所以 y 只會是0,64,128,192這 四個值附近的值, 因為量測到的 y 值不一定, 在此假設量到的值是. 33.

(44) 第 4 章 研究分析. y=64。 步驟八. 運用連分數法來估計週期 r 和倍數λ。. y ≈ λ rq =⇒. 64 256. 使用連分數分解, 64 256. 因此 而如何從一些. λ r. ≈. 64 256. =0+ λ r. 可以表示如下 1 4. 為 41 λ r. 挑選出正確的r值和λ值, 週期 r 值就必須滿足下列. 的三個條件:. (1)r 是一個偶數 (2)r ≤ φ(n), 其中φ(n)表示尤拉商, 也就是小於 n 且與 n 互質的整數 個數。. (3)xr ≡ 1 mod n 所以 r 可能值為 4, 也同時符合這三個條件, 所以週期為 4。 步驟九. 2 × 152 ≤ m ≤ 3 × 152, 取m=500, 則將步驟二到步驟八執行 了ln(m) = 6 次 。 因為每次測量值所算出來的 y 值不一定, 若是在步驟七量測的 y 值為. 127(第四次量測值), 則情況就會不一樣了。. 127 =0+ 256. 1 2+. 1 63 +. 因此. λ r. 1 2. 63 127 為 12 , 127 , 256. 所以 r 可能值為 2,127.256, 但是此三個值都不符合上述的三項, 34.

(45) 第 4 章 研究分析. 因此此測量值就估算不出正確週期, 這也是要執行ln(m)次的原因。 步驟十. 週期 r 得知後即可算出兩個質因數 p1 和 p2 , 4. 4. p1 = gcd(2 2 − 1, 15) = 3; p2 = gcd(2 2 + 1, 15) = 5。 所以 n=15 可分解成3 × 5。 了解演算步驟後, 原本只要將步驟九執行ln(m) = 6的六次量測值列出, 但是, 為 了產生更多數據來驗證量子演算法是否可行, 因此, 多列出一倍的數據, 列出十二次 量測值, 再由每次的量測值中找出峰值 (附錄二)。 紀錄每一次的量測結果和機率振幅 的分佈情形, 並將模擬(x, n)為 (2, 15)的量子電路中執行 12 次的結果, 一一的呈現出 來。(如圖4.4到圖4.15) 以下針對十二次的結果進行分析, 如下述: 第一次. 圖 4.4: 執行(x,n)=(2,15) 第一次的四個顯示視窗. 表4.1中的量子位元狀態|ki有分為二進位和十進位的寫法 (如附錄一), R表示量測 值的實數, I表示量測值的虛數, prob(k) 表示各量子位元的機率。 35.

(46) 第 4 章 研究分析. 表 4.1: 執行 (x,n)=(2,15) 第一次量測結果. 次數 十進位 一. 0 64 128 192. |ki值. 二進位. R. I. |000000000010i 0.500 0.000 |010000000010i 0.000 0.500 |100000000010i -0.500 0.000 |110000000010i 0.000 -0.500. prob(k) 0.250 0.250 0.250 0.250. 如圖4.4: 左上的視窗為 (x,n)=(2,15) 量子電路, 量子電路設計的方法已於 4.4 章 節詳細描述了。 當執行這個視窗後, 右上的視窗會出現量測的數值, 例如: |0000000. 00010i, 一共有 12 個量子位元, 前 8 個是 reg1 的量子位元數, 後 4 個是 reg2 的量子 位元數, 狀態|ki是對 reg1 做量測, 因此會有28 = 256個量子位元狀態。 左下的視窗 為各量子位元狀態的機率。 右下的視窗則各量子位元狀態的振幅, 線段的長短表示數 值的高低, 機率為振幅的平方值。 而這兩個視窗從左到右的位置就是表示量子位元狀 態換算成十進位後 0 到 255 依序的位置。 第一次的執行結果如圖4.4和表4.1所示。 表中|000000000010i為暫存器 1 的量子態, 就是左下和右下視窗的第一條線段, 換 算成十進位 (見附錄一) 就是為 0, 所以線段的位置在最左邊。 機率為 0.25, 振幅則 為0.5 + 0i, 振幅的實數和虛數皆為正值, 所以線段在水平線上方。 第二個量測值|000000000010i, 就是左下和右下視窗的第二條線段 (從左到右), 而其換算十進位後則為 64(取前 8 個量子位元狀態), 所以線段位置會在 64 的位置。 機 率為 0.25, 振幅則為0 + 0.5i, 振幅的實數和虛數皆為正值, 所以線段在水平線上方。 第三個量測值和第四個量測值依此類推, 這四個量測值的機率皆為 0.25, 所以機率 的線段會一樣長, 而振幅的數值一樣, 四條線段也會一樣長。 |ki = 128.192的振幅為 負數, 圖中顯示的線段在水平線下方; |ki = 0, 64的振幅為正數, 圖中顯示的線段在 水平線上方。 36.

(47) 第 4 章 研究分析. 由量測值可知峰值|ki為 0,64,128,192。 當|ki = 64, 由連分數法可得知週期為 4, 4. 4. p1 = gcd(2 2 − 1, 15) = 3; p2 = gcd(2 2 + 1, 15) = 5, 即可算出 n=15 可分解 成3 × 5。 當|ki = 0, 128, 192, 則無法算出正確的週期, 因此, 這三個峰值無法得知. 15 因數分解後的結果 (演算步驟於 5.2 章節)。 第二次. 圖 4.5: 執行(x,n)=(2,15) 第二次的四個顯示視窗. 表 4.2: 執行 (x,n)=(2,15) 第二次量測結果. 次數 十進位 二. 0 65 193 254. |ki值. 二進位. R. I. |000000000011i 0.354 0.000 |000000000011i 0.214 -0.230 |110000010011i -0.236 -0.220 |111111100011i 0.225 0.017. prob(k) 0.125 0.099 0.104 0.051. 由第二次量測結果中的的 256 個量測值找出 1 個最大峰值和三個依次較小的峰值, 37.

(48) 第 4 章 研究分析. 如圖4.5和表4.2。 這四個峰值的機率值 (prob(k)) 算出來不一樣, 第一個峰值的機率 值最大, 所以表示的線段也會比較長; 而四個峰值分別是位於 0,65,193,254 的位置上。 量測值中有負數的, 表示振幅的線段就會位於水平線下方, 由圖即可看出各個量子位 元狀態機率和振幅分布的情況。 |ki = 193的振幅為負數, 圖中顯示的線段在水平線下 方; |ki = 0, 65, 254的振幅為正數, 圖中顯示的線段在水平線上方。 由最大峰值|ki = 0, 無法算出正確的週期, 因此, 第二次的量測結果無法得知 15 因數分解後的結果。 第三次. 圖 4.6: 執行(x,n)=(2,15) 第三次的四個顯示視窗. 由第三次量測結果中的的 256 個量測值找出 4 個峰值, 如圖4.6和表4.3。 有四條線 段是最長的且等長的, 因為這四個峰值的機率值是一樣的。 而其量子位元狀態分別為. 0,64,128,192, 也就是表示峰值|ki為 0,64,128,192, 與第一次量測結果結果相同。 |k = 128, 192的振幅為負數, 圖中顯示的線段在水平線下方; |ki = 0, 64的振幅為正 38.

(49) 第 4 章 研究分析. 表 4.3: 執行 (x,n)=(2,15) 第三次量測結果. 次數 十進位 三. 0 64 128 192. |ki值. 二進位. R. I. |000000000100i 0.260 0.189 |010000000100i 0.189 -0.260 |100000000100i -0.260 -0.189 |110000000100i -0.189 0.260. prob(k) 0.103 0.103 0.103 0.103. 數, 圖中顯示的線段在水平線上方。 當|ki = 64, 由連分數法可得知週期為 4, p1 = 4. 4. gcd(2 2 − 1, 15) = 3; p2 = gcd(2 2 + 1, 15) = 5, 即可算出 n=15 可分解成3 × 5。 當|ki = 0, 128, 192, 則無法算出正確的週期, 因此, 這三個峰值無法得知 15 因數分 解後的結果。 第四次. 圖 4.7: 執行(x,n)=(2,15) 第四次的四個顯示視窗. 由第四次量測結果中的的 256 個量測值找出 2 個最大峰值和 2 個次大峰值, 如圖4.7和 39.

(50) 第 4 章 研究分析. 表 4.4: 執行 (x,n)=(2,15) 第四次量測結果. 次數 十進位 四. 0 127 128 255. |ki值. 二進位. R. I. prob(k). |000000000101i 0.223 0.093 |011111110101i -0.111 0.268 |100000000101i 0.223 0.093 |111111110101i -0.111 0.268. 0.058 0.084 0.058 0.084. 表4.4。 此四個峰值的量子位元狀態為 0,127,128,255, 而|ki = 0和|ki = 128的 機率值一樣, |ki = 127和|ki = 255的機率值一樣, 但是|ki = 127, 255的機率 值大於|ki = 0, 128。 |ki = 0, 128的振幅為負數, 圖中顯示的線段在水平線下方;. |ki = 127, 255 的振幅為正數, 圖中顯示的線段在水平線上方。 由量測值可知最大峰值|ki為 127,255。 這兩個峰值皆無法算出正確的週期, 因此, 由第四次的量測結果中無法得知 15 因數分解後的結果。 第五次. 圖 4.8: 執行(x,n)=(2,15) 第五次的四個顯示視窗 40.

(51) 第 4 章 研究分析. 表 4.5: 執行 (x,n)=(2,15) 第五次量測結果. 次數 十進位 五. 170 171 178 196. |ki值. 二進位. R. I. |101010100001i 0.116 0.120 |101010110001i -0.130 0.066 |101100100001i 0.100 0.160 |110010000001i 0.120 0.053. prob(k) 0.028 0.021 0.036 0.017. 由第五次量測結果中的的 256 個量測值找出 1 個最大峰值和 3 個依次較小的峰值, 如圖4.8和表4.5。 這一次的量測結果的機率值比前四次的峰值機率小。 此四個峰值的 量子位元狀態為 0,. 127,128,255, |ki = 171的振幅為負數, 圖中顯示的線段在水平線下方; |ki = 170 , 178, 196的振幅為正數, 圖中顯示的線段在水平線上方。 由量測值可知最大峰值|ki為 178, 但無法算出正確的週期, 因此, 由第五次的量測 結果中無法得知 15 因數分解後的結果。 第六次 表 4.6: 執行 (x,n)=(2,15) 第六次量測結果. 次數 十進位 六. 59 67 78 123 131. |ki值. 二進位. R. I. |001110110000i 0.142 -0.100 |010000110000i 0.272 0.014 |010011100000i 0.110 -0.102 |011110110000i -0.129 -0.112 |100000110000i -0.120 -0.169. prob(k) 0.030 0.074 0.023 0.029 0.043. 由第六次量測結果中的的 256 個量測值找出 1 個最大峰值和 4 個依次較小的峰值, 如圖4.9和表4.6。 此五個峰值的量子位元狀態為 59,67,78,123,131, |ki = 59, 78, 123. , 131的振幅為負數, 圖中顯示的線段在水平線下方; |ki = 67的振幅為正數, 圖中顯 41.

(52) 第 4 章 研究分析. 圖 4.9: 執行(x,n)=(2,15) 第六次的四個顯示視窗. 示的線段在水平線上方。 4. 最大峰值|ki = 67, 由連分數法可得知週期為 4, p1 = gcd(2 2 −1, 15) = 3; p2 = 4. gcd(2 2 + 1, 15) = 5, 即可算出 n=15 可分解成3 × 5。 第七次 表 4.7: 執行 (x,n)=(2,15) 第七次量測結果. 次數 十進位 七. 1 62 65 126 129 190 193 254. |ki值. 二進位. R. I. prob(k). |000000010010i |001111100010i |010000010010i |011111100010i |100000010010i |101111100010i |110000010010i |111111100010i. -0.127 -0.117 -0.040 -0.070 0.128 0.117 0.040 0.070. 0.040 0.070 -0.130 -0.117 -0.040 -0.070 0.127 0.117. 0.018 0.019 0.019 0.019 0.018 0.019 0.018 0.019. 42.

(53) 第 4 章 研究分析. 圖 4.10: 執行(x,n)=(2,15) 第七次的四個顯示視窗. 由第七次量測結果中的的 256 個量測值找出 5 個最大峰值和 3 個依次較小的峰值, 如圖4.10和表4.7。 此次量測結果中, 與其他次的量測結果相較之下, 每個峰值的機率 值較為接近。 此八個峰值的量子位元狀態為 1,62,65,126,129, 190,193,254, |ki =. 1, 62, 65, 126 ,129,190 的振幅為負數, 圖中顯示的線段在水平線下方; |ki = 193, 254的振幅為正數, 圖中顯示的線段在水平線上方。 |ki = 1, 193的機率值一樣, |ki = 62, 126 ,190,254 的機率值一樣。 4. 當|ki = 62, 65, 由連分數法可得知週期為 4, p1 = gcd(2 2 − 1, 15) = 3; p2 = 4. gcd(2 2 + 1, 15) = 5, 即可算出 n=15 可分解成3 × 5。 第八次 由第八次量測結果中的的 256 個量測值找出 1 個最大峰值和 1 個次大峰值, 如圖4.11 和表4.8。 此兩個峰值的量子位元狀態為 41,233, |ki = 41的振幅為負數, 圖中顯示的 線段在水平線下方; |ki = 233的振幅為正數, 圖中顯示的線段在水平線上方。 43.

(54) 第 4 章 研究分析. 圖 4.11: 執行(x,n)=(2,15) 第八次的四個顯示視窗. 表 4.8: 執行 (x,n)=(2,15) 第八次量測結果. 次數 十進位 八. 41 233. |ki值. 二進位. R. I. |001010011100i -0.107 -0.156 |111010011100i 0.248 0.110. 44. prob(k) 0.036 0.074.

(55) 第 4 章 研究分析. 由量測值可知最大峰值|ki為 233, 無法算出正確的週期, 因此, 由第八次的量測結 果中無法得知 15 因數分解後的結果。 第九次. 圖 4.12: 執行(x,n)=(2,15) 第九次的四個顯示視窗. 表 4.9: 執行 (x,n)=(2,15) 第九次量測結果. 次數 十進位 九. 3 67 131 195. |ki值. 二進位. R. I. |000000110111i -0.046 0.155 |010000110111i 0.046 -0.155 |100000110111i -0.046 0.155 |110000110111i 0.046 -0.155. prob(k) 0.026 0.026 0.026 0.026. 由第九次量測結果中的的 256 個量測值找出 4 個峰值, 如圖4.12和表4.9。 此次量測 結果中, 四個峰值的機率值一樣。 此四個峰值的量子位元狀態為 3,67,131,195, |ki =. 3, 67, 131, 195的振幅皆為負數, 圖中顯示的線段在水平線下方。 45.

(56) 第 4 章 研究分析 4. 當|ki = 67, 由連分數法可得知週期為 4, p1 = gcd(2 2 − 1, 15) = 3; p2 = 4. gcd(2 2 + 1, 15) = 5, 即可算出 n=15 可分解成3 × 5。 當|ki = 3, 131, 195, 則無法 算出正確的週期, 因此, 這三個峰值無法得知 15 因數分解後的結果。 第十次. 圖 4.13: 執行(x,n)=(2,15) 第十次的四個顯示視窗. 表 4.10: 執行 (x,n)=(2,15) 第十次量測結果. 次數 十進位 十. 40 104 168 232. |ki值. 二進位. R. I. prob(k). |001010000110i |011010000110i |101010000110i |111010000110i. -0.123 -0.123 -0.123 -0.123. -0.024 -0.024 -0.024 -0.024. 0.016 0.016 0.016 0.016. 由第十次量測結果中的的 256 個量測值找出 4 個峰值, 如圖4.13和表4.10。 這次四 個峰值的機率值都一樣, 而量子位元狀態為 40,104,168,232; 當|ki = 40, 104, 168 46.

(57) 第 4 章 研究分析. 232的振幅皆為負數, 圖中顯示的線段在水平線下方。 由量測值可知峰值|ki為 40,104,168,232, 這四個峰值皆無法算出正確的週期, 因 此, 由第十次的量測結果中無法得知 15 因數分解後的結果。 第十一次. 圖 4.14: 執行(x,n)=(2,15) 第十一次的四個顯示視窗. 表 4.11: 執行 (x,n)=(2,15) 第十一次量測結果. 次數 十進位 十一. 82 83 84. |ki值. 二進位. R. I. |010100101101i -0.188 -0.004 |010100111101i -0.124 -0.173 |010101001101i 0.065 -0.182. prob(k) 0.035 0.045 0.037. 由第十一次量測結果中的的 256 個量測值找出 1 個最大峰值和 2 個依次較小的峰值, 如圖4.14和表4.11。 此三個峰值的量子位元狀態為 82,83,84, 與其他次的量測結果比 較, 峰值的位置較集中, 其他量測次數的峰值位置則較分散。 |ki = 82, 83, 84的振幅 47.

(58) 第 4 章 研究分析. 皆為負數, 圖中顯示的線段在水平線下方。 由量測值可知最大峰值|ki為 83, 無法算出正確的週期, 因此, 由第十一次的量測結 果中無法得知 15 因數分解後的結果。 第十二次. 圖 4.15: 執行(x,n)=(2,15) 第十二次的四個顯示視窗. 表 4.12: 執行 (x,n)=(2,15) 第十二次量測結果. 次數 十進位 十二. 10 72 74 138. |ki值. 二進位. R. I. prob(k). |000010101100i |010010001100i |010010101100i |100010101100i. 0.165 0.176 0.218 0.183. -0.109 -0.109 -0.075 -0.221. 0.039 0.043 0.053 0.082. 由第十二次量測結果中的的 256 個量測值找出 1 個最大峰值和 3 個依次較小的峰值, 如圖4.15和表4.12。 此四個峰值的量子位元狀態為 10,72,74,138, |ki = 10, 72, 74, 48.

(59) 第 4 章 研究分析. 138的振幅皆為負數, 圖中顯示的線段在水平線下方。 由最大峰值|ki = 138, 無法算出正確的週期, 因此, 無法得知 15 因數分解後的結 果。 以下分別列出十二次的峰值, 並且標記可以算出正確週期 (r=4) 的峰值, 由週期 就可以算出15 = 3 × 5。(如表4.13) 表 4.13: 執行 (x,n)=(2,15) 十二次量測結果的峰值總表 次數 一 二 三 四 五 六 七 八 九 十 十一 十二 可找出正確週期的峰值. 十進位 0, 64 ,128,192 0 0, 64 ,128,192 127,255 178 67 62 , 65 ,126,190,254 233 3, 67 ,131,195 40,104,168,232 83 138 62,64,65,67可找出正確週期 r=4, 得到15 = 3 × 5的結果。. 由這 12 次的量測結果發現, 前六次就可以得知我們要的正確週期, 進而可求出兩個 質因數, 第七次到第十二次的量測結果中, 只有第九次才可求出正確週期, 多算了一倍 的量測結果, 卻只有一次可以求出結果, 成效並不高。 因此, 下一章節的七個量子電路 量測六次即可, 就可算出正確週期了。 4.2.2 其餘七個數值的量子電路設計. 除了上述的量子電路設計之外, 另外還有七個量子電路設計 (附錄三): (x, n)為(4, 15) 、(7, 15)、(8, 15)、(11, 15)、(13, 15)、(8, 21)、(13, 21)。 將這七個量子電路依照演算步 驟, 設計量子電路, 執行並分析結果, 由量測結果即可求出週期, 進而得知正整數可分 49.

(60) 第 4 章 研究分析. 解成哪兩個質因數相乘。 將六次的量測結果列出, 並分析量測結果。 進行質因數分解時, 依照演算步驟, 2 log2 (n) ≤ L1 ≤ 2 log2 (2n), log2 (n) ≤. L2, 當正整數(n) 為 15, reg1 量子暫存器2 log2 (15) ≤ L1 ≤ 2 log2(30), 所以需要 8 個量子位元 (L1), reg2 量子暫存器log2(15) ≤ L2, 所以需要4 個量子位元 (L2), 設計正整數15 的質因數分解量子電路就必須要有 12 個量子位元, 而量測 reg1 所得 的|ki總共有28 = 256個量子位元狀態。 當正整數 (n) 為 21 時, reg1 量子暫存器2 log2 (21) ≤ L1 ≤ 2 log2 (42), 所以 需要 9 個量子位元 (L1 ), reg2 量子暫存器log2 (21) ≤ L2 , 所以需要5 個量子位元. (L2), 設計正整數21 的質因數分解量子電路就必須要有 14 個量子位元, 而量測 reg1 所得的|ki總共有29 = 512個量子位元狀態。 依據演算步驟, 量測次數的算式為2n2 ≤ m ≤ 3n2 , 執行ln(m)次, 所以當正整數. n=15, 450 ≤ m ≤ 675, 取 m=500, 即可算量測次數為ln(500) = 6次; 而當正整 數為 21 時, 882 ≤ m ≤ 1323, 取 m=1000, 即可算量測次數為ln(1000) = 7次。 執 行這七個量子電路, 分析量測結果, 求出週期和質因數, 並將這些結果記錄於下表, 列 出六次量測結果, 但因篇幅有限, 下述分析的部分只探討確定能算出正確週期的其中 一次量測結果。. (x,n) 質因數分解分項說明如下: 1.(4,15):. 峰值:|000000000001i =⇒ 0 2. ; |100000000001i =⇒ 128 4. 週期 r = 2 ,p = gcd(4 2 − 1, 15) = 3; q = gcd(4 2 + 1, 15) = 5;. 15 = 3 × 5, 即可求出。(如圖4.16)(如表4.14) 2.(7,15):. 峰值:|000000001101i =⇒ 0. ; |010000001101i =⇒ 64. |100000001101i =⇒ 128 ; |110000001101i =⇒ 192 4. 4. 週期 r = 4 ,p = gcd(7 2 − 1, 15) = 3; q = gcd(7 2 + 1, 15) = 5; 50.

(61) 第 4 章 研究分析. 15 = 3 × 5, 即可求出。(如圖4.17)(如表4.15) 3.(8,15):. 峰值:|000000000010i =⇒ 0. ; |010000000010i =⇒ 64. |100000000010i =⇒ 128 ; |110000000010i =⇒ 192 4. 4. 週期 r = 4 ,p = gcd(8 2 − 1, 15) = 3; q = gcd(8 2 + 1, 15) = 5;. 15 = 3 × 5, 即可求出。(如圖4.18)(如表4.16) 4.(11,15): 峰值:|000000001011i =⇒ 0 ; |100000001011i =⇒ 128 4. 2. 週期 r = 2 ,p = gcd(11 2 − 1, 15) = 5; q = gcd(11 2 + 1, 15) = 3;. 15 = 3 × 5, 即可求出。(如圖4.19)(如表4.17) 5.(13,15): 峰值:|000000000001i =⇒ 0 ; |010000000001i =⇒ 64 |100000000001i =⇒ 128 ; |110000000001i =⇒ 192 4. 4. 週期 r = 4 ,p = gcd(13 2 − 1, 15) = 3; q = gcd(13 2 + 1, 15) = 5;. 15 = 3 × 5, 即可求出。(如圖4.20)(如表4.18) 6.(8,21):. 峰值:|00000000001000i =⇒ 0 2. ; |10000000001000i =⇒ 256 2. 週期 r = 2 ,p = gcd(8 2 − 1, 21) = 7; q = gcd(8 2 + 1, 21) = 3;. 21 = 3 × 7, 即可求出。(如圖4.21)(如表4.19) 7.(13,21): 峰值:|00000000000001i =⇒ 0 ; ||10000000000001i =⇒ 256 2. 2. 週期 r = 2 ,p = gcd(13 2 − 1, 21) = 3; q = gcd(13 2 + 1, 21) = 7;. 21 = 3 × 7, 即可求出。(如圖4.22)(如表4.20). 51.

(62) 第 4 章 研究分析. 圖 4.16: 執行(x,n)=(4,15) 的四個顯示視窗 表 4.14: 執行 (x,n)=(4,15) 六次量測結果的峰值總表 次數. 十進位. 一 二 三 四 五 六 可找出正確週期的峰值. 0, 128 0 0, 128 0 0, 128 0 128 可找出正確週期 r=2, 得到15 = 3 × 5的結果。. 表 4.15: 執行 (x,n)=(7,15) 六次量測結果的峰值總表 次數 一 二 三 四 五 六 可找出正確週期的峰值. 十進位 0, 64 ,128,192 0, 64 ,128,192 63 51,178 106 3, 67 ,131,195 63,64,67 可找出正確週期 r=4, 得到15 = 3 × 5的結果。 52.

(63) 第 4 章 研究分析. 圖 4.17: 執行(x,n)=(7,15) 的四個顯示視窗. 圖 4.18: 執行(x,n)=(8,15) 的四個顯示視窗. 53.

(64) 第 4 章 研究分析. 表 4.16: 執行 (x,n)=(8,15) 六次量測結果的峰值總表 次數. 十進位. 一 二 三 四 五 六 可找出正確週期的峰值. 0, 64 ,128,192 0 150 103 63 126 63,64 可找出正確週期 r=4, 得到15 = 3 × 5的結果。. 圖 4.19: 執行(x,n)=(11,15) 的四個顯示視窗 表 4.17: 執行 (x,n)=(11,15) 六次量測結果的峰值總表 次數 一 二 三 四 五 六 可找出正確週期的峰值. 十進位 0, 128 0, 128 0, 128 0, 128 0, 128 0 128 可找出正確週期 r=2, 得到15 = 3 × 5的結果。 54.

(65) 第 4 章 研究分析. 圖 4.20: 執行(x,n)=(13,15) 的四個顯示視窗 表 4.18: 執行 (x,n)=(13,15) 六次量測結果的峰值總表 次數 一 二 三 四 五 六 可找出正確週期的峰值. 十進位 0, 64 ,128,192 0, 64 ,128,192 63 ,127,191,255 0, 64 ,128,192 125,189,192 50,178 63,64 可找出正確週期 r=4, 得到15 = 3 × 5的結果。. 表 4.19: 執行 (x,n)=(8,21) 六次量測結果的峰值總表 次數 一 二 三 四 五 六 可找出正確週期的峰值. 十進位 0, 256 0 0 0 0 0 256 可找出正確週期 r=2, 得到21 = 3 × 7的結果。 55.

(66) 第 4 章 研究分析. 圖 4.21: 執行(x,n)=(8,21) 的四個顯示視窗. 圖 4.22: 執行(x,n)=(13,21) 的四個顯示視窗. 56.

(67) 第 4 章 研究分析. 表 4.20: 執行 (x,n)=(13,21) 六次量測結果的峰值總表 次數 一 二 三 四 五 六 可找出正確週期的峰值. 十進位 0, 256 0, 256 0 0 0 0 256 可找出正確週期 r=2, 得到21 = 3 × 7的結果。. 57.

參考文獻

相關文件

and Liu, S.J., “Quantifying Benefits of Knowledge Management System: A Case Study of an Engineering Consulting Firm,” Proceedings of International Symposium on Automation and

Lange, “An Object-Oriented Design Method for Hypermedia Information Systems”, Proceedings of the Twenty-seventh annual Hawaii International Conference on System Sciences, 1994,

Proceedings of the Fifth International Conference on Genetic Algorithms, Morgan kaufmann Publishers, San Mateo, California, pp.110~117, 1996. Horn, J., “Finite Markov Chain Analysis

C., “Robust and Efficient Algorithm for Optical Flow Computation,” Proceeding of IEEE International Conference on Computer Vision, pp. “Determining Optical Flow.” Artificial

Muraoka, “A Real-time Beat Tracking System for Audio Signals,” in Proceedings of International Computer Music Conference, pp. Goto, “A Predominant-F0 Estimation Method for

Krishnamachari and V.K Prasanna, “Energy-latency tradeoffs for data gathering in wireless sensor networks,” Twenty-third Annual Joint Conference of the IEEE Computer

D.Wilcox, “A hidden Markov model framework for video segmentation using audio and image features,” in Proceedings of the 1998 IEEE Internation Conference on Acoustics, Speech,

Chen, “Adjustable gamma correction circuit for TFT LCD,” IEEE International Symposium on Circuits and Systems, vol. Kan, “Implementation of the Gamma (γ) Line System Similar