Ommärkningsåtgärd
Fullständigt kvalificerat namn: Std.Canon.Relabel
operation Relabel(current : Qubit[], updated : Qubit[]) : Unit is Adj
Sammanfattning
Lägger om kvantbitarna i matrisen current
med kvantbitarna i updated
-matrisen. Matrisen updated
måste vara en giltig permutation av den current
matrisen.
Inmatning
ström
Matris med kvantbitar som ska ometiketteras.
uppdaterad
Matris med kvantbitar som current
matrisen ska ommärkts med.
Anmärkningar
Den här åtgärden är användbar när du behöver ange kvantbitar på ett sätt som inte medför några kvantåtgärder.
Observera att när du kompilerar för körning på maskinvara med begränsad qubit-anslutning kanske den här åtgärden inte resulterar i några ändringar i kvantbitsangränsande och att en eller flera SWAP
portar fortfarande kan krävas.
Exempel
I följande exempel visas hur du ometiketter kvantbitar i ett register:
use qubits = Qubit[3];
let newOrder = [qubits[2], qubits[0], qubits[1]];
Relabel(qubits, newOrder);
Efter den här åtgärden refererar all användning av qubits[0]
till den qubit som ursprungligen qubits[2]
och så vidare.
Om du vill byta ut etiketterna på två kvantbitar, den virtuella motsvarigheten till en SWAP
gate, kan du använda följande kod:
use (q0, q1) = (Qubit(), Qubit());
Relabel([q0, q1], [q1, q0]);
Observera att angränsande till den här åtgärden effektivt ändrar argumentordningen, så att Adjoint Relabel(qubits, newOrder)
motsvarar Relabel(newOrder, qubits)
.