# qiskit.aqua.algorithms.AmplitudeEstimation¶

class AmplitudeEstimation(num_eval_qubits, state_preparation=None, grover_operator=None, objective_qubits=None, post_processing=None, phase_estimation_circuit=None, iqft=None, quantum_instance=None, a_factory=None, q_factory=None, i_objective=None)[소스]

The Quantum Phase Estimation-based Amplitude Estimation algorithm.

This class implements the original Quantum Amplitude Estimation (QAE) algorithm, introduced by [1]. This canonical version uses quantum phase estimation along with a set of $$m$$ additional evaluation qubits to find an estimate $$\tilde{a}$$, that is restricted to the grid

$\tilde{a} \in \{\sin^2(\pi y / 2^m) : y = 0, ..., 2^{m-1}\}$

More evaluation qubits produce a finer sampling grid, therefore the accuracy of the algorithm increases with $$m$$.

Using a maximum likelihood post processing, this grid constraint can be circumvented. This improved estimator is implemented as well, see [2] Appendix A for more detail.

참조

[1]: Brassard, G., Hoyer, P., Mosca, M., & Tapp, A. (2000).

Quantum Amplitude Amplification and Estimation. arXiv:quant-ph/0005055.

[2]: Grinko, D., Gacon, J., Zoufal, C., & Woerner, S. (2019).

Iterative Quantum Amplitude Estimation. arXiv:1912.05559.

매개변수
• num_eval_qubits (int) – The number of evaluation qubits.

• state_preparation (Union[QuantumCircuit, CircuitFactory, None]) – A circuit preparing the input state, referred to as $$\mathcal{A}$$.

• grover_operator (Union[QuantumCircuit, CircuitFactory, None]) – The Grover operator $$\mathcal{Q}$$ used as unitary in the phase estimation circuit.

• objective_qubits (Optional[List[int]]) – A list of qubit indices to specify the oracle in the Grover operator, if the Grover operator is not supplied. A measurement outcome is classified as ‘good’ state if all objective qubits are in state $$|1\rangle$$, otherwise it is classified as ‘bad’.

• post_processing (Optional[Callable[[float], float]]) – A mapping applied to the result of the algorithm $$0 \leq a \leq 1$$, usually used to map the estimate to a target interval.

• phase_estimation_circuit (Optional[QuantumCircuit]) – The phase estimation circuit used to run the algorithm. Defaults to the standard phase estimation circuit from the circuit library, qiskit.circuit.library.PhaseEstimation.

• iqft (Optional[QuantumCircuit]) – The inverse quantum Fourier transform component, defaults to using a standard implementation from qiskit.circuit.library.QFT when None.

• quantum_instance (Union[QuantumInstance, Backend, BaseBackend, None]) – The backend (or QuantumInstance) to execute the circuits on.

• a_factory (Optional[CircuitFactory]) – Deprecated, use state_preparation. The CircuitFactory subclass object representing the problem unitary.

• q_factory (Optional[CircuitFactory]) – Deprecated, use grover_operator. The CircuitFactory subclass object representing an amplitude estimation sample (based on a_factory).

• i_objective (Optional[int]) – Deprecated, use objective_qubits. The index of the objective qubit, i.e. the qubit marking ‘good’ solutions with the state $$|1\rangle$$ and ‘bad’ solutions with the state $$0\rangle$$.

__init__(num_eval_qubits, state_preparation=None, grover_operator=None, objective_qubits=None, post_processing=None, phase_estimation_circuit=None, iqft=None, quantum_instance=None, a_factory=None, q_factory=None, i_objective=None)[소스]
매개변수
• num_eval_qubits (int) – The number of evaluation qubits.

• state_preparation (Union[QuantumCircuit, CircuitFactory, None]) – A circuit preparing the input state, referred to as $$\mathcal{A}$$.

• grover_operator (Union[QuantumCircuit, CircuitFactory, None]) – The Grover operator $$\mathcal{Q}$$ used as unitary in the phase estimation circuit.

• objective_qubits (Optional[List[int]]) – A list of qubit indices to specify the oracle in the Grover operator, if the Grover operator is not supplied. A measurement outcome is classified as ‘good’ state if all objective qubits are in state $$|1\rangle$$, otherwise it is classified as ‘bad’.

• post_processing (Optional[Callable[[float], float]]) – A mapping applied to the result of the algorithm $$0 \leq a \leq 1$$, usually used to map the estimate to a target interval.

• phase_estimation_circuit (Optional[QuantumCircuit]) – The phase estimation circuit used to run the algorithm. Defaults to the standard phase estimation circuit from the circuit library, qiskit.circuit.library.PhaseEstimation.

• iqft (Optional[QuantumCircuit]) – The inverse quantum Fourier transform component, defaults to using a standard implementation from qiskit.circuit.library.QFT when None.

• quantum_instance (Union[QuantumInstance, Backend, BaseBackend, None]) – The backend (or QuantumInstance) to execute the circuits on.

• a_factory (Optional[CircuitFactory]) – Deprecated, use state_preparation. The CircuitFactory subclass object representing the problem unitary.

• q_factory (Optional[CircuitFactory]) – Deprecated, use grover_operator. The CircuitFactory subclass object representing an amplitude estimation sample (based on a_factory).

• i_objective (Optional[int]) – Deprecated, use objective_qubits. The index of the objective qubit, i.e. the qubit marking ‘good’ solutions with the state $$|1\rangle$$ and ‘bad’ solutions with the state $$0\rangle$$.

