пятница, 16 мая 2014 г.

Задание в методичку по квантовому программированию.

Есть квантовый компьютер с памятью 3 кубита. Определим однобитовые гейты\[\mathrm{H1}=\mathrm{Not}=\left(\begin{array}{cc}0&1\\1&0\end{array}\right)\,,\quad \mathrm{H2}=\mathrm{H}=\frac1{\sqrt{2}}\left(\begin{array}{cc}1&1\\1&-1\end{array}\right)\,,\quad \mathrm{H3}=\frac1{\sqrt{3}}\left(\begin{array}{cc}\sqrt{2}&1\\1&-\sqrt{2}\end{array}\right)\]
и их  управляемые варианты $\mathrm{cnH1}\,,\ \mathrm{cnH2}\,,\ \mathrm{cnH3}$, которые выполняют над битом соответствующее преобразование только если остальные два бита равны единице.
Система комманд нашего компьютера состоит из четырех комманд: $\mathrm{H1}\,,\ \mathrm{cnH1}\,,\ \mathrm{cnH2}\,,\ \mathrm{cnH3}$. Надо написать алгоритм, который при подаче на вход двоичного числа от 0 до 7 строит состояние (с определенным спином и проекцией) с соответствующим номером:
  1. $\sqrt{1/2}(|001\rangle-|010\rangle)$
  2. $\sqrt{1/2}(|101\rangle-|110\rangle)$
  3. $\sqrt{1/6}(|001\rangle+|010\rangle-2|100\rangle)$
  4. $\sqrt{1/6}(|101\rangle+|110\rangle-2|011\rangle)$
  5. $|000\rangle$
  6. $\sqrt{1/3}(|001\rangle+|010\rangle+|100\rangle)$
  7. $\sqrt{1/3}(|101\rangle+|110\rangle+|011\rangle)$
  8. $|111\rangle$
Здесь можно потренироваться:

Boilerplate
Your Program

Комментариев нет:

Отправить комментарий