Dela via


Åtgärden PrepareUniformSuperposition

Fullständigt kvalificerat namn: Std.StatePreparation.PrepareUniformSuperposition

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

Sammanfattning

Förbereder en likformig superposition av tillstånd som representerar heltal 0 till nStates - 1 och med i ett little-endian-register qubits .

Beskrivning

Med ett indatatillstånd $\ket{0\cdots 0}$ förbereder den här åtgärden en enhetlig superposition av alla taltillstånd $0$ till $M-1$. Med andra ord, $$ \begin{align} \ket{0} \mapsto \frac{1}{\sqrt{M}} \sum_{j=0}^{M - 1} \ket{j} \end{align} $$

Operationen är foglös, men kräver att qubits registret är i en enhetlig överordnad över de första nStates grundtillstånden i det fallet.

Inmatning

Stater

Antalet stater i den enhetliga överordnad som ska förberedas.

registrera

Den little-endianska kvantbiten registreras för att lagra det förberedda tillståndet. Den antas initieras i nolltillståndet $\ket{0\cdots 0}$. Det här registret måste vara tillräckligt långt för att lagra numret $M-1$, vilket innebär att $2^{Length(qubits)} >= M$.

Exempel

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