Partager via


Opération Relabel

Nom complet : Std.Canon.Relabel

operation Relabel(current : Qubit[], updated : Qubit[]) : Unit is Adj

Résumé

Relabels les qubits dans le tableau current avec les qubits du tableau updated. Le tableau updated doit être une permutation valide du tableau current.

Entrée

courant

Tableau de qubits à réétiqueter.

Actualisé

Tableau de qubits avec lesquels réélétiquer le tableau current.

Remarques

Cette opération est utile lorsque vous devez relabelr des qubits d’une manière qui n’entraîne aucune opération quantique. Notez que lors de la compilation pour l’exécution sur du matériel avec une connectivité qubit limitée, cette opération peut ne pas entraîner de modifications apportées à ladjacency qubit et une ou plusieurs portes SWAP peuvent toujours être requises.

Exemple

L’exemple suivant montre comment réécrire des qubits dans un registre :

use qubits = Qubit[3];
let newOrder = [qubits[2], qubits[0], qubits[1]];
Relabel(qubits, newOrder);

Après cette opération, toute utilisation de qubits[0] fait référence au qubit qui était initialement qubits[2], et ainsi de suite. Pour échanger les étiquettes sur deux qubits, l’équivalent virtuel d’une porte SWAP, vous pouvez utiliser le code suivant :

use (q0, q1) = (Qubit(), Qubit());
Relabel([q0, q1], [q1, q0]);

Notez que l’adjoint de cette opération modifie efficacement l’ordre des arguments, de sorte que Adjoint Relabel(qubits, newOrder) équivaut à Relabel(newOrder, qubits).