qiskit-documentation/docs/api/qiskit/0.29/qiskit.algorithms.Amplifica...

120 lines
4.3 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
title: AmplificationProblem (v0.29)
description: API reference for qiskit.algorithms.AmplificationProblem in qiskit v0.29
in_page_toc_min_heading_level: 1
python_api_type: class
python_api_name: qiskit.algorithms.AmplificationProblem
---
# AmplificationProblem
<Class id="qiskit.algorithms.AmplificationProblem" isDedicatedPage={true} github="https://github.com/qiskit/qiskit/tree/stable/0.18/qiskit/algorithms/amplitude_amplifiers/amplification_problem.py" signature="AmplificationProblem(oracle, state_preparation=None, grover_operator=None, post_processing=None, objective_qubits=None, is_good_state=None)" modifiers="class">
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`](qiskit.circuit.library.PhaseOracle "qiskit.circuit.library.PhaseOracle") class) this will be used, otherwise this kwarg is required and **must** be specified.
**Raises**
**TypeError** if `is_good_state` is not provided and is required
## Attributes
### grover\_operator
<Attribute id="qiskit.algorithms.AmplificationProblem.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.
</Attribute>
### is\_good\_state
<Attribute id="qiskit.algorithms.AmplificationProblem.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.
</Attribute>
### objective\_qubits
<Attribute id="qiskit.algorithms.AmplificationProblem.objective_qubits">
The indices of the objective qubits.
**Return type**
`List`\[`int`]
**Returns**
The indices of the objective qubits as list of integers.
</Attribute>
### oracle
<Attribute id="qiskit.algorithms.AmplificationProblem.oracle">
Return the oracle.
**Return type**
`Union`\[`QuantumCircuit`, `Statevector`]
**Returns**
The oracle.
</Attribute>
### post\_processing
<Attribute id="qiskit.algorithms.AmplificationProblem.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.
</Attribute>
### state\_preparation
<Attribute id="qiskit.algorithms.AmplificationProblem.state_preparation">
Get the state preparation operator $\mathcal{A}$.
**Return type**
`QuantumCircuit`
**Returns**
The $\mathcal{A}$ operator as QuantumCircuit.
</Attribute>
</Class>