class MaximumLikelihoodAmplitudeEstimation(num_oracle_circuits, state_preparation=None, grover_operator=None, objective_qubits=None, post_processing=None, a_factory=None, q_factory=None, i_objective=None, likelihood_evals=None, quantum_instance=None)[source]

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.


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

  • num_oracle_circuits (int) – The number of circuits applying different powers of the Grover oracle Q. The (num_oracle_circuits + 1) executed circuits will be [id, Q^2^0, …, Q^2^{num_oracle_circuits-1}] A |0>, where A is the problem unitary encoded in the argument a_factory. Has a minimum value of 1.

  • state_preparation (Union[QuantumCircuit, CircuitFactory, None]) – A circuit preparing the input state, referred to as \(\mathcal{A}\).

  • grover_operator (Union[QuantumCircuit, CircuitFactory, None]) – The Grover operator \(\mathcal{Q}\) used as unitary in the phase estimation circuit.

  • objective_qubits (Optional[List[int]]) – A list of qubit indices. A measurement outcome is classified as ‘good’ state if all objective qubits are in state \(|1\rangle\), otherwise it is classified as ‘bad’.

  • post_processing (Optional[Callable[[float], float]]) – A mapping applied to the estimate of \(0 \leq a \leq 1\), usually used to map the estimate to a target interval.

  • a_factory (Optional[CircuitFactory]) – The CircuitFactory subclass object representing the problem unitary.

  • q_factory (Optional[CircuitFactory]) – The CircuitFactory subclass object representing. an amplitude estimation sample (based on a_factory)

  • i_objective (Optional[int]) – The index of the objective qubit, i.e. the qubit marking ‘good’ solutions with the state |1> and ‘bad’ solutions with the state |0>

  • likelihood_evals (Optional[int]) – The number of gridpoints for the maximum search of the likelihood function

  • quantum_instance (Union[QuantumInstance, Backend, BaseBackend, None]) – Quantum Instance or Backend



Get the A operator encoding the amplitude a that’s approximated, i.e.


Returns backend.


Get the \(\mathcal{Q}\) operator, or Grover operator.


Get the index of the objective qubit.


Get the criterion for a measurement outcome to be in a ‘good’ state.


Get the Q operator, or Grover-operator for the Amplitude Estimation algorithm, i.e.


Returns quantum instance.


Return a numpy random.


Get the \(\mathcal{A}\) operator encoding the amplitude \(a\).



Compute the alpha confidence interval using the method kind.


Construct the Amplitude Estimation w/o QPE quantum circuits.


Determine whether a given state is a good state.


Post processing of the raw amplitude estimation output \(0 \leq a \leq 1\).[…])

Execute the algorithm with selected backend.


Sets backend with configuration.