Закодировать кубит девятикубитным кодом Шора
Вход — девять кубитов в $|\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]);
}
}