Partilhar via


Operação PrepareUniformSuperposition

Nome totalmente qualificado: Std.StatePreparation.PrepareUniformSuperposition

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

Resumo

Prepara uma superposição uniforme de estados que representam inteiros de 0 a nStates - 1 um registro little-endian qubits .

Descrição

Dado um estado de entrada $\ket{0\cdots 0}$, esta operação prepara uma sobreposição uniforme de todos os estados numéricos $0$ para $M-1$. Em outras palavras, $$ \begin{align} \ket{0} \mapsto \frac{1}{\sqrt{M}} \sum_{j=0}^{M - 1} \ket{j} \end{align} $$

A operação é admissível, mas exige que qubits , nesse caso, o registo tenha uma sobreposição uniforme sobre os primeiros nStates estados de base.

Entrada

nEstados

O número de Estados na sobreposição uniforme a preparar.

registar

O registro de qubit little-endian para armazenar o estado preparado. Presume-se que seja inicializado no estado zero $\ket{0\cdots 0}$. Esse registro deve ser longo o suficiente para armazenar o número $M-1$, o que significa que $2^{Length(qubits)} >= M$.

Exemplo

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