JP4758965B2 - ユニタリ行列分解方法、ユニタリ行列分解装置、ユニタリ行列分解プログラム及び記録媒体 - Google Patents

ユニタリ行列分解方法、ユニタリ行列分解装置、ユニタリ行列分解プログラム及び記録媒体 Download PDF

Info

Publication number
JP4758965B2
JP4758965B2 JP2007220086A JP2007220086A JP4758965B2 JP 4758965 B2 JP4758965 B2 JP 4758965B2 JP 2007220086 A JP2007220086 A JP 2007220086A JP 2007220086 A JP2007220086 A JP 2007220086A JP 4758965 B2 JP4758965 B2 JP 4758965B2
Authority
JP
Japan
Prior art keywords
matrix
unit
list
block
diagonal
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2007220086A
Other languages
English (en)
Other versions
JP2009053933A (ja
Inventor
裕美 中島
浩 関川
泰人 河野
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nippon Telegraph and Telephone Corp
Original Assignee
Nippon Telegraph and Telephone Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nippon Telegraph and Telephone Corp filed Critical Nippon Telegraph and Telephone Corp
Priority to JP2007220086A priority Critical patent/JP4758965B2/ja
Publication of JP2009053933A publication Critical patent/JP2009053933A/ja
Application granted granted Critical
Publication of JP4758965B2 publication Critical patent/JP4758965B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Complex Calculations (AREA)

Description

本発明は、任意のユニタリ行列を疎行列(行列の大部分が0となるような行列)の積に分解するユニタリ行列分解装置、ユニタリ行列分解方法、その機能をコンピュータで実現するためのプログラム及びそれを格納した記録媒体に関する。
量子コンピュータにおける各操作はユニタリ行列によって表現されるが、ユニタリ行列によって表現される量子操作を実際の量子コンピュータで実現するためには、ユニタリ行列を量子コンピュータで実装可能な行列に分解しなければならない。このユニタリ行列を分解する手法は、大きく2つに分けられる。一つは、2n×2nのユニタリ行列を分解する手法であり、0,1の2値の重ね合わせ状態を採る系(量子2準位系)で動作する量子コンピュータのための量子回路設計(量子コンパイラ)に応用される。もう一つは、dn×dn(d≧2)のユニタリ行列を分解する手法であり、0,1,...,d-1のd値の重ね合わせ状態を採る系(量子d準位系)で動作する量子コンピュータのための量子回路設計(量子コンパイラ)に応用される。なお、nは量子ビット数に対応する。
以下、従来のユニタリ行列の分解手法について説明する。
〔従来手法1〕
2n×2nのユニタリ行列を分解する手法として、KAK分解と呼ばれる行列分解の枠組みを用いる手法がある(例えば、特許文献1、非特許文献1等参照)。この手法では、2n×2nの特殊ユニタリ行列G∈SU(2n)を、行列K1,K2∈K(2n)と、2×2のユニタリ行列をブロックとするブロック対角行列Aとの積G=K1・A・K2に分解する(図23(a)参照)。なお、K(2n)は、2n-1×2n-1の特殊ユニタリ行列の集合SU(2n-1)と2n-1×2n-1の特殊ユニタリ行列の集合SU(2n-1)との直和からなる行列の集合である。
このように分解された2×2の要素をブロックとするブロック対角行列Aは、容易に量子2準位系で動作する量子コンピュータのための量子回路へ変換可能である(図23(b)参照)。一方、nが大きい場合、行列K1,K2を容易に量子回路に変換することはできない。そこで、行列K1をその部分行列K11∈SU(2n-1),K12∈SU(2n-1)に分解し、行列K2をその部分行列K21∈SU(2n-1),K22∈SU(2n-1)に分解する。ここで、行列K1は部分行列K11,K12の直和であり、行列K2は部分行列K21,K22の直和であるため、これらの部分行列への分解は容易である。そして、分解によってサイズが小さくなった部分行列K11,K12,K21,K22をそれぞれ新たな行列Gとして同様な処理を再帰的に行う。以上により、2n×2nのユニタリ行列が、量子回路に変換可能な行列に分解される。
〔従来手法2〕
また、dn×dn(d≧2)のユニタリ行列を分解する手法として、コサインサイン(Cosine-Sine)分解を用いる手法がある(例えば、非特許文献3等参照)。
この手法では、dn×dnの特殊ユニタリ行列G∈SU(dn)を、dn-1×dn-1のブロックG11、dn-1×(d-1)dn-1のブロックG12、(d-1)dn-1×dn-1のブロックG21、及び、(d-1)dn-1×(d-1)dn-1のブロックG22の4つのブロックに分割し、特異値分解によって各ブロックをG11= K11・D11・K21, G12= K11・D12・K22, G21= K12・D21・K21, G22= K12・D22・K22のように分解する(図24(a)参照)。ここで、ブロックD11,D12,D21,D22は、2×2の要素をブロックとするブロック対角行列Aに変換される。このブロック対角行列Aは、容易に量子d準位系で動作する量子コンピュータのための量子回路へ変換できる(図24(b)参照)。また、K11,K21∈SU(dn-1),K12,K22∈SU((d-1)dn-1)は、それぞれ新たな行列Gとされ、同様な処理が再帰的に行われる。以上により、dn×dn(d≧2)のユニタリ行列が、量子回路に変換可能な行列に分解される。図25は、d=2,n=5の場合のユニタリ行列の分解例である。分解のたびに分解対象の行列に対応する量子ビットの数が1つずつ減っているのが分かる。
特開2006−195587 Nakajima, Y., Kawano Y. and Sekigawa,H, "A new algorithm for producing quantum circuits using KAK decompositions," Quantum Information & Computation, Vol. 6, No. 1, pp. 067-080 (2006). Khan, F. A. and Perkowski, M. M."Synthesis of multi-qudit hybrid and d-valued quantum logic circuits by decomposition," Theoretical Computer Science, Vol. 367, No. 3, pp. 336-356 (2006). Paige, C. and Wei,M. "History and generality of the CS decomposition," Linear Algebra and its Applications, pp.303-326, 1994.
しかし、従来は、dn×dn(d≧3)のユニタリ行列を、量子d準位系で動作する量子コンピュータのための量子回路に変換可能な行列の積に効率的に分解する手法は存在しなかった。
すなわち、従来手法1は、2n×2nのユニタリ行列の分解のみに適用可能な手法であり、従来手法1をdn×dn(d≧3)のユニタリ行列の分解に適用することはできない。また、仮に従来手法1をdn×dn(d≧3)のユニタリ行列の分解に適用できたとしても、量子d準位系で動作する量子コンピュータに適した量子回路への変換に不適切な分解がなされてしまう場合がある。以下、この事例を説明する。
n個の量子ビット数を用いた量子d準位系にはdn個の基底が存在し、それらの基底はdn個のdn次元の基底ベクトル[1,0,....,0]T,[0,1,....,0]T,...,[0,0,....,1]T([・]Tは[・]の転置)で表現できる。また、n個の量子ビットの量子状態は、これらの基底ベクトルに係数(確率)を掛けたものを線形結合したベクトルで表現できる。そして、量子操作前の量子状態を表すベクトルに、量子操作を示すユニタリ行列を掛けた場合、量子操作後の量子状態を表すベクトルが得られる。ここで、従来手法よって生成されたブロック対角行列Aが2×2の対角ブロックを有するブロック対角行列であった場合、それぞれ2×2の対角成分は、量子状態を表すベクトルのうち2つの基底に対応する要素(係数)のみに作用する。そのため、この2×2の対角ブロック成分のみでは、3つ以上の基底に関する量子操作を完全に表現できない。このようなブロック対角行列Aを、各量子ビットが3つ以上の準位を持つ量子d(d≧3)準位系の量子回路に対応する行列にそのまま変換することはできない。
また、従来手法2をdn×dn(d≧3)のユニタリ行列の分解に適用した場合、1回の分解によってもなお(d-1)dn-1×(d-1)dn-1という大きなサイズの行列が生成されてしまう。その結果、行列を分解するための再帰的処理の回数も多くなり、最終的に分解される行列の数も多くなってしまう。
本発明はこのような点に鑑みてなされたものであり、dn×dn(d≧3)のユニタリ行列を、量子d準位系で動作する量子コンピュータのための量子回路に対応する行列の積に効率的に分解する技術的思想を提供することを目的とする。
本発明では上記課題を解決するために、入力された特殊ユニタリ行列G’∈SU(dn)を行列リストの要素として記憶部に格納する(行列格納過程)。次に、処理設定部が、記憶部に格納された行列リストの要素からサイズがdm×dm(n≧m≧2)の行列Gを読み出し、それを行列Gとする(処理設定過程)。次に、行列分解部が、行列Gを、行列K1,K2∈K(dm)と、dr×dr(r≧1)のユニタリ行列をブロックとするブロック対角行列A1との積G=K1・A1・K2に分解する(行列分解過程)。なお、c1, c2, tを実数とし、c1+c2=dtとし、pをp=c1・dm-t<(d-1)・dm-1を満たす整数とし、qをq=c2・dm-t≦p, 2・q≦dmを満たす整数とし、p×pの特殊ユニタリ行列の集合SU(p)とq×qの特殊ユニタリ行列の集合SU(q)との直和からなる行列の集合をK(dm)とする。次に、行列リスト更新部が、行列K1の部分行列K11∈SU(p),K12∈SU(q)と、行列K2の部分行列K21∈SU(p),K22∈SU(q)と、ブロック対角行列A1の対角ブロックのdr×drのユニタリ行列である部分行列とを、行列リストの要素として記憶部に格納し、これらの部分行列に対応する行列Gを行列リストの要素から排除する(行列リスト更新過程)。そして、行列リストの要素としてサイズがd×dよりも大きな行列が存在する限り、処理設定過程と行列分離過程と行列リスト更新過程とを繰り返し実行する。
ここで、行列分解過程では、行列Gを、行列K1,K2∈K(dm)と、dr×dr(r≧1)のユニタリ行列をブロックとするブロック対角行列A1との積G=K1・A1・K2に分解する。また、p×pの特殊ユニタリ行列の集合SU(p)とq×qの特殊ユニタリ行列の集合SU(q)との直和からなる集合K(dm)に属する行列K1,K2∈K(dm)は、それぞれp×pの部分行列K11, K21とq×qの部分行列K12, K22とに容易に分解できる。そして、q<p<(d-1)・dm-1であるため、部分行列K11, K12,K21, K22のサイズは、必ず(d-1)・dm-1×(d-1)・dm-1未満となる。そして、m≦nであるため、本発明の場合、1回の分解で従来手法2よりも小さなサイズの行列に分解できる。その結果、行列を分解するための再帰的処理の回数も削減でき、最終的に分解される行列の数も減らすことができる。
また、行列分解過程では、dr×dr(r≧1)のユニタリ行列をブロックとするブロック対角行列A1も得られるが、このようなブロック対角行列A1を、ブロック対角行列A1の対角部分に並ぶ部分ブロックであるdr×drのユニタリ行列に分解することは容易である。また、dr×drのユニタリ行列であれば、d個の準位をとる或る数の量子ビットに対する量子操作を完全に表現できる。よって、再帰的な処理を行うことによって、このようなdr×drの行列を量子回路に変換可能な行列に分解することは可能である。
以上のように、本発明では、dn×dn(d≧3)のユニタリ行列を、量子d準位系で動作する量子コンピュータのための量子回路に変換可能な行列の積に効率的に分解することができる。
以下、本発明を実施するための最良の形態を図面を参照して説明する。
〔使用する記号の定義〕
まず、本形態で使用する記号を以下のように定義する。
i:虚数単位(i2=-1)
A*:行列Aの複素共役転置行列
I:単位行列
0:成分が0の行列
diag(a,b,c,d):対角成分がa,b,c,dの順に並んだ対角行列
∈:左辺が右辺の集合の元
‖・‖:・のノルム
Figure 0004758965
SU(dm):サイズがdn×dnの特殊ユニタリ行列
K(dm):特殊ユニタリ行列の集合SU(p)と特殊ユニタリ行列の集合SU(q)との直和(ただし、p+q=dm)からなる行列の集合
floor(α):α以下の最大の整数
ceil(α):α以上の最小の整数
B[α,β]:行列Bのα行−β列の要素
〔原理〕
次に、本形態の原理について説明する。
前述のように、本形態では、まず、分解対象の特殊ユニタリ行列G’∈SU(dn)を行列リストの要素として記憶部に格納する(行列格納過程)。次に、処理設定部が、記憶部に格納された行列リストの要素からサイズがdm×dm(n≧m≧2)の行列Gを読み出し、それを行列Gとする(処理設定過程)。次に、行列分解部が、行列Gを、行列K1,K2∈K(dm)と、dr×dr(r≧1)のユニタリ行列をブロックとするブロック対角行列A1との積G=K1・A1・K2に分解する(行列分解過程)。なお、c1, c2, tを実数とし、c1+c2=dtとし、pをp=c1・dm-t<(d-1)・dm-1を満たす整数とし、qをq=c2・dm-t≦p, 2・q≦dmを満たす整数とし、p×pの特殊ユニタリ行列の集合SU(p)とq×qの特殊ユニタリ行列の集合SU(q)との直和からなる行列の集合をK(dm)とする。次に、行列リスト更新部が、行列K1の部分行列K11∈SU(p),K12∈SU(q)と、行列K2の部分行列K21∈SU(p),K22∈SU(q)と、ブロック対角行列A1の対角ブロックのdr×drのユニタリ行列である部分行列とを、行列リストの要素として記憶部に格納し、これらの部分行列に対応する行列Gを行列リストの要素から排除する(行列リスト更新過程)。そして、行列リストの要素としてサイズがd×dよりも大きな行列が存在する限り、処理設定過程と行列分離過程と行列リスト更新過程とを繰り返し実行する。
これにより、1回の分解で従来手法2よりも小さなサイズの行列に分解できるため、行列を分解するための再帰的処理の回数を削減でき、最終的に分解される行列の数も減らすことができる。また、前述のように本形態では、量子d準位系の量子コンピュータの量子回路に容易に変換可能な行列に分解できる。
また、tをm/2以上の最小の整数とし、c1をdt/2以上の最小の整数とし、c2をdt/2以下の最大の整数とした場合、1回の分解でほぼ同程度のサイズの行列へ分解できる。この場合、再帰的処理を行うたびに行列のサイズをすべて約半分にできるため、再帰的処理の回数を最大限削減できる。その結果、分解処理効率を最大化することができる。
〔第1実施形態〕
本形態は、KAK分解の性質を利用して行列分解過程を実行する形態である。
すなわち、本形態の行列分解過程では、まず、入力された行列Gの複素共役転置行列G*を生成し(第1複素共役転置行列生成過程)、行列X=ρ・G*・ρ・Gを生成する(第1行列積演算過程)。なお、ρは、S×S(S=dm-t)の単位行列Iと対角行列σとのテンソル積であり、σは1と-1とが対角成分に交互に並ぶdt×dtの対角行列σ=diag(1,-1,1,-1,...)である。次に、行列Xをブロック対角化する行列Pを生成し(対角化行列生成過程)、行列Pの複素共役転置行列P*を生成し(第2複素共役転置行列生成過程)、B=P*・X・Pの演算によってブロック対角行列Bを生成し(第2行列積演算過程)、このブロック対角行列BをG=K・M、K∈K(dm)、X=M2及びY=P*・M・Pを満たすブロック対角行列Yに変換する(ブロック対角行列変換過程)。そして、M=P・Y・P*の演算を行って行列Mを生成し(第3行列積演算過程)、行列Mの複素共役転置行列M*を生成し(第3複素共役転置行列生成過程)、K=G・M*の演算を行って行列Kを生成し(第4行列積演算過程)、K1=K・Pの演算を行って行列K1を生成する(第5行列積演算過程)。そして、G=K1・A1・K2を満たす、行列K1と、複素共役転置行列P*(=行列K2)と、ブロック対角行列Y(=ブロック対角行列A1)とを出力する。
ここで、上述のように生成されたρは、以下の関係を満たす。
Figure 0004758965
よって、第1行列積演算過程で生成された行列X=ρ・G*・ρ・Gは、G=K・Mを満たす特殊ユニタリ行列K,Mに対し、以下の関係を満たす。
X=ρ・G*・ρ・G
=ψ(G*) ・G((1)の関係より)
=ψ(M*・K*) ・K・M
=ψ(M*)・ψ(K*) ・K・M
=M・K*・K・M((1)の関係より)
=M2(Kがユニタリ行列でありK*・Kが単位行列となるため)
すなわち、d≧3であっても、行列GからG=K・M,X=M2を満たす行列Xを求めることは容易である。この点、従来手法1と相違する。また、この行列Xをブロック対角化する行列Pを生成し(対角化行列生成過程)、当該行列Pの複素共役転置行列P*を生成し(第2複素共役転置行列生成過程)、ブロック対角行列B=P*・X・Pを求める(第2行列積演算過程)ことも容易である。また、行列Pはユニタリ行列となりP・P*=Iを満たし、B=P*・X・P=P*・M2・P=(P*・M・P)(P*・M・P)=Y2となるから、ブロック対角行列Bからブロック対角行列Yへは規則的に変換できる(ブロック対角行列変換過程)。さらに、求められたブロック対角行列Yと行列Pと複素共役転置行列P*とからM=P・Y・P*の演算によって行列Mを生成し(第3行列積演算過程)、当該行列Mの複素共役転置行列M*を生成し(第3複素共役転置行列生成過程)、行列Gと複素共役転置行列M*とからK=G・M*の演算によって行列Kを生成することも容易である(第4行列積演算過程)。さらに、K1=K・Pの演算を行って行列K1を生成することも容易である(第5行列積演算過程)。
なお、第1実施形態の行列分解過程は、サイズがdm×dm(m≧2,d≧3)の行列Gを、行列K1,K2∈K(dm)と、dr×dr(r≧1)のユニタリ行列をブロックとするブロック対角行列A1との積G=K1・A1・K2に分解するものであり、c1, c2, tを実数とし、c1+c2=dtとし、pをp=c1・dm-t<(d-1)・dm-1を満たす整数とし、qをq=c2・dm-t≦p, 2・q≦dmを満たす整数とし、p×pの特殊ユニタリ行列の集合SU(p)とq×qの特殊ユニタリ行列の集合SU(q)との直和からなる行列の集合をK(dm)とした場合に広く適用可能なものである。しかし、以下では、説明の簡略化のため、tをm/2以下の最大の整数とし、c1をdt/2以上の最小の整数とし、c2をdt/2以下の最大の整数とした場合を例にとって説明する。
<ハードウェア構成>
図5は、第1実施形態におけるユニタリ行列分解装置100の構成を例示したブロック図である。
図5に例示するように、この例のユニタリ行列分解装置100は、CPU(Central Processing Unit)110、入力部120、出力部130、補助記憶装置140、RAM(Random Access Memory)150、ROM(Read Only Memory)160及びバス170を有している。
この例のCPU110は、制御部111、演算部112及びレジスタ113を有し、レジスタ113に読み込まれた各種プログラムに従って様々な演算処理を実行する。また、入力部120は、データが入力される入力ポート、キーボード、マウス等であり、出力部130は、データを出力する出力ポート、ディスプレイ等である。補助記憶装置140は、例えば、ハードディスク、MO(Magneto-Optical disc)、半導体メモリ等であり、本形態のユニタリ行列の分解処理を実行するためのユニタリ行列分解プログラムを格納したユニタリ行列分解プログラム領域141及び分解対象となるユニタリ行列G等の各種データが格納されるデータ領域142を有している。また、RAM150は、SRAM (Static Random Access Memory)、DRAM (Dynamic Random Access Memory)等であり、ユニタリ行列分解プログラムが書き込まれるユニタリ行列分解プログラム領域151及び分解対象となるユニタリ行列G等の各種データが格納されるデータ領域152を有している。また、バス170は、CPU110、入力部120、出力部130、補助記憶装置140、RAM150及びROM160を通信可能に接続している。
<ハードウェアとソフトウェアとの協働>
CPU110は、読み込まれたOS(Operating System)プログラムに従い、補助記憶装置140のユニタリ行列分解プログラム領域141に格納されているユニタリ行列分解プログラムを、RAM150のユニタリ行列分解プログラム領域151に書き込む。同様にCPU110は、補助記憶装置140のデータ領域142に格納されている分解対象のユニタリ行列等のデータを、RAM150のデータ領域152に書き込む。そして、このユニタリ行列分解プログラムやデータが書き込まれたRAM150上のアドレスがCPU110のレジスタ113に格納される。CPU110の制御部111は、レジスタ113に格納されたこれらのアドレスを順次読み出し、読み出したアドレスが示すRAM150上の領域からプログラムやデータを読み出し、そのプログラムが示す演算を演算部112に順次実行させ、その演算結果をレジスタ113に格納していく。
図1から図4は、このようにCPU110にユニタリ行列分解プログラムが読み込まれることにより実現されるユニタリ行列分解装置100の機能構成を例示したブロック図である。ここで、図1は、第1実施形態のユニタリ行列分解装置100の全体構成を示したブロック図であり、図2は、図1の行列分解部150の詳細構成を示したブロック図であり、図3(a)は、図2の対角化行列生成部154の詳細構成を示したブロック図である。また、図3(b)は、図1の処理設定部140の詳細構成を示したブロック図であり、図4は、行列リスト更新部170の詳細構成を示したブロック図である。
図1に示すように、本形態のユニタリ行列分解装置100は、入力部110と、出力部120と、記憶部130と、処理設定部140と、行列分解部150と、行列リスト更新部170と、制御部180と、一時記憶部190とを有する。また、図2に示すように、本形態の行列分解部150は、対角行列生成部151と、第1複素共役転置行列生成部152と、第1行列積演算部153と、対角化行列生成部154と、第2行列積演算部155と、第2複素共役転置行列生成部156と、ブロック対角行列変換部157と、第3行列積演算部158と、第3複素共役転置行列生成部159と、第4行列積演算部160と、第5行列積演算部とを有する。また、図3(a)に示すように、対角化行列生成部154は、固有値・固有ベクトル算出部154aと、第1リスト要素生成部154bと、第2リスト要素生成部154cと、行列配列部154dとを有する。また、図3(b)に示すように、処理設定部140は、パラメータ更新部141と、行列読み出し部142と、対角行列生成部143とを有する。さらに、行列リスト更新部170は、第1ベクトル生成部171と、第2ベクトル生成部172と、第1抽出行列生成部173と、第2抽出行列生成部174と、第1部分行列抽出部175と、第2部分行列抽出部176と、第3部分行列抽出部177と、第4部分行列抽出部178と、ブロック分割部179とを有する。
なお、記憶部130及び一時記憶部190は、レジスタ113、RAM150のデータ領域152、補助記憶装置140のデータ領域142等に相当する。また、処理設定部140、行列分解部150、行列リスト更新部170及び制御部180は、ユニタリ行列分解プログラムがCPU110に読み込まれることにより構成されるものである。
<処理>
次に本形態におけるユニタリ行列分解装置100の処理について説明する。
図6は本形態におけるユニタリ行列分解装置100の処理の全体を説明するためのフローチャートである。なお、以下の処理は制御部180(図1)の制御のもと実行される。また、以下では説明を省略するが、各処理過程におけるデータは、逐一一時メモリ190に格納され、格納されたデータは他の処理に利用される。
まず、入力部110(図1)に、分割対象のdn×dn(d≧3,n≧2)の特殊ユニタリ行列G’∈SU(dn)が入力され、リストLの要素として記憶部130に格納される(ステップS1/行列格納過程)。また、この際、入力部110にd,nの値も入力されて、記憶部130に格納される。
次に、処理設定部140のパラメータ更新部141(図3(b))が、記憶部130からnを読み込み、 t=floor(n/2)によってtを求めて出力する(ステップS2)。次に、対角行列生成部143に、このtと記憶部130から読み込まれたdとが入力され、対角行列生成部143は、1と-1とが対角成分に交互に並ぶdt×dtの対角行列σ=diag(1,-1,1,-1,...)を求めて出力する(ステップS3)。また、パラメータ更新部141から出力されたtは行列読み出し部142に送られ、行列読み出し部142は、記憶部130に格納されたリストLの要素からサイズがdt×dtよりも大きなdm×dm(n≧m≧2)の行列を読み出し、それを行列Gとする(処理設定過程/ステップS4)。なお、最初のループではm=nとなる。
次に、行列Gと対角行列σとdとtとmとは行列分解部150に入力され、行列分解部150は、これらを用い、行列Gを、行列K1,K2∈K(dm)と、dr×dr(r≧1)のユニタリ行列をブロックとするブロック対角行列A1と、の積G=K1・A1・K2に分解し、その分解された行列のリストであるリストL’を出力する(行列分解過程/ステップS5)。以下、行列分解過程/ステップS5(処理1)の詳細を説明する。
[行列分解過程/ステップS5(処理1)の詳細]
図7は、行列分解過程/ステップS5(処理1)の詳細を説明するためのフローチャートである。
まず、行列分解部150の対角行列生成部151(図2)にdとtとmとが入力され、対角行列生成部151は、S = N/dtを算出する(ステップにS11)。ただし、Nは行列Gのサイズ(N×N)である。次に、対角行列生成部151に対角行列σが入力され、対角行列σとS×Sの単位行列Iとのテンソル積を求め、その結果を行列ρとして出力する(ステップS12)。
次に、第1複素共役転置行列生成部152に行列Gが入力され、第1複素共役転置行列生成部152が、その複素共役転置行列Gを生成して出力する(第1複素共役転置行列生成過程)。次に、第1行列積演算部153に、行列ρと行列Gとその複素共役転置行列Gとが入力され、第1行列積演算部153は、行列X=ρ・G*・ρ・Gを生成して出力する(第1行列積演算過程/ステップS13)。
次に、対角化行列生成部154に行列Xが入力され、対角化行列生成部154は、入力された行列Xを用い、行列Xをブロック対角化する行列Pを生成して出力する(対角化行列生成過程/ステップS14)。
[対角化行列生成過程/ステップS14の詳細]
図8は、対角化行列生成過程/ステップS14の詳細を例示するためのフローチャートである。また、図9は図8におけるステップS32の詳細を、図10は図8におけるステップS33の詳細をそれぞれ説明するためのフローチャートである。
まず、対角化行列生成部154の固有値・固有ベクトル算出部154a(図3(a))に行列Xが入力され、固有値・固有ベクトル算出部154aは、その固有値と固有ベクトルとを算出し、
リストE=[[虚の固有値,対応する固有ベクトル],・・・]
リストE=[[実の固有値,対応する固有ベクトル],・・・]
となるリストE,Eを一時記憶部190に格納する(ステップS31)。
次に、第1リスト要素生成部153bにリストE1と行列ρとが入力される。第1リスト要素生成部153bは、対応する固有値が虚数である固有ベクトルuk(kは自然数)に対し、ベクトルuk+ρ・uk及びuk-ρ・ukを生成し、当該ベクトルuk+ρ・uk及びuk-ρ・ukをリストV1の要素として出力する(第1リスト要素生成過程/ステップS32(処理5))。
この例の場合(図9)、まず、第1リスト要素生成部153bは、ck=0と初期化し、ckにck+1の演算結果を代入し(ステップS41)、リストE1からまだ調べていない正の固有値(符号が正の固有値)を1つ選び、対応する固有ベクトルukを抽出する(ステップS42)。そして、第1リスト要素生成部153bは、この固有ベクトルukに対し、
V1[2ck‐1]=uk+ρ・uk
V1[2ck]=uk‐ρ・uk
を計算し、これらをリストV1の要素として一時記憶部190に格納する(ステップS43)。その後、この例の第1の要素生成部412は、リストEに、まだ調べていない正の固有値が存在するか否かを判断し(ステップS44)、存在すればステップS41以降の処理に戻り、存在しなければステップS32(図9)の処理を終了する。なお、この例の処理の場合、V1は複素共役な固有値のペアに対応するベクトルのペアを[u1+ρ・u1,u1‐ρ・u1, u2+ρ・u2,u2‐ρ・u2,・・・]と配列したリストとなる。なお、図9の例では、ステップS42において、リストE1からまだ調べていない正の固有値(符号が正の固有値)を1つ選び、対応する固有ベクトルuを抽出することとし、ステップS44において、ストEに、まだ調べていない正の固有値が存在するか否かを判断することとしたが、ステップS42において、リストE1からまだ調べていない負の固有値(符号が負の固有値)を1つ選び、対応する固有ベクトルuを抽出することとし、ステップS44において、リストEに、まだ調べていない負の固有値が存在するか否かを判断することとしてもよい。要は、複素共役な固有値のペアに対応する固有ベクトルuを用いればよい。
ステップS32の処理が終了すると、次に第2リスト要素生成部153c(図3)にリストE1と行列ρとが入力される。第2リスト要素生成部153cは、対応する固有値が実数である固有ベクトルukのうち、uk+ρ・uk=ukを満たす固有ベクトルukをリストW1の要素として出力し、uk-ρ・uk=-ukを満たす固有ベクトルukに対するベクトル-ukをリストW2の要素として出力し、対応する固有値が実数である固有ベクトルukについて (uk+ρ・uk)/‖uk+ρ・uk‖(‖α‖はαのノルムを示す)をリストW1及びW2の要素として出力する(第2リスト要素生成過程/ステップS33(図8))。
この例の場合(図10)、まず、第2リスト要素生成部153cは、c1=1,c2=1と初期化し、リストEからまだ調べていない固有ベクトルを1つ選びukとする(ステップS51)。次に、第2リスト要素生成部153cは、このukがuk+ρ・uk=ukを満たすか否かを判断し(ステップS52)、満たす場合にのみW1[c1]=ukをリストW1の要素として一時記憶部190に格納し、c1=c1+1の演算を行う(ステップS53)。次に、第2リスト要素生成部153cは、ukがuk+ρ・uk=-ukを満たすか否かを判断する(ステップS54)。そして第2リスト要素生成部153cは、uk+ρ・uk=-ukを満たす場合にのみ、W2[c2]=-ukをリストW2の要素として一時記憶部190に格納し、c2=c2+1の演算を行う(ステップS55)。次に、第2リスト要素生成部153cは、(uk+ρ・uk)/‖uk+ρ・uk‖を計算し、これをリストW1の要素W1[c1]として一時記憶部190に格納し、c1=c1+1の演算を行う(ステップS56)。また、第2リスト要素生成部153cは、(uk+ρ・uk)/‖uk+ρ・uk‖を計算し、これをリストW2の要素W2[c2]として一時記憶部190に格納し、c2=c2+1の演算を行う(ステップS57)。
その後、第2リスト要素生成部153cは、リストEに、まだ調べていない固有ベクトルが存在するか否かを判断し(ステップS58)、存在すればステップS51以降の処理に戻り、存在しなければ、リストW1,W2について、それぞれ線形従属な要素を削除した後、各ベクトルを正規直行化し(ステップS59)、ステップS33(図8)の処理を終了する。
ステップS33の処理が終了すると、行列構成部414は、dが奇数であるか否かを判断する(ステップS34)。ここで、dが奇数でなければ、行列構成部414は、V1, W1, W2 に含まれるベクトルを重複させることなく列方向に順番に並べて行列Pを作り、出力する(ステップS38)。なお、ベクトルの並べ方に制限はない。一方、dが奇数であれば、行列構成部414は、V’= [V1,W2]に含まれるベクトルを列方向にdt-1個並べた後、W1に含まれるベクトルを1個並べる処理(ステップS35)を、V’に含まれるベクトルをすべて使用するまで繰り返す(ステップS36)。そして、その後に、W1に含まれる残りのベクトルを列方向に並べ、行列Pとする(行列配列過程/ステップS37)。なお、dが奇数の場合については、リストV1又はリストW2に属するdt-1個の要素とリストW1の1個の要素とからなるdt列のベクトル列を、リストV1、リストW1及びリストW2の各要素をそれぞれ重複させることなく用いてリストV1及びリストW2のすべての要素を使い切るまで生成し、生成された各dt列のベクトル列とリストW2の残りの要素とを列方向に並べた行列を行列Pとして生成するのであれば、ステップS35〜S37の処理以外の順序で処理してもよい。例えば、V’= [V1,W2]に含まれるベクトルを列方向にdt-1個並べた後、W1に含まれるベクトルを1個並べる処理(ステップS35)の代わりに、W 1に含まれるベクトルを1個並べた後にV’= [V1,W2]に含まれるベクトルを列方向にdt-1個並べる処理をおこなってもよい([対角化行列生成過程/ステップS14の詳細]の説明終わり)。
ステップS14の処理が終了すると(図7に戻る)、次に第2複素共役転置行列生成部156に行列Pが入力され、第2複素共役転置行列生成部156は、その行列Pの複素共役転置行列P*を生成して出力する(第2複素共役転置行列生成過程)。次に、第2行列積演算部155に、行列Xと複素共役転置行列P*とが入力され、第2行列積演算部155は、これらを用い、B=P*・X・Pの演算によってブロック対角行列Bを生成し、出力する(第2行列積演算過程/ステップS15)。
次に、ブロック対角行列変換部157にブロック対角行列Bが入力され、ブロック対角行列変換部157は、入力されたブロック対角行列Bを、G=K・M、K∈K(dm)、X=M2及びY=P*・M・Pを満たすブロック対角行列Yに変換し、出力する(ブロック対角行列変換過程/ステップS16(処理3))。ここで、ブロック対角行列Bは、2×2の行列或いは1が対角成分に並び他の要素が0のブロック対角行列である。また、前述の通りブロック対角行列Bとブロック対角行列YとはB=P*・X・P=P*・M2・P=(P*・M・P)(P*・M・P)=Y2の関係を満たす。よって、ブロック対角行列Bからブロック対角行列Yへの変換は、ブロック対角行列Bの対角部分に並んだ正方行列Cを正方行列E(C=E2を満たす)に置き換えることのみによって可能である。これにより、低い演算コストでブロック対角行列Bからブロック対角行列Yへの変換を行うことができる。以下、このブロック対角行列変換過程/ステップS16(処理3)の詳細を例示する。
[ブロック対角行列変換過程/ステップS16(処理3)の詳細]
図11は、ブロック対角行列変換過程/ステップS16(処理3)の詳細を説明するためのフローチャートである。
まず、ブロック対角行列変換部157は、k=1に初期化し(ステップS71)、B[k,k]=1であるか否かを判断する(ステップS72)。
ここで、B[k,k]=1であると判断された場合、ブロック対角行列変換部157は、k+1を新たなkとし(ステップS73)、kは行列Bのサイズ(dm)より小さいか否かを判断する(ステップS79)、ここで、kが行列Bのサイズ(dm)以上であればステップS16の処理を終了する。一方、kが行列Bのサイズ(dm)より小さければ、ステップS72の処理に戻る。
一方、ステップS72でB[k,k]=1でないと判断された場合、ブロック対角行列変換部157は、
Figure 0004758965
とする(ステップS74)。
ここで、Cは
Figure 0004758965
で書けるため、ブロック対角行列変換部157は、Cを
Figure 0004758965
で置き換える(ステップS77)。なお、式(3)の代わりに、以下の
Figure 0004758965
によってCを置き換えてもよい。
その後、ブロック対角行列変換部157は、k+2を新たなkとし(ステップS78)、前述のステップS79の処理に進む([ブロック対角行列変換過程/ステップS16(処理3)の詳細]の説明終わり)。
ステップS16の処理が終了すると、次に第3行列積演算部158に、行列Pと複素共役転置行列P*とブロック対角行列変換部157から出力された行列Yとが入力され、第3行列積演算部158は、M=P・Y・P*の演算を行って行列Mを生成し、出力する(第3行列積演算過程)。また、第3複素共役転置行列生成部159に行列Mが入力され、第3複素共役転置行列生成部159は、その複素共役転置行列M*を生成して出力する(第3複素共役転置行列生成過程)。また、第4行列積演算部160に行列Gと複素共役転置行列M*とが入力され、第4行列積演算部160は、K=G・M*の演算を行って行列Kを生成し、出力する(第4行列積演算過程)。さらに、第5行列積演算部161に行列Pと行列Kとが入力され、第5行列積演算部161は、K1=K・Pの演算を行って行列K1を生成し、出力する(第5行列積演算過程)。そして、行列分割部150は、行列K1と行列K2(=P*)と行列A1(=Y)とを出力する(ステップS17)。
次に、行列リスト更新部170(図1)が、行列K1の部分行列K11∈SU(p),K12∈SU(q)と、行列K2の部分行列K21∈SU(p),K22∈SU(q)とを抽出する(ステップS18(処理4))。以下、この処理の詳細を説明する。
[ステップS18(処理4)の詳細]
図12は、ステップS18(処理4)の詳細を説明するためのフローチャートである。
まず、行列リスト更新部170の第1ベクトル生成部171(図4)に行列ρが入力され、第1ベクトル生成部171は、ρの対角成分からなるベクトルの-1の要素を0に置換したベクトルτ1を生成し、出力する(第1ベクトル生成過程/ステップS81)。また、第2ベクトル生成部172に行列ρが入力され、第2ベクトル生成部172は、ρの対角成分からなるベクトルの1の要素を0に置換したベクトルτ2を生成し、出力する(第2ベクトル生成過程/ステップS82)。
次に、第1抽出行列生成部173にベクトルτ1が入力され、第1抽出行列生成部173は、行列T11・τ1 T(αTは転置ベクトル)生成し、出力する(第1抽出行列生成過程)。また、第2抽出行列生成部174にベクトルτ2が入力され、第2抽出行列生成部174が、行列T22・τ2 Tを生成し、出力する(第2抽出行列生成過程/ステップS83)。
その後、第1部分行列抽出部175に、行列T1と行列K1とが入力され、第1部分行列抽出部175は、行列K1から、行列T1の行列成分が1である行−列の要素のみを取り出した部分行列K11を生成し、出力する(第1部分行列抽出過程/ステップS84)。例えば、このように行列K1から取り出した要素の行と列とをつめたものを部分行列K11とする。同様に、第2部分行列抽出部176に、行列T2と行列K1とが入力され、第2部分行列抽出部176は、行列K1から、行列T2の行列成分が1である行−列の要素のみを取り出した部分行列K12を生成し、出力する(第2部分行列抽出過程/ステップS85)。同様に、第3部分行列抽出部177に、行列T1と行列K2とが入力され、第3部分行列抽出部177は、行列K2から、行列T1の行列成分が1である行−列の要素のみを取り出した部分行列K12を生成し、出力する(第3部分行列抽出過程/ステップS86)。同様に、第4部分行列抽出部178に、行列T2と行列K2とが入力され、第4部分行列抽出部178は、行列K2から、行列T2の行列成分が1である行−列の要素のみを取り出した部分行列K22を生成し、出力する(第4部分行列抽出過程/ステップS87)([ステップS18(処理4)の詳細]の説明終わり)。
次に、ブロック分割部179(図4)に、ブロック対角行列A1が入力され、ブロック分割部179は、ブロック対角行列A1の対角ブロックのdt×dtのユニタリ行列を部分行列BA1,BA2,...,BAhとして取り出し、出力する(ステップS19)。そして、行列リスト更新部170は、リストL’の要素として [[K11,K12], BA1,BA2,...,BAh, [K21,K22]]を出力する(ステップS20)([行列分解過程/ステップS5(処理1)の詳細]の説明終わり)。
ステップS5の処理が終了すると(図6に戻る)、次に、制御部180は、リストL’にサイズがdt×dtよりも大きな行列が含まれるか否かを判断する(ステップS6)。ここで、リストL’にサイズがdt×dtよりも大きな行列が含まれると判断された場合には、処理がステップS4に戻される。一方、リストL’にサイズがdt×dtよりも大きな行列が含まれないと判断された場合には、リストLにリストL’に含まれる部分行列を追加し、これらの部分行列に対応する行列GをリストLの要素から排除する(ステップS7)。
次に、制御部180は、リストLにd×dよりも大きな行列が含まれるか否かを判断する(ステップS8)。リストLにd×dよりも大きな行列が含まれると判断された場合には、処理設定部140のパラメータ設定部141がfloor(t/2)を新たなtとし、処理がステップS3に戻される(ステップS9)。一方、リストLにd×dよりも大きな行列が含まれないと判断された場合には、処理を終了する。
<実施例>
次に、d=3,n=2の場合の本形態の実施例を説明する。
本実施例では、入力行列を
Figure 0004758965
とする。
ステップS2(図6)では、t=1とされ、ステップS3では、3×3の対角行列σが生成される。ステップS4では、上記の行列がGとされ、ステップS5に属するステップS11(図7)では、S=32-1=3となり、ステップS12ではρ=(1,-1,1,1,-1,1,1,-1,1)となる。また、ステップS13で行列X=ρ・G*・ρ・Gを計算すると、
Figure 0004758965
となる。
次に、ステップS14に属するステップS31でXの固有値を求めると
(1,-1,1,-1,1,-1,1,-1,1)
となる。
ここで、固有値1に対する固有ベクトルは、
Figure 0004758965
となり、固有値−1に対する固有ベクトルは、
Figure 0004758965
となる。
図8の処理に従って行列Pを計算すると、行列Pは、
Figure 0004758965
となる。
次に、ステップS15で、B=P*・X・Pを計算すると、
B=diag(-1,-1,-1,-1,1,1,1,1)
となる。これをステップS16で行列Yに書き換えると、
Figure 0004758965
となる。次に、ステップS17でM=P・Y・P*を計算すると、
Figure 0004758965
となる。さらに、K=G・M*を計算すると、
Figure 0004758965
となる。また、K1=K・Pを計算すると、
Figure 0004758965
となる。そして、ステップS18で部分行列K11,K12,K21,K22を取り出すと、
Figure 0004758965
Figure 0004758965
ここで、3×3よりも大きな行列K11,K12については(ステップS8)、ステップS4に戻り、ρ=(1,-1,1,1,-1,1)(ステップS3)についてステップ4以降の処理を繰り返す。行列K12,K22については3×3行列なので繰り返しは行わない。
図13は、本形態によって分割された行列を量子回路に変換した図である。ここで図13(a)は、dが奇数の場合の例であり、図13(b)はdが偶数の場合の例である。このように、dが奇数が偶数かによってゲートの形が変化する。
図14は、d=2,n=5の場合に本形態を適用して分解された行列に対応する量子回路を示した図である。また、図15は、d=3,n=5の場合に本形態を適用して分解された行列に対応する量子回路を示した図である。いずれも、分解のたびに分解対象となる行列に対応する量子ビットの数が約半分にできていることが分かる。
〔第2実施形態〕
次に、本発明の第2実施形態について説明する。
本形態は、コサインサイン(cosine-sin)分解を利用して行列分解過程を実行する形態である。
すなわち、本形態の行列分解過程では、まず、dm×dmの行列Gを、q×qのブロックG11と、q×pのブロックG12と、p×qのブロックG21と、p×pのブロックG22とに分割してコサインサイン分解を行い、行列Gを、4つの対角行列D11,D12,D21,D22と単位行列とを要素に含む行列Dと、行列K1,K2∈K(dm)と、の積G=K1・D・K2に分解する(コサインサイン分解過程)。なお、c1, c2, tを実数とし、c1+c2=dtとし、pをp=c1・dm-t<(d-1)・dm-1を満たす整数とし、qをq=c2・dm-t≦p, 2・q≦dmを満たす整数とし、p×pの特殊ユニタリ行列の集合SU(p)とq×qの特殊ユニタリ行列の集合SU(q)との直和からなる行列の集合をK(dm)とする。次に、4つの対角行列D11,D12,D21,D22の各対角成分D11[j,j],D12[j,j],D21[j,j],D22[j,j]を要素とする2×2の行列Rjを生成し、当該行列Rjを出力する(ブロック抽出過程)。ここで、dが偶数である場合には、重複しないようにd/2個選択された行列Rjをブロックとしたd×dのブロック対角行列と、2×2の単位行列と、をブロックとするブロック対角行列A1を生成し、dが奇数である場合には、ηをdt/2以下の最大の整数とした場合におけるη個の上記行列Riと1つの1とを対角成分に配置したdt×dtのブロック対角行列をブロックとするブロック対角行列A1を生成する(ブロック対角化過程)。
ここで本形態ではp=c1・dm-t<(d-1)・dm-1としているため、1回の分解で分割される行列のサイズは、p=(d-1)・dm-1としていた従来手法2よりも小さい。これにより、行列を分解するための再帰的処理の回数を削減でき、最終的に分解される行列の数も減らすことができる。また、ブロック対角化過程では、dが奇数である場合に、ηをdt/2以下の最大の整数とした場合におけるη個の上記行列Riと1つの1とを対角成分に配置したdt×dtのブロック対角行列をブロックとするブロック対角行列A1を生成することとしたため、量子d準位系の量子コンピュータの量子回路に容易に変換可能な行列に分解できる。
なお、第2実施形態の行列分解過程は、サイズがdm×dm(m≧2,d≧3)の行列Gを、行列K1,K2∈K(dm)と、dr×dr(r≧1)のユニタリ行列をブロックとするブロック対角行列A1との積G=K1・A1・K2に分解するものであり、c1, c2, tを実数とし、c1+c2=dtとし、pをp=c1・dm-t<(d-1)・dm-1を満たす整数とし、qをq=c2・dm-t≦p, 2・q≦dmを満たす整数とした場合に広く適用可能なものである。しかし、以下では、説明の簡略化のため、tをm/2以下の最大の整数とし、c1をdt/2以上の最小の整数とし、c2をdt/2以下の最大の整数とした場合を例にとって説明する。また、第1実施形態と共通する事項については説明を省略する。
<ハードウェア構成>
第1実施形態と同じであるため説明を省略する。
<ハードウェアとソフトウェアとの協働>
本形態のユニタリ行列分解装置もCPUにユニタリ行列分解プログラムが読み込まれることによって構成されるものである。
図16,17は、このようにCPU110にユニタリ行列分解プログラムが読み込まれることにより本形態のユニタリ行列分解装置200の機能構成を例示したブロック図である。ここで、図16は、第2実施形態のユニタリ行列分解装置200の全体構成を示したブロック図であり、図17(a)は、図16の処理設定部240の詳細構成を示したブロック図であり、図17(b)は、図16の行列分解部250の詳細構成を示したブロック図である。なお、これらの図において、第1実施形態と共通する部分については、第1実施形態と同じ符号を付した。
図16に示すように、本形態のユニタリ行列分解装置200は、入力部110と、出力部120と、記憶部130と、処理設定部240と、行列分解部250と、行列リスト更新部270と、制御部180と、一時記憶部190とを有する。また、図17(a)に示すように、本形態の処理設定部240は、パラメータ設定部241と行列読み出し部242とを有する。また、図17(b)に示すように、本形態の行列分解部250は、コサインサイン分解部251と、ブロック抽出部252と、ブロック対角化部253とを有する。また、コサインサイン分解部251は、パラメータ設定部251aと、ブロック分割部251bと、特異値分割部251cと、アークコサイン部251dと、ブロック算出部251d,251eとを有する。
なお、処理設定部240、行列分解部250、行列リスト更新部270は、ユニタリ行列分解プログラムがCPUに読み込まれることにより構成されるものである。
<処理>
次に本形態におけるユニタリ行列分解装置200の処理について説明する。
図18は本形態におけるユニタリ行列分解装置200の処理の全体を説明するためのフローチャートである。
まず、入力部110(図16)に、分割対象のdn×dn(d≧3,n≧2)の特殊ユニタリ行列G’∈SU(dn)が入力され、リストLの要素として記憶部130に格納される(ステップS101/行列格納過程)。また、この際、入力部110にd,nの値も入力されて記憶部130に格納される。
次に、処理設定部240のパラメータ更新部241(図17(a))が、記憶部130からnを読み込み、t=ceil(n/2)によってtを求めて出力する(ステップS102)。パラメータ更新部241から出力されたtは行列読み出し部242に送られ、行列読み出し部242は、記憶部130に格納されたリストLの要素からサイズがdm-t×dm-t(なお、最初のループではm=nである)よりも大きな行列を読み出し、それを行列Gとする(処理設定過程/ステップS104)。また、行列Gのサイズをdm×dmとしてmの値を更新する。
次に、行列Gとdとtとmとが行列分解部250に入力され、行列分解部250は、これらを用い、行列Gを、行列K1,K2∈K(dm)と、dr×dr(r≧1)のユニタリ行列をブロックとするブロック対角行列A1と、の積G=K1・A1・K2に分解し、その分解された行列のリストであるリストL’を出力する(行列分解過程/ステップS104)。以下、行列分解過程/ステップS105(処理11)の詳細を説明する。
[行列分解過程/ステップS104の詳細(処理11)]
図19は、本形態の行列分解過程/ステップS104の詳細(処理11)の詳細を説明するためのフローチャートである。
まず、コサインサイン分解部251(図17)が、dm×dmの行列Gを、q×qのブロックG11と、q×pのブロックG12と、p×qのブロックG21と、p×pのブロックG22とに分割してコサインサイン分解を行い、行列Gを、4つの対角行列D11,D12,D21,D22と単位行列とを要素に含む行列Dと、行列K1,K2∈K(dm)と、の積G=K1・D・K2に分解する(コサインサイン分解過程/ステップS111(処理12))。ここで、コサインサイン分解過程/ステップS111(処理12)を説明する。
[コサインサイン分解過程/ステップS111(処理12)の詳細]
図20は、図19のステップS111の詳細を説明するためのフローチャートである。
まず、サインサイン分解部251のパラメータ設定部251a(図17)にt,d,mが入力され、パラメータ設定部251aは、q=dn-t・floor(dt/2) によってqを算出して出力する(ステップS121)。次に、ブロック分割部251bにq,G,mが入力され、ブロック分割部251bは、これらの情報を用い、行列Gを
Figure 0004758965
ブロックG11: q×q
ブロックG12: q×(dn-q)
ブロックG21:(dn-q)×q
ブロックG22:(dn-q)×(dn-q)
のサイズで4分割し、ブロックG11, G12, G21, G22を出力する(ステップS122)。
次に、特異値分割部251cにブロックG11が入力され、特異値分割部251cは、G11=K11・D11・K21の特異値分解を行い、分割されたK11, D11, K21を出力する。なお、D11 =diag (d1, d2, …, dq )は、1>d1≧d2≧d3≧…≧dq>0 を満たすものとする。なお、特異値分割については「伊理正夫:岩波講座 応用数学『線形代数II』,pp.251-253,岩波書店,1994.」「島内剛一,有澤誠,野下造平,浜田穂積,伏見正則:『アルゴリズム辞典』,p.564,共立出版,1994.」等参照。
さらに、分割されたD11を用いてD22 = D11を求め、出力する(ステップS123)。次に、アークコサイン部251dにD11が入力され、アークコサイン部251dは、D11= diag(d1, d2, …, dJ )について、角度φk = arccos dk; (0≦φk<π, k =1,2,…,q) を求め、出力する(ステップS124)。これらの角度φkは、ブロック算出部251dに入力され、ブロック算出部251dは、φk (k = 1, 2,…, q)より、D12= diag(sinφ1, sinφ2, …, sinφq)を算出し、さらに、D21=-D12を求め、これらを出力する(ステップS125)。次に、ブロック算出部251eにG11, G12, K11, D11, D12が入力され、ブロック算出部251eは、K22 =D12*・ K11 *・ G12 及びK12 =G21・D21 * によってK22, K12を算出し、出力する(ステップS126)。そして、コサインサイン分解部251は、リストL’の要素としてK12, K12, D11, D12, D21, D22, K21, K22を出力する(ステップS127)([コサインサイン分解過程/ステップS111(処理12)の詳細]の説明終わり)。
次に、ブロック抽出部252にD11, D12, D21, D22が入力され、ブロック抽出部252は、4つの対角行列D11,D12,D21,D22の各j行j列目の対角成分D11[j,j],D12[j,j],D21[j,j],D22[j,j]を要素とする2×2の行列Rj
Figure 0004758965
と生成し、当該行列Rjを出力する(ブロック抽出過程/ステップS112)。
行列Rjはブロック対角化部253に入力される。また、ブロック対角化部253には、dも入力され、ブロック対角化部253は、dが偶数であるか否かを判断する(ステップS113)。ここで、dが偶数であれば、ブロック対角化部253は、重複しないようにd/2個選択された行列Rjをブロックとしたd×dのブロック対角行列と、2×2の単位行列と、をブロックとするブロック対角行列A1を生成する。すなわち、
Figure 0004758965
(なお、ζ>dm-tのときは、行列Rζを2×2の単位行列として式(8)の演算を行う)
をブロックとするブロック対角行列A1を生成する(ブロック対角化過程/ステップS114)。
一方、dが奇数である場合には、ブロック対角化部253は、ηをdt/2以下の最大の整数とした場合におけるη個の上記行列Riと1つの1とを対角成分に配置したdt×dtのブロック対角行列をブロックとするブロック対角行列A1を生成する。例えば、bi = diag (R(i-1)・η+1, R(i-1)・η+2,…, R(i-1)・η+η, 1)とする (ブロック対角化過程/ステップS115)。そして、ブロック対角化部253は、リストL’におけるDに対応する要素を、生成した対角行列A1の対角ブロック[b1, b2,...,bs]で置き換える。なお、リストL’にDに対応する要素がなければ、生成した対角行列A1の対角ブロック[b1, b2,...,bs]をリストL’に追加する。なお、dが偶数ならs=d・(m-1)であり、奇数ならs=dm-tである(ステップS116)。図21に、このような方法によって行列が分解された様子を示す。また、図22は、このように分割された行列を量子回路に変換した図である。ここで図22(a)は、dが奇数の場合の例であり、図22(b)はdが偶数の場合の例である。このように、dが奇数が偶数かによってゲートの形が変化する([コサインサイン分解過程/ステップS111(処理12)の詳細]の説明終わり)。
ステップS116の処理が終了すると(図18に戻る)、次に、制御部180は、リストL’にサイズがdt×dtよりも大きな行列が含まれるか否かを判断する(ステップS106)。ここで、リストL’にサイズがdt×dtよりも大きな行列が含まれると判断された場合には、処理がステップS104に戻される。一方、リストL’にサイズがdt×dtよりも大きな行列が含まれないと判断された場合には、リストLに含まれる行列Gに対応する要素を、リストL’に含まれる要素で置き換える(ステップS107)。
次に、制御部180は、リストLにd×dよりも大きな行列が含まれるか否かを判断する(ステップS108)。リストLにd×dよりも大きな行列が含まれると判断された場合には、処理設定部240のパラメータ設定部241がceil(t/2)を新たなtとし、処理がステップS104に戻される(ステップS109)。一方、リストLにd×dよりも大きな行列が含まれないと判断された場合には、処理を終了する。
なお、本発明は上述の実施の形態に限定されるものではない。例えば、上述の各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。その他、本発明の趣旨を逸脱しない範囲で適宜変更が可能であることはいうまでもない。
また、上述の構成をコンピュータによって実現する場合、各装置が有すべき機能の処理内容はプログラムによって記述される。そして、このプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。
この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等どのようなものでもよいが、具体的には、例えば、磁気記録装置として、ハードディスク装置、フレキシブルディスク、磁気テープ等を、光ディスクとして、DVD(Digital Versatile Disc)、DVD−RAM(Random Access Memory)、CD−ROM(Compact Disc Read Only Memory)、CD−R(Recordable)/RW(ReWritable)等を、光磁気記録媒体として、MO(Magneto-Optical disc)等を、半導体メモリとしてEEP−ROM(Electronically Erasable and Programmable-Read Only Memory)等を用いることができる。
また、このプログラムの流通は、例えば、そのプログラムを記録したDVD、CD−ROM等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。
このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶装置に格納する。そして、処理の実行時、このコンピュータは、自己の記録媒体に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。また、このプログラムの別の実行形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。また、サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるASP(Application Service Provider)型のサービスによって、上述の処理を実行する構成としてもよい。なお、本形態におけるプログラムには、電子計算機による処理の用に供する情報であってプログラムに準ずるもの(コンピュータに対する直接の指令ではないがコンピュータの処理を規定する性質を有するデータ等)を含むものとする。
また、この形態では、コンピュータ上で所定のプログラムを実行させることにより、本装置を構成することとしたが、これらの処理内容の少なくとも一部をハードウェア的に実現することとしてもよい。
本発明の産業上の利用分野としては、量子コンピュータの量子コンパイラ分野を例示できる。本発明を適用することにより、容易に任意のユニタリ変換量子回路を量子コンピュータの実行命令に適したゲートに分解することができる。
図1は、第1実施形態のユニタリ行列分解装置の全体構成を示したブロック図である。 図2は、図1の行列分解部の詳細構成を示したブロック図である。 図3(a)は、図2の対角化行列生成部の詳細構成を示したブロック図であり、図3(b)は、図1の処理設定部の詳細構成を示したブロック図である。 図4は、図1の行列リスト更新部の詳細構成を示したブロック図である。 図5は、第1実施形態におけるユニタリ行列分解装置の構成を例示したブロック図である。 図6は、第2実施形態におけるユニタリ行列分解装置の処理の全体を説明するためのフローチャートである。 図7は、行列分解過程/ステップS5(処理1)の詳細を説明するためのフローチャートである。 図8は、対角化行列生成過程/ステップS14の詳細を例示するためのフローチャートである。 また、図9は図8におけるステップS32の詳細を説明するためのフローチャートである。 図10は図8におけるステップS33の詳細を説明するためのフローチャートである。 図11は、ブロック対角行列変換過程/ステップS16(処理3)の詳細を説明するためのフローチャートである。 図12は、ステップS18(処理4)の詳細を説明するためのフローチャートである。 図13は、第1実施形態によって分割された行列を量子回路に変換した図である。ここで図13(a)は、dが奇数の場合の例であり、図13(b)はdが偶数の場合の例である。 図14は、d=2,n=5の場合に第1実施形態を適用して分解された行列に対応する量子回路を示した図である。 図15は、d=3,n=5の場合に第1実施形態を適用して分解された行列に対応する量子回路を示した図である。 図16は、第2実施形態のユニタリ行列分解装置の全体構成を示したブロック図である。 図17(a)は、図16の処理設定部の詳細構成を示したブロック図であり、図17(b)は、図16の行列分解部の詳細構成を示したブロック図である。 図18は第2実施形態におけるユニタリ行列分解装置の処理の全体を説明するためのフローチャートである。 図19は、第2実施形態の行列分解過程/ステップS104の詳細(処理11)の詳細を説明するためのフローチャートである。 図20は、図19のステップS111の詳細を説明するためのフローチャートである。 図21は、第2実施形態の方法によって行列が分解された様子を例示した図である。 図22は、第2実施形態の方法によって分割された行列を量子回路に変換した図である。ここで図22(a)は、dが奇数の場合の例であり、図22(b)はdが偶数の場合の例である。 図23(a)は、従来手法1による行列分解の様子を示した図である。図23(b)は、それに対応する量子回路を示した図である。 図24(a)は、従来手法2による行列分解の様子を示した図である。図24(b)は、それに対応する量子回路を示した図である。 図25は、従来手法2によって分解された行列に対応する量子回路を示した図である。
符号の説明
100,200 ユニタリ行列分解装置

Claims (6)

  1. プログラムがコンピュータに読み込まれることでそれぞれ構成される記憶部と処理設定部と行列分解部と行列リスト更新部と制御部とを有するユニタリ行列分解装置で実行され、量子コンピュータ上の演算を表すサイズがdn×dn(d≧3,n≧2)の特殊ユニタリ行列SU(dn)を、量子コンピュータのための量子回路に対応する疎行列の積に分解するユニタリ行列分解方法であって、
    入力された特殊ユニタリ行列G’∈SU(dn)を行列リストの要素として上記記憶部に格納する行列格納過程と、
    上記処理設定部が、上記記憶部に格納された行列リストの要素からサイズがdm×dm(n≧m≧2)の行列を読み出し、それを行列Gとする処理設定過程と、
    上記行列分解部が、m/2以下の最大の整数又はm/2以上の最小の整数をtとし、d t /2以上の最小の整数をc 1 とし、d t /2以下の最大の整数をc 2 とし、pをp=c1・dm-tとし、qをq=c2・dm-tとし、p×pの特殊ユニタリ行列の集合SU(p)とq×qの特殊ユニタリ行列の集合SU(q)との直和からなる行列の集合をK(dm)とした場合における、上記処理設定過程で読み出された上記行列GからG=K 1 ・A 1 ・K 2 を満たす行列K1,K2∈K(dm)と、dr×dr(r≧1)のユニタリ行列をブロックとするブロック対角行列A1を計算する行列分解過程と、
    上記行列リスト更新部が、上記行列分解過程で計算された上記行列K1の部分行列K11∈SU(p),K12∈SU(q)と、上記行列分解過程で計算された上記行列K2の部分行列K21∈SU(p),K22∈SU(q)と、上記行列分解過程で計算された上記ブロック対角行列A1のdr×drの対角ブロックのユニタリ行列である部分行列とを、上記行列リストの要素として上記記憶部に格納し、これらの部分行列に対応する上記処理設定過程で読み出された上記行列Gを上記記憶部に格納された上記行列リストの要素から排除する行列リスト更新過程と、
    上記制御部が、上記処理設定過程と上記行列分離過程と上記行列リスト更新過程とを、上記記憶部に格納された行列リストの要素としてサイズがd×dよりも大きな行列が存在する限り繰り返し実行させる制御過程と、
    を有し、
    上記行列分解過程は、
    上記行列分解部の第1行列積演算部が、上記処理設定過程で読み出された上記行列Gとその複素共役転置行列G*とを用い、σを1と-1とが対角成分に交互に並ぶdt×dtの対角行列σ=diag(1,-1,1,-1,...)とし、S=dm-tとし、IをS×Sの単位行列とし単位行列Iと対角行列σとのテンソル積を計算することにより行列ρを計算し、行列X=ρ・G*・ρ・Gを生成する第1行列積演算過程と、
    上記行列分解部の対角化行列生成部が、上記第1行列積演算過程で生成された上記行列Xを用い、上記行列Xをブロック対角化する行列Pを生成する対角化行列生成過程と、
    上記行列分解部の第2行列積演算部が、上記第1行列積演算過程で生成された上記行列Xと上記対角化行列生成過程で生成された上記行列Pとその複素共役転置行列P*とを用い、B=P*・X・Pの演算によってブロック対角行列Bを生成する第2行列積演算過程と、
    上記行列分解部のブロック対角行列変換部が、上記第2行列積演算過程で生成された上記ブロック対角行列Bの対角要素が1でない場合に、当該要素を[1,1]成分とする上記ブロック対角行列Bの4×4部分行列
    Figure 0004758965
    に置き換えることによりブロック対角行列Yを計算するブロック対角行列変換過程と、
    上記行列分解部の第3行列積演算部が、上記ブロック対角行列変換過程で計算されたブロック対角行列Yと上記対角化行列生成過程で生成された上記行列Pと上記複素共役転置行列P*とを用い、M=P・Y・P*の演算を行って行列Mを生成する第3行列積演算過程と、
    上記行列分解部の第4行列積演算部が、上記処理設定過程で読み出された上記行列Gとその複素共役転置行列M*とを用い、K=G・M*の演算を行って行列Kを生成する第4行列積演算過程と、
    上記行列分解部の第5行列積演算部が、上記第4行列積演算過程で生成された上記行列Kと上記対角化行列生成過程で生成された上記行列Pとを用い、K1=K・Pの演算を行って上記行列K1を生成する第5行列積演算過程と、
    上記行列分解部の行列分割部が、上記対角化行列生成過程で生成された上記行列Pの複素共役転置行列P を行列K 2 とし、上記行列YをA として、上記行列K と上記行列K と上記行列A 1 とを出力する行列分割過程と、を有し、
    上記対角化行列生成過程は、
    上記対角化行列生成部の固有値・固有ベクトル算出部が、上記第1行列積演算過程で生成された上記行列Xの固有値と固有ベクトルとを算出する固有値・固有ベクトル算出過程と、
    上記対角化行列生成部の第1リスト要素生成部が、上記固有値・固有ベクトル算出過程で算出された上記固有値と固有ベクトルのうち、対応する固有値が虚数である固有ベクトルuk(kは自然数)に対し、ベクトルuk+ρ・uk及びuk-ρ・ukを生成し、当該ベクトルu k +ρ・u k を奇数要素に、u k −ρ・u k を偶数要素に格納したリストV 1 を生成する第1リスト要素生成過程と、
    上記対角化行列生成部の第2リスト要素生成部が、上記固有値・固有ベクトル算出過程で算出された上記固有値と固有ベクトルのうち、対応する固有値が実数である固有ベクトルukのうち、uk+ρ・uk=ukを満たす固有ベクトルukをリストW1の要素として格納し、uk-ρ・uk=-ukを満たす固有ベクトルukに対するベクトル-ukをリストW2の要素として格納し、対応する固有値が実数である固有ベクトルukについて (uk+ρ・uk)/‖uk+ρ・uk‖(‖α‖はαのノルムを示す)をリストW1及びW2の要素として格納したリストを生成する第2リスト要素生成過程と、
    dが奇数である場合には、上記対角化行列生成部の行列配列部が、上記第1リスト要素生成過程で生成された上記リストV1又は上記第2リスト要素生成過程で生成された上記リストW2に属するdt-1個の要素と上記第2リスト要素生成過程で生成された上記リストW1の1個の要素とからなるdt列のベクトル列を、上記リストV1、リストW1及びリストW2の各要素をそれぞれ重複させることなく用いて上記リストV1及びリストW2のすべての要素を使い切るまで生成し、生成された各dt列のベクトル列とリストW2の残りの要素とを列方向に並べた行列を上記行列Pとして生成し、生成された上記行列Pを出力し、dが偶数である場合には、上記対角化行列生成部の行列配列部が、上記第1リスト要素生成過程で生成された上記リストV1上記第2リスト要素生成過程で生成された上記リストW1及びリストW2の各要素をそれぞれ重複させることなく列方向に並べた行列を上記対角化行列生成過程で生成される上記行列Pとして生成する行列配列過程と、を有し、
    上記行列リスト更新過程は、
    上記行列リスト更新部の第1ベクトル生成部が、上記第1行列積演算過程で計算された行列上記ρの対角成分からなるベクトルの-1の要素を0に置換したベクトルτ1を生成する第1ベクトル生成過程と、
    上記行列リスト更新部の第2ベクトル生成部が、上記第1行列積演算過程で計算された上記行列ρの対角成分からなるベクトルの1の要素を0に置換したベクトルτ2を生成する第2ベクトル生成過程と、
    上記行列リスト更新部の第1抽出行列生成部が、上記第1ベクトル生成過程で生成された上記ベクトルτ を用いて、行列T11・τ1 T(αTは転置ベクトル)生成する第1抽出行列生成過程と、
    上記行列リスト更新部の第2抽出行列生成部が、上記第2ベクトル生成過程で生成されたベクトルτ を用いて、行列T22・τ2 Tを生成する第2抽出行列生成過程と、
    上記行列リスト更新部の第1部分行列抽出部が、上記行列分割過程で出力された上記行列K1から、上記第1抽出行列生成過程で生成された上記行列T1の行列成分が1である行−列の要素のみを取り出した上記部分行列K11を生成する第1部分行列抽出過程と、
    上記行列リスト更新部の第2部分行列抽出部が、上記行列分割過程で出力された上記行列K1から、上記第2抽出行列生成過程で生成された上記行列T2の行列成分が1である行−列の要素のみを取り出した上記部分行列K12を生成する第2部分行列抽出過程と、
    上記行列リスト更新部の第3部分行列抽出部が、上記行列分割過程で出力された上記行列K2から、上記第1抽出行列生成過程で生成された上記行列T1の行列成分が1である行−列の要素のみを取り出した上記部分行列K21を生成する第3部分行列抽出過程と、
    上記行列リスト更新部の第4部分行列抽出部が、上記行列分割過程で出力された上記行列K2から、上記第2抽出行列生成過程で生成された上記行列T2の行列成分が1である行−列の要素のみを取り出した上記部分行列K22を生成する第4部分行列抽出過程と、を有する、
    ことを特徴とするユニタリ行列分解方法。
  2. プログラムがコンピュータに読み込まれることでそれぞれ構成される記憶部と処理設定部と行列分解部と行列リスト更新部と制御部とを有するユニタリ行列分解装置で実行され、量子コンピュータ上の演算を表すサイズがdn×dn(d≧3,n≧2)の特殊ユニタリ行列SU(dn)を、量子コンピュータのための量子回路に対応する疎行列の積に分解するユニタリ行列分解方法であって、
    入力された特殊ユニタリ行列G’∈SU(dn)を行列リストの要素として上記記憶部に格納する行列格納過程と、
    上記処理設定部が、上記記憶部に格納された行列リストの要素からサイズがdm×dm(n≧m≧2)の行列を読み出し、それを行列Gとする処理設定過程と、
    上記行列分解部が、m/2以下の最大の整数又はm/2以上の最小の整数をtとし、d t /2以上の最小の整数をc 1 とし、d t /2以下の最大の整数をc 2 とし、pをp=c1・dm-tとし、qをq=c2・dm-tとし、p×pの特殊ユニタリ行列の集合SU(p)とq×qの特殊ユニタリ行列の集合SU(q)との直和からなる行列の集合をK(dm)とした場合における、上記処理設定過程で読み出された上記行列GからG=K 1 ・A 1 ・K 2 を満たす行列K1,K2∈K(dm)と、dr×dr(r≧1)のユニタリ行列をブロックとするブロック対角行列A1を計算する行列分解過程と、
    上記行列リスト更新部が、上記行列分解過程で計算された上記行列K1の部分行列K11∈SU(p),K12∈SU(q)と、上記行列分解過程で計算された上記行列K2の部分行列K21∈SU(p),K22∈SU(q)と、上記行列分解過程で計算された上記ブロック対角行列A1のdr×drの対角ブロックのユニタリ行列である部分行列とを、上記行列リストの要素として上記記憶部に格納し、これらの部分行列に対応する上記処理設定過程で読み出された上記行列Gを上記記憶部に格納された上記行列リストの要素から排除する行列リスト更新過程と
    上記制御部が、上記処理設定過程と上記行列分離過程と上記行列リスト更新過程と、上記行列リストの要素としてサイズがd×dよりも大きな行列が存在する限り繰り返し実行させる制御過程と
    を有し、
    上記行列分解過程は、
    上記行列分解部のコサインサイン分解部が、上記処理設定過程で読み出されたdm×dmの上記行列Gを、q×qのブロックG11と、q×pのブロックG12と、p×qのブロックG21と、p×pのブロックG22とに分割して各ブロックについて行列分解を行い、上記行列Gから4つの対角行列D11,D12,D21,D22正方行列K 11 , K 12 , K 21 , K 22 とを抽出するコサインサイン分解過程と、
    上記行列分解部のブロック抽出部が、上記コサインサイン分解過程で抽出された上記4つの対角行列D11,D12,D21,D22の各j行j列目の対角成分D11[j,j],D12[j,j],D21[j,j],D22[j,j]を要素とする2×2の行列Rjを生成し、当該行列Rjを出力するブロック抽出過程と、
    dが偶数である場合には、上記行列分解部のブロック対角化部が、重複しないようにd/2個選択された上記ブロック抽出過程で生成された上記行列Rjをブロックとしたd×dのブロック対角行列と、2×2の単位行列と、をブロックとするブロック対角行列A1を生成し、dが奇数である場合には、上記ブロック対角化部が、ηをdt/2以下の最大の整数とした場合における上記ブロック抽出過程で生成されたη個の上記行列Riと1つの1とを対角成分に配置したdt×dtのユニタリ行列をブロックとするブロック対角行列A1を生成するブロック対角化過程と、
    を有し、
    上記コサインサイン分解過程は、
    上記コサインサイン分解部のブロック分割部が、上記処理設定過程で読み出された上記行列Gから
    Figure 0004758965
    を満たす4つのブロックG 11 , G 12 , G 21 , G 22 を生成するブロック分割過程と、
    上記コサインサイン分解部の特異値分割部が、上記ブロック分割過程で生成された上記ブロックG 11 の特異値分解を行うことでG 11 =K 11 ・D 11 ・K 21 を満たす上記正方行列K 11 , K 21 とd 1 , d 2 , …, d q (1>d 1 ≧d 2 ≧d 3 ≧…≧d q >0)を対角成分とする上記対角行列D 11 =diag (d 1 , d 2 , …, d q )とを生成し、さらに上記対角行列D 11 を用いて上記対角行列D 22 =D 11 を生成する特異値分割過程と、
    上記コサインサイン分解部のアークコサイン部が、上記特異値分割過程で生成された上記対角行列D 11 の各対角成分d 1 , d 2 , …, d q に対する角度φ k = arccos d k (0≦φ k <π, k =1,2,…,q) を計算するアークコサイン過程と、
    上記コサインサイン分解部の第1ブロック算出部が、上記アークコサイン過程で計算された上記角度φ k (k = 1, 2,…, q)より、上記対角行列D 12 = diag(sinφ 1 , sinφ 2 , …, sinφ q )を算出し、さらに上記対角行列D 12 を用いて上記対角行列D 21 =-D 12 を計算する第1ブロック算出過程と、
    上記コサインサイン分解部の第2ブロック算出部が、上記第1ブロック算出過程で計算された上記対角行列D 12 , D 21 の複素共役転置行列D 12 * , D 21 * と、上記ブロック分割過程で生成された上記ブロックG 12 , G 21 と、上記特異値分割過程で生成された上記正方行列K 11 複素共役転置行列K 11 * とから、K 22 =D 12 * ・K 11 * ・G 12 及びK 12 =G 21 ・D 21 * によって上記正方行列K 22 , K 12 を算出する第2ブロック算出過程と、を有する、
    ことを特徴とするユニタリ行列分解方法。
  3. プログラムがコンピュータに読み込まれることでそれぞれ構成される記憶部と処理設定部と行列分解部と行列リスト更新部と制御部とを有し、量子コンピュータ上の演算を表すサイズがdn×dn(d≧3,n≧2)の特殊ユニタリ行列SU(dn)を、量子コンピュータのための量子回路に対応する疎行列の積に分解するユニタリ行列分解装置であって、
    上記記憶部は、入力された特殊ユニタリ行列G’∈SU(dn)を行列リストの要素として格納するように構成され
    上記処理設定部は、上記記憶部に格納された行列リストの要素からサイズがdm×dm(n≧m≧2)の行列を読み出し、それを行列Gとするように構成され
    上記行列分解部は、m/2以下の最大の整数又はm/2以上の最小の整数をtとし、d t /2以上の最小の整数をc 1 とし、d t /2以下の最大の整数をc 2 としpをp=c1・dm-t<(d-1)・dm-1を満たす整数とし、qをq=c2・dm-t≦p, 2・q≦dmを満たす整数とし、p×pの特殊ユニタリ行列の集合SU(p)とq×qの特殊ユニタリ行列の集合SU(q)との直和からなる行列の集合をK(dm)とした場合における、上記処理設定部で読み出された上記行列GからG=K 1 ・A 1 ・K 2 を満たす行列K1,K2∈K(dm)と、dr×dr(r≧1)のユニタリ行列をブロックとするブロック対角行列A1を計算するように構成され、
    上記行列リスト更新部は、上記行列分解部で計算された上記行列K1の部分行列K11∈SU(p),K12∈SU(q)と、上記行列分解部で計算された上記行列K2の部分行列K21∈SU(p),K22∈SU(q)と、上記行列分解部で計算された上記ブロック対角行列A1の対角ブロックのdr×drのユニタリ行列である部分行列とを、上記行列リストの要素として上記記憶部に格納し、これらの部分行列に対応する上記処理設定過程で読み出された上記行列Gを上記記憶部に格納された上記行列リストの要素から排除するように構成され、
    上記制御部は、上記処理設定部の処理と上記行列分離部の処理と上記行列リスト更新部の処理とを、上記記憶部に格納された行列リストの要素としてサイズがd×dよりも大きな行列が存在する限り繰り返し実行させる制御を行うように構成され、
    上記行列分解部は、
    上記処理設定部で読み出された上記行列Gとその複素共役転置行列G * とを用い、σを1と-1とが対角成分に交互に並ぶd t ×d t の対角行列σ=diag(1,-1,1,-1,...)とし、S=d m-t とし、IをS×Sの単位行列として、単位行列Iと対角行列σとのテンソル積を計算することにより行列ρを計算し、行列X=ρ・G * ・ρ・Gを生成する第1行列積演算部と、
    上記第1行列積演算部で生成された上記行列Xを用い、上記行列Xをブロック対角化する行列Pを生成する対角化行列生成部と、
    上記第1行列積演算部で生成された上記行列Xと上記対角化行列生成部で生成された上記行列Pとその複素共役転置行列P * とを用い、B=P * ・X・Pの演算によってブロック対角行列Bを生成する第2行列積演算部と、
    上記第2行列積演算部で生成された上記ブロック対角行列Bの対角要素が1でない場合に、当該要素を[1,1]成分とする上記ブロック対角行列Bの4×4部分行列
    Figure 0004758965
    に置き換えることによりブロック対角行列Yを計算するブロック対角行列変換部と、
    上記ブロック対角行列変換部で計算されたブロック対角行列Yと上記対角化行列生成部で生成された上記行列Pと上記複素共役転置行列P * とを用い、M=P・Y・P * の演算を行って行列Mを生成する第3行列積演算部と、
    上記処理設定部で読み出された上記行列Gとその複素共役転置行列M * とを用い、K=G・M * の演算を行って行列Kを生成する第4行列積演算部と、
    上記第4行列積演算部で生成された上記行列Kと上記対角化行列生成部で生成された上記行列Pとを用い、K 1 =K・Pの演算を行って上記行列K 1 を生成する第5行列積演算部と、
    上記対角化行列生成部で生成された上記行列Pの複素共役転置行列P を行列K 2 とし、上記行列YをA として、上記行列K と上記行列K と上記行列A 1 とを出力する行列分割部と、を有し、
    上記対角化行列生成部は、
    上記第1行列積演算部で生成された上記行列Xの固有値と固有ベクトルとを算出する固有値・固有ベクトル算出部と、
    上記固有値・固有ベクトル算出部で算出された上記固有値と固有ベクトルのうち、対応する固有値が虚数である固有ベクトルu k (kは自然数)に対し、ベクトルu k +ρ・u k 及びu k -ρ・u k を生成し、当該ベクトルu k +ρ・u k を奇数要素に、u k −ρ・u k を偶数要素に格納したリストV 1 を生成する第1リスト要素生成部と、
    上記固有値・固有ベクトル算出部で算出された上記固有値と固有ベクトルのうち、対応する固有値が実数である固有ベクトルu k のうち、u k +ρ・u k =u k を満たす固有ベクトルu k をリストW 1 の要素として格納し、u k -ρ・u k =-u k を満たす固有ベクトルu k に対するベクトル-u k をリストW 2 の要素として格納し、対応する固有値が実数である固有ベクトルu k について (u k +ρ・u k )/‖u k +ρ・u k ‖(‖α‖はαのノルムを示す)をリストW 1 及びW 2 の要素として格納したリストを生成する第2リスト要素生成部と、
    dが奇数である場合には、上記第1リスト要素生成部で生成された上記リストV 1 又は上記第2リスト要素生成部で生成された上記リストW 2 に属するd t -1個の要素と上記第2リスト要素生成部で生成された上記リストW 1 の1個の要素とからなるd t 列のベクトル列を、上記リストV 1 、リストW 1 及びリストW 2 の各要素をそれぞれ重複させることなく用いて上記リストV 1 及びリストW 2 のすべての要素を使い切るまで生成し、生成された各d t 列のベクトル列とリストW 2 の残りの要素とを列方向に並べた行列を上記行列Pとして生成し、生成された上記行列Pを出力し、dが偶数である場合には、上記第1リスト要素生成部で生成された上記リストV 1 、上記第2リスト要素生成部で生成された上記リストW 1 及びリストW 2 の各要素をそれぞれ重複させることなく列方向に並べた行列を上記対角化行列生成部で生成される上記行列Pとして生成する行列配列部と、を有し、
    上記行列リスト更新部は、
    上記第1行列積演算部で計算された行列上記ρの対角成分からなるベクトルの-1の要素を0に置換したベクトルτ 1 を生成する第1ベクトル生成部と、
    上記第1行列積演算部で計算された上記行列ρの対角成分からなるベクトルの1の要素を0に置換したベクトルτ 2 を生成する第2ベクトル生成部と、
    上記第1ベクトル生成部で生成された上記ベクトルτ を用いて、行列T 1 1 ・τ 1 T (α T は転置ベクトル)を生成する第1抽出行列生成部と、
    上記第2ベクトル生成部で生成されたベクトルτ を用いて、行列T 2 2 ・τ 2 T を生成する第2抽出行列生成部と、
    上記行列分割部で出力された上記行列K 1 から、上記第1抽出行列生成部で生成された上記行列T 1 の行列成分が1である行−列の要素のみを取り出した上記部分行列K 11 を生成する第1部分行列抽出部と、
    上記行列分割部で出力された上記行列K 1 から、上記第2抽出行列生成部で生成された上記行列T 2 の行列成分が1である行−列の要素のみを取り出した上記部分行列K 12 を生成する第2部分行列抽出部と、
    上記行列分割部で出力された上記行列K 2 から、上記第1抽出行列生成部で生成された上記行列T 1 の行列成分が1である行−列の要素のみを取り出した上記部分行列K 21 を生成する第3部分行列抽出部と、
    上記行列分割部で出力された上記行列K 2 から、上記第2抽出行列生成部で生成された上記行列T 2 の行列成分が1である行−列の要素のみを取り出した上記部分行列K 22 を生成する第4部分行列抽出部と、を有する、
    ことを特徴とするユニタリ行列分解装置。
  4. プログラムがコンピュータに読み込まれることでそれぞれ構成される記憶部と処理設定部と行列分解部と行列リスト更新部と制御部とを有し、量子コンピュータ上の演算を表すサイズがd n ×d n (d≧3,n≧2)の特殊ユニタリ行列SU(d n )を、量子コンピュータのための量子回路に対応する疎行列の積に分解するユニタリ行列分解装置であって、
    上記記憶部は、入力された特殊ユニタリ行列G’∈SU(d n )を行列リストの要素として格納するように構成され、
    上記処理設定部は、上記記憶部に格納された行列リストの要素からサイズがd m ×d m (n≧m≧2)の行列を読み出し、それを行列Gとするように構成され、
    上記行列分解部は、m/2以下の最大の整数又はm/2以上の最小の整数をtとし、d t /2以上の最小の整数をc 1 とし、d t /2以下の最大の整数をc 2 とし、pをp=c 1 ・d m-t とし、qをq=c 2 ・d m-t とし、p×pの特殊ユニタリ行列の集合SU(p)とq×qの特殊ユニタリ行列の集合SU(q)との直和からなる行列の集合をK(d m )とした場合における、上記処理設定部で読み出された上記行列Gから、G=K 1 ・A 1 ・K 2 を満たす行列K 1 ,K 2 ∈K(d m )と、d r ×d r (r≧1)のユニタリ行列をブロックとするブロック対角行列A 1 とを計算するように構成され、
    上記行列リスト更新部は、上記行列分解部で計算された上記行列K 1 の部分行列K 11 ∈SU(p),K 12 ∈SU(q)と、上記行列分解部で計算された上記行列K 2 の部分行列K 21 ∈SU(p),K 22 ∈SU(q)と、上記行列分解部で計算された上記ブロック対角行列A 1 のd r ×d r の対角ブロックのユニタリ行列である部分行列とを、上記行列リストの要素として上記記憶部に格納し、これらの部分行列に対応する上記処理設定部で読み出された上記行列Gを上記記憶部に格納された上記行列リストの要素から排除するように構成され、
    上記制御部が、上記処理設定部の処理と上記行列分離部の処理と上記行列リスト更新部の処理とを、上記行列リストの要素としてサイズがd×dよりも大きな行列が存在する限り繰り返し実行させる制御を行うように構成され、
    上記行列分解部は、
    上記処理設定部で読み出されたd m ×d m の上記行列Gを、q×qのブロックG 11 と、q×pのブロックG 12 と、p×qのブロックG 21 と、p×pのブロックG 22 とに分割して各ブロックについて行列分解を行い、上記行列Gから4つの対角行列D 11 ,D 12 ,D 21 ,D 22 と正方行列K 11 , K 12 , K 21 , K 22 とを抽出するコサインサイン分解部と、
    上記コサインサイン分解部で抽出された上記4つの対角行列D 11 ,D 12 ,D 21 ,D 22 の各j行j列目の対角成分D 11 [j,j],D 12 [j,j],D 21 [j,j],D 22 [j,j]を要素とする2×2の行列R j を生成し、当該行列R j を出力するブロック抽出部と、
    dが偶数である場合には、重複しないようにd/2個選択された上記ブロック抽出部で生成された上記行列R j をブロックとしたd×dのブロック対角行列と、2×2の単位行列と、をブロックとするブロック対角行列A 1 を生成し、dが奇数である場合には、ηをd t /2以下の最大の整数とした場合における上記ブロック抽出部で生成されたη個の上記行列R i と1つの1とを対角成分に配置したd t ×d t のユニタリ行列をブロックとするブロック対角行列A 1 を生成するブロック対角化部と、
    を有し、
    上記コサインサイン分解部は、
    上記処理設定部で読み出された上記行列Gから
    Figure 0004758965
    を満たす4つのブロックG 11 , G 12 , G 21 , G 22 を生成するブロック分割部と、
    上記ブロック分割部で生成された上記ブロックG 11 の特異値分解を行うことでG 11 =K 11 ・D 11 ・K 21 を満たす上記正方行列K 11 , K 21 とd 1 , d 2 , …, d q (1>d 1 ≧d 2 ≧d 3 ≧…≧d q >0)を対角成分とする上記対角行列D 11 =diag (d 1 , d 2 , …, d q )とを生成し、さらに上記対角行列D 11 を用いて上記対角行列D 22 =D 11 を生成する特異値分割部と、
    上記特異値分割部で生成された上記対角行列D 11 の各対角成分d 1 , d 2 , …, d q に対する角度φ k = arccos d k (0≦φ k <π, k =1,2,…,q) を計算するアークコサイン部と、
    上記アークコサイン部で計算された上記角度φ k (k = 1, 2,…, q)より、上記対角行列D 12 = diag(sinφ 1 , sinφ 2 , …, sinφ q )を算出し、さらに上記対角行列D 12 を用いて上記対角行列D 21 =-D 12 を計算する第1ブロック算出部と、
    上記第1ブロック算出部で計算された上記対角行列D 12 , D 21 の複素共役転置行列D 12 * , D 21 * と、上記ブロック分割部で生成された上記ブロックG 12 , G 21 と、上記特異値分割部で生成された上記正方行列K 11 の複素共役転置行列K 11 * とから、K 22 =D 12 * ・K 11 * ・G 12 及びK 12 =G 21 ・D 21 * によって上記正方行列K 22 , K 12 を算出する第2ブロック算出部と、を有する、
    ことを特徴とするユニタリ行列分解装置。
  5. 請求項1又は2に記載のユニタリ行列分解方法の各過程をコンピュータに実行させるためのユニタリ行列分解プログラム。
  6. 請求項5に記載のユニタリ行列分解プログラムを格納したコンピュータ読み取り可能な記録媒体。
JP2007220086A 2007-08-27 2007-08-27 ユニタリ行列分解方法、ユニタリ行列分解装置、ユニタリ行列分解プログラム及び記録媒体 Expired - Fee Related JP4758965B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007220086A JP4758965B2 (ja) 2007-08-27 2007-08-27 ユニタリ行列分解方法、ユニタリ行列分解装置、ユニタリ行列分解プログラム及び記録媒体

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007220086A JP4758965B2 (ja) 2007-08-27 2007-08-27 ユニタリ行列分解方法、ユニタリ行列分解装置、ユニタリ行列分解プログラム及び記録媒体

Publications (2)

Publication Number Publication Date
JP2009053933A JP2009053933A (ja) 2009-03-12
JP4758965B2 true JP4758965B2 (ja) 2011-08-31

Family

ID=40504962

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007220086A Expired - Fee Related JP4758965B2 (ja) 2007-08-27 2007-08-27 ユニタリ行列分解方法、ユニタリ行列分解装置、ユニタリ行列分解プログラム及び記録媒体

Country Status (1)

Country Link
JP (1) JP4758965B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5325072B2 (ja) * 2009-10-22 2013-10-23 日本電信電話株式会社 行列分解装置、行列分解方法及びプログラム
US10545919B2 (en) 2013-09-27 2020-01-28 Google Llc Decomposition techniques for multi-dimensional data
WO2023148827A1 (ja) * 2022-02-01 2023-08-10 日本電信電話株式会社 量子コンパイル装置、量子コンパイル方法、およびプログラム

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4260680B2 (ja) * 2004-05-20 2009-04-30 日本電信電話株式会社 ユニタリ行列分解方法、ユニタリ行列分解装置、ユニタリ行列分解プログラム及び記録媒体
JP4260751B2 (ja) * 2005-01-11 2009-04-30 日本電信電話株式会社 ユニタリ行列分解装置、ユニタリ行列分解方法、ユニタリ行列分解プログラム及び記録媒体

Also Published As

Publication number Publication date
JP2009053933A (ja) 2009-03-12

Similar Documents

Publication Publication Date Title
Glasser et al. Neural-network quantum states, string-bond states, and chiral topological states
Cortese et al. Loading classical data into a quantum computer
Canny et al. A subdivision-based algorithm for the sparse resultant
US9477796B2 (en) Methods for general stabilizer-based quantum computing simulation
JP2019079226A (ja) 変換装置、判定装置、および計算装置
CN114091363A (zh) 基于量子算法的计算流体动力学模拟方法、装置及设备
JP4521318B2 (ja) 量子回路、量子誤り訂正装置および量子誤り訂正方法
Groetzner et al. A factorization method for completely positive matrices
CA3011415A1 (en) Decoding-based method for quantum circuit optimization
Kerenidis et al. Classical and quantum algorithms for orthogonal neural networks
Elvang et al. All-multiplicity one-loop amplitudes in Born-Infeld electrodynamics from generalized unitarity
Tzeng Split‐and‐Combine Singular Value Decomposition for Large‐Scale Matrix
JP4758965B2 (ja) ユニタリ行列分解方法、ユニタリ行列分解装置、ユニタリ行列分解プログラム及び記録媒体
US7249003B2 (en) System for solving diagnosis and hitting set problems
JP4260751B2 (ja) ユニタリ行列分解装置、ユニタリ行列分解方法、ユニタリ行列分解プログラム及び記録媒体
Baker et al. Direct solution of multiple excitations in a matrix product state with block Lanczos
Chaurra-Gutierrez et al. QIST: One-dimensional quantum integer wavelet S-transform
Tateishi et al. Continuous Analog of Accelerated OS‐EM Algorithm for Computed Tomography
Gelß et al. Low-rank tensor decompositions of quantum circuits
US20040130956A1 (en) Hardware quantum gate
Afibuzzaman et al. Scalable nuclear density functional theory with Sky3D
Wang et al. Bang-bang algorithms for quantum many-body ground states: A tensor network exploration
US20040059765A1 (en) Method and relative quantum gate for running a grover&#39;s or a Deutsch-Jozsa&#39;s quantum algorithm
Gong et al. Bridge the gap between fixed-length and variable-length evolutionary neural architecture search algorithms
Kornyak An algorithm for decomposing representations of finite groups using invariant projections

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090729

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110325

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110329

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110509

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110524

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110603

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140610

Year of fee payment: 3

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees