Condividi tramite


Operazione PrepareUniformSuperposition

Nome completo: Std.StatePreparation.PrepareUniformSuperposition

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

Riassunto

Prepara una sovrapposizione uniforme di stati che rappresentano numeri interi da 0 a nStates - 1 in un registro little-endian qubits .

Descrizione

Dato uno stato di input $\ket{0\cdots 0}$, questa operazione prepara una sovrapposizione uniforme di tutti gli stati numerici da $0$ a $M-1$. In altre parole, $$ \begin{align} \ket{0} \mapsto \frac{1}{\sqrt{M}} \sum_{j=0}^{M - 1} \ket{j} \end{align} $$

L'operazione è aggregabile, ma richiede che qubits il registro sia in una sovrapposizione uniforme sui primi nStates stati di base in quel caso.

Inserimento

nStati

Il numero di stati nella sovrapposizione uniforme da preparare.

registro

Registro qubit little-endian per archiviare lo stato preparato. Si presume che sia inizializzato nello stato zero $\ket{0\cdots 0}$. Questo registro deve essere sufficientemente lungo da memorizzare il numero $M-1$, il che significa che $2^{Length(qubits)} >= M$.

Esempio

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