Maestro 0.1.0
Unified interface for quantum circuit simulation
Loading...
Searching...
No Matches
Graphs::IOptimiser< Time > Class Template Referenceabstract

Interface for optimiser classes. More...

#include <Optimiser.h>

Inheritance diagram for Graphs::IOptimiser< Time >:

Public Member Functions

virtual ~IOptimiser ()=default
virtual void SetNetworkAndCircuit (const std::shared_ptr< Network::INetwork< Time > > &network, const std::shared_ptr< Circuits::Circuit< Time > > &circuit)=0
virtual size_t GetNumCuts () const =0
virtual size_t Optimise (size_t numSteps=10000)=0
virtual const std::unordered_map< Types::qubit_t, Types::qubit_t > & GetQubitsMap () const =0
virtual const std::unordered_map< Types::qubit_t, Types::qubit_t > & GetReverseQubitsMap () const =0
virtual Types::qubit_t TranslateQubitToOriginal (Types::qubit_t qubit) const =0
virtual Types::qubit_t TranslateQubitFromOriginal (Types::qubit_t qubit) const =0
virtual size_t TranslateStateToOriginal (size_t state) const =0
virtual size_t TranslateStateFromOriginal (size_t state) const =0
std::shared_ptr< IOptimiser< Time > > getptr ()
 Get a shared pointer to this object.

Detailed Description

template<typename Time = Types::time_type>
class Graphs::IOptimiser< Time >

Interface for optimiser classes.

Circuit optimisers should implement this interface. They are use to optimise the circuit for a given network, reducing the number of cuts/distributed quantum gates needed.

Template Parameters
TimeThe time type used for operations timing.

Definition at line 39 of file Optimiser.h.

Constructor & Destructor Documentation

◆ ~IOptimiser()

template<typename Time = Types::time_type>
virtual Graphs::IOptimiser< Time >::~IOptimiser ( )
virtualdefault

Member Function Documentation

◆ GetNumCuts()

template<typename Time = Types::time_type>
virtual size_t Graphs::IOptimiser< Time >::GetNumCuts ( ) const
pure virtual

◆ getptr()

template<typename Time = Types::time_type>
std::shared_ptr< IOptimiser< Time > > Graphs::IOptimiser< Time >::getptr ( )
inline

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 74 of file Optimiser.h.

◆ GetQubitsMap()

template<typename Time = Types::time_type>
virtual const std::unordered_map< Types::qubit_t, Types::qubit_t > & Graphs::IOptimiser< Time >::GetQubitsMap ( ) const
pure virtual

◆ GetReverseQubitsMap()

template<typename Time = Types::time_type>
virtual const std::unordered_map< Types::qubit_t, Types::qubit_t > & Graphs::IOptimiser< Time >::GetReverseQubitsMap ( ) const
pure virtual

◆ Optimise()

template<typename Time = Types::time_type>
virtual size_t Graphs::IOptimiser< Time >::Optimise ( size_t numSteps = 10000)
pure virtual

◆ SetNetworkAndCircuit()

template<typename Time = Types::time_type>
virtual void Graphs::IOptimiser< Time >::SetNetworkAndCircuit ( const std::shared_ptr< Network::INetwork< Time > > & network,
const std::shared_ptr< Circuits::Circuit< Time > > & circuit )
pure virtual

◆ TranslateQubitFromOriginal()

template<typename Time = Types::time_type>
virtual Types::qubit_t Graphs::IOptimiser< Time >::TranslateQubitFromOriginal ( Types::qubit_t qubit) const
pure virtual

◆ TranslateQubitToOriginal()

template<typename Time = Types::time_type>
virtual Types::qubit_t Graphs::IOptimiser< Time >::TranslateQubitToOriginal ( Types::qubit_t qubit) const
pure virtual

◆ TranslateStateFromOriginal()

template<typename Time = Types::time_type>
virtual size_t Graphs::IOptimiser< Time >::TranslateStateFromOriginal ( size_t state) const
pure virtual

◆ TranslateStateToOriginal()

template<typename Time = Types::time_type>
virtual size_t Graphs::IOptimiser< Time >::TranslateStateToOriginal ( size_t state) const
pure virtual

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