Maestro 0.3.1
Unified interface for quantum circuit simulation
Loading...
Searching...
No Matches
Circuits::QuantumChannelOperation< Time > Class Template Reference

A one- or two-qubit channel that remains in Kraus form until execution. More...

#include <QuantumChannelOperation.h>

Inheritance diagram for Circuits::QuantumChannelOperation< Time >:
Collaboration diagram for Circuits::QuantumChannelOperation< Time >:

Public Member Functions

 QuantumChannelOperation (const Types::qubits_vector &targets, const Simulators::QuantumChannel &channel, Time delay=0)
virtual std::vector< size_t > AffectedBits () const
 Returns the affected bits.
Types::qubits_vector AffectedQubits () const override
 Returns the affected qubits.
bool CanAffectQuantumState () const override
 Find if the operation can affect the quantum state.
std::shared_ptr< IOperation< Time > > Clone () const override
 Get a shared pointer to a clone of this object.
void Execute (const std::shared_ptr< Simulators::ISimulator > &simulator, OperationState &state) const override
 Execute the operation.
const Simulators::QuantumChannelGetChannel () const
Types::time_type GetDelay () const
 Get the delay of the operation.
std::shared_ptr< IOperation< Types::time_type > > getptr ()
 Get a shared pointer to this object.
OperationType GetType () const override
 Get the type of the operation.
virtual bool IsBranching () const
 Checks if the operation is a branching one.
virtual bool IsClifford () const
 Checks if the operation is a Clifford one.
virtual bool IsConditional () const
 Find if the operation is a conditional operation.
bool NeedsEntanglementForDistribution () const override
 Find if the operation needs entanglement for distribution.
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.
virtual void SetDelay (Types::time_type d)
 Set the delay of the operation.

Detailed Description

template<typename Time = Types::time_type>
class Circuits::QuantumChannelOperation< Time >

A one- or two-qubit channel that remains in Kraus form until execution.

Definition at line 21 of file QuantumChannelOperation.h.

Constructor & Destructor Documentation

◆ QuantumChannelOperation()

template<typename Time = Types::time_type>
Circuits::QuantumChannelOperation< Time >::QuantumChannelOperation ( const Types::qubits_vector & targets,
const Simulators::QuantumChannel & channel,
Time delay = 0 )
inline

Member Function Documentation

◆ AffectedBits()

virtual std::vector< size_t > Circuits::IOperation< Types::time_type >::AffectedBits ( ) const
inlinevirtualinherited

Returns the affected bits.

Returns the affected classical bits.

Returns
The affected bits.

Reimplemented in Circuits::Circuit< Time >, Circuits::Circuit< Types::time_type >, Circuits::IConditionalOperation< Time >, Circuits::IConditionalOperation< Types::time_type >, Circuits::MeasurementOperation< Time >, and Circuits::Random< Time >.

Definition at line 482 of file Operations.h.

◆ AffectedQubits()

template<typename Time = Types::time_type>
Types::qubits_vector Circuits::QuantumChannelOperation< Time >::AffectedQubits ( ) const
inlineoverridevirtual

Returns the affected qubits.

Returns the affected qubits by the operation.

Returns
A vector with the affected qubits.

Reimplemented from Circuits::IOperation< Types::time_type >.

Definition at line 51 of file QuantumChannelOperation.h.

◆ CanAffectQuantumState()

template<typename Time = Types::time_type>
bool Circuits::QuantumChannelOperation< Time >::CanAffectQuantumState ( ) const
inlineoverridevirtual

Find if the operation can affect the quantum state.

Returns true if the operation can affect the quantum state, false otherwise.

Returns
True if the operation can affect the quantum state, false otherwise.

Reimplemented from Circuits::IOperation< Types::time_type >.

Definition at line 53 of file QuantumChannelOperation.h.

◆ Clone()

template<typename Time = Types::time_type>
std::shared_ptr< IOperation< Time > > Circuits::QuantumChannelOperation< Time >::Clone ( ) const
inlineoverridevirtual

