Implements the Deferred Measurement Principle.
cirq.defer_measurements(
circuit: 'cirq.AbstractCircuit',
*,
context: Optional['cirq.TransformerContext'] = None
) -> 'cirq.Circuit'
Used in the notebooks
Used in the tutorials |
---|
Uses the Deferred Measurement Principle to move all measurements to the end of the circuit. All non-terminal measurements are changed to conditional quantum gates onto ancilla qubits, and classically controlled operations are transformed to quantum controls from those ancilla qubits. Finally, measurements of all ancilla qubits are appended to the end of the circuit.
Optimizing deferred measurements is an area of active research, and future iterations may contain optimizations that reduce the number of ancilla qubits, so one should not depend on the exact shape of the output from this function. Only the logical equivalence is guaranteed to remain unchanged. Moment and subcircuit structure is not preserved.
Args | |
---|---|
circuit
|
The circuit to transform. It will not be modified. |
context
|
cirq.TransformerContext storing common configurable options
for transformers.
|
Returns | |
---|---|
A circuit with equivalent logic, but all measurements at the end of the circuit. |