Восстановить три однокубитных вентиля по матрице
Вход — три кубита в произвольной суперпозиции $|\psi\rangle$, хранящиеся в массиве длины 3.
Напишите операцию на языке Q#, применяющую к системе матрицу
$$Q=\begin{bmatrix} 0&-i&0&0&0&0&0&0\\ i&0&0&0&0&0&0&0\\ 0&0&0&-i&0&0&0&0\\ 0&0&i&0&0&0&0&0\\ 0&0&0&0&0&1&0&0\\ 0&0&0&0&-1&0&0&0\\ 0&0&0&0&0&0&0&1\\ 0&0&0&0&0&0&-1&0 \end{bmatrix}.$$
Это преобразование можно представить как применение трёх однокубитных вентилей. Автор рекомендует держать под рукой список распространённых квантовых вентилей.
Подсказка источника: верхняя правая и нижняя левая четверти матрицы нулевые, а нижняя правая равна верхней левой, умноженной на $i$. На какое тензорное произведение однокубитной и двухкубитной матриц это похоже? Каких именно?
Заготовка Q#:
namespace Kata {
operation CompoundGate(qs : Qubit[]) : Unit is Adj + Ctl {
// Implement your solution here...
}
}