- QPanda量子計算編程
- 郭國平 竇猛漢 陳昭昀
- 754字
- 2024-10-25 14:21:06
1.2.4 量子線路
量子線路又稱量子邏輯電路,是最常用的通用量子計算模型,它表示在抽象概念下,對量子比特進行操作的線路。量子線路的組成包括量子比特、線路(時間線),以及各種量子邏輯門,最后常需要通過量子測量將結果讀取出來。與傳統(tǒng)電路用金屬線進行連接以傳遞電壓信號或電流信號不同,在量子線路中,線路是由時間連接,即量子比特的狀態(tài)隨著時間自然演化,這個過程遵循哈密頓算符(Hamiltonian Operator)的指示,直到遇上量子邏輯門而被操作。由于組成量子線路的每一個量子邏輯門都是一個酉算符,所以整個量子線路整體也是一個大的酉算符。下面看幾個具體的例子。
對于1個控制比特和1個目標比特,受控 U門由圖1.6所示線路表示。
4個控制比特和3個目標比特下的受控操作如圖1.7所示。

圖1.6 受控U門

圖1.7 受控操作示例
對于三比特門,當、
和
(NOT門)時,可得到Toffoli門:

(1.43)
Toffoli門的線路表示如圖1.8所示。
當、
且U門為SWAP門時,可得到Fredkin門:

(1.44)
Fredkin門的線路表示如圖1.9所示。

圖1.8 Toffoli門的線路表示

圖1.9 Fredkin門的線路表示
在QPanda中,QCircuit類(量子線路類)是一個僅加載量子邏輯門的容器類型。初始化一個QCircuit對象的方式如下。
1 cir = QCircuit()
讀者可以通過如下方式向QCircuit對象的尾部填充量子邏輯門。這里,QPanda重載了運算符“”,用于向量子線路中插入量子操作。
1 cir << X(qubits)
QCircuit的使用方式如代碼1.1所示(PyQPanda是Python版的QPanda)。
代碼1.1 QCircuit的使用方式
1 import pyqpanda as pq 2 3 4 if __name__ == '__main__': 5 6 qvm = pq.CPUQVM() 7 qvm.initQVM() 8 qubits = qvm.qAlloc_many(2) 9 cubits = qvm.cAlloc_many(2) 10 # 申請量子線路容器 11 cir = pq.QCircuit() 12 prog = pq.QProg() 13 # 給量子線路插入量子邏輯門,量子線路中不能包含量子邏輯門之外的任何操作,包括測量操作 14 cir << pq.H(qbits[0])\ 15 << pq.CNOT(qubits[0],qubits[1]) 16 prog << cir\ 17 << pq.measure_all(qubits,cbits) 18 result = qvm.run_with_configuration(prog,cbits,1000) 19 print(result)
代碼1.1申請了一個量子線路cir,并向cir中插入了H門和CNOT門。需要注意的是,量子線路中不能包含量子邏輯門之外的操作(如測量操作),所以想要在量子計算機中運行量子線路并獲取計算結果,就需要把量子線路放到量子程序中。
- Learning Apex Programming
- Learning ArcGIS Pro 2
- 青少年美育趣味課堂:XMind思維導圖制作
- 三維圖形化C++趣味編程
- OpenStack Cloud Computing Cookbook(Fourth Edition)
- Python機器學習編程與實戰(zhàn)
- 深入淺出Serverless:技術原理與應用實踐
- Learning OpenCV 3 Computer Vision with Python(Second Edition)
- MySQL 8從零開始學(視頻教學版)
- Visual Basic語言程序設計基礎(第3版)
- 現代CPU性能分析與優(yōu)化
- Java程序設計
- Building Scalable Apps with Redis and Node.js
- jBPM6 Developer Guide
- Go語言編程之旅:一起用Go做項目