modified_real_quantum_ae

This module contains the mRQAE class. Given a quantum oracle operator, this class estimates the amplitude of a given target state using a modification of the RQAE that has a better theoretical performance than the original one.

Original RQAE papper:

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.modified_real_quantum_ae.mRQAE(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

mrqae(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

property oracle

creating oracle property

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