逻辑门统计¶
简介¶
逻辑门的统计是指统计量子程序、量子线路、量子循环控制或量子条件控制中所有的量子逻辑门个数方法。
接口介绍¶
我们先用pyqpanda构建一个量子程序:
prog = QProg() prog << X(qubits[0]) << Y(qubits[1])\ << H(qubits[0]) << RX(qubits[0], 3.14)\ << Measure(qubits[0], cbits[0])
然后调用接口 get_qgate_num
统计量子逻辑门的个数,
number = get_qgate_num(prog)
备注
统计 QCircuit
、 QWhileProg
、QIfProg
中量子逻辑门的个数和 QProg
类似。
实例¶
from pyqpanda import * if __name__ == "__main__": qvm = CPUQVM() qvm.init_qvm() qubits = qvm.qAlloc_many(2) cbits = qvm.cAlloc_many(2) prog = QProg() # 构建量子程序 prog << X(qubits[0]) << Y(qubits[1])\ << H(qubits[0]) << RX(qubits[0], 3.14)\ << Measure(qubits[0], cbits[0]) # 统计逻辑门个数 number = get_qgate_num(prog) print("QGate number: " + str(number))
运行结果:
QGate number: 4
此外在PyQPanda中还有一种统计某个线路中的某种逻辑门个数的接口。
接口介绍¶
我们先用pyqpanda构建一个量子程序:
import pyqpanda.pyQPanda as pq class InitQMachine: def __init__(self, quBitCnt, cBitCnt, machineType=pq.QMachineType.CPU): self.m_machine = pq.init_quantum_machine(machineType) self.m_qlist = self.m_machine.qAlloc_many(quBitCnt) self.m_clist = self.m_machine.cAlloc_many(cBitCnt) if __name__ == "__main__": init_machine = InitQMachine(8, 8) qlist = init_machine.m_qlist clist = init_machine.m_clist prog = pq.QProg() cir = pq.QCircuit() cir.insert( pq.X(qlist[0])).insert( pq.X(qlist[1])).insert( pq.Y(qlist[1])).insert(pq.H(qlist[0])).insert(pq.Z(qlist[1])).insert( pq.RX(qlist[0], 3.14)) prog.insert(cir).insert(pq.T(qlist[0])).insert(pq.CNOT(qlist[1], qlist[2])).insert(pq.H(qlist[3])).insert( pq.H(qlist[4])).insert(pq.X(qlist[4])).insert(pq.measure_all(qlist, clist)) # 统计逻辑门个数 total_num = pq.count_qgate_num(prog ) # 统计X逻辑门个数 Xnum = pq.count_qgate_num(prog, pq.PAULI_X_GATE); # 统计H逻辑门个数 Hnum = pq.count_qgate_num(prog, pq.HADAMARD_GATE); # 统计ISWAP逻辑门个数 ISWAPnum = pq.count_qgate_num(prog, pq.ISWAP_GATE); print("QGate number: " , total_num) print("XGate number: " , Xnum) print("HGate number: " , Hnum) print("ISWAPGate number: " , ISWAPnum)
运行结果:
QGate number: 11 XGate number: 3 HGate number: 3 ISWAPGate number: 0