Udostępnij przez


PrepareUniformOperacja superpozycji

W pełni kwalifikowana nazwa: Std.StatePreparation.PrepareUniformSuperposition

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

Podsumowanie

Przygotowuje jednolitą superpozycję stanów, które reprezentują liczby całkowite od 0 do nStates - 1 w rejestrze little-endian qubits .

Opis

Biorąc pod uwagę stan wejściowy $\ket{0\cdots 0}$, ta operacja przygotowuje jednolitą superpozycję wszystkich stanów liczbowych od $0$ do $M-1$. Innymi słowy, $$ \begin{align} \ket{0} \mapsto \frac{1}{\sqrt{M}} \sum_{j=0}^{M - 1} \ket{j} \end{align} $$

W tym przypadku operacja jest sprzężona, ale wymaga, aby qubits rejestr znajdował się w jednolitej superpozycji nad pierwszymi nStates stanami bazowymi.

Dane wejściowe

nStates (Stany Zjednoczone)

Liczba stanów w jednolitej superpozycji, która ma zostać przygotowana.

zarejestruj

Rejestr kubitu little-endian do przechowywania przygotowanego stanu. Zakłada się, że jest inicjowany w stanie zerowym $\ket{0\cdots 0}$. Rejestr ten musi być wystarczająco długi, aby przechowywać liczbę $M-1$, co oznacza, że $2^{Length(qubits)} >= M$.

Przykład

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