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.

MaximumLikelihoodAmplitudeEstimation

class MaximumLikelihoodAmplitudeEstimation(evaluation_schedule, minimizer=None, quantum_instance=None)

GitHub

Bases: qiskit.algorithms.amplitude_estimators.amplitude_estimator.AmplitudeEstimator

The Maximum Likelihood Amplitude Estimation algorithm.

This class implements the quantum amplitude estimation (QAE) algorithm without phase estimation, as introduced in [1]. In comparison to the original QAE algorithm [2], this implementation relies solely on different powers of the Grover operator and does not require additional evaluation qubits. Finally, the estimate is determined via a maximum likelihood estimation, which is why this class in named MaximumLikelihoodAmplitudeEstimation.

References

[1]: Suzuki, Y., Uno, S., Raymond, R., Tanaka, T., Onodera, T., & Yamamoto, N. (2019).

Amplitude Estimation without Phase Estimation. arXiv:1904.10246.

[2]: Brassard, G., Hoyer, P., Mosca, M., & Tapp, A. (2000).

Quantum Amplitude Amplification and Estimation. arXiv:quant-ph/0005055.

Parameters

  • evaluation_schedule (Union[List[int], int]) – If a list, the powers applied to the Grover operator. The list element must be non-negative. If a non-negative integer, an exponential schedule is used where the highest power is 2 to the integer minus 1: [id, Q^2^0, …, Q^2^(evaluation_schedule-1)].
  • minimizer (Optional[Callable[[Callable[[float], float], List[Tuple[float, float]]], float]]) – A minimizer used to find the minimum of the likelihood function. Defaults to a brute search where the number of evaluation points is determined according to evaluation_schedule. The minimizer takes a function as first argument and a list of (float, float) tuples (as bounds) as second argument and returns a single float which is the found minimum.
  • quantum_instance (Union[QuantumInstance, Backend, BaseBackend, None]) – Quantum Instance or Backend

Raises

ValueError – If the number of oracle circuits is smaller than 1.


Methods

compute_confidence_interval

static MaximumLikelihoodAmplitudeEstimation.compute_confidence_interval(result, alpha, kind='fisher', apply_post_processing=False)

Compute the alpha confidence interval using the method kind.

The confidence level is (1 - alpha) and supported kinds are ‘fisher’, ‘likelihood_ratio’ and ‘observed_fisher’ with shorthand notations ‘fi’, ‘lr’ and ‘oi’, respectively.

Parameters

  • result (MaximumLikelihoodAmplitudeEstimationResult) – A maximum likelihood amplitude estimation result.
  • alpha (float) – The confidence level.
  • kind (str) – The method to compute the confidence interval. Defaults to ‘fisher’, which computes the theoretical Fisher information.
  • apply_post_processing (bool) – If True, apply post-processing to the confidence interval.

Return type

Tuple[float, float]

Returns

The specified confidence interval.

Raises

  • AlgorithmError – If run() hasn’t been called yet.
  • NotImplementedError – If the method kind is not supported.

compute_mle

MaximumLikelihoodAmplitudeEstimation.compute_mle(circuit_results, estimation_problem, num_state_qubits=None, return_counts=False)

Compute the MLE via a grid-search.

This is a stable approach if sufficient gridpoints are used.

Parameters

  • circuit_results (Union[List[Dict[str, int]], List[ndarray]]) – A list of circuit outcomes. Can be counts or statevectors.
  • estimation_problem (EstimationProblem) – The estimation problem containing the evaluation schedule and the number of likelihood function evaluations used to find the minimum.
  • num_state_qubits (Optional[int]) – The number of state qubits, required for statevector simulations.
  • return_counts (bool) – If True, returns the good counts.

Return type

Union[float, Tuple[float, List[float]]]

Returns

The MLE for the provided result object.

construct_circuits

MaximumLikelihoodAmplitudeEstimation.construct_circuits(estimation_problem, measurement=False)

Construct the Amplitude Estimation w/o QPE quantum circuits.

Parameters

  • estimation_problem (EstimationProblem) – The estimation problem for which to construct the QAE circuit.
  • measurement (bool) – Boolean flag to indicate if measurement should be included in the circuits.

Return type

List[QuantumCircuit]

Returns

A list with the QuantumCircuit objects for the algorithm.

estimate

MaximumLikelihoodAmplitudeEstimation.estimate(estimation_problem)

Run the amplitude estimation algorithm.

Parameters

estimation_problem (EstimationProblem) – An EstimationProblem containing all problem-relevant information such as the state preparation and the objective qubits.

Return type

MaximumLikelihoodAmplitudeEstimationResult


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.