Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Конъюгации распространены в квантовых вычислениях. В математических терминах они представляют собой шаблоны формы U†VU для двух унитарных преобразований U и V. Этот шаблон имеет значение из-за особенностей квантовой памяти: вычисления создают квантовые корреляции или запутанности, чтобы использовать уникальные ресурсы квантовых вычислений. Однако это также означает, что после того, как subroutine больше не нуждается в его кубитах, эти кубиты не могут быть легко сброшены и освобождены, так как наблюдение за их состоянием повлияет на остальную часть системы. По этой причине эффект предыдущего вычисления обычно необходимо отменить перед освобождением и повторной обработкой квантовой памяти.
Q# поэтому имеет выделенную конструкцию для выражения вычислений, требующих такой очистки. Выражения состоят из двух блоков кода, которые содержат реализацию U и одну, содержащую реализацию V. некомпьютации (т. е. приложение U†) выполняется автоматически в рамках выражения.
Выражение принимает форму
within {
<statements>
}
apply {
<statements>
}
где <statements>
заменяется любым количеством инструкций, определяющих реализацию U и V соответственно.
Оба блока могут содержать произвольные классические вычисления, помимо обычных ограничений для автоматического создания локальных версий, которые применяются к блоку within
. Изменяемые привязанные переменные, используемые в составе блока within
, не могут быть переназначированы как часть блока apply
.