Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Полное имя: 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).