MaximumLikelihoodAmplitudeEstimation
class MaximumLikelihoodAmplitudeEstimation(evaluation_schedule, minimizer=None, quantum_instance=None)
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 toevaluation_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.