Maestro 0.1.0
Unified interface for quantum circuit simulation
Loading...
Searching...
No Matches
Optimiser.h
Go to the documentation of this file.
1
9
10#pragma once
11
12#ifndef _OPTIMISER_H_
13#define _OPTIMISER_H_
14
15#include "../Network/Network.h"
16
17namespace Graphs {
18
27
38template <typename Time = Types::time_type>
39class IOptimiser : public std::enable_shared_from_this<IOptimiser<Time>> {
40public:
41 virtual ~IOptimiser() = default;
42
44 const std::shared_ptr<Network::INetwork<Time>> &network,
45 const std::shared_ptr<Circuits::Circuit<Time>> &circuit) = 0;
46
47 virtual size_t GetNumCuts() const = 0;
48
49 virtual size_t Optimise(size_t numSteps = 10000) = 0;
50
51 virtual const std::unordered_map<Types::qubit_t, Types::qubit_t> &
52 GetQubitsMap() const = 0;
53
54 virtual const std::unordered_map<Types::qubit_t, Types::qubit_t> &
56
57 virtual Types::qubit_t
59
60 virtual Types::qubit_t
62
63 virtual size_t TranslateStateToOriginal(size_t state) const = 0;
64
65 virtual size_t TranslateStateFromOriginal(size_t state) const = 0;
66
74 std::shared_ptr<IOptimiser<Time>> getptr() {
75 return std::enable_shared_from_this<IOptimiser<Time>>::shared_from_this();
76 }
77};
78
79} // namespace Graphs
80
81#endif // _OPTIMISER_H_
Circuit class for holding the sequence of operations.
Definition Circuit.h:45
Interface for optimiser classes.
Definition Optimiser.h:39
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.
Definition Optimiser.h:74
virtual size_t TranslateStateFromOriginal(size_t state) const =0
The network interface.
Definition Network.h:56
OptimiserType
The type of optimiser.
Definition Optimiser.h:26
uint_fast64_t qubit_t
The type of a qubit.
Definition Types.h:20