Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Nome completo: Std.Canon.Relabel
operation Relabel(current : Qubit[], updated : Qubit[]) : Unit is Adj
Sommario
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.
Immissione
corrente
Matrice di qubit da etichettare nuovamente.
aggiornato
Matrice di qubit con cui etichettare nuovamente la matrice di current.
Osservazioni
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.
Esempio
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).