About cookies on this site Our websites require some cookies to function properly (required). In addition, other cookies may be used with your consent to analyze site usage, improve the user experience and for advertising. For more information, please review your options. By visiting our website, you agree to our processing of information as described in IBM’sprivacy statement. To provide a smooth navigation, your cookie preferences will be shared across the IBM web domains listed here.
AmplitudeEstimation
class qiskit.algorithms.AmplitudeEstimation(num_eval_qubits, phase_estimation_circuit=None, iqft=None, quantum_instance=None, sampler=None)
Bases: 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.
Note
This class does not support the EstimationProblem.is_good_state
property, as for phase estimation-based QAE, the oracle that identifes the good states must be encoded in the Grover operator. To set custom oracles, the EstimationProblem.grover_operator
attribute can be set directly.
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.
Deprecated since version 0.24.0
qiskit.algorithms.amplitude_estimators.ae.AmplitudeEstimation.__init__()
’s argument quantum_instance
is deprecated as of qiskit-terra 0.24.0. It will be removed no earlier than 3 months after the release date. Instead, use the sampler
argument. See https://qisk.it/algo_migration for a migration guide.
Parameters
- num_eval_qubits (int) – The number of evaluation qubits.
- phase_estimation_circuit (QuantumCircuit | None) – 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 (QuantumCircuit | None) – The inverse quantum Fourier transform component, defaults to using a standard implementation from qiskit.circuit.library.QFT when None.
- quantum_instance (QuantumInstance |Backend | None) – Deprecated: The backend (or QuantumInstance) to execute the circuits on.
- sampler (BaseSampler | None) – A sampler primitive to evaluate the circuits.
Raises
ValueError – If the number of evaluation qubits is smaller than 1.
Attributes
quantum_instance
Get the quantum instance.
Deprecated since version 0.24.0
The property qiskit.algorithms.amplitude_estimators.ae.AmplitudeEstimation.quantum_instance
is deprecated as of qiskit-terra 0.24.0. It will be removed no earlier than 3 months after the release date. See https://qisk.it/algo_migration for a migration guide.
Returns
The quantum instance used to run this algorithm.
Type
Deprecated
sampler
Get the sampler primitive.
Returns
The sampler primitive to evaluate the circuits.
Methods
compute_confidence_interval
static 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)
Returns
The (1 - alpha) confidence interval of the specified kind.
Raises
NotImplementedError – If the confidence interval method kind is not implemented.
Return type
compute_mle
static 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.
Returns
The MLE for the provided result object.
Return type
construct_circuit
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.
Returns
The QuantumCircuit object for the constructed circuit.
Return type
estimate
estimate(estimation_problem)
Run the amplitude estimation algorithm on provided estimation problem.
Parameters
estimation_problem (EstimationProblem) – The estimation problem.
Returns
An amplitude estimation results object.
Raises
- ValueError – If state_preparation or objective_qubits are not set in the estimation_problem.
- ValueError – A quantum instance or sampler must be provided.
- AlgorithmError – Sampler job run error.
Return type
evaluate_measurements
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 (dict[str, int] | np.ndarray) – The circuit result from the QAE circuit. Can be either a counts dict or a statevector or a quasi-probabilities dict.
- threshold (float) – Measurements with probabilities below the threshold are discarded.
Returns
Dictionaries containing the a gridpoints with respective probabilities and
y measurements with respective probabilities, in this order.
Return type
Was this page helpful?
Report a bug or request content on GitHub.