Skip to main contentIBM Quantum Documentation
This page is from an old version of Qiskit SDK and does not exist in the latest version. We recommend you migrate to the latest version. See the release notes for more information.

AmplitudeEstimation

class AmplitudeEstimation(num_eval_qubits, phase_estimation_circuit=None, iqft=None, quantum_instance=None)

GitHub

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 mm additional evaluation qubits to find an estimate a~\tilde{a}, that is restricted to the grid

a~{sin2(πy/2m):y=0,...,2m1}\tilde{a} \in \{\sin^2(\pi y / 2^m) : y = 0, ..., 2^{m-1}\}

More evaluation qubits produce a finer sampling grid, therefore the accuracy of the algorithm increases with mm.

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.

Was this page helpful?
Report a bug or request content on GitHub.