qiskit.algorithms.AmplificationProblem
class AmplificationProblem(oracle, state_preparation=None, grover_operator=None, post_processing=None, objective_qubits=None, is_good_state=None)
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 (
QuantumCircuit
) – The oracle reflecting about the bad states. - state_preparation (
Optional
[QuantumCircuit
]) – A circuit preparing the input state, referred to as . If None, a layer of Hadamard gates is used. - grover_operator (
Optional
[QuantumCircuit
]) – The Grover operator used as unitary in the phase estimation circuit. If None, this operator is constructed from theoracle
andstate_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. Theis_good_state
function will be applied on the measurement outcome of these qubits. - is_good_state (
Optional
[Callable
[[str
],bool
]]) – A function to check whether a string represents a good state.
__init__
__init__(oracle, state_preparation=None, grover_operator=None, post_processing=None, objective_qubits=None, is_good_state=None)
Parameters
- oracle (
QuantumCircuit
) – The oracle reflecting about the bad states. - state_preparation (
Optional
[QuantumCircuit
]) – A circuit preparing the input state, referred to as . If None, a layer of Hadamard gates is used. - grover_operator (
Optional
[QuantumCircuit
]) – The Grover operator used as unitary in the phase estimation circuit. If None, this operator is constructed from theoracle
andstate_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. Theis_good_state
function will be applied on the measurement outcome of these qubits. - is_good_state (
Optional
[Callable
[[str
],bool
]]) – A function to check whether a string represents a good state.
Methods
__init__ (oracle[, state_preparation, …]) | type oracleQuantumCircuit |
Attributes
grover_operator | Get the operator, or Grover operator. |
is_good_state | Check whether a provided bitstring is a good state or not. |
objective_qubits | The indices of the objective qubits. |
oracle | Return the oracle. |
post_processing | Apply post processing to the input value. |
state_preparation | Get the state preparation operator . |
grover_operator
Get the operator, or Grover operator.
If the Grover operator is not set, we try to build it from the 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 operator is set.
is_good_state
Check whether a provided bitstring is a good state or not.
Return type
Callable
[[str
], float
]
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
QuantumCircuit
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 .
Return type
QuantumCircuit
Returns
The operator as QuantumCircuit.