Partager via


Opération PrepareUniformSuperposition

Nom complet : Std.StatePreparation.PrepareUniformSuperposition

operation PrepareUniformSuperposition(nStates : Int, qubits : Qubit[]) : Unit is Adj + Ctl

Résumé

Prépare une superposition uniforme d’états qui représentent des entiers de 0 à dans nStates - 1 un registre petit-boutiste qubits .

Descriptif

Étant donné un état d’entrée $\ket{0\cdots 0}$, cette opération prépare une superposition uniforme de tous les états numériques $0$ à $M-1$. En d’autres termes, $$ \begin{align} \ket{0} \mapsto \frac{1}{\sqrt{M}} \sum_{j=0}^{M - 1} \ket{j} \end{align} $$

L’opération est adjointable, mais exige que qubits le registre soit dans une superposition uniforme sur les premiers nStates états de base dans ce cas.

Entrée

nÉtats

Le nombre d’états dans la superposition uniforme à préparer.

registre

Le registre des qubits little-endian pour stocker l’état préparé. Il est supposé être initialisé dans l’état zéro $\ket{0\cdots 0}$. Ce registre doit être suffisamment long pour stocker le nombre $M-1$, ce qui signifie que $2^{Length(qubits)} >= M$.

Exemple :

   use qs = Qubit[4];
   PrepareUniformSuperposition(3, qs);
   DumpRegister(qs); // The state is (|0000>+|0100>+|1000>)/√3
   ResetAll(qs);