首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Qiskit中构建一个复杂的受控闸门?

如何在Qiskit中构建一个复杂的受控闸门?
EN

Stack Overflow用户
提问于 2020-04-18 17:25:48
回答 2查看 316关注 0票数 1

我从事量子计算的理论任务,并使用Qiskit进行简单的实验。不幸的是,我找不到一种方法来制作一个复杂的控制门,在那里,控制是在量子寄存器中。

我想有一个"c_if“模拟,它可以链接,并使用量子比特作为控制。Smth喜欢

代码语言:javascript
运行
复制
swap(q1, q2).c_if(q0,Zero).c_if(q3,One)

qiskit中有这样的操作吗?如果这样的操作不存在,我怎么能模拟它?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-09-02 04:39:57

查看MCXGate的Qiskit文档,即所谓的多控制-X门。这个门可以让你定义你想要包括多少控制量子位(也许你的量子寄存器的大部分),并定义一个控制状态。

代码语言:javascript
运行
复制
from qiskit import * 

my_circuit = QuantumRegister(3,3)

my_circuit.append(circuit.library.MCXGate(2, ctrl_state='10'), [0,1,2]) 

请查看文档here

也有一些变化,将做Y门,Z门或任何你喜欢的,取决于电路是否看到正确的控制门。

票数 1
EN

Stack Overflow用户

发布于 2021-09-24 19:30:06

感谢@Dulah的回答。我找到了我的旧样本,它们在0.18.2的qiskit版本中工作得很好。

代码语言:javascript
运行
复制
from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit, execute, Aer
from qiskit.circuit.library.standard_gates.x import XGate, MCXGate
from qiskit.circuit.library.standard_gates.swap import SwapGate

simulator = Aer.get_backend('qasm_simulator')
qreg = QuantumRegister(4) 
creg = ClassicalRegister(4)
qc = QuantumCircuit(qreg, creg)


control1 =  XGate().control(3, None, '110') #: old-style multy-controlled qubits
#control1 = MCXGate(3, None, '110') # fashion-style multi-controlled qubits

control2 = SwapGate().control(2, None, '10')

qc.append(control1, [0, 1, 2, 3])
qc.append(control2, [0, 1, 2, 3])
qc.measure(qreg,creg)   

job = execute(qc, simulator, shots=1000)
result = job.result()
counts = result.get_counts(qc)
print("\nTotal count for 00 and 11 are:",counts)
qc.draw()

代码给了我一个结果

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61286903

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档