量子コンピュータ

量子コンピュータ(シミュレータ)で量子フーリエ変換する

More than 1 year has passed since last update.

$$
\def\bra#1{\mathinner{\left\langle{#1}\right|}}
\def\ket#1{\mathinner{\left|{#1}\right\rangle}}
\def\braket#1#2{\mathinner{\left\langle{#1}\middle|#2\right\rangle}}
$$

はじめに

前回の記事で量子コンピュータを少し試しました。
IBM Qは,これから量子計算を勉強するにあたり,とても良い教材だと感じています。
今回は,4量子ビットの量子フーリエ変換に挑戦したいと思います
(厳密な定義等は,専門書を参照ください)。

量子フーリエ変換

離散フーリエ変換の入力に量子状態のベクトルを使用することで,量子フーリエ変換を実行できます。正規直交基底ベクトル $\ket{0},\ket{1},\ket{2},...\ket{i},...\ket{j},...\ket{N-1}$に対して,$N=2^n$のとき,次のように定義されます。

U_{QFT}\ket{x}=\frac{1}{\sqrt{N}}\sum_{y=0}^{N-1}e^{\frac{2\pi i}{N}xy}\ket{y}
=\frac{1}{\sqrt{N}}\sum_{y=0}^{N-1}\omega^{xy}\ket{y}

量子フーリエ変換のユニタリ行列は次のようになります。

QFT_N = \frac{1}{\sqrt{N}}
  \left(
    \begin{array}{cccc}
      1 & 1 & \cdots & 1 \\
      1 & \omega & \cdots & \omega^{N-1} \\
      \vdots & \vdots &  & \vdots \\
      1 & \omega^{N-1} & \cdots & \omega^{(N-1)(N-1)}
    \end{array}
  \right)

例えば,一般に$N=2^n$のとき,$\ket{0}$($n$ ビット)を量子フーリエ変換すると次のようになります。つまり,等確率で観測される重ね合わせ状態ができます。なお,$\omega=e^{\frac{2\pi i}{N}}$です。

U_{QFT}\ket{0} = \frac{1}{\sqrt{N}}
  \left(
    \begin{array}{cccc}
      1 & 1 & \cdots & 1 \\
      1 & \omega & \cdots & \omega^{N-1} \\
      \vdots & \vdots &  & \vdots \\
      1 & \omega^{N-1} & \cdots & \omega^{(N-1)(N-1)}
    \end{array}
  \right)
  \left(\begin{array}{c}
      1 \\
      0 \\
      \vdots \\
      0 
    \end{array}
  \right)
 = \frac{1}{\sqrt{N}}
   \left(\begin{array}{c}
      1 \\
      1 \\
      \vdots \\
      1 
    \end{array}
  \right)
 = \frac{1}{\sqrt{N}}
   \left[
  \ket{0}+\ket{1}+\ket{2}+\cdots+\ket{N-1}
  \right]

量子フーリエ変換のユニタリ行列

上述したユニタリ行列を備忘録として,具体的に1量子ビット〜4量子ビットの場合で書きたいと思います。

1量子ビット(N=2)の場合

$\omega=e^{\frac{2\pi i}{2}}=e^{\pi i}=-1$です。よって,アダマール変換と一致します。

QFT_{N=2}=
   \frac{1}{\sqrt{2}}
   \left(\begin{array}{cc}
      1 & 1 \\
      1 & \omega^1 \\
    \end{array}
  \right)=
   \frac{1}{\sqrt{2}}
   \left(\begin{array}{cc}
      1 & 1 \\
      1 & -1 \\
    \end{array}
  \right)
  = H

2量子ビット(N=4)の場合

$\omega=e^{\frac{2\pi i}{4}}=e^{\frac{\pi i}{2}}=i$です。

