|
Maestro 0.1.0
Unified interface for quantum circuit simulation
|
Measurement operation class. More...
#include <Measurements.h>
Public Member Functions | |
| MeasurementOperation (const std::vector< std::pair< Types::qubit_t, size_t > > &qs={}, Time delay=0) | |
| Constructor. | |
| OperationType | GetType () const override |
| Get the type of the operation. | |
| virtual size_t | GetNumQubits () const |
| Get the number of qubits affected by the operation. | |
| void | Clear () |
| Clears the qubits and classical bits involved in the measurement. | |
| void | SetQubits (const std::vector< std::pair< Types::qubit_t, size_t > > &qs) |
| Sets the qubits and classical bits involved in the measurement. | |
| const Types::qubits_vector & | GetQubits () const |
| Returns the qubits that are to be measured. | |
| const std::vector< size_t > & | GetBitsIndices () const |
| Returns the classical bits where the measurement results are stored. | |
| void | Execute (const std::shared_ptr< Simulators::ISimulator > &sim, OperationState &state) const override |
| Executes the measurement on the given simulator. | |
| void | Sample (const std::shared_ptr< Simulators::ISimulator > &sim, OperationState &state) const |
| Samples the measurement on the given simulator. | |
| void | SetStateFromSample (size_t measurements, OperationState &state) const |
| void | SetStateFromAllMeasurements (size_t allMeasurements, OperationState &state) const |
| std::shared_ptr< IOperation< Time > > | Clone () const override |
| Get a shared pointer to a clone of this object. | |
| Types::qubits_vector | AffectedQubits () const override |
| Returns the qubits affected by the measurement. | |
| std::vector< size_t > | AffectedBits () const override |
| Returns the classical bits affected by the measurement. | |
| std::shared_ptr< IOperation< Time > > | Remap (const std::unordered_map< Types::qubit_t, Types::qubit_t > &qubitsMap, const std::unordered_map< Types::qubit_t, Types::qubit_t > &bitsMap={}) const override |
| Get a shared pointer to a remapped operation. | |
| bool | IsClifford () const override |
| Checks if the operation is a Clifford one. | |
| void | SetQubit (size_t index, Types::qubit_t qubit) |
| Set the qubit to measure. | |
| void | SetBit (size_t index, Types::qubit_t bit) |
| Set the classical bit to index. | |
| Public Member Functions inherited from Circuits::IOperation< Types::time_type > | |
| IOperation (Types::time_type delay=0) | |
| Construct a new IOperation object. | |
| virtual | ~IOperation ()=default |
| Destroy the IOperation object. | |
| virtual bool | CanAffectQuantumState () const |
| Find if the operation can affect the quantum state. | |
| virtual bool | NeedsEntanglementForDistribution () const |
| Find if the operation needs entanglement for distribution. | |
| virtual bool | IsConditional () const |
| Find if the operation is a conditional operation. | |
| std::shared_ptr< IOperation< Types::time_type > > | getptr () |
| Get a shared pointer to this object. | |
| Types::time_type | GetDelay () const |
| Get the delay of the operation. | |
| void | SetDelay (Types::time_type d) |
| Set the delay of the operation. | |
Measurement operation class.
Implementation of an operation that does a qubits measurements on a simulator. The results are stored in a classical 'state'. Each qubit has a corresponding classical 'bit' where the measurement result is stored.
| Time | The time type used for the simulation. |
Definition at line 36 of file Measurements.h.
|
inline |
Constructor.
Creates a measurement operation that measures the given qubits and stores the results in the given bits.
| qs | The qubits to measure and the classical bits where the result is stored, specified as pairs. |
| delay | The duration of the operation. |
Definition at line 48 of file Measurements.h.
|
inlineoverridevirtual |
Returns the classical bits affected by the measurement.
Returns the classical bits affected by the measurement.
Reimplemented from Circuits::IOperation< Types::time_type >.
Definition at line 216 of file Measurements.h.
|
inlineoverridevirtual |
Returns the qubits affected by the measurement.
Returns the qubits affected by the measurement.
Reimplemented from Circuits::IOperation< Types::time_type >.
Definition at line 208 of file Measurements.h.
|
inline |
Clears the qubits and classical bits involved in the measurement.
Clears the qubits and classical bits involved in the measurement.
Definition at line 77 of file Measurements.h.
|
inlineoverridevirtual |
Get a shared pointer to a clone of this object.
Returns a shared pointer to a copy of this object.
Implements Circuits::IOperation< Types::time_type >.
Definition at line 193 of file Measurements.h.
|
inlineoverridevirtual |
Executes the measurement on the given simulator.
Executes the measurement on the given simulator.
| sim | The simulator to execute the measurement on. |
| state | The classical state for the simulator. |
Implements Circuits::IOperation< Types::time_type >.
Definition at line 124 of file Measurements.h.
|
inline |
Returns the classical bits where the measurement results are stored.
Returns the classical bits where the measurement results are stored.
Definition at line 113 of file Measurements.h.
|
inlinevirtual |
Get the number of qubits affected by the operation.
Returns the number of qubits affected by the operation.
Definition at line 70 of file Measurements.h.
|
inline |
Returns the qubits that are to be measured.
Returns the qubits that are to be measured.
Definition at line 105 of file Measurements.h.
|
inlineoverridevirtual |
Get the type of the operation.
Returns the type of the operation, in this case, measurement.
Reimplemented from Circuits::IOperation< Types::time_type >.
Definition at line 62 of file Measurements.h.
|
inlineoverridevirtual |
Checks if the operation is a Clifford one.
Checks if the operation is a Clifford one, allowing to be simulated in a stabilizers simulator.
Reimplemented from Circuits::IOperation< Types::time_type >.
Definition at line 264 of file Measurements.h.
|
inlineoverridevirtual |
Get a shared pointer to a remapped operation.
Returns a shared pointer to a copy of the operation with qubits and classical bits changed according to the provided maps.
| qubitsMap | The map of qubits to remap. |
| bitsMap | The map of classical bits to remap. |
Implements Circuits::IOperation< Types::time_type >.
Definition at line 229 of file Measurements.h.
|
inline |
Samples the measurement on the given simulator.
Samples the measurement on the given simulator. Should not apply the measurement.
| sim | The simulator to sample the measurement on. |
| state | The classical state for the simulator. |
Definition at line 148 of file Measurements.h.
|
inline |
Set the classical bit to index.
This method sets the classical bit index at the specified index.
| index | The index of the classical bit index. |
| bit | The classical bit index to set. |
Definition at line 285 of file Measurements.h.
|
inline |
Set the qubit to measure.
This method sets the qubit to measure at the specified index.
| index | The index of the qubit to measure. |
| qubit | The qubit to measure. |
Definition at line 273 of file Measurements.h.
|
inline |
Sets the qubits and classical bits involved in the measurement.
Sets the qubits and classical bits involved in the measurement, specified as pairs.
| qs | The qubits to measure and the classical bits where the result is stored, specified as pairs. |
Definition at line 90 of file Measurements.h.
|
inline |
Definition at line 172 of file Measurements.h.
|
inline |
Definition at line 161 of file Measurements.h.