AmplitudeEstimation
class AmplitudeEstimation(num_eval_qubits, phase_estimation_circuit=None, iqft=None, quantum_instance=None)
Bases: qiskit.algorithms.amplitude_estimators.amplitude_estimator.AmplitudeEstimator
The Quantum Phase Estimation-based Amplitude Estimation algorithm.
This class implements the original Quantum Amplitude Estimation (QAE) algorithm, introduced by [1]. This canonical version uses quantum phase estimation along with a set of additional evaluation qubits to find an estimate , that is restricted to the grid
More evaluation qubits produce a finer sampling grid, therefore the accuracy of the algorithm increases with .
Using a maximum likelihood post processing, this grid constraint can be circumvented. This improved estimator is implemented as well, see [2] Appendix A for more detail.
References
[1]: Brassard, G., Hoyer, P., Mosca, M., & Tapp, A. (2000).
Quantum Amplitude Amplification and Estimation. arXiv:quant-ph/0005055.
[2]: Grinko, D., Gacon, J., Zoufal, C., & Woerner, S. (2019).
Iterative Quantum Amplitude Estimation. arXiv:1912.05559.
Parameters
- num_eval_qubits (
int
) – The number of evaluation qubits. - phase_estimation_circuit (
Optional
[QuantumCircuit
]) – The phase estimation circuit used to run the algorithm. Defaults to the standard phase estimation circuit from the circuit library, qiskit.circuit.library.PhaseEstimation when None. - iqft (
Optional
[QuantumCircuit
]) – The inverse quantum Fourier transform component, defaults to using a standard implementation from qiskit.circuit.library.QFT when None. - quantum_instance (
Union
[QuantumInstance
,Backend
,BaseBackend
,None
]) – The backend (or QuantumInstance) to execute the circuits on.
Raises
ValueError – If the number of evaluation qubits is smaller than 1.
Methods
compute_confidence_interval
static AmplitudeEstimation.compute_confidence_interval(result, alpha=0.05, kind='likelihood_ratio')
Compute the (1 - alpha) confidence interval.
Parameters
- result (
AmplitudeEstimationResult
) – An amplitude estimation result for which to compute the confidence interval. - alpha (
float
) – Confidence level: compute the (1 - alpha) confidence interval. - kind (
str
) – The method to compute the confidence interval, can be ‘fisher’, ‘observed_fisher’ or ‘likelihood_ratio’ (default)
Return type
Tuple
[float
, float
]
Returns
The (1 - alpha) confidence interval of the specified kind.
Raises
- AquaError – If ‘mle’ is not in self._ret.keys() (i.e. run was not called yet).
- NotImplementedError – If the confidence interval method kind is not implemented.
compute_mle
static AmplitudeEstimation.compute_mle(result, apply_post_processing=False)
Compute the Maximum Likelihood Estimator (MLE).
Parameters
- result (
AmplitudeEstimationResult
) – An amplitude estimation result object. - apply_post_processing (
bool
) – If True, apply the post processing to the MLE before returning it.
Return type
float
Returns
The MLE for the provided result object.
construct_circuit
AmplitudeEstimation.construct_circuit(estimation_problem, measurement=False)
Construct the Amplitude Estimation quantum circuit.
Parameters
- estimation_problem (
EstimationProblem
) – The estimation problem for which to construct the QAE circuit. - measurement (
bool
) – Boolean flag to indicate if measurements should be included in the circuit.
Return type
QuantumCircuit
Returns
The QuantumCircuit object for the constructed circuit.
estimate
AmplitudeEstimation.estimate(estimation_problem)
Run the amplitude estimation algorithm on provided estimation problem.
Parameters
estimation_problem (EstimationProblem
) – The estimation problem.
Return type
AmplitudeEstimationResult
Returns
An amplitude estimation results object.
Raises
ValueError – If state_preparation or objective_qubits are not set in the estimation_problem.
evaluate_measurements
AmplitudeEstimation.evaluate_measurements(circuit_results, threshold=1e-06)
Evaluate the results from the circuit simulation.
Given the probabilities from statevector simulation of the QAE circuit, compute the probabilities that the measurements y/gridpoints a are the best estimate.
Parameters
- circuit_results (
Union
[Dict
[str
,int
],ndarray
]) – The circuit result from the QAE circuit. Can be either a counts dict or a statevector. - threshold (
float
) – Measurements with probabilities below the threshold are discarded.
Return type
Tuple
[Dict
[int
, float
], Dict
[float
, float
]]
Returns
Dictionaries containing the a gridpoints with respective probabilities and
y measurements with respective probabilities, in this order.
Attributes
quantum_instance
Get the quantum instance.
Return type
Optional
[QuantumInstance
]
Returns
The quantum instance used to run this algorithm.