real_quantum_ae
This module contains the RQAE class. Given a quantum oracle operator, this class estimates the amplitude of a given target state using Real Quantum Amplitude Estimation based on the paper:
Manzano, A., Musso, D., Leitao, A. Real Quantum Amplitude Estimation EPJ Quantum Technol. 10, 2 (2023) https://doi.org/10.1140/epjqt/s40507-023-00159-0
Author: Gonzalo Ferro Costas & Alberto Manzano Herrero
- class QQuantLib.AE.real_quantum_ae.RQAE(oracle: qat.lang.AQASM.QRoutine, target: list, index: list, **kwargs)
Class for Real Quantum Amplitude Estimation (RQAE) algorithm
- Parameters:
oracle (QLM gate) – QLM gate with the Oracle for implementing the Grover operator
target (list of ints) – python list with the target for the amplitude estimation
index (list of ints) – qubits which mark the register to do the amplitude estimation
kwargs (dictionary) – dictionary that allows the configuration of the IQAE algorithm
qpu (kwargs, QLM solver) – solver for simulating the resulting circuits
q (kwargs, int) – amplification ratio
epsilon (kwargs, int) – precision
gamma (kwargs, float) – accuracy
mcz_qlm (kwargs, bool) – for using or not QLM implementation of the multi controlled Z gate
- static chebysev_bound(n_samples: int, gamma: float)
Computes the length of the confidence interval for a given number of samples n_samples and an accuracy gamma.
- Parameters:
n_samples (int) – number of samples
gamma (float) – accuracy
- Return type:
length of the confidence interval
- static compute_info(ratio: float = 2, epsilon: float = 0.01, gamma: float = 0.05, **kwargs)
This function computes theoretical values of the IQAE algorithm.
- Parameters:
ratio (float) – amplification ratio/policy
epsilon (float) – precision
gamma (float) – accuracy
- Returns:
info – python dictionary with the computed information
- Return type:
dict
- static display_information(ratio: float = 2, epsilon: float = 0.01, gamma: float = 0.05, **kwargs)
This function displays information of the properties of the method for a given set of parameters
- Parameters:
ratio (float) – amplification ratio/policy
epsilon (float) – precision
gamma (float) – accuracy
- first_step(shift: float, shots: int, gamma: float)
This function implements the first step of the RQAE paper. The result is a first estimation of the desired amplitude.
- Parameters:
shift (float) – shift for the first iteration
shots (int) – number of measurements
gamma (float) – accuracy
- Returns:
amplitude_min (float) – lower bound for the amplitude to be estimated
amplitude_max (float) – upper bound for the amplitude to be estimated
- property index
creating index property
- property oracle
creating oracle property
- rqae(ratio: float = 2, epsilon: float = 0.01, gamma: float = 0.05)
This function implements the first step of the RQAE paper. The result is an estimation of the desired amplitude with precision epsilon and accuracy gamma.
- Parameters:
ratio (int) – amplification ratio
epsilon (int) – precision
gamma (float) – accuracy
- Returns:
amplitude_min (float) – lower bound for the amplitude to be estimated
amplitude_max (float) – upper bound for the amplitude to be estimated
- run()
run method for the class.
- Returns:
amplitude estimation parameter
- Return type:
self.ae
- run_step(shift: float, shots: int, gamma: float, k: int)
This function implements a step of the RQAE paper. The result is a refined estimation of the desired amplitude.
- Parameters:
shift (float) – shift for the first iteration
shots (int) – number of measurements
gamma (float) – accuracy
k (int) – number of amplifications
- Returns:
amplitude_min (float) – lower bound for the amplitude to be estimated
amplitude_max (float) – upper bound for the amplitude to be estimated
- property shifted_oracle
creating shifted_oracle property
- property target
creating target property