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

Закодировать кубит девятикубитным кодом Шора

Вход — девять кубитов в $|\psi\rangle\otimes|0\ldots0\rangle$, где $|\psi\rangle=\alpha|0\rangle+\beta|1\rangle$ находится в первом кубите qs[0]. Напишите операцию на языке Q#, подготавливающую $\alpha|0_L\rangle+\beta|1_L\rangle$.

Обозначим нормированные состояния тройки

$$|g_\pm\rangle=\frac{|000\rangle\pm|111\rangle}{\sqrt2}.$$

Кодовые состояния Шора:

$$|0_L\rangle=|g_+\rangle^{\otimes3},$$

$$|1_L\rangle=|g_-\rangle^{\otimes3}.$$

Это произведения трёх указанных троек; общий нормировочный множитель в каждом равен $1/(2\sqrt2)$.

Полная вспомогательная операция BitflipEncode из предыдущего упражнения дана в заготовке.

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

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

    // You might find this helper operation from an earlier task useful.
    operation BitflipEncode (qs : Qubit[]) : Unit is Adj + Ctl {
        CNOT(qs[0], qs[1]);
        CNOT(qs[0], qs[2]);
    }
}