# AmplificationProblem¶

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

**Parameters**

**oracle**(`Union`

[`QuantumCircuit`

,`Statevector`

]) – The oracle reflecting about the bad states.**state_preparation**(`Optional`

[`QuantumCircuit`

]) – A circuit preparing the input state, referred to as $\mathcal{A}$. If None, a layer of Hadamard gates is used.**grover_operator**(`Optional`

[`QuantumCircuit`

]) – The Grover operator $\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.

## Attributes

### grover_operator

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

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

**Return type**

`Optional`

[`QuantumCircuit`

]

**Returns**

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

### is_good_state

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

**Return type**

`Callable`

[[`str`

], `bool`

]

**Returns**

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

### objective_qubits

The indices of the objective qubits.

**Return type**

`List`

[`int`

]

**Returns**

The indices of the objective qubits as list of integers.

### oracle

Return the oracle.

**Return type**

`Union`

[`QuantumCircuit`

, `Statevector`

]

**Returns**

The oracle.

### post_processing

Apply post processing to the input value.

**Return type**

`Callable`

[[`str`

], `Any`

]

**Returns**

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

### state_preparation

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

**Return type**

**Returns**

The $\mathcal{A}$ operator as QuantumCircuit.