QFT_{N=4}=
   \frac{1}{\sqrt{4}}
   \left(\begin{array}{cccc}
      1 & 1 & 1 & 1\\
      1 & \omega^1 & \omega^2 & \omega^3 \\
      1 & \omega^2 & \omega^4 & \omega^6 \\
      1 & \omega^3 & \omega^6 & \omega^9
    \end{array}
  \right)=
   \frac{1}{\sqrt{4}}
   \left(\begin{array}{cccc}
      1 & 1 & 1 & 1 \\
      1 & i & -1 & i \\
      1 & -1 & 1 & -1 \\
      1 & -i & -1 & i
    \end{array}
  \right)

3量子ビット(N=8)の場合

$\omega=e^{\frac{2\pi i}{8}}=e^{\frac{\pi i}{4}}=\frac{1+i}{\sqrt{2}}$です。$\omega^0=\omega^8=\cdots$となること等を利用すると,ユニタリ行列は次のようになります。

QFT_{N=8}=
   \frac{1}{\sqrt{8}}
   \left(\begin{array}{cccccccc}
      1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 \\
      1 & \omega^1 & \omega^2 & \omega^3 & \omega^4 & \omega^5 & \omega^6 & \omega^7 \\
      1 & \omega^2 & \omega^4 & \omega^6 & 1 & \omega^2 & \omega^4 & \omega^6 \\
      1 & \omega^3 & \omega^6 & \omega^1 & \omega^4 & \omega^7 & \omega^2 & \omega^5 \\
      1 & \omega^4 & 1 & \omega^4 & 1 & \omega^4 & 1 & \omega^4 \\
      1 & \omega^5 & \omega^2 & \omega^7 & \omega^4 & \omega^1 & \omega^6 & \omega^3 \\
      1 & \omega^6 & \omega^4 & \omega^2 & 1 & \omega^6 & \omega^4 & \omega^2 \\
      1 & \omega^7 & \omega^6 & \omega^5 & \omega^4 & \omega^3 & \omega^2 & \omega^1 
    \end{array}
  \right)

4量子ビット(N=16)の場合

$\omega=e^{\frac{2\pi i}{16}}=e^{\frac{\pi i}{8}}$です。$\omega^0=\omega^{16}=\cdots$となること等を利用すると,ユニタリ行列は次のようになります。

