再ラベル付け操作
完全修飾名: 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)
と同じであることに注意してください。