Get a shared pointer to a clone of this object.

Returns a shared pointer to a copy of this object.

Returns
A shared pointer to this object.

Implements Circuits::IOperation< Types::time_type >.

Definition at line 61 of file QuantumChannelOperation.h.

References Circuits::IOperation< Time >::GetDelay().

◆ Execute()

template<typename Time = Types::time_type>
void Circuits::QuantumChannelOperation< Time >::Execute ( const std::shared_ptr< Simulators::ISimulator > & sim,
OperationState & state ) const
inlineoverridevirtual

Execute the operation.

Execute the operation on the specified simulator.

Parameters
simThe simulator to execute the operation on.
stateThe state of the operation.
See also
ISimulator
OperationState

Implements Circuits::IOperation< Types::time_type >.

Definition at line 41 of file QuantumChannelOperation.h.

◆ GetChannel()

template<typename Time = Types::time_type>
const Simulators::QuantumChannel & Circuits::QuantumChannelOperation< Time >::GetChannel ( ) const
inline

Definition at line 59 of file QuantumChannelOperation.h.

◆ GetDelay()

Types::time_type Circuits::IOperation< Types::time_type >::GetDelay ( ) const
inlineinherited

Get the delay of the operation.

Returns the delay due of the execution time of the operation.

Returns
The delay of the operation.

Definition at line 501 of file Operations.h.

Referenced by Circuits::NoOperation< Time >::Clone().

◆ getptr()

std::shared_ptr< IOperation< Types::time_type > > Circuits::IOperation< Types::time_type >::getptr ( )
inlineinherited

Get a shared pointer to this object.

Returns a shared pointer to this object. The object needs to be already wrapped in a shared pointer.

Returns
A shared pointer to this object.

Definition at line 491 of file Operations.h.

◆ GetType()

template<typename Time = Types::time_type>
OperationType Circuits::QuantumChannelOperation< Time >::GetType ( ) const
inlineoverridevirtual

Get the type of the operation.

Get the type of the operation.

Returns
The type of the operation.
See also
OperationType

Reimplemented from Circuits::IOperation< Types::time_type >.

Definition at line 47 of file QuantumChannelOperation.h.

References Circuits::kQuantumChannel.

◆ IsBranching()

virtual bool Circuits::IOperation< Types::time_type >::IsBranching ( ) const
inlinevirtualinherited

◆ IsClifford()

◆ IsConditional()

virtual bool Circuits::IOperation< Types::time_type >::IsConditional ( ) const
inlinevirtualinherited

Find if the operation is a conditional operation.

Returns true if the operation is conditional, false otherwise.

Returns
True if the operation is conditional, false otherwise.

Definition at line 462 of file Operations.h.

◆ NeedsEntanglementForDistribution()

template<typename Time = Types::time_type>
bool Circuits::QuantumChannelOperation< Time >::NeedsEntanglementForDistribution ( ) const
inlineoverridevirtual

Find if the operation needs entanglement for distribution.

Returns true if the operation needs entanglement for distribution, false otherwise.

Returns
True if the operation needs entanglement for distribution, false otherwise.

Reimplemented from Circuits::IOperation< Types::time_type >.

Definition at line 55 of file QuantumChannelOperation.h.

◆ Remap()

template<typename Time = Types::time_type>
std::shared_ptr< IOperation< Time > > Circuits::QuantumChannelOperation< 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
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.

Parameters
qubitsMapThe map of qubits to remap.
bitsMapThe map of classical bits to remap.
Returns
A shared pointer to the remapped object.

Implements Circuits::IOperation< Types::time_type >.

Definition at line 66 of file QuantumChannelOperation.h.

◆ SetDelay()

virtual void Circuits::IOperation< Types::time_type >::SetDelay ( Types::time_type d)
inlinevirtualinherited

Set the delay of the operation.

Sets the delay due of the execution time of the operation.

Parameters
dThe delay of the operation.

Definition at line 509 of file Operations.h.


The documentation for this class was generated from the following file: