Фазовый оракул ИЛИ всех битов кроме одного
Входы — регистр запроса из $N\ge2$ кубитов в произвольном состоянии $|x\rangle$ и целое $k$, $0\le k<N$.
Напишите операцию на языке Q#, меняющую знак базисного состояния, если хотя бы один бит, кроме k-го, равен 1. Значение k-го бита на результат не влияет: после его исключения регистр должен быть ненулевым, чтобы знак изменился.
Можно исследовать варианты как со вспомогательными кубитами, так и без них.
Примеры: для $|010\rangle$ при k=0 измените знак; при k=1 ничего не делайте.
Перед реализацией ответьте: это оракул инверсии цели или фазовый оракул? Подсказка источника: меняется фаза входа по значению функции.
Ещё подсказка: можно скопировать ранее реализованные оракулы. Используйте срезы массива, чтобы получить части до и после k-го элемента.
Заготовка Q#:
namespace Kata {
operation OrOfBitsExceptKth_Oracle(x : Qubit[], k : Int)
: Unit is Adj + Ctl {
// Implement your solution here...
}
}Предложить решение
Войти, чтобы отправить материал.