Relabel 操作

完全限定的名称: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)