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.
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.
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.
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