Vorgang erneut bezeichnen
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.