Sdílet prostřednictvím


Operace PrepareUniformSuperposition

Plně kvalifikovaný název: Std.StatePreparation.PrepareUniformSuperposition

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

Shrnutí

Připraví jednotnou superpozici stavů, které reprezentují celá čísla 0 až nStates - 1 v registru little-endian qubits .

Popis

Pro daný vstupní stav $\ket{0\cdots 0}$ tato operace připraví jednotnou superpozici všech číselných stavů $0$ na $M-1$. Jinými slovy, $$ \begin{align} \ket{0} \mapsto \frac{1}{\sqrt{M}} \sum_{j=0}^{M - 1} \ket{j} \end{align} $$

Operace je adjunktovatelná, ale vyžaduje, aby qubits registr byl v jednotné superpozici nad prvními nStates základními státy v takovém případě.

Vstup

nstavů

Počet stavů v jednotné superpozici, které mají být připraveny.

Registrace

Registr qubitů little-endian pro uložení připraveného stavu. Předpokládá se, že je inicializován v nulovém stavu $\ket{0\cdots 0}$. Tento registr musí být dostatečně dlouhý, aby bylo možné uložit číslo $M-1$, což znamená, že $2^{Length(qubits)} >= M$.

Příklad

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