Skip to main contentIBM Quantum Documentation


AmplificationProblem(oracle, state_preparation=None, grover_operator=None, post_processing=None, objective_qubits=None, is_good_state=None)

Bases: object

The amplification problem is the input to amplitude amplification algorithms, like Grover.

This class contains all problem-specific information required to run an amplitude amplification algorithm. It minimally contains the Grover operator. It can further hold some post processing on the optimal bitstring.


  • oracle (Union[QuantumCircuit, Statevector]) – The oracle reflecting about the bad states.
  • state_preparation (Optional[QuantumCircuit]) – A circuit preparing the input state, referred to as A\mathcal{A}. If None, a layer of Hadamard gates is used.
  • grover_operator (Optional[QuantumCircuit]) – The Grover operator Q\mathcal{Q} used as unitary in the phase estimation circuit. If None, this operator is constructed from the oracle and state_preparation.
  • post_processing (Optional[Callable[[str], Any]]) – A mapping applied to the most likely bitstring.
  • objective_qubits (Union[int, List[int], None]) – If set, specifies the indices of the qubits that should be measured. If None, all qubits will be measured. The is_good_state function will be applied on the measurement outcome of these qubits.
  • is_good_state (Union[Callable[[str], bool], List[int], List[str], Statevector, None]) – A function to check whether a string represents a good state. By default if the oracle argument has an evaluate_bitstring method (currently only provided by the PhaseOracle class) this will be used, otherwise this kwarg is required and must be specified.



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

If the Grover operator is not set, we try to build it from the A\mathcal{A} operator and objective_qubits. This only works if objective_qubits is a list of integers.

Return type



The Grover operator, or None if neither the Grover operator nor the A\mathcal{A} operator is set.


Check whether a provided bitstring is a good state or not.

Return type

Callable[[str], bool]


A callable that takes in a bitstring and returns True if the measurement is a good state, False otherwise.


The indices of the objective qubits.

Return type



The indices of the objective qubits as list of integers.


Return the oracle.

Return type

Union[QuantumCircuit, Statevector]


The oracle.


Apply post processing to the input value.

Return type

Callable[[str], Any]


A handle to the post processing function. Acts as identity by default.


Get the state preparation operator A\mathcal{A}.

Return type



The A\mathcal{A} operator as QuantumCircuit.

Was this page helpful?