StandardAmplitudeAmplification function

Warning

This documentation refers to the Classic QDK, which has been replaced by the Modern QDK.

Please see https://aka.ms/qdk.api for the API documentation for the Modern QDK.

Namespace: Microsoft.Quantum.AmplitudeAmplification

Package: Microsoft.Quantum.Standard

Standard Amplitude Amplification algorithm

function StandardAmplitudeAmplification (nIterations : Int, stateOracle : Microsoft.Quantum.Oracles.StateOracle, idxFlagQubit : Int) : (Qubit[] => Unit is Adj + Ctl)

Input

nIterations : Int

Number of iterations $n$ of amplitude amplification

stateOracle : StateOracle

Unitary oracle $A$ that prepares start state

idxFlagQubit : Int

Index to flag qubit

Output : Qubit[] => Unit is Adj + Ctl

An operation that implements the standard amplitude amplification quantum algorithm

Remarks

This is the standard amplitude amplification algorithm obtained by a choice of reflection phases computed by StandardReflectionPhases Assuming that \begin{align} A\ket{0}_{f}\ket{0}_s= \lambda\ket{1}_f\ket{\text{target}}_s + \sqrt{1-|\lambda|^2}\ket{0}_f\cdots, \end{align} this operation prepares the state \begin{align} \operatorname{StandardAmplitudeAmplification}\ket{0}_{f}\ket{0}_s= \sin((2n+1)\sin^{-1}(\lambda))\ket{1}_f\ket{\text{target}}_s + \cdots\ket{0}_f \end{align} In most cases, flagQubit and auxiliaryRegister is initialized in the state $\ket{0}_f\ket{0}_a$.

References