38template <
typename Time = Types::time_type>
39class IOptimiser :
public std::enable_shared_from_this<IOptimiser<Time>> {
49 virtual size_t Optimise(
size_t numSteps = 10000) = 0;
51 virtual const std::unordered_map<Types::qubit_t, Types::qubit_t> &
54 virtual const std::unordered_map<Types::qubit_t, Types::qubit_t> &
74 std::shared_ptr<IOptimiser<Time>>
getptr() {
75 return std::enable_shared_from_this<IOptimiser<Time>>::shared_from_this();
Circuit class for holding the sequence of operations.
Interface for optimiser classes.
virtual const std::unordered_map< Types::qubit_t, Types::qubit_t > & GetQubitsMap() const =0
virtual Types::qubit_t TranslateQubitToOriginal(Types::qubit_t qubit) const =0
virtual size_t Optimise(size_t numSteps=10000)=0
virtual size_t TranslateStateToOriginal(size_t state) const =0
virtual Types::qubit_t TranslateQubitFromOriginal(Types::qubit_t qubit) const =0
virtual size_t GetNumCuts() const =0
virtual const std::unordered_map< Types::qubit_t, Types::qubit_t > & GetReverseQubitsMap() const =0
virtual ~IOptimiser()=default
virtual void SetNetworkAndCircuit(const std::shared_ptr< Network::INetwork< Time > > &network, const std::shared_ptr< Circuits::Circuit< Time > > &circuit)=0
std::shared_ptr< IOptimiser< Time > > getptr()
Get a shared pointer to this object.
virtual size_t TranslateStateFromOriginal(size_t state) const =0
OptimiserType
The type of optimiser.
uint_fast64_t qubit_t
The type of a qubit.