官术网_书友最值得收藏!

1.2.5 量子程序

量子程序設計用于編寫與構(gòu)造量子算法,一般可以將它理解為一個操作序列。由于量子算法中會包含經(jīng)典計算,因而設想量子計算機是混合結(jié)構(gòu)的,它包含兩大部分:一部分是經(jīng)典計算設備,負責執(zhí)行經(jīng)典計算與控制;另一部分是量子設備,負責執(zhí)行量子計算。所以,QPanda的量子程序與量子線路的區(qū)別在于前者可以包含一部分經(jīng)典操作(如測量操作、經(jīng)典邏輯運算操作等)。量子程序的定義更好地兼容了量子計算與經(jīng)典計算。除了量子計算,它把一部分簡單的經(jīng)典計算也納入了量子計算機的框架中,在量子計算機底層硬件的支持下,可以大大減少量子計算機與經(jīng)典計算機之間頻繁的數(shù)據(jù)交互。

在QPanda中,聲明一個量子程序可以用QProg對象,它是一個容器,可以用來承載量子邏輯門、量子線路、測量等操作。初始化QProg的操作如下。

 1      prog = QProg()

讀者還可以用已有的量子操作來構(gòu)建量子程序。

 1      qubit = qAlloc()
 2      gate = H(qubit)
 3      prog = QProg(gate)

在QPanda中,讀者可以通過運算符“”向QProg對象的尾部插入新的量子操作。

 1      prog << H(qubit)

讀者可以通過運算符“”向QProg對象的尾部插入量子邏輯門、測量、量子線路及其他的量子程序。QProg的使用方式如代碼1.2所示。

代碼1.2 QProg的使用方式

 1  import pyqpanda as pq
 2  
 3  
 4  if __name__ == '__main__':
 5  
 6      qvm = pq.CPUQVM()
 7      qvm.initQVM()
 8      qubits = qvm.qAlloc_many(3)
 9      cbits = qvm.cAlloc_many(3)
10      #申請量子程序
11      prog = pq.QProg()
12      #給量子程序插入量子門和測量操作
13      prog << pq.H(qubits[0])\
14           << pq.CNOT(qubits[0],qubits[1])\
15           << pq.CNOT(qubits[1],qubits[2])\
16           << pq.measure_all(qubits,cbits)
17      result = qvm.run_with_configuration(prog,cbits,1000)
18      print(result)

代碼1.2使用QProg構(gòu)建的量子程序制備了3量子比特的GHZ態(tài),形式如式(1.45)所示。

(1.45)

3量子比特的GHZ態(tài)可以通過1個H門和2個CNOT門制備得到,量子程序的計算結(jié)果如下。

 1     '000': 513, '111': 487
主站蜘蛛池模板: 和龙市| 汉阴县| 衡阳县| 阜南县| 突泉县| 泾川县| 眉山市| 宜阳县| 崇礼县| 鲁山县| 揭西县| 庄浪县| 肃北| 仲巴县| 梁山县| 彝良县| 鄂尔多斯市| 资中县| 新干县| 原平市| 缙云县| 广东省| 华阴市| 咸阳市| 云南省| 江达县| 会东县| 万州区| 清水县| 习水县| 平塘县| 嘉祥县| 婺源县| 浮山县| 巴南区| 盱眙县| 迁安市| 曲松县| 商城县| 鄂尔多斯市| 类乌齐县|