5.1 QAD 簡介
研究量子密碼學最好的方式當然是在量子電腦上直接操作, 但是目前量子電腦的技術尚 未開發成熟, 一般實驗室也無法具備完善的設備, 因此無法直接操作量子電腦做研究。 目 前在美國、 日本、 中國大陸等地, 對量子通訊的研究已達到傳訊距離1公里以上, 但僅限 於設備優良的實驗室可以辦得到。 一般人想要研究量子通訊方面的議題, 雖無法直接操 作, 但利用量子電路模擬程式設計模擬電路, 也是一種方法。 利用模擬程式操作的好處是 模擬程式可以在傳統電腦上操作, 並且可以重複做試驗直至成功。 模擬成功的電路可待將 來量子電腦技術成熟後, 移至量子電腦上操作, 節省在量子電腦上測試的時間。 因此本研 究採用模擬電路設計的方法, 利用模擬程式的操作及測試, 模擬量子密碼系統中無噪音干 擾的 BB84 協定作為研究。
本研究所採用的第一套模擬程式為 Quantum Algorithm Designer (QAD), QAD 提供了演算法的設計以及模擬, 以電路模型讓使用者了解量子演算法的設計並且做模擬 演算 [20] 。 此軟體具有多項特點, 分述如下:
1. QAD 提供方便使用的圖示操作介面。
2. QAD 可以隨使用者設計出有彈性的電路模型。 不受限於操作說明的模式, 在模擬
作用時, 僅依照電路結構作用。
3. 使用一般的電路表示及記錄方式, 使用者可以輕鬆的拿文獻或書籍上的量子電路在
第 5 章 模擬程式
QAD 上面使用。
4. QAD 可以模擬古典演算法。
5. 在不同演算法中, 可以將某些量子狀態具象化, 即表示成布洛赫球或振幅曲線圖的 形式。
6. 理論上, 任何量子演算法都可以在 QAD 上呈現, 於實際應用中, 則會受到記憶體 及時間的限制。
7. QAD 為一套為任何想學習量子演算法設計的使用者設計的容易取得的免費軟體。
由上述各點可知, QAD 是一套初學者較易取得及上手的量子演算模擬軟體, 故本研 究採用 QAD 為模擬程式之軟體。
5.1.1 QAD 操作說明
QAD 所使用的是圖示的操作介面,在操作上可以很容易就上手,本節將對其基本操作作 簡單的說明。
進入 QAD 主畫面可以見到如圖5.1的畫面顯示, 左邊為工具列, 中央為操作區, 可以 利用左邊的按鈕將所需要的量子位元及量子閘加入操作區, 再組合成量子電路。
工具列上 File 為開啟舊檔、 開新檔案、 儲存檔案、 另存新檔、 離開等功能。 Run 為 在設計完成電路後, 執行模擬的指令。 其內之 Step 可以顯示量子電路的矩陣, Reset 則可重設位元的輸入狀態, 對於單量子位元還可以 3D 布洛赫球面的位置表示 (需使用 JAVA 3D 軟體)。 放大鏡則可以拉近或拉遠螢幕上所顯示的電路, Properties 可以設 定量子位元或量子閘的初始狀態, 若對某量子位元或量子閘快點滑鼠左鍵二下, 亦可開 啟 Properties 視窗。Numerical 選項決定運算是用數字或代數表示。
左邊的各項按鈕為 QAD 內設的位元及量子閘的增加按鈕, 可以依照個別需要逐項增 加。 可變閘可以設定不同大小, 以便連結作用於不同數量的量子位元; 固定閘則可作用於 固定數量的量子位元;旋轉閘可以將連結的量子位元作旋轉或角度的變化,表現在布洛赫 球面上不同的位置。 QAD 內設的量子閘可參見表5.1。
第 5 章 模擬程式
圖 5.1: QAD 畫面
表5.1: QAD 量子閘
可變閘 Hadamard , Identity , Grover Diffusion
固定閘 CNOT , SWAP , Pauli-X , Pauli-Y , Pauli-Z , Phase , π8 旋轉閘 P h(α) , Rx(α) , Ry(α) , Rz(α) , Rk
增加入操作區的元素 (量子位元, 量子閘) 可以用 Shift + 滑鼠左鍵 做連結, 不同元 素的連結代表著不同的運算, 見表5.2。
表5.2: QAD 連結運算關係
選取元素 Shift + 滑鼠左鍵連結 運算關係
量子位元 量子閘 量子位元為閘的輸入
量子閘 A 量子閘 B A 閘為 B 閘的輸入
量子閘 線路 線路上的量子位元為量子閘的控制位元
圖5.2 為利用 QAD 程式試作四個量子位元的電路圖, 電路圖完成後, 可用 Run 中 的 Compile 確認電路圖是否可執行, 再用 Run 做分步驟的執行。
第 5 章 模擬程式
圖5.2: QAD 試作四量子位元電路
5.2 QuaSi2 簡介
QuaSi2(Quantum Circuit Simulation) 是由德國 Karlsruhe 大學所研發, 開放給 一般人設計及模擬量子電路的模擬器 [21]。 它的優點如下:
(1) 可以模擬至 20 個量子位元。
(2) 使用 Window 圖示的操作介面(如圖5.3), 操作容易上手。
(3) 具有任意設計控制量子閘的功能。 內建的閘包含了單一的量子閘: 哈達馬閘、 CN 閘、 CCN 閘、 量測閘等等, 並可自行設計控制位元。 另外, 還有可以自行設計的多位元 量子閘, 將於下一節說明。
(4) 支援行列矩陣式。
(5) 可以估算方程式: | x, yi → | x, y(+)f(x)i 。
(7) 可以選擇在網頁上進行電路設計及模擬, 或安裝在自己的電腦上進行。
(8) 內建 Shor , Deutsch 以及 Grover 的 Demo 電路, 可以開啟試用。
由上述各點可知, QuaSi2也是是一套初學者較易取得及上手的量子演算模擬軟體, 故 本研究也採用 QuaSi2 為模擬程式之軟體, 以補 QAD 軟體的不足。
5.2.1 QuaSi2 操作說明
QuaSi2 分為 4 個視窗, 分別是電路設計 (如圖5.4), 波長及方向 (如圖5.5), 實數與虛 數部分 (如圖5.6), 以及數字部份 (如圖5.7)。 茲分述如下:
第 5 章 模擬程式
圖5.3: QuaSi2 介面
(1) 電路設計: 主要設計電路的視窗, 從 File → New 選擇設計位元數後, 即可開 始設計新電路。 Gate 選項內, 分為標準閘: 包含 Hadamard 閘, CN 閘, CCN 閘, Measure-Gate, IGate, SetTo1, SetTo0, SigmaX, SigmaY, SigmaZ 這些閘。 方 程閘: 輸入 X-Register, Y-Register 和兩個值即可形成。 User 閘: 可以自行設計單一 位元的閘, 由輸入的係數以及 2 × 2 矩陣計算該閘的作用, 並可以加入 0 或 1 的控制 位元, 最後選擇使用單一圖示或自行命名。Matrix 閘: 可以自行設計多位元的閘, 依照 設計位元數的不同輸入不同的矩陣及係數, 並可以設計 0 或 1 的控制位元, 最後命名後 即可完成。 在 View Information about selected Gate 選項中, 可以看到所選擇的閘 的設定, 以 JAVA 語言的形式展現。
第 5 章 模擬程式
圖5.4: 電路設計
圖5.5: 波長及方向
第 5 章 模擬程式
圖5.6: 實數與虛數部分
圖5.7: 數字部份
第 5 章 模擬程式
電路設計完成後, 我們可以開始模擬傳輸, 使用視窗下的六個按鈕, 分別是 Prepared State , Ground State , To the Start , Forword , To the End , 和 First to real , 按需要可以自行重複步驟, 分步驟模擬, 或是直接看結果。
需注意的是一旦開始設計, 位元的數量就不能再更改, 並且加入閘之後, 無法取消該 閘, 若其中一項設計發生錯誤就必須重新設計, 是 QuaSi2 的不便之處。
(2) 波長及方向: 顯示出模擬的量子態機率幅的大小, 由線段的長短可以看出。
(3) 實數與虛數部分: 顯示量子態振幅的大小以及正負值, 由線段的長度比例及方向 可以看出。
(4) 數字部份: 電路模擬後顯示出目前所處步驟的各個量子態 (| 0i 或 | 1i) 以及其 振幅大小和正負值, 振幅為 0 者則不顯示。
本研究即是利用 QAD 和 QuaSi2 所提供的各種量子閘設計出量子電路, 模擬無噪 音干擾下量子密碼系統 BB84 協定的金鑰傳輸系統, 並利用模擬程式驗證此電路的可行 性, 期盼對於將來量子電腦技術發展成熟, 量子電腦普及化之後, 可以將此電路實行於量 子電腦之上, 對量子密碼學有所貢獻。
5.3 其他模擬器
5.3.1 Quack
Quack 是一個在 Matlab 環境下使用的量子電腦模擬器, 包含了單一位元么正閘, 可以 建立 Pauli, rotation, Hadamard, phase 和 π8 閘。 雙位元的有 CN 閘, swap 閘, Toffoli 閘和一般的控制么正閘。 具有單一位元及 Bell 量測, 利用傳統式的控制及操作, 並可計算任一次系統的複數縮減機率。 提供了簡單的範例可下載, 例如二個量子位元的 Grove 搜尋法等等 [22] 。
第 5 章 模擬程式
5.3.2 Open Qubit
OpenQubit 軟體是由 Pritzker... 等人, 所組成的 OpenQubit 發展團隊所開發, 所 採用的是 Linux 作業系統。 OpenQubit 發展團隊是一個集合了物理學家、 電腦學家、
以及一般人的政府團隊, 希望創造出一個量子模擬的 API (Application Programmer Interface) 。 其主要操作畫面包含兩個:
(1) QState 描述量子狀態, n 個位元有 2n 個複數振幅, 以描述各種可能的輸出態。
QState 並提供 QRegister 處理設備的記憶體。
(2)QRegister 處理 QState 裡的位元, 提供基本的作用閘如 Ry 閘, Rz 閘, Ph 閘 和 CN 閘以及這些閘的應用。
欲下載 OpenQubit 軟體可以參考 [23]。 OpenQubit 的原始碼存於 GPL2(GNU Public Licence Version 2 ) 系統下, 須有原始碼軟體才可以使用。
5.3.3 Fraunhofer Quantum Computing Simulation
Fraunhofer Quantum Computing Simulation 是一個網路連結式的模擬器, 採用 Linux和 Myrinet系統,並搭配QML程式使用。 作者及維護者為Ros´e... 等。 Fraun-hofer Quantum Computing Simulation 是由德國聯合教育及研究部門所支援, 可以 模擬最多至 31 個量子位元的量子電路, 31 位元的 Hamiltonians 提供網頁式編輯, 可 安裝、 控制及分析模擬作業。 並提供網路連結式的容量處理系統, 及圖示與文字的輸出和 輸入。
Fraunhofer Quantum Computing Simulation 包含了一般的單位元、 二位元及 三位元的量子閘, 特別的閘如 Oracle、 Modulo 方程、 和 QFT 也有。 若加入其團隊可 以測試較多的功能及位元, 未加入亦可以做試用 [24]。
第 5 章 模擬程式
5.3.4 QCSim
QCSim(Quantum Compiling and Simulation) 是由 Cass 在 2002 年所設計的, 以 C++ 語言編寫, 搭配 QHDL 程式編寫量子位元的狀態, 系統的初始態, 閘以及 其作用的方式, 一旦開始編寫後就不夠改變量子位元數目。 QCSim 內包含的量子閘有 Hadamard, Pauli X, Pauli Y, Pauli Z, 各種 CN 閘等等, 也可以簡單地增加新量 子閘的原始碼。
Lane 在 2003 年所編輯的 Qhdl2Jaq 和 Jaq2Qhdl 為可配合 QCSim 所使用的 程式, 此二軟體由 C++ 語言所寫成, Qhdl2Jaq 可以將 QHDL 檔案轉變為 jaQuzzi 可以使用的檔案 (JAQ 檔), Jaq2Qhdl 則將 JAQ 檔案轉變為輸入 QCSim 可以輸出 的檔案 (QHDL 檔)。
QCSim 的原始碼以及需要用到的軟體 (Qhdl2Jaq, Jaq2Qhdl, jaQuzzi) 可以參 考 [25] 下載, 其網頁由 Black 負責維護, 下載檔案中包含了 BB84 的模擬, 電訊傳輸, Hamming 除錯碼, 7 位元 ECC, Grove 演算法等等範例。QCSim 因為記憶體容量的 關係, 僅能模擬至 13 個量子位元。
5.3.5 QuIDDpro
QuIDDpro 由 Viamontes, Markov, Hayes 三人所屬的 Quantum circuits group 在 2004 年開發出來的, 是需要在 Matlab 環境下使用的量子電腦模擬器, 可進行量子 態向量、 矩陣、 模擬電路之相關操作。 安裝 QuIDDpro 時, 需要搭配 Matlab , Octave 等軟體。 QuIDDpro 在量子電路的模擬上, 具有快速、 使用方式容易, 執行時所需要的
QuIDDpro 由 Viamontes, Markov, Hayes 三人所屬的 Quantum circuits group 在 2004 年開發出來的, 是需要在 Matlab 環境下使用的量子電腦模擬器, 可進行量子 態向量、 矩陣、 模擬電路之相關操作。 安裝 QuIDDpro 時, 需要搭配 Matlab , Octave 等軟體。 QuIDDpro 在量子電路的模擬上, 具有快速、 使用方式容易, 執行時所需要的