QFT_{N=16}=
   \frac{1}{\sqrt{16}}
   \left(\begin{array}{cccccccccccccccc}
      1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 \\
      1 & \omega^1 & \omega^2 & \omega^3 & \omega^4 & \omega^5 & \omega^6 & \omega^7 & \omega^8 & \omega^9 & \omega^{10} & \omega^{11} & \omega^{12} & \omega^{13} & \omega^{14} & \omega^{15} \\
      1 & \omega^2 & \omega^4 & \omega^6 & \omega^8 & \omega^{10} & \omega^{12} & \omega^{14} & 1 & \omega^2 & \omega^4 & \omega^6 & \omega^8 & \omega^{10} & \omega^{12} &  \omega^{14} \\
      1 & \omega^3 & \omega^6 & \omega^9 & \omega^{12} & \omega^{15} & \omega^3 & \omega^6 & \omega^9 & \omega^{12} & \omega^{15} & \omega^3 & \omega^6 & \omega^9 & \omega^{12} & \omega^{15} \\
      1 & \omega^4 & \omega^8 & \omega^{12} & 1 & \omega^4 & \omega^8 & \omega^{12} & 1 & \omega^4 & \omega^8 & \omega^{12} & 1 & \omega^4 & \omega^8 & \omega^{12} \\
      1 & \omega^5 & \omega^{10} & \omega^{15} & \omega^5 & \omega^{10} & \omega^{15} & \omega^5 & \omega^{10} & \omega^{15} & \omega^5 & \omega^{10} & \omega^{15} & \omega^5 & \omega^{10} & \omega^{15} \\
      1 & \omega^6 & \omega^{12} & \omega^3 & \omega^9 & \omega^{15} & \omega^6 & \omega^{12} & \omega^3 & \omega^9 & \omega^{15} & \omega^6 & \omega^{12} & \omega^3 & \omega^9 & \omega^{15} \\
      1 & \omega^7 & \omega^{14} & \omega^6 & \omega^{13} & \omega^5 & \omega^{12} & \omega^4 & \omega^{11} & \omega^3 & \omega^{10} & \omega^2 & \omega^9 & \omega^1 & \omega^8 & \omega^{15} \\
      1 & \omega^8 & \omega^1 & \omega^9 & \omega^2 & \omega^{10} & \omega^3 & \omega^{11} & \omega^4 & \omega^{12} & \omega^5 & \omega^{13} & \omega^6 & \omega^{14} & \omega^7 & \omega^{15} \\
      1 & \omega^9 & \omega^3 & \omega^{12} & \omega^6 & \omega^{15} & \omega^9 & \omega^3 & \omega^{12} & \omega^6 & \omega^{15} & \omega^9 & \omega^3 & \omega^{12} & \omega^6 & \omega^{15} \\
      1 & \omega^{10} & \omega^5 & \omega^{15} & \omega^{10} & \omega^5 & \omega^{15} & \omega^{10} & \omega^5 & \omega^{15} & \omega^{10} & \omega^5 & \omega^{15} & \omega^{10} & \omega^5 & \omega^{15} \\
      1 & \omega^{11} & \omega^7 & \omega^3 & \omega^{14} & \omega^{10} & \omega^6 & \omega^2 & \omega^{13} & \omega^9 & \omega^5 & 1 & \omega^{11} & \omega^7 & \omega^3 & \omega^{14} \\
      1 & \omega^{12} & \omega^9 & \omega^6 & \omega^3 & \omega^{15} & \omega^{12} & \omega^9 & \omega^6 & \omega^3 & \omega^{15} & \omega^{12} & \omega^9 & \omega^6 & \omega^3 & \omega^{15} \\
      1 & \omega^{13} & \omega^{11} & \omega^9 & \omega^7 & \omega^5 & \omega^3 & \omega^1 & \omega^{14} & \omega^{12} & \omega^{10} & \omega^8 & \omega^6 & \omega^4 & \omega^2 & \omega^{15} \\
      1 & \omega^{14} & \omega^{13} & \omega^{12} & \omega^{11} & \omega^{10} & \omega^9 & \omega^8 & \omega^7 & \omega^6 & \omega^5 & \omega^4 & \omega^3 & \omega^2 & \omega^1 & \omega^{15} \\
      1 & \omega^{15} & \omega^{15} & \omega^{15} & \omega^{15} & \omega^{15} & \omega^{15} & \omega^{15} & \omega^{15} & \omega^{15} & \omega^{15} & \omega^{15} & \omega^{15} & \omega^{15} & \omega^{15} & \omega^{15} 
    \end{array}
  \right)

量子フーリエ変換をテンソル積で表現

IBM Qで実装するにあたり,量子回路がイメージしやすいように,テンソル積の表現に直します。なお,$x_i,y_j$は二進数表記です。

