qiskit-documentation/docs/api/qiskit/0.27/qiskit.algorithms.Iterative...

146 lines
8.6 KiB
Plaintext
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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: IterativeAmplitudeEstimation
description: API reference for qiskit.algorithms.IterativeAmplitudeEstimation
in_page_toc_min_heading_level: 1
python_api_type: class
python_api_name: qiskit.algorithms.IterativeAmplitudeEstimation
---
# qiskit.algorithms.IterativeAmplitudeEstimation
<Class id="qiskit.algorithms.IterativeAmplitudeEstimation" isDedicatedPage={true} github="https://github.com/qiskit/qiskit/tree/stable/0.17/qiskit/algorithms/amplitude_estimators/iae.py" signature="IterativeAmplitudeEstimation(epsilon_target, alpha, confint_method='beta', min_ratio=2, quantum_instance=None)" modifiers="class">
The Iterative Amplitude Estimation algorithm.
This class implements the Iterative Quantum Amplitude Estimation (IQAE) algorithm, proposed in \[1]. The output of the algorithm is an estimate that, with at least probability $1 - \alpha$, differs by epsilon to the target value, where both alpha and epsilon can be specified.
It differs from the original QAE algorithm proposed by Brassard \[2] in that it does not rely on Quantum Phase Estimation, but is only based on Grovers algorithm. IQAE iteratively applies carefully selected Grover iterations to find an estimate for the target amplitude.
**References**
**\[1]: Grinko, D., Gacon, J., Zoufal, C., & Woerner, S. (2019).**
Iterative Quantum Amplitude Estimation. [arXiv:1912.05559](https://arxiv.org/abs/1912.05559).
**\[2]: Brassard, G., Hoyer, P., Mosca, M., & Tapp, A. (2000).**
Quantum Amplitude Amplification and Estimation. [arXiv:quant-ph/0005055](http://arxiv.org/abs/quant-ph/0005055).
The output of the algorithm is an estimate for the amplitude a, that with at least probability 1 - alpha has an error of epsilon. The number of A operator calls scales linearly in 1/epsilon (up to a logarithmic factor).
**Parameters**
* **epsilon\_target** (`float`) Target precision for estimation target a, has values between 0 and 0.5
* **alpha** (`float`) Confidence level, the target probability is 1 - alpha, has values between 0 and 1
* **confint\_method** (`str`) Statistical method used to estimate the confidence intervals in each iteration, can be chernoff for the Chernoff intervals or beta for the Clopper-Pearson intervals (default)
* **min\_ratio** (`float`) Minimal q-ratio ($K_{i+1} / K_i$) for FindNextK
* **quantum\_instance** (`Union`\[`QuantumInstance`, `BaseBackend`, `Backend`, `None`]) Quantum Instance or Backend
**Raises**
* [**AlgorithmError**](qiskit.algorithms.AlgorithmError "qiskit.algorithms.AlgorithmError") if the method to compute the confidence intervals is not supported
* **ValueError** If the target epsilon is not in (0, 0.5]
* **ValueError** If alpha is not in (0, 1)
* **ValueError** If confint\_method is not supported
### \_\_init\_\_
<Function id="qiskit.algorithms.IterativeAmplitudeEstimation.__init__" signature="__init__(epsilon_target, alpha, confint_method='beta', min_ratio=2, quantum_instance=None)">
The output of the algorithm is an estimate for the amplitude a, that with at least probability 1 - alpha has an error of epsilon. The number of A operator calls scales linearly in 1/epsilon (up to a logarithmic factor).
**Parameters**
* **epsilon\_target** (`float`) Target precision for estimation target a, has values between 0 and 0.5
* **alpha** (`float`) Confidence level, the target probability is 1 - alpha, has values between 0 and 1
* **confint\_method** (`str`) Statistical method used to estimate the confidence intervals in each iteration, can be chernoff for the Chernoff intervals or beta for the Clopper-Pearson intervals (default)
* **min\_ratio** (`float`) Minimal q-ratio ($K_{i+1} / K_i$) for FindNextK
* **quantum\_instance** (`Union`\[`QuantumInstance`, `BaseBackend`, `Backend`, `None`]) Quantum Instance or Backend
**Raises**
* [**AlgorithmError**](qiskit.algorithms.AlgorithmError "qiskit.algorithms.AlgorithmError") if the method to compute the confidence intervals is not supported
* **ValueError** If the target epsilon is not in (0, 0.5]
* **ValueError** If alpha is not in (0, 1)
* **ValueError** If confint\_method is not supported
</Function>
## Methods
| | |
| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- |
| [`__init__`](#qiskit.algorithms.IterativeAmplitudeEstimation.__init__ "qiskit.algorithms.IterativeAmplitudeEstimation.__init__")(epsilon\_target, alpha\[, …]) | The output of the algorithm is an estimate for the amplitude a, that with at least probability 1 - alpha has an error of epsilon. |
| [`construct_circuit`](#qiskit.algorithms.IterativeAmplitudeEstimation.construct_circuit "qiskit.algorithms.IterativeAmplitudeEstimation.construct_circuit")(estimation\_problem\[, k, …]) | Construct the circuit $\mathcal{Q}^k \mathcal{A} \vert 0\rangle$. |
| [`estimate`](#qiskit.algorithms.IterativeAmplitudeEstimation.estimate "qiskit.algorithms.IterativeAmplitudeEstimation.estimate")(estimation\_problem) | Run the amplitude estimation algorithm. |
## Attributes
| | |
| -------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------- |
| [`epsilon_target`](#qiskit.algorithms.IterativeAmplitudeEstimation.epsilon_target "qiskit.algorithms.IterativeAmplitudeEstimation.epsilon_target") | Returns the target precision `epsilon_target` of the algorithm. |
| [`quantum_instance`](#qiskit.algorithms.IterativeAmplitudeEstimation.quantum_instance "qiskit.algorithms.IterativeAmplitudeEstimation.quantum_instance") | Get the quantum instance. |
### construct\_circuit
<Function id="qiskit.algorithms.IterativeAmplitudeEstimation.construct_circuit" signature="construct_circuit(estimation_problem, k=0, measurement=False)">
Construct the circuit $\mathcal{Q}^k \mathcal{A} |0\rangle$.
The A operator is the unitary specifying the QAE problem and Q the associated Grover operator.
**Parameters**
* **estimation\_problem** (`EstimationProblem`) The estimation problem for which to construct the QAE circuit.
* **k** (`int`) The power of the Q operator.
* **measurement** (`bool`) Boolean flag to indicate if measurements should be included in the circuits.
**Return type**
`QuantumCircuit`
**Returns**
The circuit implementing $\mathcal{Q}^k \mathcal{A} |0\rangle$.
</Function>
### epsilon\_target
<Attribute id="qiskit.algorithms.IterativeAmplitudeEstimation.epsilon_target">
Returns the target precision `epsilon_target` of the algorithm.
**Return type**
`float`
**Returns**
The target precision (which is half the width of the confidence interval).
</Attribute>
### estimate
<Function id="qiskit.algorithms.IterativeAmplitudeEstimation.estimate" signature="estimate(estimation_problem)">
Run the amplitude estimation algorithm.
**Parameters**
**estimation\_problem** (`EstimationProblem`) An `EstimationProblem` containing all problem-relevant information such as the state preparation and the objective qubits.
**Return type**
`IterativeAmplitudeEstimationResult`
</Function>
### quantum\_instance
<Attribute id="qiskit.algorithms.IterativeAmplitudeEstimation.quantum_instance">
Get the quantum instance.
**Return type**
`Optional`\[`QuantumInstance`]
**Returns**
The quantum instance used to run this algorithm.
</Attribute>
</Class>