Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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).