1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

量子ビットをイメージでつかむ(量子フーリエ変換編)

Posted at

 本記事ではこちらを教科書として、今回は量子フーリエ変換を取り上げたいと思います。Jupyter notebookを https://github.com/sin-gee/ImageOfQuantumBit/ImageOfFourieTransform.ipynb に置いておきますのでよろしければ試してみてください。


 「フーリエ変換とは何か」を語るのは、この記事のキャラ外と思い、量子フーリエ変換でやりたいことをまず模式的に表してみます。

image.png
 左から、各量子ビットに$1$又は$0$を設定すると、各量子ビットの位相差に変換される、というものです。
 ここで、「数式、うっ!」となった方のために、少し解説しますが、不要な方は次の量子回路の説明まで読み飛ばしてください。
 まず、$k=2^2k_2+2^1k_1+2^0k_0$のクダリですが、($1$又は$0$をとる量子)bitで数値を表現する手法です。パソコンをお持ちの方は、電卓アプリを立ち上げて「プログラマー」設定に替えてBIN(Binary)で数値(1又は0)を打ち込んでみてください。3bitの場合は0~7、4bitの場合は0~15の整数を表現することができます。
 一方の、$e^{2\pi i x}$ですが、$\pi$は御存知、円周率≒3.14、$i$は虚数2乗すると$-1$、$e$はネイピア数≒2.72です。円周率が数学界のキングならネイピア数はクイーン、虚数はジョーカーといった感じでしょうか。ネイピア数を円周率×虚数乗する式になっている訳ですが、この「$n$乗する」は「$n$回掛ける」という意味ではもはやなく、数学でよく行われる”矛盾なく意味を拡張”したものです。で、図にするとこんな感じ。
image.png
横軸を実数、縦軸を虚数にした平面の半径$1$の円上の位置を表しています。勘の良い方は御気づきのとおり、ブロッホ球を北極方向から見た赤道に相当します。なお、左端の$-1=e^{\pi i}$は最も美しい式の呼び声も高いオイラーの公式です。


さて、今回、取り上げる量子回路はこれ。

image.png
 $q_2$に対する操作、$q_1$に対する操作、$q_0$に対する操作、SWAP(量子ビットの入れ替え)で最後に測定となっています。断っておきますが、この測定はダミーです。というのも、どういう条件であっても各ビットは$\lvert0\rangle$と$\lvert1\rangle$の50/50の混合状態になるからです。本当は、各ビットの位相(のずれ)を測定できるとよいのですが、オーセンティックな量子コンピュータ(のシミュレータ)ではそれはできません。ですので、通常、量子フーリエ変換がベタな形で使われることは無いと思います。使われ方としては、次回、解説するつもりである(量子フーリエ変換を逆転させた)量子位相推定でしょう。

 では始めます。まず$q_2$への操作ですが、SWAP後に$q_0$として出力されるビットを作っています。$q_0$としては$\lvert0\rangle$と$\lvert1\rangle$の混合状態で、$\lvert1\rangle$の位相は$e^{2\pi i k/2^3}$でした。これは
$e^{2\pi i k/2^3}=e^{2\pi i (2^2k_2+2^1k_1+2^0k_0)/2^3}=e^{\pi i (k_2+1/2^1k_1+1/2^2k_0)}=e^{\pi i k_2}e^{\pi i/2 k_1}e^{\pi i/4 k_0}$
と回路と式は符合します。 「ん?$e^{\pi i k_2}$は?」と思われた方、これはアダマールゲート(H)が該当します。アダマールゲートは$k=0$の場合は$\lvert0\rangle+\lvert1\rangle$に、$k=1$の場合に$\lvert0\rangle-\lvert1\rangle$となるわけですが、$e^{\pi i 0}=1$、$e^{\pi i 1}=-1$ことから説明できます(後者はオイラーの公式でした)。
 $q_1$以降も、$e^{2\pi i}=1$であることに注意が必要な他は同様です。


 用意したJupyter notebookでやってみます。 まず量子ビットを用意します

#量子bit×3の生成
import dataclasses
@dataclasses.dataclass
class Qbit:
  phi: float # ブロッホ球での|0>からの角度
  shift: float # 位相差

#量子bit0
Q1 = Qbit(math.pi*1,math.pi*0)
#量子bit1
Q2 = Qbit(math.pi*0,math.pi*0)
#量子bit2
Q3 = Qbit(math.pi*1,math.pi*0)

image.png
 今回は$\lvert101\rangle=5$を設定してみました。で、結果はこちら。
image.png
 $q_0$の位相は$\lvert001\rangle$の$1.25\pi$、$q_1$の位相は$\lvert010\rangle$の$0.5\pi$、$q_2$の位相は$\lvert100\rangle$の$1.0\pi$となりました。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?