File PathSimulator.hpp¶
-
class PathSimulator : public CircuitSimulator¶
Public Functions
-
inline explicit PathSimulator(std::unique_ptr<qc::QuantumComputation> &&qc_, Configuration configuration = Configuration())¶
-
inline PathSimulator(std::unique_ptr<qc::QuantumComputation> &&qc_, typename Configuration::Mode mode_, std::size_t bracketSize_, std::size_t startingPoint_, std::list<std::size_t> gateCost_, std::size_t seed_)¶
-
virtual std::map<std::string, std::size_t> simulate(std::size_t shots) override¶
Run the simulation in the (derived) class.
- Parameters:
shots – number of shots to take from the final quantum state
- Returns:
a map from the strings representing basis states to the number of times they have been measured
-
inline const SimulationPath &getSimulationPath() const¶
-
inline void setSimulationPath(const SimulationPath &path)¶
-
inline void setSimulationPath(const typename SimulationPath::Components &components, bool assumeCorrectOrder = false)¶
-
void generateSequentialSimulationPath()¶
-
void generatePairwiseRecursiveGroupingSimulationPath()¶
-
void generateBracketSimulationPath(std::size_t bracketSize)¶
-
void generateAlternatingSimulationPath(std::size_t startingPoint)¶
-
void generateGatecostSimulationPath(std::size_t startingPoint, std::list<std::size_t> &gateCosts)¶
Private Functions
-
void constructTaskGraph()¶
-
void addSimulationTask(std::size_t leftID, std::size_t rightID, std::size_t resultID)¶
Private Members
-
std::unordered_map<std::size_t, tf::Task> tasks¶
-
tf::Taskflow taskflow¶
-
tf::Executor executor¶
-
SimulationPath simulationPath = {}¶
-
struct Configuration¶
Public Types
Public Functions
-
inline explicit Configuration(const Mode mode_ = Mode::Sequential, const std::size_t bracketSize_ = 2, const std::size_t startingPoint_ = 0, std::list<std::size_t> gateCost_ = {}, const std::size_t seed_ = 0)¶
-
inline nlohmann::json json() const¶
-
inline std::string toString() const¶
-
inline explicit Configuration(const Mode mode_ = Mode::Sequential, const std::size_t bracketSize_ = 2, const std::size_t startingPoint_ = 0, std::list<std::size_t> gateCost_ = {}, const std::size_t seed_ = 0)¶
-
struct SimulationPath¶
Public Types
-
using Components = std::vector<std::pair<std::size_t, std::size_t>>¶
Public Functions
-
SimulationPath() = default¶
-
SimulationPath(std::size_t nleaves_, Components components_, const qc::QuantumComputation *qc_, bool assumeCorrectOrder = false)¶
Public Members
-
Components components¶
-
std::size_t nleaves = {}¶
-
const qc::QuantumComputation *qc = {}¶
-
using Components = std::vector<std::pair<std::size_t, std::size_t>>¶
-
inline explicit PathSimulator(std::unique_ptr<qc::QuantumComputation> &&qc_, Configuration configuration = Configuration())¶