Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Vollqualifizierter Name: Std.Canon.Relabel
operation Relabel(current : Qubit[], updated : Qubit[]) : Unit is Adj
Zusammenfassung
Beschriftet die Qubits im current Array mit den Qubits im updated Array neu. Das updated Array muss eine gültige Permutation des current Arrays sein.
Eingabe
Strömung
Array von Qubits, die neu bezeichnet werden sollen.
aktualisierte
Array von Qubits, mit denen das current Array neu bezeichnet werden soll.
Bemerkungen
Dieser Vorgang ist nützlich, wenn Sie Qubits auf eine Weise neu bezeichnen müssen, die keine Quantenvorgänge verursacht.
Beachten Sie, dass bei der Kompilierung für die Ausführung auf Hardware mit eingeschränkter Qubit-Konnektivität dieser Vorgang möglicherweise keine Änderungen an der Qubit-Adjacency und ein oder mehrere SWAP Gates möglicherweise noch erforderlich sind.
Beispiel
Im folgenden Beispiel wird veranschaulicht, wie Qubits in einem Register neu bezeichnet werden:
use qubits = Qubit[3];
let newOrder = [qubits[2], qubits[0], qubits[1]];
Relabel(qubits, newOrder);
Nach diesem Vorgang bezieht sich jede Verwendung von qubits[0] auf das Qubit, das ursprünglich qubits[2]usw. war.
Um die Bezeichnungen auf zwei Qubits auszutauschen, können Sie das virtuelle Äquivalent eines SWAP Gates verwenden:
use (q0, q1) = (Qubit(), Qubit());
Relabel([q0, q1], [q1, q0]);
Beachten Sie, dass der angrenzende Teil dieses Vorgangs die Reihenfolge der Argumente effektiv ändert, sodass Adjoint Relabel(qubits, newOrder)Relabel(newOrder, qubits)entspricht.