BlockEncodingReflectionByLCU 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.Simulation
Package: Microsoft.Quantum.Standard
Encodes an operator of interest into a BlockEncodingReflection
.
This constructs a BlockEncodingReflection
unitary $U=P\cdot V\cdot P^\dagger$ that encodes some
operator $H=\sum_{j}|\alpha_j|U_j$ of interest that is a linear combination of
unitaries. Typically, $P$ is a state preparation unitary such that
$P\ket{0}_a\sum_j\sqrt{\alpha_j/|\vec\alpha|_2}\ket{j}_a$,
and $V=\sum_{j}\ket{j}\bra{j}_a\otimes U_j$.
function BlockEncodingReflectionByLCU (statePreparation : (Qubit[] => Unit is Adj + Ctl), selector : ((Qubit[], Qubit[]) => Unit is Adj + Ctl)) : Microsoft.Quantum.Simulation.BlockEncodingReflection
Input
statePreparation : Qubit[] => Unit is Adj + Ctl
A unitary $P$ that prepares some target state.
selector : (Qubit[],Qubit[]) => Unit is Adj + Ctl
A unitary $V$ that encodes the component unitaries of $H$.
Output : BlockEncodingReflection
A unitary $U$ acting jointly on registers a
and s
that block-
encodes $H$, and satisfies $U'^{-1} = U$.
Remarks
This BlockEncoding
implementation gives it the properties of a
BlockEncodingReflection
.
See Also
Feedback
https://aka.ms/ContentUserFeedback.
Coming soon: Throughout 2024 we will be phasing out GitHub Issues as the feedback mechanism for content and replacing it with a new feedback system. For more information see:Submit and view feedback for