$$
\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-diagramで表現できることがわかりました。そして、そのZX-diagramをひも解くことで、フェルミオン演算子をパウリ積の線形結合として書き出すことができるのでした。残された問題は、フェルミオン・量子ビット変換、すなわち、フォック空間から量子ビット変換として正当な線形符号化をどのようにすれば得られるかということです。このブログ記事シリーズの最終回では、これまで同様、以下論文に従い、Ternary Tree(三分木)を用いることで、それを構成できることを示したいと思います。それでは、はじめます!
マヨラナ演算子
その説明に入る前にマヨラナ演算子について簡単に理解しておく必要があります。マヨラナ演算子は、
\begin{align}
&\gamma_{2j} = a_{j}^{\dagger} + a_{j} \\
&\gamma_{2j+1} = i(a_{j}^{\dagger} - a_{j})
\end{align} \tag{1}
のように生成消滅演算子$a_{j}^{\dagger}, a_{j}$を用いて定義されます。ここで、$j \in \{0,1,...,N-1\}$としています。$N$は考えている多電子系のスピン軌道数です。これから、すぐわかるように、生成消滅演算子$a_{j}^{\dagger}, a_{j}$は、マヨラナ演算子を使って、
\begin{align}
&a_{j} = \frac{1}{2}(\gamma_{2j} + i \gamma_{2j+1}) \\
&a_{j}^{\dagger} = \frac{1}{2}(\gamma_{2j} - i \gamma_{2j+1}) \\
\end{align} \tag{2}
のように表すこともできます。なので、生成消滅演算子ではなくマヨラナ演算子を使ってフェルミオン演算子を表すこともできます。また、マヨラナ演算子は、
\{\gamma_i,\gamma_j\} = 2 \delta_{ij} \tag{3}
のような反交換関係を満たします。
Jordan-Wigner変換によって量子ビット空間に変換した生成消滅演算子は、
\begin{align}
&a_{i} = \Bigl(\prod_{j=0}^{i-1} Z_j \Bigr) \frac{X_i + iY_i}{2} \\
&a_{i}^{\dagger} = \Bigl(\prod_{j=0}^{i-1} Z_j \Bigr) \frac{X_i - iY_i}{2}
\end{align} \tag{4}
と書けますが、マヨラナ演算子は、これを式(1)に代入すればわかるように、
\begin{align}
&\gamma_{2j} = X_{j} \prod_{i=0}^{j} Z_{i} \\
&\gamma_{2j+1} = Y_{j} \prod_{i=0}^{j} Z_{i} \\
\end{align} \tag{5}
のような単なるパウリ積になります。そして、これは式(3)のような反交換関係を満たします。反交換関係を満たしたパウリ積のセットはこれ以外にもいろいろ考えられます。逆に言うと、反交換関係を満たすようなパウリ積のセットを$2N$個(ペアのさせ方も含めて)用意できれば、これで任意のフェルミオン・量子ビット変換を特定することができそうです。
Ternary Tree(三分木)
反交換関係を満たすパウリ積のセットを任意に得る方法は実は簡単です。Ternary Tree(三分木)を使います。Ternary Treeというのは、親ノードに対する子ノードの数が高々3個であるような木構造のことです。この木構造を使って、どうやってパウリ積のセットを得るかについてですが、まず、以下の図1を見てもらうのがわかりやすいです。
図1: Ternary Treeの例
これは4個のノードを持つTernay Treeです。丸で示したノードに記載されている数字は量子ビット番号を表します。左端のノードが一番上位の親ノード(ルート)です。木構造の絵を書くときには大抵の場合ルートは一番上に書くと思いますが、このたびは左端のノードをルートとします(左を入力とするZX-diagramの習慣と合わせるためです)。この図を見ればわかるように、各ノードは高々3個の子ノードと接続しています。ただし、ここで定義したいのは少しだけ特殊なものです。3個の子ノードがないノードにも3本のエッジが接続するように葉ノード(子ノードに接続しないエッジ)を追加します。こうすると、葉ノードの数は全ノード数を$N$とすると$2N+1$になります1。そして、各ノードから子ノードに接続しているエッジに$X,Y,Z$というラベルを付与します。
こうしておいて、$2N+1$個ある葉ノードの各々をパウリ積に対応づけます。どうやるかというと、まず、1番上の葉ノードを見てください。ルートに到る経路は、$X$ラベルのエッジを通って0番のノードに到達した後、$X$ラベルのエッジを通って3番のノード(ルート)に到達します。このとき、ラベル名をパウリゲートの種類、ノード番号をそのパウリゲートの量子ビット番号として、通過するノード分のテンソル積をとります。そうすると、この葉ノードの場合、$X_{3} X_{0}$になります(赤文字で示しました)。同様の手続きで上から2番目の葉ノードについてもやってみると、$X_{3} Y_{0} X_{2}$になります。以下同様にしてすべての葉ノードに対してパウリ積を対応させることができます。
ここで、木構造の性質からひとつ重要なことが言えます。葉ノードからルートに到る経路を任意に2つ持ってくるとしましょう。そうすると、その2つの経路はどこか1箇所のノードで分岐します。必ず1箇所で分岐します。例えば、上から1番目の葉ノードへの経路と、上から2番目の葉ノードへの経路は0番目のノードで分岐します。各々に対応したパウリ積で考えると、分岐点のパウリ演算子はこの場合$X_0$と$Y_0$になりますので両者は交換すると符号が反転します。両者のそれ以外のパウリ演算子はすべて互いに交換するので、この2つのパウリ積同士は全体として反交換関係となります。その他、任意の2つのパウリ積の間には反交換関係があります。というわけで、このような構成方法で式(3)を満たすパウリ積のセットが出来上がることになります。図1と別のTernary Treeを作ると式(3)を満たした別のパウリ積のセットが出来上がります。ただし、出来上がるパウリ積の数は$2N+1$個ということになり、一つ余計です。なので、どれかを除外します。どれでも良いと思うのですが、論文"From fermions to Qubits: A ZX-Calculus Perspective"には一番下のパウリ$Z$のみからなるパウリ積を除外するのが良いということが書いてありました。
これで、めでたしめでたし、ということにしたいところなのですが、一つ問題があります。式(2)を見てください。マヨラナ演算子を用いてフェルミオン演算子を構成するためには、$\gamma_{2j}$と$\gamma_{2j+1}$のペアを$j$番目の生成消滅演算子$a_{j}^{\dagger},a_{j}$に対応づけなければなりません。このペアリングをどうやって決めれば良いかという指針がありません。ということで、これを議論して明確化した論文があります。参考文献2です。かなり込み入った手続きなのですがそのペアリングのアルゴリズムが記載されています。またそこから線形符号化を導くやり方についても議論されています。さらに、重要なこととして、Ternary Treeによって線形符号化が一意に決まるということも言われています。が、この論文内容を説明し始めると、さらに別のブログ記事シリーズを書かないといけないことになるため、ここでは、そういうアルゴリズムがあって線形符号化も構成することができて、かつ、Ternary Treeと線形符号化は1対1に対応づけられるものだということがわかっていると、そういうことにさせてください2。
ただし、この論文で提案されている方法はかなり複雑です。もっと簡単にTernary Treeから線形符号化を得る方法があると良いです。ということで、今回のブログ記事のシリーズでその内容を解説している論文("From fermions to Qubits: A ZX-Calculus Perspective")の説明に入ります。比較的簡単なアルゴリズムでTernary Treeから線形符号化の行列表現を得る方法が提案されています。
Ternary TreeからZX-diagramへ
Ternary Treeと線形符号化は1対1に対応づけられるということがわかっているので、この木構造から何とか線形符号化に対応したZX-diagramが得られないかということを考えます。前々回の記事の終わりの方で、Jordan-Wigner変換、Parity変換、Bravyi-Kitaev変換に対する位相ゼロのZX-diagramを提示しましたが、あのようなZX-diagramが得られると良いです。天下りになりますが、Ternary Treeの各ノードを以下のようなZX-diagramに置き換えると、うまく行くようです3。ここで、この図2の左のノードに記載されている$i$は$i$番目のノード(つまり$i$番目の量子ビット)を表しており、子ノードに向かう3本のエッジに付与された$a,b,c$は各々ラベル$X,Y,Z$方向の部分Ternary Treeに含まれるノード数を表しています。また、図2の右のZX-diagramの一つの矢羽根に記載されている$F$は、反対角成分(右上から左下に到る対角線上)の要素が$1$でその他の要素が$0$であるような行列です。何も記載されていない矢羽根は入力側のZ-spiderのすべてが出力側の1個のX-spiderにつながっているものと考えてください。
図2: Ternary TreeのノードとZX-diagramの対応規則
それでは、以下の図3に示したTernry Treeが、どのようなZX-diagramに変換されるかを見てみます。
図3: Ternary Treeの例
以下の図4を見てください。合計9個のノードからなるTernary Treeの各ノードをZX-diagramに置き換えたものが一番左に示されています。この図は論文"From fermions to Qubits: A ZX-Calculus Perspective"に掲載されている図の引用なのですが、Scalable ZX-diagramの各wireが何本のwireを表しているかが記載されておらず少々わかりにくかったので、数字を追記しました。一番左のwireは9本です(赤文字で示しました)。これは全ノード数に対応しています。そして、3方向に太いwireが分岐しています。これは$X,Y,Z$ラベル方向の部分Ternary Treeにつながるものなので、wireの本数は各々4本、3本、1本です(赤文字で示しました)。合計は8本となり1本余ります。各分岐に対応したノード自身はそれ以降の部分Ternary Treeに含まれないので、必ず1本余ります。その1本を青文字で表しました。さて、ルートから$X$ラベル方向に伸びる4本のwireはさらに1本、1本、1本に分岐します(そして青文字の1本が余ります)。$Y$ラベル方向の3本のwireはさらに分岐するのですが、$X$ラベル方向の2本しかありません。この場合青文字の1本以外、$Y$ラベルと$Z$ラベル方向には何もエッジを書きません。$Z$ラベル方向の1本のwireはさらに分岐するのですが、この場合分岐した後は葉ノードになるため、$X,Y,Z$ラベル方向ともにwireはありません。青文字の1本だけになります。以降の階層は同様に考えてください。
これをZX-diagramの置き換えルールに基づき簡略化していきます。最初の等号では、1本のwireから1本分岐しているのは意味がないため分岐記号を削除しています。2番目の等号では、葉ノードに近い矢羽根を展開しています。最後の等号では、ルートノード側の矢羽根を展開しています。そうすると、確かに$N$個のZ-spiderから$N$個のX-spiderにつながる位相ゼロのZX-diagramが得られました。これから、線形符号化の行列表現は簡単に書き出すことができます4。
図4: Ternary TreeをZX-diagramに変換した例
この方法で本当に行けそうか、Jordan-Wigner変換、Parity変換、Bravyi-Kitaev変換を例に確認してみます。まず、Jordan-Wigner変換です。Jordan-Wigner変換のTernary Treeを以下の図5の左のようなものとすると、ZX-diagramは左側に示したような恒等変換になります。
図5: Jordan-Wigner変換に対するTernary TreeとZX-diagram
次に、Parity変換のTernary Treeを以下の図6の左のようなものとすると、ZX-diagramは左側に示したような変換になり、これはParity変換の線形符号化表現になります。
図6: Parity変換に対するTernary TreeとZX-diagram
さらに、Bravyi-Kitaev変換のTernary Treeを以下の図7のようなものとすると、ZX-diagramは左側に示したような変換になり、これは確かにBrabyi-Kitaev変換の線形符号化表現になっています。
図7: Bravyi-Kitaev変換に対するTernary TreeとZX-diagram
ということで、このようなノード置き換え規則で良さそうです。論文"From fermions to Qubits: A ZX-Calculus Perspective"には、このノード置き換え規則で本当に線形符号化に対するZX-diagramが得られるという証明がなされています(が、すみません。長くなるので省略させてください)。
Ternary Treeから線形符号化へ
このようにして、Ternry Treeから線形符号化に対するZX-diagramが得られて、これから直ちに行列表現も得られます。理屈の上ではそうなのですが、実際に何らかのTernary Treeのデータ構造が与えられたときに、上の手続きで線形符号化の行列表現を得ようとすると、結構大変なプログラム実装になりそうです。ということで、これに関しても、論文"From fermions to Qubits: A ZX-Calculus Perspective"では、簡潔なアルゴリズムを提案しています。
どういうアルゴリズムなのかを簡単に説明します。以下の図8を見てください。これは、$i$番目のノードに対応する$X,Y,Z$ラベル方向の部分Ternary Treeです。各部分Ternary Tree($T_X, T_Y, T_Z$)を簡単に角丸の三角で表しています。いま、部分Ternary Treeの行列表現が$E_X,E_Y,E_Z$で与えられているとします。
図8: 3分岐する部分Ternary Tree
このノード$i$に対して、先ほどのノード置き換え規則で、ZX-diagram化したものは、以下の図9の左のようになります。ここで、前々回の記事で説明した公式を召喚してZX-diagramを変形すると、結局、右のような1個の行列が得られることになります。
図9: Ternary Treeから線形符号化行列を求めるアルゴリズムの証明
したがって、ルートからはじめて再帰的なアルゴリズムを構成することにより線形符号化の行列が求まることになります。そのアルゴリズムを以下の図10に示します。
図10: Ternary Treeから線形符号化行列を求めるアルゴリズム
前回の記事の図21に示したような各種オペレータをZX-diagramで表現できたのですが、線形符号化の行列$E$をどのように決めれば良いかが未確定でした。が、今回の記事で明らかになりました。というわけで、今回のブログ記事シリーズは、これにて完結です5。
まとめ
長い道のりだったので、最後にまとめます。
-
フェルミオン・量子ビット変換は、フォック空間の基底を表すビット列を量子ビット空間の基底を表すビット列へ変換する線形符号化とみなすことができる。
-
線形符号化は位相ゼロのZ-spiderと位相ゼロのX-spiderを接続した2部グラフのようなZX-diagramで表現することができる。
-
そのZX-diagramを用いてすり抜けテクニックを使うことで、任意のフェルミオン演算子のフェルミオン・量子ビット変換を実行することができる。
-
Ternary Treeは線形符号化と1対1に対応しており、任意のTernary Treeから線形符号化の行列表現を求めることができる(すなわち、Ternary Treeによってフェルミオン・量子ビット変換を特定することができる)。
おわりに
全4回にもわたる連載ブログ記事にお付き合いいただき、ありがとうございました。そして、大変お疲れ様でした。
フェルミオン・量子ビット変換としてよく知られた3方式以外に何かないの?という、一番はじめの疑問への答えは、結局、沢山あるよ、でした。考えているスピン軌道数のノードを持つTernary Treeを様々に作ることで、それらを様々に得ることができるのでした。この導出にあたり、ZX-calculusが強力なツールになったということもわかりました。
ということで、次にやりたくなるのは、これをライブラリ化することです。特定の分子のフェルミオン・ハミルトニアンに対して、Ternary Treeを指定したら、フェルミオン・量子ビット変換が動いて、量子ビット・ハミルトニアン(パウリ積の線形結合)を出力するようなものです。さらに、何らかの目的関数を指定したらば、それを最小化するTernary Treeを取得できたりすると嬉しいです。実は、いままさにそのようなライブラリを作っていまして、近いうちに公開したいと思っています。という予告をもって、この長かったブログ記事連載を終了します。
【2025年12月19日追記】
上記ライブラリを以下に公開しました。
https://github.com/samn33/yaf2q
以上
参考文献
関連記事
ZX-calculusを用いたフェルミオン・量子ビット変換(1)
ZX-calculusを用いたフェルミオン・量子ビット変換(2)
ZX-calculusを用いたフェルミオン・量子ビット変換(3)
-
ノード数は$N$なのでエッジの総数は$3N$です。そのエッジの中で子ノードから親ノードへつながっているエッジは$N-1$個です(一番大本のルートノードの親はいないので全ノード数から1を引けば良いです)。いま、子ノードのないエッジ数、すなわち葉ノード数をカウントしたいので、$3N$から$N-1$を引いて$2N+1$となります。 ↩
-
自分自身この論文の内容をまだ十分に理解できていないという事情もあります(汗)。 ↩
-
どうやってこのような対応規則がひねり出されたのか、"From fermions to Qubits: A ZX-Calculus Perspective"には明確に書かれていなくて、結局よくわからないのですが、こうすると確かに線形符号化のZX-diagramになることは証明されています。長くなるのでこのブログ記事では省略します。詳細は論文をご参照ください。 ↩
-
ということで、Ternary Treeから得られるマヨラナ演算子のペアリングをどうするとかいうことに悩まされることなく、直接線形符号化にマッピングする手法になっています。 ↩
-
論文"From fermions to Qubits: A ZX-Calculus Perspective"は、実はここで終わりではなく、補助量子ビットを使って、フェルミオン・ハミルトニアンの局所的な相互作用を保持したまま量子ビット空間にマッピングする方法についても言及されています。今回の連載ブログ記事では、従来の(補助量子ビットを使わない)3手法以外にどんな変換があり得るの?という疑問に答えることをモチベーションとしていたので、勝手ながら、そっち方面までは扱わないことにしました(自分がまだ十分に理解できていないという事情もあります、汗)。 ↩