ProjectQ- 控制位在被控门对象的哪一部分中得分
ProjectQ- In which part of the controlled gate object are the control bits scored
我一直在尝试分解 projectQ 对象,我可以设法分解非受控门和交错门。但我注意到
门的受控版本的对象与该门的对象完全相同。
生成这些对象的代码:
eng = MainEngine()
q = eng.allocate_qubit()
p = eng.allocate_qubit()
c = eng.allocate_qubit()
X | q
CNOT | (p,q)
这是 XGate 对象
{'_control_qubits': [],
'_engine': <__main__.MainEngine object at 0x7fc323e4d198>,
'_qubits': ([<projectq.types._qubit.WeakQubitRef object at 0x7fc30b0a3ef0>],),
'gate': <projectq.ops._gates.XGate object at 0x7fc316778048>,
'tags': []}
这是CNOT门,与ControlledGate(XGate)相同
{'_control_qubits': [],
'_engine': <__main__.MainEngine object at 0x7fc323e4d198>,
'_qubits': ([<projectq.types._qubit.WeakQubitRef object at 0x7fc30b0b1080>],),
'gate': <projectq.ops._gates.XGate object at 0x7fc316778048>,
'tags': []}
两者都没有控制量子位,而且控制门似乎失去了控制量子位。
知道控制量子位存储在哪里吗?
只有在 MainEngine
之后的 ControlEngine
收到命令后,控制量子位才会添加到命令中。有关实现细节,请参阅“3.2.1 元指令的实现”here。
要实现像这个这样的测试引擎,它可以用来检查是否确实在 MainEngine
之后添加了控制量子位,您可以执行以下操作:
test_eng = Testing(BasicEngine) # Or CommandPrinter
eng = projectq.MainEngine(engine_list=[test_eng])
我一直在尝试分解 projectQ 对象,我可以设法分解非受控门和交错门。但我注意到 门的受控版本的对象与该门的对象完全相同。
生成这些对象的代码:
eng = MainEngine()
q = eng.allocate_qubit()
p = eng.allocate_qubit()
c = eng.allocate_qubit()
X | q
CNOT | (p,q)
这是 XGate 对象
{'_control_qubits': [],
'_engine': <__main__.MainEngine object at 0x7fc323e4d198>,
'_qubits': ([<projectq.types._qubit.WeakQubitRef object at 0x7fc30b0a3ef0>],),
'gate': <projectq.ops._gates.XGate object at 0x7fc316778048>,
'tags': []}
这是CNOT门,与ControlledGate(XGate)相同
{'_control_qubits': [],
'_engine': <__main__.MainEngine object at 0x7fc323e4d198>,
'_qubits': ([<projectq.types._qubit.WeakQubitRef object at 0x7fc30b0b1080>],),
'gate': <projectq.ops._gates.XGate object at 0x7fc316778048>,
'tags': []}
两者都没有控制量子位,而且控制门似乎失去了控制量子位。
知道控制量子位存储在哪里吗?
只有在 MainEngine
之后的 ControlEngine
收到命令后,控制量子位才会添加到命令中。有关实现细节,请参阅“3.2.1 元指令的实现”here。
要实现像这个这样的测试引擎,它可以用来检查是否确实在 MainEngine
之后添加了控制量子位,您可以执行以下操作:
test_eng = Testing(BasicEngine) # Or CommandPrinter
eng = projectq.MainEngine(engine_list=[test_eng])