Я пытался разложить объекты 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': []}
Оба не имеют контрольных кубитов, и кажется, что контрольные ворота потеряли контрольный кубит,
Есть идеи, где хранится контрольный кубит?