$$
\def\bra#1{\mathinner{\left\langle{#1}\right|}}
\def\ket#1{\mathinner{\left|{#1}\right\rangle}}
\def\fbra#1{\mathinner{\left({#1}\right|}}
\def\fket#1{\mathinner{\left|{#1}\right)}}
\def\braket#1#2{\mathinner{\left\langle{#1}\middle|#2\right\rangle}}
$$
はじめに
前回の記事の「おわりに」で予告していた通り、今回の記事では、生成消滅演算子やフェルミオン演算子に対するフェルミオン・量子ビット変換をZX-calculusを使って具体的に構築してみます。この一連のブログ記事で説明しようとしている以下の論文のメインパートにいよいよ突入です!お待たせしました。それでは、はじめます!
線形符号化によるフェルミオン演算子の変換
フェルミオン・量子ビット変換は、フォック空間から量子ビット空間への線形符号化(linear encoding)なのですが、次のように言い換えることができます。すなわち、フェルミオン・量子ビット変換は、フォック空間から量子ビット空間へのJordan-Wigner変換
\fket{f} \rightarrow \ket{q}, \quad q = f, \quad f,q \in \mathbb{F}_{2}^{N} \tag{1}
の後、量子ビット空間上で、
\ket{q} \rightarrow \ket{q'} = U^{E} \ket{q} = \ket{Eq} \tag{2}
のような変換を実行したものと考えることができます。ここで、$E$は$\mathbb{F}_{2}^{N}$上で定義された線形符号化です。また、$U^{E}$は、$\ket{q}$を$\ket{Eq}$に変換するユニタリ演算子です。フェルミオン・量子ビット変換は、このように定義された線形符号化$E$によって特徴づけられるものと言えます。
では、この変換後の空間上での任意の演算子$O^{E}$はどのようなものになるでしょうか。ユニタリ変換実行後の演算子が$O^{E}$ということなので、Jordan-Wigner変換後の量子ビット演算子$O^{JW}$を、
O^{E} = U^{E} O^{JW} U^{E\dagger} \tag{3}
のようにユニタリ変換したものになります。
ここで前回の記事を思い出してください。線形符号化はZX-diagramで表現することができるのでした。もし$O^{JW}$をZX-diagramで表現できるとすると、
図1: 線形符号化$E$による演算子$O^{JW}$の変換
のような関係式が成り立つので、$O^{JW}$を矢羽根$E$に向かって移動させてすり抜けさせた結果として矢羽根の右側に現れるZX-diagramが$O^{E}$そのものということになりそうです。
線形符号化による生成消滅演算子の表現
例えば、$O^{JW}$の具体例として生成消滅演算子を取り上げて、それがZX-diagramでどのように表現され変換されるのかを見てみましょう。Jordan-Wigner変換における消滅演算子$a_p$は、
\begin{align}
a_{p} &= \Bigl(\prod_{j=0}^{i-1} Z_j \Bigr) \frac{X_i + iY_i}{2} \\
&= \Bigl(\prod_{j=0}^{i-1} Z_j \Bigr) \ket{0_p} \bra{1_p}
\end{align} \tag{4}
と書けます1。ここで、$\ket{0_p} \bra{1_p}$の下付き添え字の$p$は$p$番目の量子ビットに作用する演算子であることを表しています。
これをZX-diagramで表すと、以下の図のようになります。右辺は左辺をScalable ZX-diagramで表したものです。
図2: Jordan-Wigner変換における消滅演算子
ここで、左辺の上から$p$番目の量子ビットがわかりにくいかもしれません。式(4)の$\ket{0_p} \bra{1_p}$をZX-diagramで表すとこうなるのですが、大丈夫でしょうか。これは、以下のように考えればわかりやすいと思います。
図3: $\ket{0} \bra{1}$のZX-diagram
図の左から$\ket{x} (x \in \{0,1\})$が入ってきたとします。まず、位相$\pi$のX-spider($X$ゲート)を通るので、$\ket{x}$はビット反転して$\ket{\bar{x}}$になります(バーはビット反転を表します)。次に位相ゼロのZ-spiderを通って2つに分岐します。位相ゼロなので入力が$\ket{\bar{x}}$とすると出力も各々$\ket{\bar{x}}$です。が、一方は行き止まりのX-spiderにつながっています。行き止まりのX-spiderは$\bra{0}$を表しています。ということは、$\bar{x}=0$(すなわち、$x=1$)以外は状態ベクトルはゼロベクトルになってしまいます。つまり、$\ket{x}=\ket{1}$という入力状態しか許されず、最終的な出力状態はそのビット反転である$\ket{0}$になります。このような変換を演算子で表すと$\ket{0}\bra{1}$になります。どうでしょう。とりあえず、こんな説明でいかがでしょうか?本当はX-spider,Z-spiderの定義式から最終的に$\ket{0}\bra{1}$しか残らないという説明をした方が数学的に間違いがなく良いのかもしれないのですが、ZX-diagramを見て頭の中で暗算したい場合はこっちの考え方の方が良いのではないかと思います。
ということで、図2がわかったところで、これを図1に示したようなすり抜けテクニックを使って、線形符号化$E$に対するフェルミオン・量子ビット変換を実行してみます。
図4: 消滅演算子に対するフェルミオン・量子ビット変換
ここで、前回の記事で紹介したScalable ZX-diagramの公式を駆使しています(すり抜け対象となる矢羽根をわかりやすくするため赤枠で示してみました)。すり抜けた結果、以下のような消滅演算子が得られます。
図5: フェルミオン・量子ビット変換後の消滅演算子
同様にして、生成演算子も以下のように得られます。
図6: フェルミオン・量子ビット変換後の生成演算子
グラフィカル言語、簡単ですよね。任意の線形符号化の行列$E$が与えられたら、つまりフェルミオン・量子ビット変換が与えられたら、生成消滅演算子はこれで計算できてしまいます。論文"From fermions to Qubits: A ZX-Calculus Perspective"には、Parity変換とBravyi-Kitaev変換の場合について例示されていますので、適宜ご参照ください。
制御ZX-diagramとW-node
生成消滅演算子がわかったら次に、多電子系のフェルミオン・ハミルトニアンがどう表現されるのか知りたくなります。が、その説明に入る前に、もう少々前提知識が必要になるので、それについて説明させてください。制御ZX-diagramとW-nodeです。
制御ZX-diagramは、制御ユニタリゲートのZX-diagram版です。図7を見てください。上方向に1本のwireが飛び出している$N$入力$N$出力の$\tilde{D}$というZX-diagramがあったとします。その上方向のwire(制御wireと呼ぶことにします)に位相$\pi$のX-spider(つまり$\bra{1}$)をつなげると、$D$というZX-diagramになって、位相ゼロのX-spider(つまり$\bra{0}$)をつなげると、何もしないZX-diagram(つまり恒等演算子)になるような$\tilde{D}$を、$D$に対する制御ZX-diagramと呼びます。
図7: 制御ZX-diagramの定義
W-nodeは、以下の図8のように定義される黒い三角印です。上が入力で下が出力であると見てください。右辺の式の意味ですが、入力が$\ket{0}$だった場合、$\ket{00...0}$を出力します。入力が$\ket{1}$だった場合、$1$個の$1$と$N-1$個の$0$からなるビット列を含む$N$個のケットの和$\ket{10...0}+ \ket{01...0}+ ... + \ket{00...1}$を出力します。
図8: W-nodeの定義
こんな図形要素を定義して何が嬉しいのかよくわからないと思いますが、このW-nodeと制御ZX-diagramと組み合わせることでZX-diagramの線形結合を表現できます。これから扱おうとするフェルミオン演算子(ハミルトニアン)はエルミート演算子の線形結合になっています。一方、単なる1個のZX-diagramは線形演算子でしかないので1個のエルミート演算子は表現できますが、エルミート演算子の線形結合はそのままでは表現できません。そこで、W-nodeと制御ZX-diagramを導入します。それらを組み合わせることで、演算子の線形結合を表現することができるようになります。
図9を見てください。いま表現したいと思っているのは、左辺に示したようなZX-diagram $D_i$の線形結合だとしましょう。これに対する制御ZX-diagramはW-nodeを使って右辺のように書くことができます。つまり、上に伸びた制御wireに位相$\pi$のX-spiderをつなげると、左辺になります。
図9: 線形結合の制御ZX-diagram
それを示したのが、以下の図10です。
図10: 線形結合の制御ZX-diagram(説明1)
また、位相ゼロのX-spiderをつなげると、図11に示すように、何もしない定数項の足し算になります。
図11: 線形結合の制御ZX-diagram(説明2)
ZX-diagramの線形結合を制御ZX-diagramで表現できたので、ZX-diagramの積も制御ZX-diagramで表現したくなります。この場合、W-nodeは使いません。以下の図12のようにW-nodeの代わりに位相ゼロのZ-spiderを使います。これがなぜ左辺の制御ZX-diagramになっているかは、簡単にわかると思いますので、説明省略します。
図12: 積の制御ZX-diagram
いままで、$D$に対する制御ZX-diagramを$\tilde{D}$と表してきましたが、実際にどんな場合にどんな制御ZX-diagramになるのか、いくつか例示してみます。まず、図13を見てください。左に示したのは位相$\pi v$のX-spiderに対する制御ZX-diagramです。右に示したのは位相$\pi v$のZ-spiderに対する制御ZX-diagramです。ここで$v$は$v=(v_1,...,v_N)^{T}$のようなバイナリ・ベクトルと思ってください。とすると、これは各々、$\prod_{i} X_{i}^{v_i}$および$\prod_{i} Z_{i}^{v_i}$のような演算子を表します。これが、制御ZX-diagramになっているかどうかは制御wireに位相$\pi$のX-spider、位相ゼロのX-spiderをつなげてみればわかると思います。
図13: 制御ZX-diagramの例(1)
次に、図14を見てください。左に示したのは$(1-\prod_{i} Z_{i}^{v_i})/2$、右に示したのは$(1+\prod_{i} Z_{i}^{v_i})/2$に対する制御ZX-diagramです。
図14: 制御ZX-diagramの例(2)
ここで、黄色の三角印の定義は以下です。なぜ、これが$(1-\prod_{i} Z_{i}^{v_i})/2$および$(1+\prod_{i} Z_{i}^{v_i})/2$の制御ZX-diagramになるのか、わかりにくいと思います。この下でもっと具体的な例で説明しますので、いましばらくお待ちください。
図15: 黄三角印の定義
というわけで、もっと具体的な例でイメージをつかみたいと思います。
まず、$X_1 X_2 + Z_1 Z_2$に対する制御ZX-diagramを図16のグレー枠内に示します。W-nodeをこのように使って全体を制御化すると、これが$X_1 X_2 + Z_1 Z_2$に対するZX-diagramになります。図16の右に示すように、位相$\pi$のX-spiderを制御wireにつないでみると確かに$X_1 X_2 + Z_1 Z_2$になることがわかります。また、位相ゼロのX-spiderを制御wireにつなげると何もしない定数項になりますが、簡単なので省略します。
図16: 制御ZX-diagramの例(1)
次に、$X_1 Z_2 + Z_1 X_2$に対する制御ZX-diagramです。$X_1 Z_2$と$Z_1 X_2$という積の制御ZX-diagramを位相ゼロのZ-spiderを使って作っておいて、それらをW-nodeで統合することで、それらの和の制御ZX-diagramを実現しています。これも、一番上の制御wireに位相$\pi$のX-spiderをつないでみると、確かに$X_1 Z_2 + Z_1 X_2$になっていることがわかります。位相ゼロのX-spiderをつないだ場合に何もしない定数項になるのは、簡単なので説明省略します。
図17: 制御ZX-diagramの例(2)
先ほど、後で具体的に説明すると言っていた例を以下の図18に示します。2量子ビットの簡単な例になります。グレー枠内に示した制御ZX-diagramの制御wireに位相$\pi$のX-spiderをつないでみた結果が、図の右に示されています。最後のZX-diagramが$(1-Z_1 Z_2)/2$になります。
図18: 制御ZX-diagramの例(3)
なぜこうなるか。以下の図19を使って説明します。2量子ビットに$\ket{x_1}\ket{x_2}$という状態が入ってきたとします。各々最初に位相ゼロのZ-spiderに出会って2つのwireに分岐しますので、分岐後のwireは$\ket{x_1},\ket{x_1}$および$\ket{x_2},\ket{x_2}$のようになると考えて良いです。その各々のうち1本のwireが上斜め方向に伸びて、位相$\pi$のX-spiderにつながって行き止まりになっています。行き止まりの位相$\pi$のX-spiderは$\bra{++}-\bra{--}$を表します。行き止まりになっている部分を取り出すと、
\begin{align}
(\bra{++} - \bra{--}) \ket{x_1 x_2} &= \braket{+}{x_1} \braket{+}{x_2} - \braket{-}{x_1} \braket{-}{x_2} \\
&= \frac{1}{2} (1 - (-1)^{x_1 + x_2})
\end{align} \tag{5}
となります。ここで、
\begin{align}
&\braket{+}{x} = \frac{1}{\sqrt{2}} \\
&\braket{-}{x} = \frac{1}{\sqrt{2}} (-1)^{x}
\end{align} \tag{6}
を使いました。式(2)を見ると、$x_1 + x_2$のパリティがevenのとき$1$になり、oddのとき$0$(つまり出力状態はゼロになり消える)になるこことがわかります。そして、出力状態がある場合は$\ket{x_1 x_2}$となります。このような演算は、
\frac{1}{2}(1 - Z_1 Z_2) \tag{7}
です。
図19: $(1-Z_1 Z_2)/2$に対するZX-diagram
最後に、$(1+Z_1 Z_2)/2$に対する制御ZX-diagramを図20に示します。図18と図19で説明したのと同様の議論で、これが確かに$(1+Z_1 Z_2)/2$に対する制御ZX-diagramになっていることがわかると思います(説明省略します)。先ほどは$x_1+x_2$のパリティがevenの場合のみ通す演算子(oddの場合出力状態が0になる)でしたが、こちらはその逆に$x_1+x_2$のパリティがoddの場合のみ通す演算子です(evenの場合出力状態が0になる)。
図20: 制御ZX-diagramの例(4)
線形符号化によるフェルミオン・ハミルトニアンの表現
さて、ようやく多電子系のフェルミオン・ハミルトニアンのZX-diagramが、線形符号化によってどのような表現になるか説明できる段階になりました。フェルミオン・ハミルトニアンは一般に、以下のように書けるエルミート演算子です。
H = \sum_{i,j} h_{ij} a_{i}^{\dagger} a_{j} + \sum_{i,j,k,l} h_{ijkl} a_{i}^{\dagger} a_{j}^{\dagger} a_{k} a_{l} \tag{8}
生成消滅演算子が線形符号化$E$によって、図5および図6のようなZX-diagramになるので、これを式(8)に代入すれば良いのです。が、式(8)にはとても多くの項が含まれるように見えつつも、実際には多くの項の係数は0になっていたり、各スピン軌道を表す添え字には対称性が多数あって複数項をひとまとまりにすることができます。したがって、そのまとまり各々についてZX-diagramがどうなるかを考えてみたほうが、実際に計算する際に無駄がないです。ということで、論文"From fermions to Qubits: A ZX-Calculus Perspective"には、以下の図21に示すように生成消滅演算子をひとまとめにした合計5個の演算子について、そのZX-diagramが掲載されています(図21はその論文に掲載されている図の引用です)。今回の記事で説明してきた図形要素がフルに活用されて記述されていることがわかると思います。慣れないと何ですかこれ?状態になってしまいますが、W-nodeがZX-diagramの線形結合を表していて、位相ゼロのZ-spiderがZX-diagram同士の積を表していることをイメージしながら、図13と図14で示したZX-diagramがメインストリームに沿って散りばめられているということが、じっくり見ているとだんだんわかってくるかなーと思います。そして、各々のZX-diagramをひも解くと、すべてパウリ積の線形結合になっています(一番上の制御wireに位相$\pi$のX-spiderをつなげてみてください)。これが本当にこうなるという説明は、とても長くなってしまうので、すみませんが、論文"From fermions to Qubits: A ZX-Calculus Perspective"をご参照ください。
図21: 生成消滅演算子で構成された各演算子のZX-diagram表現
今回の記事の締めくくりとして、これを水素分子のハミルトニアンに適用したZX-diagraを図22に示します(論文"From fermions to Qubits: A ZX-Calculus Perspective"に掲載されている図の引用です。すみませんが、この導出も結構長くなるので論文を適宜ご参照ください)。線形符号化はBravyi-Kitaev変換です。どうでしょうか。一見したところ(やはり慣れないと)かなり複雑そうに見えますが、図13や図14で示した図形要素が左から順々に現れ適宜積が計算されて、それらがW-nodeによって線形結合として統合されていることがわかってくると、厄介な印象はだんだんなくなってくるのではないかと思います。前々回の最後の方で、Bravyi-Kitaev変換による生成消滅演算子を示しましたが、それを使ってハミルトニアンを計算するということと比較すれば、こっちの方が遥かに簡単で見通しの良い表現になっていると思います。
図22: 水素分子のハミルトニアンの例
おわりに
フェルミオン・量子ビット変換に対応した任意の線形符号化のバイナリ行列表現$E$が与えられたら、その変換に対応したフェルミオン演算子をZX-diagramで表現できるということがわかりました。そして、そのZX-diagramをひも解くことで、フェルミオン演算子をパウリ積の線形結合として書き出すことができます。
ところで、このバイナリ行列$E$というのはフェルミオン・量子ビット変換に対応しているということなのですが、でたらめなバイナリ行列を持ってきても、フェルミオン・量子ビット変換を構成することはできません。なぜなら、線形符号化なので$E$には逆が存在していないといけないからです。また、フォック空間の真空は$\fket{00...0}$は、量子ビット空間でも$\ket{00...0}$にマッピングされていてほしいです。
次回の記事では、Ternary Tree(三分木)を用いて、このような制約を満たした線形符号化を得る方法について説明します。次回がこのブログ記事シリーズの最終回になる予定です。それでは、次回をお楽しみに。
以上
参考文献
関連記事
ZX-calculusを用いたフェルミオン・量子ビット変換(1)
ZX-calculusを用いたフェルミオン・量子ビット変換(2)
ZX-calculusを用いたフェルミオン・量子ビット変換(4)