Поделиться через


Операция переназначаемой метки

Полное имя: 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).