№ 1763Квантовые вычисленияУровень 2

Подготовить чередующиеся знаки амплитуд

Вход — $n$ кубитов в $|0\ldots0\rangle$. Напишите операцию на языке Q#, подготавливающую периодическое состояние с чередованием знаков $1,-1$:

$$\frac1{\sqrt{2^n}}\sum_{k=0}^{2^n-1}(-1)^k|k\rangle.$$

В развёрнутом виде это $|0\rangle-|1\rangle+|2\rangle-|3\rangle+\cdots-|2^n-1\rangle$ с общим множителем $1/\sqrt{2^n}$. Например, при $n=2$ требуется $(|0\rangle-|1\rangle+|2\rangle-|3\rangle)/2$. Полная вспомогательная операция QFT, реализующая преобразование Фурье через библиотеку, дана в заготовке.

Заготовка Q#:

namespace Kata {
    import Std.Arrays.*;

    operation AlternatingAmplitudes(qs : Qubit[]) : Unit is Adj + Ctl {
        // Implement your solution here...

    }

    // You might find this helper operation that implements QFT using a library operation useful.
    operation QFT(qs : Qubit[]) : Unit is Adj + Ctl {
        ApplyQFT(Reversed(qs));
        SwapReverseRegister(qs);
    }
}

Предложить решение

Войти, чтобы отправить материал.