ObliviousAmplitudeAmplificationFromStatePreparation 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

Oblivious amplitude amplification by oracles for partial reflections.

function ObliviousAmplitudeAmplificationFromStatePreparation (phases : Microsoft.Quantum.AmplitudeAmplification.ReflectionPhases, startStateOracle : Microsoft.Quantum.Oracles.DeterministicStateOracle, signalOracle : Microsoft.Quantum.Oracles.ObliviousOracle, idxFlagQubit : Int) : ((Qubit[], Qubit[]) => Unit is Adj + Ctl)

Input

phases : ReflectionPhases

Phases of partial reflections

startStateOracle : DeterministicStateOracle

Unitary oracle $A$ that prepares auxiliary start state

signalOracle : ObliviousOracle

Unitary oracle $O$ of type ObliviousOracle that acts jointly on the auxiliary and system register

idxFlagQubit : Int

Index to single-qubit flag register

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

An operation that implements oblivious amplitude amplification based on partial reflections.

Remarks

This imposes stricter conditions on form of the auxiliary start and target states than in ObliviousAmplitudeAmplificationFromPartialReflections. It is assumed that $A\ket{0}_f\ket{0}_a= \ket{\text{start}}_{fa}$ prepares the auxiliary start state $\ket{\text{start}}_{fa}$ from the computational basis $\ket{0}_f\ket{0}$. It is assumed that the target state is marked by $\ket{1}_f$. It is assumed that \begin{align} O\ket{\text{start}}_{fa}\ket{\psi}_s= \lambda\ket{1}_f\ket{\text{anything}}_a\ket{\text{target}}_s + \sqrt{1-|\lambda|^2}\ket{0}_f\cdots, \end{align} where $\ket{\text{target}}_s = U \ket{\psi}_s$ for some unitary $U$.