Freigeben über


PrepareUniformSuperposition-Vorgang

Vollständig qualifizierter Name: Std.StatePreparation.PrepareUniformSuperposition

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

Zusammenfassung

Bereitet eine einheitliche Überlagerung von Zuständen vor, die ganze Zahlen von 0 bis nStates - 1 in einem Little-Endian-Register qubits darstellen.

BESCHREIBUNG

Bei einem gegebenen Eingabezustand $\ket{0\cdots 0}$ bereitet diese Operation eine gleichmäßige Überlagerung aller Zahlenzustände $0$ auf $M-1$ vor. Mit anderen Worten, $$ \begin{align} \ket{0} \mapsto \frac{1}{\sqrt{M}} \sum_{j=0}^{M - 1} \ket{j} \end{align} $$

Die Operation ist adjungierbar, erfordert aber, dass qubits sich das Register in diesem Fall in einer einheitlichen Überlagerung über den ersten nStates Basiszuständen befindet.

Eingabe

nBundesstaaten

Die Anzahl der Zustände in der einheitlichen Überlagerung, die vorbereitet werden sollen.

registrieren

Das Little-Endian-Qubit-Register zum Speichern des vorbereiteten Zustands. Es wird davon ausgegangen, dass es im Nullzustand $\ket{0\cdots 0}$ initialisiert wird. Dieses Register muss lang genug sein, um die Zahl $M-1$ zu speichern, was bedeutet, dass $2^{Length(qubits)} >= M$ ist.

Beispiel

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