Dela via


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).