完全限定的名称:Std.Canon.Relabel
operation Relabel(current : Qubit[], updated : Qubit[]) : Unit is Adj
总结
使用 current 数组中的量子比特重新标记 updated 数组中的量子比特。
updated 数组必须是 current 数组的有效排列。
输入
当前
要重新标记的量子比特数组。
更新
要为其重新标记 current 数组的量子比特的数组。
言论
如果需要以不产生任何量子操作的方式重新标记量子比特,此操作非常有用。
请注意,在具有有限量子比特连接的硬件上编译执行时,此操作可能不会对量子比特相邻进行任何更改,仍可能需要一个或多个 SWAP 门。
例
以下示例演示如何在寄存器中重新标记量子比特:
use qubits = Qubit[3];
let newOrder = [qubits[2], qubits[0], qubits[1]];
Relabel(qubits, newOrder);
此操作后,任何使用 qubits[0] 都将引用最初 qubits[2]的量子比特,依此类提。
若要在两个量子比特上交换标签,即 SWAP 门的虚拟等效项,可以使用以下代码:
use (q0, q1) = (Qubit(), Qubit());
Relabel([q0, q1], [q1, q0]);
请注意,此操作的相邻实际上更改了参数的顺序,使 Adjoint Relabel(qubits, newOrder) 等效于 Relabel(newOrder, qubits)。