Methods

 __init__(num_eval_qubits[, …]) type num_eval_qubits int confidence_interval(alpha[, kind]) Compute the (1 - alpha) confidence interval. construct_circuit([measurement]) Construct the Amplitude Estimation quantum circuit. is_good_state(measurement) Determine whether a given state is a good state. post_processing(value) Post processing of the raw amplitude estimation output $$0 \leq a \leq 1$$. run([quantum_instance]) Execute the algorithm with selected backend. set_backend(backend, **kwargs) Sets backend with configuration.

Attributes

 a_factory Get the A operator encoding the amplitude a that’s approximated, i.e. backend Returns backend. grover_operator Get the $$\mathcal{Q}$$ operator, or Grover operator. i_objective Get the index of the objective qubit. objective_qubits Get the criterion for a measurement outcome to be in a ‘good’ state. q_factory Get the Q operator, or Grover-operator for the Amplitude Estimation algorithm, i.e. quantum_instance Returns quantum instance. random Return a numpy random. state_preparation Get the $$\mathcal{A}$$ operator encoding the amplitude $$a$$.
property a_factory

Get the A operator encoding the amplitude a that’s approximated, i.e.

A |0>_n |0> = sqrt{1 - a} |psi_0>_n |0> + sqrt{a} |psi_1>_n |1>

see the original Brassard paper (https://arxiv.org/abs/quant-ph/0005055) for more detail.

반환값

the A operator as CircuitFactory

반환 형식

CircuitFactory

property backend

Returns backend.

반환 형식

Union[Backend, BaseBackend]

confidence_interval(alpha, kind='likelihood_ratio')[소스]

Compute the (1 - alpha) confidence interval.

매개변수
• alpha (float) – Confidence level: compute the (1 - alpha) confidence interval.

• kind (str) – The method to compute the confidence interval, can be ‘fisher’, ‘observed_fisher’ or ‘likelihood_ratio’ (default)

반환 형식

List[float]

반환값

The (1 - alpha) confidence interval of the specified kind.

예외
• AquaError – If ‘mle’ is not in self._ret.keys() (i.e. run was not called yet).

• NotImplementedError – If the confidence interval method kind is not implemented.

construct_circuit(measurement=False)[소스]

Construct the Amplitude Estimation quantum circuit.

매개변수

measurement (bool) – Boolean flag to indicate if measurements should be included in the circuit.

반환 형식

QuantumCircuit

반환값

The QuantumCircuit object for the constructed circuit.

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

반환 형식

Optional[QuantumCircuit]

반환값

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

property i_objective

Get the index of the objective qubit. The objective qubit marks the |psi_0> state (called ‘bad states’ in https://arxiv.org/abs/quant-ph/0005055) with |0> and |psi_1> (‘good’ states) with |1>. If the A operator performs the mapping

A |0>_n |0> = sqrt{1 - a} |psi_0>_n |0> + sqrt{a} |psi_1>_n |1>

then, the objective qubit is the last one (which is either |0> or |1>).

If the objective qubit (i_objective) is not set, we check if the Q operator (q_factory) is set and return the index specified there. If the q_factory is not defined, the index equals the number of qubits of the A operator (a_factory) minus one. If also the a_factory is not set, return None.

반환값

the index of the objective qubit

반환 형식

int

is_good_state(measurement)

Determine whether a given state is a good state.

매개변수

measurement (str) – A measurement as bitstring, e.g. ‘01100’.

반환 형식

bool

반환값

True if the measurement corresponds to a good state, False otherwise.

예외

ValueError – If self.objective_qubits is not set.

property objective_qubits

Get the criterion for a measurement outcome to be in a ‘good’ state.

반환 형식

Optional[List[int]]

반환값

The criterion as list of qubit indices.

post_processing(value)

Post processing of the raw amplitude estimation output $$0 \leq a \leq 1$$.

매개변수

value (float) – The estimation value $$a$$.

반환 형식

float

반환값

The value after post processing, usually mapping the interval $$[0, 1]$$ to the target interval.

property q_factory

Get the Q operator, or Grover-operator for the Amplitude Estimation algorithm, i.e.

$\mathcal{Q} = \mathcal{A} \mathcal{S}_0 \mathcal{A}^\dagger \mathcal{S}_f,$

where $$\mathcal{S}_0$$ reflects about the |0>_n state and S_psi0 reflects about $$|\Psi_0\rangle_n$$. See https://arxiv.org/abs/quant-ph/0005055 for more detail.

If the Q operator is not set, we try to build it from the A operator. If neither the A operator is set, None is returned.

반환값

returns the current Q factory of the algorithm

반환 형식

QFactory

property quantum_instance

Returns quantum instance.

반환 형식

Optional[QuantumInstance]

property random

Return a numpy random.

run(quantum_instance=None, **kwargs)

Execute the algorithm with selected backend.

매개변수
• quantum_instance (Union[QuantumInstance, Backend, BaseBackend, None]) – the experimental setting.

• kwargs (dict) – kwargs

반환값

results of an algorithm.

반환 형식

dict

예외

AquaError – If a quantum instance or backend has not been provided

set_backend(backend, **kwargs)

Sets backend with configuration.

반환 형식

None

property state_preparation

Get the $$\mathcal{A}$$ operator encoding the amplitude $$a$$.

반환 형식

QuantumCircuit

반환값

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