次の方法で共有


再ラベル付け操作

完全修飾名: Std.Canon.Relabel

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

概要

current 配列内の量子ビットを使用して、updated 配列内の量子ビットのラベルを変更します。 updated 配列は、current 配列の有効な順列である必要があります。

インプット

現在の

ラベルを変更する量子ビットの配列。

更新

current 配列のラベルを変更する量子ビットの配列。

備考

この操作は、量子演算が発生しない方法で量子ビットのラベルを変更する必要がある場合に便利です。 量子ビット接続が制限されたハードウェアでの実行のためにコンパイルする場合、この操作では量子ビットの隣接性が変更されず、1 つ以上の SWAP ゲートが必要になることがあります。

次の例は、レジスタ内の量子ビットのラベルを変更する方法を示しています。

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

この操作の後、qubits[0] を使用すると、最初に qubits[2]された量子ビットなどを参照します。 2 つの量子ビット (SWAP ゲートと同等の仮想) でラベルを交換するには、次のコードを使用できます。

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

この操作の隣接する部分は、引数の順序を効果的に変更するため、Adjoint Relabel(qubits, newOrder)Relabel(newOrder, qubits)と同じであることに注意してください。