Compartir a través de


Operación PrepareUniformSuperposition

Nombre completo: Std.StatePreparation.PrepareUniformSuperposition

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

Resumen

Prepara una superposición uniforme de estados que representan enteros del 0 al nStates - 1 0 en un registro little-endian qubits .

Descripción

Dado un estado de entrada $\ket{0\cdots 0}$, esta operación prepara una superposición uniforme de todos los estados numéricos $0$ a $M-1$. En otras palabras, $$ \begin{align} \ket{0} \mapsto \frac{1}{\sqrt{M}} \sum_{j=0}^{M - 1} \ket{j} \end{align} $$

La operación es adherible, pero requiere que qubits el registro esté en una superposición uniforme sobre los primeros nStates estados de base en ese caso.

Entrada

nEstados

El número de estados en la superposición uniforme que se va a preparar.

registro

El registro de qubit little-endian para almacenar el estado preparado. Se supone que se inicializa en el estado cero $\ket{0\cdots 0}$. Este registro debe ser lo suficientemente largo para almacenar el número $M-1$, lo que significa que $2^{Length(qubits)} >= M$.

Ejemplo

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