見出し画像

量子コンピューティングを齧る テンソル積による状態表示

ディラック表記ってやつに翻弄されてるかもしれない。別名「ブラケット表記」ってやつだ。
〈ψ|ブラです。|ψ〉ケットです。2つ合わさって〈ψ|ψ〉ブラケットです。
なんだか漫才コンビみたいなんだけどけっこう量子ベクトルが簡潔かつ明快に表記できて便利らしい。
らしいんだが簡潔にする手順が「行って来い」みたいなところもあってずいぶんと引っかかった。

なにが「行って来い」っていうと今、読んでいる科学情報出版「エンジニア入門シリーズ」の『Pythonではじめる量子AI入門』(著:電気通信大学・曽我部東馬)のP.10にあるここ。
説明には「テンソル積は下記のように簡略して(注:「簡略化して」かな?)表記するのが普通です」とある。

『Pythonではじめる量子AI入門』(著:電気通信大学・曽我部東馬)P.10より引用

ふむふむと思いながら読み進めると、「2量子ビットの基底ケットベクトルのテンソル積」としてこんな計算式が出てきた。
ちなみに1量子ビットは基底ベクトルはこう。

$$
|\ 0 \rangle = \begin{pmatrix} 1 \\ 0 \end{pmatrix}, \quad |\ 1 \rangle = \begin{pmatrix} 0 \\ 1 \end{pmatrix}
$$

『Pythonではじめる量子AI入門』(著:電気通信大学・曽我部東馬)P.10より引用

前の説明だと「|0⟩ ⊗ |0⟩」を簡略化すると「|00⟩」になるんでしょ?だから一番左辺で始まってその右の行列計算はわかる。一番右辺もわかる。っていうかこれを求める計算だもの。
でも、その間のは何?なんで上から勝手に|00⟩、|01⟩、|10⟩、|11⟩が並んでるわけ?ていうか|00⟩を導き出そうとしてるのに「←|00⟩」ってどういうこと?
まるで「0は0なので0なんですっ」みたいな禅問答に見えるんですけど?

結論から言ってしまうと禅問答に近い話だった。
とにかく2量子ビットの場合のテンソル積をベクトル表記すると、それは上から勝手に|00⟩、|01⟩、|10⟩、|11⟩との対応を表すんだそうだ。


2量子ビットの状態表示

ここからは生成AI「Claude」先生のお話。謹聴するように。

2量子ビット系の任意の状態|ψ⟩は、4つの基底状態の重ね合わせとして表現できます。

$$
|ψ⟩ = a|00⟩ + b|01⟩ + c|10⟩ + d|11⟩
$$

これは行列表現では4次元のベクトルになります:

$$
|\psi\rangle = \begin{pmatrix} a \\ b \\ c \\ d \end{pmatrix}
$$

ベクトル(行列)の各成分は対応する基底状態の係数を表しています。

  • a は |00⟩ の係数

  • b は |01⟩ の係数

  • c は |10⟩ の係数

  • d は |11⟩ の係数

ここまでがClaude先生のお話である。
おわかりいただけただろうか?
2量子ビットの場合には基底状態が|00⟩、|01⟩、|10⟩、|11⟩の4種類あるのが前提になっている。それぞれの係数がベクトル表記されて状態表示するってお話だ。ためになったね。


n量子ビットの状態表示

では3量子ビットだとどうか?
その場合は上から順に
|000〉、|001〉、|010〉、|011〉、|100〉、|101〉、|110〉、|111〉
の8種類の基底ベクトルで表される。

同様にn量子ビットだと$${2^n}$$個基底ベクトルに対する係数が縦に並ぶことで重ね合わせ状態が表される。

n量子ビットの状態|ψ⟩は、$${2^n}$$次元のベクトルとして表される。各$${a_i}$$は対応する基底状態の係数(振幅)を表す。

$$
|\psi\rangle = \begin{pmatrix} a_1 \\ a_2 \\ \vdots \\ a_{2^n} \end{pmatrix}
$$

この重ね合わせにより、量子コンピューティングにおける並列性量子計算のパワーが発揮されます。

と、これはChatGPT先生のお言葉。


さ、これでP.10はわかって(わかったのか?)P.11の最初の2行まで行った。
この調子で行くとざっくり200ページなんて何年かかるんだ?

余談だが著者近影を見たら今話題沸騰の玉木雄一郎国民民主党代表に少しにていた。いや「もつれ」とか「重ね合わせ」とかじゃなくて…


いいなと思ったら応援しよう!