Operazione relabel
Nome completo: Std.Canon.Relabel
operation Relabel(current : Qubit[], updated : Qubit[]) : Unit is Adj
Ricrea i qubit nella matrice di current
con i qubit nella matrice updated
. La matrice updated
deve essere una permutazione valida della matrice di current
.
Matrice di qubit da etichettare nuovamente.
Matrice di qubit con cui etichettare nuovamente la matrice di current
.
Questa operazione è utile quando è necessario etichettare i qubit in modo che non incorra in operazioni quantistiche.
Si noti che quando si esegue la compilazione per l'esecuzione su hardware con connettività qubit limitata, questa operazione potrebbe non comportare modifiche all'adiacenza qubit e potrebbe essere necessaria una o più porte SWAP
.
L'esempio seguente illustra come etichettare i qubit in un registro:
use qubits = Qubit[3];
let newOrder = [qubits[2], qubits[0], qubits[1]];
Relabel(qubits, newOrder);
Dopo questa operazione, qualsiasi uso di qubits[0]
farà riferimento al qubit originariamente qubits[2]
e così via.
Per scambiare le etichette su due qubit, l'equivalente virtuale di un gate SWAP
, è possibile usare il codice seguente:
use (q0, q1) = (Qubit(), Qubit());
Relabel([q0, q1], [q1, q0]);
Si noti che l'oggetto adiacente di questa operazione modifica efficacemente l'ordine degli argomenti, in modo che Adjoint Relabel(qubits, newOrder)
equivale a Relabel(newOrder, qubits)
.