量子コンピュータの基本 - exp(iA) がユニタリー行列になる理由
§ この記事の目的
量子コンピューティングでは、ハミルトニアン・エンコーディングやHHLアルゴリズムなどで逆行列を求める理論において、エルミート行列Aを用いて、eiAがユニタリー行列となることを利用します。
なぜeiAがユニタリー行列になるのか、その理由を確認します。
§ まずは数学の公式の確認
行列や指数関数についての公式を確認します。
公式1 指数行列
n次の正方行列Aに対して、指数行列を以下のように定義する。
eA=E+A+2!1A2+3!1A3+...=h=0∑∞h!1Ah(公式1)
公式2 行列の対角化
エルミート行列Aに対して、ユニタリー行列Vを用いて以下のように対角化できる。
(Λはラムダと読みます)
(これについては後半で証明します)
A=VΛV†(公式2)
公式3 ユニタリー行列の性質
ユニタリー行列Vは、以下が成立する。
V†V=VV†=I(公式3)
公式4 エルミート共役
エルミート共役(複素共役を取り、転置した行列)に関する公式。
(AB)†=B†A†(公式4)
公式5 エルミート行列の性質
エルミート行列は、以下が成立する。
A†=A(公式5)
公式6 指数行列
どんな正方行列Aに対しても、以下が成立する。
e−A=(eA)−1(公式6)
§ ユニタリー行列となることの確認
(公式1)を用いるとeiAは、
eiA=h=0∑∞h!1(iA)h=h=0∑∞h!ih(A)h(式1)
と書けます。
ここで、(公式2)を用いて、(式1)のAへ代入します。
(式1)=h=0∑∞h!ih(VΛV†)h=h=0∑∞h!ih(VΛV†)(VΛV†)(VΛV†)...(式2)
(式2)の(VΛV†)(VΛV†)(VΛV†)...について、Vはユニタリー行列のため、(公式3)より以下のようになります。
(VΛV†)(VΛV†)(VΛV†)...=VΛ(V†V)Λ(V†V)Λ(V†V)...=VΛhV†
よって、(式2)は
(式2)=h=0∑∞h!ih(VΛhV†)=V(h=0∑∞h!ihΛh)V†(式3)
ここで、(公式1)より以下が導けるため、
h=0∑∞h!ihΛh=eiΛ
これを(式3)へ用いて、eiAは以下となります。
eiA=VeiΛV†(式4)
次に、(式4)の両辺についてエルミート共役を取ります。
(eiA)†=(VeiΛV†)†(式5)
(公式4)より、右辺を変形すると、
(右辺)=(V†)†(eiΛ)†V†=V(eiΛ)†V†
これを用いて、(式5)は以下のように書き直せます。
(eiA)†=V(eiΛ)†V†(式6)
ここで、(式6)の右辺の一つの項(以下)に注目します。
(eiΛ)†(式7)
これを求めるために、まず以下の変形を行います。
(公式2)について、両辺のエルミート共役を取ると、
(A)†=(VΛV†)†=(V†)†Λ†V†=VΛ†V†(式8)
上記の左辺はエルミート行列なので、(公式5)より以下が成り立ちます。
よって(式8)は、
A=VΛ†V†
左からV†を、右からVをかけると、
V†AV=V†(VΛ†V†)V=Λ†(式9)
(式7)について、(公式1)の定義を適用すると、
(eiΛ)†=(h=0∑∞h!ihΛh)†
上記について右辺の意味を考えると、複素共役を取った上で行列を転置することから以下のように書き直せます。
(右辺)=h=0∑∞h!(−i)h(Λ†)h
Λ†に(式9)を代入すると
(右辺)=h=0∑∞h!(−i)h(V†AV)h=V†(h=0∑∞h!(−i)hAh)V=V†(e−iA)V
つまり、(式7)は以下のように求められます。
(eiΛ)†=V†(e−iA)V
これを用いて(式6)は、
(eiA)†=V(eiΛ)†V†=V{V†(e−iA)V}V†=(VV†)(e−iA)(VV†)=e−iA
ここで、(公式6)を上式の右辺へ適用すると、
(eiA)†=(eiA)−1(式10)
ここで、U=eiAとおくと(式10)は以下のように書き換えられます。
U†=U−1(式11)
このことから、Uはユニタリー行列であることがわかります。
言い換えると、ユニタリー行列は(公式3)を満たすことからUU†=Iであり、
逆行列U−1はUU−1=Iであることから、U†=U−1となり、(式11)と同義となります。
§ 公式2 行列の対角化の証明
(公式2)で以下のように書けることを証明してみましょう。
エルミート行列Aに対して、ユニタリー行列Vを用いて以下のように対角化できる
A=VΛV†
行列Aについて、対角化と言う処理を行います。
対角化する目的は、Aのn乗を計算する際に、計算を容易にするためです。
ここで行列Aはエルミート行列とします。
以下において、行列Aとその固有ベクトル(列ベクトル)をv、固有値をλとします。
ここで、重解が無い場合つまり縮退していない場合を前提とすると、
Avk=λkvk(k=1,2,3,...)
列ベクトルをまとめて、以下のように書き換えます。
A(v1v2v3...)=(λ1v1λ2v2λ3v3...)=(v1v2v3...)⎝⎛λ100:0λ20:00λ3:.........:⎠⎞
ここで、列ベクトルのまとまりを行列Vとおくと、以下のように書くことができます。
(Λはラムダと読みます)
AV=VΛ(式20)ただし、V=(v1v2v3...)Λ=⎝⎛λ100:0λ20:00λ3:.........:⎠⎞
(式20)について、両辺のエルミート共役を取ります。
(AV)†=(VΛ)†
左辺、右辺をそれぞれ以下のように計算します。
(左辺)=(AV)†=V†A†(式21)(右辺)=(VΛ)†=Λ†V†(式22)
Aはエルミート行列なので、以下が成立します。
これを(式21)に代入し、(式22)と等式で結ぶと、
V†A=Λ†V†(式23)
さて、(式20)について、左からV†を掛けると、
V†AV=V†VΛ(式24)
また、(式23)について、右からVをかけると、
V†AV=Λ†V†V(式25)
(式24)及び(式25)から以下が導けます。
V†VΛ=Λ†V†V(式26)
Λ†について内容を確認しておきます。
Λは(式20)の後半に記載の通りで、これについて複素共役と転置を取るとΛ†になるため、
Λ†=⎝⎛λ1∗00⋮0λ2∗0⋮00λ3∗⋮.........⋱⎠⎞(式27)
となります。ここで、*は複素共役を意味します。
(式24)についてi行j列の成分を求めると、
[V†VΛ]ij=⎣⎡⎝⎛v11∗v21∗v31∗⋮v12∗v22∗v32∗⋮v13∗v23∗v33∗⋮………⋱⎠⎞⎝⎛v11v12v13⋮v21v22v23⋮v31v32v33⋮………⋱⎠⎞⎝⎛λ100⋮0λ20⋮00λ3⋮………⋱⎠⎞⎦⎤ij=⎣⎡⎝⎛λ1(v11∗v11+v12∗v12+...)0⋮0λ2(v21∗v21+v22∗v22+...)⋮……⋱⎠⎞⎦⎤ij=k∑λk(vik∗vik)(式28)
また、同様に(式25)についてi行j列の成分を求めると、
[Λ†V†V]ij=⎣⎡⎝⎛λ1∗00⋮0λ2∗0⋮00λ3∗⋮………⋱⎠⎞⎝⎛v11∗v21∗v31∗⋮v12∗v22∗v32∗⋮v13∗v23∗v33∗⋮………⋱⎠⎞⎝⎛v11v12v13⋮v21v22v23⋮v31v32v33⋮………⋱⎠⎞⎦⎤ij=⎣⎡⎝⎛λ1∗(v11∗v11+v12∗v12+...)0⋮0λ2∗(v21∗v21+v22∗v22+...)⋮……⋱⎠⎞⎦⎤ij=l∑λl∗(vil∗vil)(式29)
(式26)に倣い、(式28)と(式29)を等式で結ぶと以下となります。
k∑λk(vik∗vik)=l∑λl∗(vil∗vil)(式30)
ここで、固有値が縮退していないことが前提だったため、以下が成立します。
λk=λl
よって、k=lの場合に(式30)を満たすのは以下のケースと言えます。
vij=0ただし、i=j
一方k=lの場合、
k∑λk(vik∗vik)=k∑λk∗(vik∗vik)(式31)
上記を満たすには、λi=λi∗となり、かつ、viiは任意の値を取ることができます。
すなわち、以下が導けます。
Λ∗=ΛVは対角行列で、大きさは任意に取ることができる
vii=1とするとVは
V=V†=⎝⎛100⋮010⋮001⋮………⋱⎠⎞=I
上式から以下が導けます。
さらに、(式24)の右辺を変形すると
V†AV=V†VΛ=(V†V)Λ=Λ
上式に左からV、右からV†を掛けると以下が導けます。
A=VΛV†
以上が証明となります。