Leggere in inglese

Condividi tramite


Operazione relabel

Nome completo: Std.Canon.Relabel

Q#
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:

Q#
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:

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