File StochasticNoiseSimulator.hpp

class StochasticNoiseSimulator : public CircuitSimulator

Public Functions

inline StochasticNoiseSimulator(std::unique_ptr<qc::QuantumComputation> &&qc_, const ApproximationInfo &approximationInfo_, std::string noiseEffects_ = "APD", double noiseProbability_ = 0.001, std::optional<double> ampDampingProbability_ = std::nullopt, double multiQubitGateFactor_ = 2)
inline explicit StochasticNoiseSimulator(std::unique_ptr<qc::QuantumComputation> &&qc_, std::string noiseEffects_ = "APD", double noiseProbability_ = 0.001, std::optional<double> ampDampingProbability_ = std::nullopt, double multiQubitGateFactor_ = 2)
inline StochasticNoiseSimulator(std::unique_ptr<qc::QuantumComputation> &&qc_, const ApproximationInfo &approximationInfo_, const std::size_t seed_, std::string noiseEffects_ = "APD", double noiseProbability_ = 0.001, std::optional<double> ampDampingProbability_ = std::nullopt, double multiQubitGateFactor_ = 2)
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 virtual std::size_t getMatrixActiveNodeCount() const override
inline virtual std::size_t countNodesFromRoot() override
virtual std::map<std::string, std::string> additionalStatistics() override

Public Members

std::vector<std::map<std::string, size_t>> classicalMeasurementsMaps
std::map<std::string, size_t> finalClassicalMeasurementsMap

Private Functions

void runStochSimulationForId(std::size_t stochRun, qc::Qubit nQubits, std::map<std::string, size_t> &classicalMeasurementsMap, std::uint64_t localSeed)

Private Members

double noiseProbability = {}
double amplitudeDampingProb = {}
double multiQubitGateFactor = {}
std::size_t stochasticRuns = {}
std::size_t maxInstances = {}
std::string noiseEffects
double stochRunTime = {}