Distributed Quantum Gates
- Primitive Protocols¶
-
netQuil.distributedGates.
cat_entangler
(control, targets, entangled=False, notify=False)[source]¶ Performs the cat entangler, one of two primitive operations for distributed quantum computing which can be used to implement non-local operations. Projects the state of Alice’s local control bit (psi) on entangled qubits owned by other Agents, allowing Agents to effectively use Alice’s qubit as a control for their own operations. Measurements are stored in ro in the position corresponding to qubit’s index (i.e. ith qubit measured into ro[i]). Once the cat_entangler is started in the control agent, each target agent waits until they have received two classical bits from the control. The first is a placeholder for a measurement and the second indicates that the cat entangler is complete. e.g. non-local CNOTs, non-local controlled gates, and teleportation.
Remember, the cat_disentangler sends classical bits between the control and targets, so be careful when trying to perform similar operations in parallel!
- Parameters
control (agent,int,int,register) – tuple of agent owning phi, phi, measurement qubit, and register for measurements
targets (List<agent,qubit>) – list of tuples of agent and agent’s qubit that will be altered
entangled (Boolean) – true if qubits from other Agents are already maximally entangled
notify (Boolean) – if true control agent will send cbit equaling 1 to all target agents, signaling completion
-
netQuil.distributedGates.
cat_disentangler
(control, targets, notify=False)[source]¶ Performs the cat disentangler, second of two primitive operations for distributed quantum computing which can be used to implement non-local operations. Restores all qubits to state before cat_entangler was performed. Measurements are stored in ro in the position corresponding to qubit’s index (i.e ith qubit measured into ro[i])
Remember, the cat_disentangler sends classical bits between the control and targets, so be careful when trying to perform similar operations in parallel!
- Parameters
control (agent,int,register) – tuple of agent owning phi, phi, and register to store measurments
targets (List<agent,qubit>) – list of tuples of agent and agent’s qubit that will be altered
notify (Boolean) – if true control agent will send cbit equaling 1 to all target agents, signaling completion