\begin{align}
\ket{x} &\xrightarrow{QFT_N}
\frac{1}{\sqrt{N}}\sum_{y=0}^{N-1} e^{\frac{2\pi i}{N}xy}\ket{y}
=\frac{1}{\sqrt{2^n}}\sum_{y=0}^{2^n-1}e^{\frac{2\pi i}{2^n}xy}\ket{y} 
=\frac{1}{\sqrt{2^n}}\sum_{y_1=0}^1 \sum_{y_2=0}^1 \cdots \sum_{y_n=0}^1 e^{2\pi ix \left(\sum_{k=1}^n \frac{y_k}{2^k}\right)}\ket{y_1 y_2 \cdots y_n} \\
&=\frac{1}{\sqrt{2^n}} \sum_{y_1=0}^1 \cdots \sum_{y_n=0}^1
\left(e^{2\pi ix \left(\frac{y_1}{2^1}\right)}\ket{y_1} \right) \otimes
\left(e^{2\pi ix \left(\frac{y_2}{2^2}\right)}\ket{y_2} \right) \otimes
\cdots \otimes
\left(e^{2\pi ix \left(\frac{y_n}{2^n}\right)}\ket{y_n} \right) \\
&=\frac{1}{\sqrt{2^n}} \left[
\left(\sum_{y_1=0}^1 e^{2\pi ix \left(\frac{y_1}{2^1}\right)}\ket{y_1}  \right) \otimes
\left(\sum_{y_2=0}^1 e^{2\pi ix \left(\frac{y_2}{2^2}\right)}\ket{y_2}  \right) \otimes \cdots \otimes
\left(\sum_{y_n=0}^1 e^{2\pi ix \left(\frac{y_n}{2^n}\right)}\ket{y_n}  \right)
\right] \\
&=\frac{1}{\sqrt{2^n}} 
\left[
\left(\ket{0} + e^{2\pi ix \left(\frac{1}{2}\right)}\ket{1}  \right) \otimes
\left(\ket{0} + e^{2\pi ix \left(\frac{1}{2^2}\right)}\ket{1}  \right) \otimes \cdots \otimes
\left(\ket{0} + e^{2\pi ix \left(\frac{1}{2^n}\right)}\ket{1}  \right)
\right] \\ \\
&\text{ここで,$n$ビットの$x$を二進数表記すると,$x=x_1 2^{n-1} + x_2 2^{n-2} + x_3 2^{n-3} + \cdots + x_{n-1} 2^1 + x_n 2^0$なので,} \\ \\
&=\frac{1}{\sqrt{2^n}} 
\left[
\left(\ket{0} + e^{2\pi i \left\{(x_1 2^{n-1}+x_2 2^{n-2}+ \cdots +x_{n-1})+ \frac{x_n}{2}\right\}}\ket{1}  \right) \otimes \cdots \otimes
\left(\ket{0} + e^{2\pi i \left\{(x_1 2^{-1}+x_2 2^{-2}+ \cdots +x_n 2^{-n})\right\}}\ket{1}  \right) 
\right] \\
&=\frac{1}{\sqrt{2^n}} 
\left[
\left(\ket{0} + e^{2\pi i (x_n 2^{-1})}\ket{1}  \right) \otimes
\left(\ket{0} + e^{2\pi i (x_{n-1}^{-1} + x_n 2^{-2})}\ket{1}  \right) \otimes \cdots \otimes
\left(\ket{0} + e^{2\pi i \left\{(x_1 2^{-1}+x_2 2^{-2}+ \cdots +x_n 2^{-n})\right\}}\ket{1}  \right) 
\right] \\
&=\frac{1}{\sqrt{2^n}} 
\left[
\left(\ket{0} + e^{2\pi i (0.x_n)}\ket{1}  \right) \otimes
\left(\ket{0} + e^{2\pi i (0.x_{n-1} x_n)}\ket{1}  \right) \otimes \cdots \otimes
\left(\ket{0} + e^{2\pi i (0.x_1 x_2\cdots x_n)}\ket{1}  \right) 
\right]
\end{align}

上述の式より,$\ket{1}$の係数に着目すると,各量子ビットの重ね合わせ状態に対して,位相シフト演算をすれば良さそうです。

位相行列R

位相行列$R_k$を以下のように定義します。

R_{k}=
   \left(\begin{array}{cc}
      1 & 0 \\
      0 & e^{\frac{2\pi i}{2^k}} \\
    \end{array}
  \right)

すると,$R_1,R_2,R_3,R_4$は次のようになります。

R_{1}=
   \left(\begin{array}{cc}
      1 & 0 \\
      0 & -1 \\
    \end{array}
  \right) = Z 
,
R_{2}=
   \left(\begin{array}{cc}
      1 & 0 \\
      0 & i \\
    \end{array}
  \right) = S
