Реализовать квантовую оценку точно представимой фазы
Входы:
1. Однокубитная унитарная операция $U$ с доступным управляемым вариантом Controlled.
2. Её собственное состояние $|\psi\rangle$, заданное операцией подготовки $P$: $P|0\rangle=|\psi\rangle$.
3. Положительное целое число $n$.
В обозначениях того же урока собственная фаза $\theta$ определяется равенством
$$U|\psi\rangle=e^{2\pi i\theta}|\psi\rangle,\qquad0\le\theta<1.$$
Напишите операцию на языке Q#, возвращающую $2^n\theta$. Гарантируется, что фаза имеет не более $n$ двоичных знаков после точки, поэтому результат — целое число.
Заготовка Q#:
namespace Kata {
operation PhaseEstimation(
U : Qubit => Unit is Ctl,
P : Qubit => Unit,
n : Int
) : Int {
// Implement your solution here...
return 0;
}
}