Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W pełni kwalifikowana nazwa: Std.Canon.Relabel
operation Relabel(current : Qubit[], updated : Qubit[]) : Unit is Adj
Streszczenie
Zwija kubity w tablicy current z kubitami w tablicy updated. Tablica updated musi być prawidłową permutacją tablicy current.
Wkład
aktualny
Tablica kubitów do ponownego etykietowania.
aktualizowano
Tablica kubitów, z którymi należy ponownie opracować tablicę current.
Uwagi
Ta operacja jest przydatna, gdy konieczne jest ponowne oznaczenie kubitów w sposób, który nie powoduje żadnych operacji kwantowych.
Należy pamiętać, że podczas kompilowania na potrzeby wykonywania na sprzęcie z ograniczoną łącznością kubitową ta operacja może nie spowodować żadnych zmian w sąsiedztwie kubitów i może być nadal wymagana co najmniej jedna brama SWAP.
Przykład
W poniższym przykładzie pokazano, jak ponownie obelować kubity w rejestrze:
use qubits = Qubit[3];
let newOrder = [qubits[2], qubits[0], qubits[1]];
Relabel(qubits, newOrder);
Po wykonaniu tej operacji każde użycie qubits[0] będzie odnosić się do kubitu, który pierwotnie qubits[2]itd.
Aby wymienić etykiety na dwóch kubitach, wirtualny odpowiednik bramy SWAP, można użyć następującego kodu:
use (q0, q1) = (Qubit(), Qubit());
Relabel([q0, q1], [q1, q0]);
Należy pamiętać, że przyleganie tej operacji skutecznie zmienia kolejność argumentów, tak aby Adjoint Relabel(qubits, newOrder) był odpowiednikiem Relabel(newOrder, qubits).