,
R_{3}=
   \left(\begin{array}{cc}
      1 & 0 \\
      0 & e^{\frac{\pi i}{4}} \\
    \end{array}
  \right) = T
,
R_{4}=
   \left(\begin{array}{cc}
      1 & 0 \\
      0 & e^{\frac{\pi i}{8}} \\
    \end{array}
  \right) = \sqrt{T}

IBM Qで実装する際は,これらのゲートを組み合わせることになります。なお,今回は$R_k$を表現できる制御ゲート(cU1)を使用しました。

IBM Qで実装へ!

いよいよ実装です。式変換があと少し残っていますが,それぞれの場合で書き下します。

1量子ビット(N=2)の場合

このとき,量子フーリエ変換は以下のようにアダマール変換と一致します。
ですので,アダマール変換ゲート$H$を使用すれば良いので割愛します。

\ket{x_1} \xrightarrow{QFT_2}
\frac{1}{\sqrt{2}} \left(\ket{0} + e^{2\pi i(0. x_1)}\ket{1} \right) =
\left\{
\begin{align}
\frac{\ket{0}+\ket{1}}{\sqrt{2}} \,(\text{if} \, x_1=0) \\
\frac{\ket{0}-\ket{1}}{\sqrt{2}} \,(\text{if} \, x_1=1)
\end{align}
\right.

2量子ビット(N=4)の場合

量子フーリエ変換の定義より,下式を満たすゲートを考えます。

\ket{x_1 x_2} \xrightarrow{QFT_4}
\frac{1}{\sqrt{4}}
\left[
\left(\ket{0}+e^{2\pi i(0.x_2)}\ket{1} \right) \otimes
\left(\ket{0}+e^{2\pi i(0.x_1 x_2)}\ket{1} \right)
\right]

1量子ビットに対するアダマール変換が,量子フーリエ変換に一致することを利用して,
次のように変形して定義の式を得ます。使用するのはアダマール変換,制御位相ゲート,(式変形のため恒等変換)です。
$CR_2$は制御$R_2$ゲートであり,IBM QではcU1ゲートを用います。

\begin{align}
\ket{x_1 x_2} &\xrightarrow{H \otimes I}
\frac{\ket{0}+e^{2\pi i \left(\frac{x_1}{2}\right)}\ket{1}}{\sqrt{2}}\ket{x_2} \xrightarrow{CR_2}
\frac{\ket{0}+e^{2\pi i \left(\frac{x_1}{2}\right)} e^{2\pi i \left(\frac{x_2}{2^2}\right)} \ket{1}}{\sqrt{2}}\ket{x_2} \\
& \xrightarrow{I \otimes H}
\frac{\ket{0}+e^{2\pi i (0.x_1 x_2)} \ket{1}}{\sqrt{2}}
\frac{\ket{0}+e^{2\pi i (0.x_2)} \ket{1}}{\sqrt{2}}
\end{align}

以上のようにゲートを配置すれば,実装できることがわかりました。
出力されたとき,上位ビットと下位ビットの順序が逆になっていますので,観測した値をレジスタに格納するときだけ注意します。量子フーリエ変換の後にSWAPゲートを用意してもいいかもしれませんね。
IBM Qでは以下のようになります。
visualIBMQASM.png

3量子ビット(N=8)の場合

量子フーリエ変換の定義より,下式を満たすゲートを考えます。

\ket{x_1 x_2 x_3} \xrightarrow{QFT_8}
\frac{1}{\sqrt{8}}
\left[
\left(\ket{0}+e^{2\pi i(0.x_3)}\ket{1} \right) \otimes
\left(\ket{0}+e^{2\pi i(0.x_2 x_3)}\ket{1} \right) \otimes
\left(\ket{0}+e^{2\pi i(0.x_1 x_2 x_3)}\ket{1} \right)
\right]

2量子ビットの場合と同様に,ゲートを組みます。
使用するのはアダマール変換,制御位相ゲート,(式変形のため恒等変換)です。
$CR_2,CR_3$はそれぞれ制御$R_2$ゲート,制御$R_3$ゲートであり,IBM QではcU1ゲートを用います。
表記について,例えば$CR_{2,12}$の12では,1を目標ゲート,2を制御ゲートとして表しました。

\begin{align}
\ket{x_1 x_2 x_3} &\xrightarrow{H \otimes I \otimes I}
\frac{\ket{0}+e^{2\pi i \left(\frac{x_1}{2}\right)}\ket{1}}{\sqrt{2}}\ket{x_2 x_3} 
\xrightarrow{CR_{2,12}} \xrightarrow{CR_{3,13}}
\frac{\ket{0}+e^{2\pi i \left(\frac{x_1}{2} + \frac{x_2}{2^2} + \frac{x_3}{2^3} \right)} \ket{1}}{\sqrt{2}}\ket{x_2 x_3} \\
& \xrightarrow{I \otimes H \otimes I}
\frac{\ket{0}+e^{2\pi i \left(\frac{x_1}{2} + \frac{x_2}{2^2} + \frac{x_3}{2^3} \right)} \ket{1}}{\sqrt{2}}
\frac{\ket{0}+e^{2\pi i \left(\frac{x_2}{2} \right)} \ket{1}}{\sqrt{2}} \ket{x_3} \\
&\xrightarrow{CR_{2,23}}
\frac{\ket{0}+e^{2\pi i \left(\frac{x_1}{2} + \frac{x_2}{2^2} + \frac{x_3}{2^3} \right)} \ket{1}}{\sqrt{2}}
\frac{\ket{0}+e^{2\pi i \left(\frac{x_2}{2} + \frac{x_3}{2^2} \right)} \ket{1}}{\sqrt{2}} \ket{x_3} \\
& \xrightarrow{I \otimes I \otimes H}
\frac{\ket{0}+e^{2\pi i (0.x_1 x_2 x_3)} \ket{1}}{\sqrt{2}}
\frac{\ket{0}+e^{2\pi i (0.x_2 x_3)} \ket{1}}{\sqrt{2}}
\frac{\ket{0}+e^{2\pi i (0.x_3)} \ket{1}}{\sqrt{2}}
\end{align}

2量子ビットの場合と同様に,出力されたとき,上位ビットと下位ビットの順序が逆になっていますので,観測した値をレジスタに格納するときだけ注意します。
IBM Qでは以下のようになります。
visualIBMQASM.png

4量子ビット(N=16)の場合

量子フーリエ変換の定義より,下式を満たすゲートを考えます。

\ket{x_1 x_2 x_3 x_4} \xrightarrow{QFT_{16}}
\frac{1}{\sqrt{16}}
\left[
\left(\ket{0}+e^{2\pi i(0.x_4)}\ket{1} \right) \otimes
\left(\ket{0}+e^{2\pi i(0.x_3 x_4)}\ket{1} \right) \otimes
\left(\ket{0}+e^{2\pi i(0.x_2 x_3 x_4)}\ket{1} \right) \otimes
\left(\ket{0}+e^{2\pi i(0.x_1 x_2 x_3 x_4)}\ket{1} \right) 
\right]

同様に,ゲートを組みます。
$CR_2,CR_3,CR_4$はそれぞれ制御$R_2$ゲート,制御$R_3$ゲート,制御$R_4$ゲートであり,IBM QではcU1ゲートを用います。

\begin{align}
\ket{x_1 x_2 x_3 x_4} &\xrightarrow{H \otimes I \otimes I \otimes I}
\frac{\ket{0}+e^{2\pi i \left(\frac{x_1}{2}\right)}\ket{1}}{\sqrt{2}}\ket{x_2 x_3 x_4} 
\xrightarrow{CR_{2,12}} \xrightarrow{CR_{3,13}} \xrightarrow{CR_{4,14}}
\frac{\ket{0}+e^{2\pi i \left(\frac{x_1}{2} + \frac{x_2}{2^2} + \frac{x_3}{2^3} + \frac{x_4}{2^4}\right)} \ket{1}}{\sqrt{2}}\ket{x_2 x_3 x_4} \\
& \xrightarrow{I \otimes H \otimes I \otimes I}
\frac{\ket{0}+e^{2\pi i \left(0.x_1 x_2 x_3 x_4 \right)} \ket{1}}{\sqrt{2}}
\frac{\ket{0}+e^{2\pi i \left(\frac{x_2}{2} \right)} \ket{1}}{\sqrt{2}} \ket{x_3 x_4} \\
&\xrightarrow{CR_{2,23}} \xrightarrow{CR_{3,34}}
\frac{\ket{0}+e^{2\pi i \left(0.x_1 x_2 x_3 x_4 \right)} \ket{1}}{\sqrt{2}}
\frac{\ket{0}+e^{2\pi i \left(0.x_2 x_3 x_4 \right)} \ket{1}}{\sqrt{2}} \ket{x_3 x_4} \\
& \xrightarrow{I \otimes I \otimes H \otimes I}
\frac{\ket{0}+e^{2\pi i (0.x_1 x_2 x_3 x_4)} \ket{1}}{\sqrt{2}}
\frac{\ket{0}+e^{2\pi i (0.x_2 x_3 x_4)} \ket{1}}{\sqrt{2}}
\frac{\ket{0}+e^{2\pi i (\frac{x_3}{2})} \ket{1}}{\sqrt{2}} \ket{x_4} \\
&\xrightarrow{CR_{2,34}} 
\frac{\ket{0}+e^{2\pi i (0.x_1 x_2 x_3 x_4)} \ket{1}}{\sqrt{2}}
\frac{\ket{0}+e^{2\pi i (0.x_2 x_3 x_4)} \ket{1}}{\sqrt{2}}
\frac{\ket{0}+e^{2\pi i (0.x_3 x_4)} \ket{1}}{\sqrt{2}} \ket{x_4} \\
& \xrightarrow{I \otimes I \otimes I \otimes H}
\frac{\ket{0}+e^{2\pi i (0.x_1 x_2 x_3 x_4)} \ket{1}}{\sqrt{2}}
\frac{\ket{0}+e^{2\pi i (0.x_2 x_3 x_4)} \ket{1}}{\sqrt{2}}
\frac{\ket{0}+e^{2\pi i (0.x_3 x_4)} \ket{1}}{\sqrt{2}}
\frac{\ket{0}+e^{2\pi i (0.x_4)} \ket{1}}{\sqrt{2}}
\end{align}

3量子ビットの場合と同様に,出力されたとき,上位ビットと下位ビットの順序が逆になっていますので,観測した値をレジスタに格納するときだけ注意します。
IBM Qでは以下のようになります。
visualIBMQASM.png

逆量子フーリエ変換して結果を確認

量子フーリエ変換したのち,逆量子フーリエ変換すると,100%の確率で元に戻るはずです。
そこで,4量子ビットの場合を代表として,試してみました。
制御位相ゲートが働く場合も確認するため,入力として$\ket{0000},\ket{1111}$の2パターンで確認しました。

■ $\ket{0000}$の場合
量子回路は以下のようになります。
visualIBMQASM.png

結果は次のようになりました。

qSphere.png
0000_confirm.png

■ $\ket{1111}$の場合
量子回路は以下のようになります。
visualIBMQASM.png

結果は次のようになりました。
qSphere.png
confirm_1111.png

最後に

ここまで読んでいただきありがとうございました。
今回もシミュレータでしたが,実際に量子計算を試せるというのはワクワクします。

量子フーリエ変換は試せましたので,
今後はショーアのアルゴリズムなどの実装を目標に,少しずつ進められたらと思います。

興味のある方はぜひIBM Q触ってみてください。

(勉強中の身です。誤り等ありましたらご教授いただけると大変嬉しいです。)

参考文献

量子アルゴリズム
クラウド量子計算入門