MaximumLikelihoodAmplitudeEstimation#
- class MaximumLikelihoodAmplitudeEstimation(evaluation_schedule, minimizer=None, sampler=None)[source]#
Bases:
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 (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 (MINIMIZER | None) – 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.sampler (BaseSampler | None) – A sampler primitive to evaluate the circuits.
- Raises:
ValueError – If the number of oracle circuits is smaller than 1.
Attributes
- sampler#
Get the sampler primitive.
- Returns:
The sampler primitive to evaluate the circuits.
Methods
- static compute_confidence_interval(result, alpha, kind='fisher', apply_post_processing=False, exact=False)[source]#
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.
exact (bool) – Whether the result comes from a statevector simulation or not
- Returns:
The specified confidence interval.
- Raises:
AlgorithmError – If run() hasn’t been called yet.
NotImplementedError – If the method kind is not supported.
- Return type:
- compute_mle(circuit_results, estimation_problem, num_state_qubits=None, return_counts=False)[source]#
Compute the MLE via a grid-search.
This is a stable approach if sufficient grid-points are used.
- Parameters:
circuit_results (list[dict[str, int]]) – 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.
return_counts (bool) – If True, returns the good counts.
num_state_qubits (int | None) – [Deprecated]. Number of qubits to process statevector results.
- Returns:
The MLE for the provided result object.
- Return type:
- construct_circuits(estimation_problem, measurement=False)[source]#
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.
- Returns:
A list with the QuantumCircuit objects for the algorithm.
- Return type:
list[QuantumCircuit]
- estimate(estimation_problem)[source]#
Run the amplitude estimation algorithm on provided estimation problem.
- Parameters:
estimation_problem (EstimationProblem) – The estimation problem.
- Returns:
An amplitude estimation results object.
- Raises:
AlgorithmError – If state_preparation is not set in estimation_problem.
AlgorithmError – Sampler job run error
- Return type: