(57)【要約】【課題】  ユニタリ行列にカルタン分解を再帰的に適用し、このユニタリ行列を自動的に基本ゲートに分解する処理をコンピュータ上で実現する。【解決手段】  まず、分解対象である特殊ユニタリ行列Ｆ∈ＳＵ（２ｎ）のリー代数表現ｆ∈ｓｕ（２ｎ）を抽出し、このリー代数表現ｆをカルタン分解によって直交する２つのベクトル空間ｋ，ｍに含まれる要素ｋ１∈ｋ，ｍ１∈ｍに分解する。  次に、Ｕｈ・ｅｘｐ（ｍ１）・Ｕｈを対角行列Ｄｈに対角化する特殊ユニタリ行列Ｕｍを算出する。なお、Ｕｈはカルタン部分代数ｈ（ｎ）の基底のすべてを同時対角化する行列を意味し、対角行列Ｄｈは、Ｄｈ∈Ｕｈ・ｅｘｐ（ｈ１）・Ｕｈを満たす（ｈ１∈ｈ（ｎ））。  そして、対角行列ＤｈをトフォリゲートＴＧｈの積に分解し、各トフォリゲートＴＧｈを基本ゲートＢＧｈの積に分解する。その後、ｅｘｐ（ｋ１）及びＵｍを新たな入力行列として、同様な処理を再帰的に繰り返す。【選択図】        図１
2005332242.tif 000002
【特許請求の範囲】
【請求項１】
ユニタリ行列を分解するユニタリ行列分解方法であって、
分解対象である２ｎ×２ｎの特殊ユニタリ行列Ｆ∈ＳＵ（２ｎ）の自然対数であるリー（Ｌｉｅ）代数表現ｆ∈ｓｕ（２ｎ）を、行列表現変換手段が抽出するステップと、
抽出された上記リー代数表現ｆを、カルタン分解手段が、カルタン（Ｃａｒｔａｎ）分解によって、直交する２つのベクトル空間ｋ，ｍに含まれる要素ｋ１∈ｋ，ｍ１∈ｍに分解するステップと、
Ｕｈ・ｅｘｐ（ｍ１）・Ｕｈ（Ｕｈは、上記ベクトル空間ｍに含まれる極大可換部分代数であるカルタン部分代数ｈ（ｎ）の基底のすべてを同時対角化する行列）を対角行列Ｄｈ（Ｄｈ∈Ｕｈ・ｅｘｐ（ｈ（ｎ））・Ｕｈ）に対角化する特殊ユニタリ行列Ｕｍを、対角行列計算手段が算出するステップと、
対角行列分解手段が、上記対角行列Ｄｈをトフォリ（Ｔｏｆｆｏｌｉ）ゲートＴＧｈの積に分解するステップと、
基本ゲート分解手段が、上記各トフォリゲートＴＧｈを基本ゲートＢＧｈの積に分解するステップと、
分解要素格納手段が、上記ｅｘｐ（ｋ１）、Ｕｈ、Ｕｍ、Ｕｍ＊及びＢＧｈを、上記Ｆの分解要素（Ｆ＝ｅｘｐ（ｋ１）・（Ｕｈ・Ｕｍ・ＢＧｈ・Ｕｍ＊・Ｕｈ））として記憶手段に格納するステップと、
を有することを特徴とするユニタリ行列分解方法。
【請求項２】
ユニタリ行列を分解するユニタリ行列分解方法であって、
分解対象である２ｎ×２ｎの特殊ユニタリ行列Ｆ∈ＳＵ（２ｎ）の自然対数であるリー（Ｌｉｅ）代数表現ｆ∈ｓｕ（２ｎ）を、行列表現変換手段が抽出するステップと、
抽出された上記リー代数表現ｆを、カルタン分解手段が、カルタン（Ｃａｒｔａｎ）分解によって、直交する２つのベクトル空間ｋ，ｍに含まれる要素ｋ１∈ｋ，ｍ１∈ｍに分解するステップと、
ｍ１を対角行列Ｄ１に対角化する特殊ユニタリ行列Ｕ１を、対角行列計算手段が算出するステップと、
対角行列分解手段が、ｅｘｐ（Ｄ１）をトフォリ（Ｔｏｆｆｏｌｉ）ゲートＴＧ１の積に分解するステップと、
基本ゲート分解手段が、上記各トフォリゲートＴＧ１を基本ゲートＢＧ１の積に分解するステップと、
分解要素格納手段が、上記ｅｘｐ（ｋ１）、Ｕ１、Ｕ１＊及びＢＧ１を、上記Ｆの分解要素（Ｆ＝ｅｘｐ（ｋ１）・（Ｕ１・ＢＧ１・Ｕ１＊））として記憶手段に格納するステップと、
を有することを特徴とするユニタリ行列分解方法。
【請求項３】
請求項１或いは２記載のユニタリ行列分解方法であって、
上記記憶手段に格納されたすべての特殊ユニタリ行列が基本ゲートであるか否かを、構造判定手段が判断するステップと、
基本ゲートでないと判断された特殊ユニタリ行列を、構造判定手段が上記記憶手段から抽出するステップと、
抽出された上記特殊ユニタリ行列がｎ≧３であるか否かを、構造判定手段が判断するステップと、
をさらに有し、
上記分解対象である特殊ユニタリ行列Ｆは、
上記構造判定手段において、ｎ≧３であると判断された特殊ユニタリ行列である、
ことを特徴とするユニタリ行列分解方法。
【請求項４】
ユニタリ行列を分解するユニタリ行列分解装置であって、
２ｎ×２ｎの特殊ユニタリ行列（ＳＵ（２ｎ））と、当該特殊ユニタリ行列の自然対数であるリー（Ｌｉｅ）代数表現（ｓｕ（２ｎ））と、を対応付けて格納する記憶手段と、
分解対象の特殊ユニタリ行列Ｆ∈ＳＵ（２ｎ）に対応するリー代数表現ｆ∈ｓｕ（２ｎ）を上記記憶手段から抽出する行列表現変換手段と、
抽出された上記リー代数表現ｆを、カルタン（Ｃａｒｔａｎ）分解によって、直交する２つのベクトル空間ｋ，ｍに含まれる要素ｋ１∈ｋ，ｍ１∈ｍに分解するカルタン分解手段と、
Ｕｈ・ｅｘｐ（ｍ１）・Ｕｈ（Ｕｈは、上記ベクトル空間ｍに含まれる極大可換部分代数であるカルタン部分代数ｈ（ｎ）の基底のすべてを同時対角化する行列）を対角行列Ｄｈ（Ｄｈ∈Ｕｈ・ｅｘｐ（ｈ（ｎ））・Ｕｈ）に対角化する特殊ユニタリ行列Ｕｍを算出する対角行列計算手段と、
上記対角行列Ｄｈをトフォリ（Ｔｏｆｆｏｌｉ）ゲートＴＧｈの積に分解する対角行列分解手段と、
上記各トフォリゲートＴＧｈを基本ゲートＢＧｈの積に分解する基本ゲート分解手段と、
上記ｅｘｐ（ｋ１）、Ｕｈ、Ｕｍ、Ｕｍ＊及びＢＧｈを、上記Ｆの分解要素（Ｆ＝ｅｘｐ（ｋ１）・（Ｕｈ・Ｕｍ・ＢＧｈ・Ｕｍ＊・Ｕｈ＝ｅｘｐ（ｍ１）））として上記記憶手段に格納する分解要素格納手段と、
を特徴とするユニタリ行列分解装置。
【請求項５】
ユニタリ行列を分解するユニタリ行列分解装置であって、
２ｎ×２ｎの特殊ユニタリ行列（ＳＵ（２ｎ））と、当該特殊ユニタリ行列の自然対数であるリー（Ｌｉｅ）代数表現（ｓｕ（２ｎ））と、を対応付けて格納する記憶手段と、
分解対象の特殊ユニタリ行列Ｆ∈ＳＵ（２ｎ）に対応するリー代数表現ｆ∈ｓｕ（２ｎ）を上記記憶手段から抽出する行列表現変換手段と、
抽出された上記リー代数表現ｆを、カルタン（Ｃａｒｔａｎ）分解によって、直交する２つのベクトル空間ｋ，ｍに含まれる要素ｋ１∈ｋ，ｍ１∈ｍに分解するカルタン分解手段と、
ｍ１を対角行列Ｄ１に対角化する特殊ユニタリ行列Ｕ１を算出する対角行列計算手段と、
ｅｘｐ（Ｄ１）をトフォリ（Ｔｏｆｆｏｌｉ）ゲートＴＧ１の積に分解する対角行列分解手段と、
上記各トフォリゲートＴＧ１を基本ゲートＢＧ１の積に分解する基本ゲート分解手段と、
上記ｅｘｐ（ｋ１）、Ｕ１、Ｕ１＊及びＢＧ１を、上記Ｆの分解要素（Ｆ＝ｅｘｐ（ｋ１）・（Ｕ１・ＢＧ１・Ｕ１＊＝ｅｘｐ（ｍ１）））として上記記憶手段に格納する分解要素格納手段と、
を特徴とするユニタリ行列分解装置。
【請求項６】
請求項４或いは５に記載のユニタリ行列分解装置であって、
上記分解対象の特殊ユニタリ行列Ｆは、
上記記憶手段に格納された特殊ユニタリ行列のうち、基本ゲートを除く、ｎ≧３の特殊ユニタリ行列である、
ことを特徴とするユニタリ行列分解装置。
【請求項７】
請求項６記載のユニタリ行列分解装置であって、
上記基本ゲート分解手段は、
さらに、上記記憶手段に格納された特殊ユニタリ行列のうち、基本ゲートを除く、ｎ＝２の特殊ユニタリ行列を、基本ゲートＢＧ２の積に分解する手段である、
ことを特徴とするユニタリ行列分解装置。
【請求項８】
請求項４或いは５に記載のユニタリ行列分解装置であって、
上記対角行列計算手段は、
分解対象の特殊ユニタリ行列Ｆ∈ＳＵ（２ｎ）に対応するリー代数表現ｆ∈ｓｕ（２ｎ）が上記記憶手段に格納されていない場合、当該Ｆを対角行列Ｄ２に対角化する行列Ｕ２を、さらに算出する手段であり、
上記行列表現変換手段は、
さらに、Ｕ２・ｌｏｇ（Ｄ２）・Ｕ２＊の演算結果を、当該Ｆに対応するリー代数表現ｆとして、上記記憶手段に格納する手段である、
ことを特徴とするユニタリ行列分解装置。
【請求項９】
請求項４から８の何れかに記載のユニタリ行列分解装置としてコンピュータを機能させるためのユニタリ行列分解プログラム。
【請求項１０】
請求項９に記載のユニタリ行列分解プログラムを格納したコンピュータ読取可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、任意のユニタリ行列を基本ゲートに分解するユニタリ行列分解方法、ユニタリ行列分解装置、その機能をコンピュータで実現するためのユニタリ行列分解プログラム及びそれを格納した記録媒体に関する。
【背景技術】
【０００２】
行列を分解する数学的な手法の一つにカルタン（Ｃａｒｔａｎ）分解がある（例えば、非特許文献１参照。）。カルタン分解は、リー（Ｌｉｅ）群（Ｇ＝ＳＵ（２ｎ））に属する特殊ユニタリ行列を分解対象とし、そのリー代数表現（ｇ＝ｓｕ（２ｎ））を利用して行列分解を行う手法である。ここで、リー群（ＳＵ（２ｎ））とリー代数表現（ｓｕ（２ｎ））は２ｎ×２ｎの行列の集合であり、ｅｘｐ（ｓｕ（２ｎ））＝ＳＵ（２ｎ）の関係にある。また、ｓｕ（２ｎ）は歪エルミート（Ｈｅｒｍｉｔｅ）行列全体となる。なお、この特殊ユニタリ行列を量子回路で実現する場合、ｎはこの量子回路への入力量子ビット数に相当する。また、特殊ユニタリ行列とは、行列式（ｄｅｔｅｒｍｉｎａｎｔ）の値が１のユニタリ行列を意味する。
【０００３】
ここで行列ａに対するｅｘｐ（ａ）は、
【数１】
2005332242.tif 000003
で定義されるが、非特許文献１においてＮ.Ｋｈａｎｅｊａは、パウリ（Ｐａｕｌｉ）のスピン行列
【数２】
2005332242.tif 000004
を用い、リー群（ＳＵ（２ｎ））に対応するリー代数表現（ｓｕ（２ｎ））を定義している。以下ではまず、このＮ.Ｋｈａｎｅｊａによるｓｕ（２ｎ）の定義について説明する。
【０００４】
＜Ｎ.Ｋｈａｎｅｊａによるｓｕ（２ｎ）の定義＞
まず、リー代数表現（ｓｕ（２ｎ））における直交基底｛ｉＢｓ｝を以下の形でとる（ｉは虚数単位）。
【数３】
2005332242.tif 000005
【０００５】
ここで、Ｉｋαは
【数４】
2005332242.tif 000006
で定義される。なお、このＩαは式(6)の右辺の先頭からｋ番目に位置する。また、αはｘ，ｙ，ｚの何れかであり、Ｉαは上述の式(2)〜(4)の何れかとなる。さらに、Ｅは２×２の単位行列であり、
【数５】
2005332242.tif 000007
はテンソル積を意味する。また、式(5)のｑはＢｓの行列式の値が１となるように選択される値である。
【０００６】
すると、リー代数表現（ｓｕ（２ｎ））は
【数６】
2005332242.tif 000008
と書ける。なお、ｓｐａｎ{＊}は、{＊}で定義される要素を基底とするベクトル空間を意味する。
【０００７】
＜Ｎ.Ｋｈａｎｅｊａによるカルタン分解＞
次に、非特許文献１記載のカルタン分解について説明する。
カルタン分解では、与えられたリー代数表現ｇ＝ｓｕ（２ｎ）を、直交する２つのベクトル空間（ｋとｍ＝ｋ⊥）の直和
【数７】
2005332242.tif 000009
に分解する。ここでは、式(5)で定義した直交基底を用い、ｋとｍを以下のように定義する。
【０００８】
【数８】
2005332242.tif 000010
ｎ≧３の場合、このｋとｍがそれぞれ作る空間は、図９のような格子状の行列となる。なお、図９において色の付いていない部分には０が、色のついている部分には任意の値がそれぞれ入る。
そして、これらのリー代数表現ｇ、ｋ、ｍにそれぞれ対応するリー群Ｇ，Ｋ＝ｅｘｐ（ｋ）、Ｍ＝ｅｘｐ（ｍ）では、
Ｇ＝ＫＭ  …(10)
が成り立つ。これはリー群Ｇ＝ＳＵ（２ｎ）の任意の元が、Ｋの元とＭの元との積に分解できることを意味する。
【０００９】
次に、（ｇ，ｋ）の組に対するカルタン部分代数ｈ（ｎ）を定義する。このカルタン部分代数ｈ（ｎ）は、上記のベクトル空間ｍを含む極大可換部分代数である。ここでは、以下のようにカルタン部分代数ｈ（ｎ）を定義する。
【数９】
2005332242.tif 000011
ここで、Ｈ＝ｅｘｐ（ｈ（ｎ））⊂Ｇとすると、式(10)のＭ＝ｅｘｐ（ｍ）は、さらに
Ｍ＝ＫＨＫ  …(12)
と変換できる。なお、式(12)におけるＫは、式(10)のＫと同じである。
従って、この式(12)より、式(10)に示すリー群Ｇは、
G=KM=K(KHK)=KHK ,(K=SU(2n-1),H=exp(h(n))⊂G)  …(13)
と表すことができる。すなわち、リー群Ｇの任意の元は、それよりも次元の低い、Ｋの元と、（ｇ，ｋ）の組に対するカルタン部分代数ｈ（ｎ）に対応するリー群の元との積に分解できる。
【００１０】
以上のようなカルタン分解の産業上の利用分野としては、例えば、ユニタリ変換量子回路等のユニタリ行列の分解を例示できる。すなわち、任意のユニタリ行列を現実の量子回路で実現する場合、そのユニタリ行列を基本ゲートに分解しなければならない。そして、もし、このカルタン分解によって分解された各元を新たな入力元とし、このカルタン分解を再帰的に繰り返していくことができるならば、任意のユニタリ行列をシステマチックに基本ゲートに分解することも可能である。
【非特許文献１】N. Khaneja, S. Glaster,“Cartan Decomposition of SU(2n), constructive controllability of spin systems and universal quantum computing,” quant-ph/0010100,2000.
【発明の開示】
【発明が解決しようとする課題】
【００１１】
しかし、従来、カルタン分解による分解結果から、ＫやＨの性質を崩すことなく、これらリー群の元を独立に抽出する具体的な方法は知られていなかった。従って、従来は、量子回路等に対応するユニタリ行列にカルタン分解を再帰的に適用し、このユニタリ行列を基本ゲートに分解するといった処理をシステマチックに実現することもできなかった。
本発明はこのような点に鑑みてなされたものであり、ユニタリ行列にカルタン分解を再帰的に適用し、このユニタリ行列を自動的に基本ゲートに分解する処理をコンピュータ上で実現する技術を提供することを目的とする。
【課題を解決するための手段】
【００１２】
＜第１の発明＞
上記課題を解決するために、第１の本発明では、まず、分解対象である２ｎ×２ｎの特殊ユニタリ行列Ｆ∈ＳＵ（２ｎ）の自然対数であるリー（Ｌｉｅ）代数表現ｆ∈ｓｕ（２ｎ）を、行列表現変換手段が抽出し、抽出されたリー代数表現ｆを、カルタン分解手段が、カルタン（Ｃａｒｔａｎ）分解によって、直交する２つのベクトル空間ｋ，ｍに含まれる要素ｋ１∈ｋ，ｍ１∈ｍに分解する。
次に、対角行列計算手段が、Ｕｈ・ｅｘｐ（ｍ１）・Ｕｈを対角行列Ｄｈに対角化する特殊ユニタリ行列Ｕｍを算出する。なお、Ｕｈは、ベクトル空間ｍに含まれる極大可換部分代数であるカルタン部分代数ｈ（ｎ）の基底のすべてを同時対角化する行列を意味し、対角行列Ｄｈは、カルタン部分代数ｈ（ｎ）に対応するリー群ｅｘｐ（ｈ（ｎ））を行列Ｕｈによって対角化した行列を意味する（Ｄｈ∈Ｕｈ・ｅｘｐ（ｈ（ｎ））・Ｕｈ）。
【００１３】
そして、対角行列分解手段が、対角行列Ｄｈをトフォリ（Ｔｏｆｆｏｌｉ）ゲートＴＧｈの積に分解し、基本ゲート分解手段が、各トフォリゲートＴＧｈを基本ゲートＢＧｈの積に分解し、分解要素格納手段が、ｅｘｐ（ｋ１）、Ｕｈ、Ｕｍ、Ｕｍ＊及びＢＧｈを、Ｆの分解要素（Ｆ＝ｅｘｐ（ｋ１）・（Ｕｈ・Ｕｍ・ＢＧｈ・Ｕｍ＊・Ｕｈ））として記憶手段に格納する。なお、本発明の「トフォリゲート」は、行の入れ替え等の簡易な操作によりトフォリゲートとなる行列をも含む概念である。
ここで、カルタン分解手段において、リー代数表現ｆを、直交するベクトル空間ｋ，ｍに含まれる要素ｋ１∈ｋ，ｍ１∈ｍに分解しているため、
【数１０】
2005332242.tif 000012
が成り立つ。また、ｋ１，ｍ１に対応するリー群Ｋ１＝ｅｘｐ（ｋ１）及びＭ１＝ｅｘｐ（ｍ１）は、Ｆ＝Ｋ１Ｍ１の関係を満たす。
【００１４】
また、前述の式(12)でも示したとおり、このＭ１は、
Ｍ１＝Ｋ２・ｅｘｐ（ｈ１）・Ｋ３  …(14)
と分解できる（ｈ１∈ｈ（ｎ）,Ｋ２，Ｋ３∈Ｋ＝ｅｘｐ（ｋ））。
ここでＭ１＝Ｋ２・ｅｘｐ（ｈ１）・Ｋ３を行列Ｕｈによって対角化すると、
Ｕｈ・Ｍ１・Ｕｈ＝（Ｕｈ・Ｋ２・Ｕｈ）（Ｕｈ・ｅｘｐ（ｈ１）・Ｕｈ）（Ｕｈ・Ｋ３・Ｕｈ）  …(15)
となる。そして、Ｕｈは、ｈ（ｎ）の基底のすべてを同時対角化する行列を意味するのであるから、ｈ１を対角化する行列でもあり、さらには、上述の式(1)の定義より、そのリー群ｅｘｐ（ｈ１）をも対角化する行列である。そして、Ｄｈ＝Ｕｈ・ｅｘｐ（ｈ（ｎ））・Ｕｈとしているのだから、上述の式(15)は、
Ｕｈ・Ｍ１・Ｕｈ＝Ｕｈ・Ｋ２・Ｕｈ・Ｄｈ・Ｕｈ・Ｋ３・Ｕｈ  …(16)
となる。
【００１５】
また、対角行列計算手段において、Ｕｈ・ｅｘｐ（ｍ１）・Ｕｈを対角行列Ｄｈに対角化する特殊ユニタリ行列Ｕｍを算出しているが、Ｍ１＝ｅｘｐ（ｍ１）であるため、
Ｕｍ＊（Ｕｈ・Ｍ１・Ｕｈ）Ｕｍ＝Ｄｈ
Ｕｈ・Ｍ１・Ｕｈ＝Ｕｍ・Ｄｈ・Ｕｍ＊  …(17)
が成り立つ。ここで、式(16)と(17)とが成り立つためには、
Ｋ２＝Ｕｈ・Ｕｍ・Ｕｈ  …(18)
Ｋ３＝Ｕｈ・Ｕｍ＊・Ｕｈ  …(19)
であれば十分である。
【００１６】
そして、この式(18)(19)を上述の式(14)に代入すると、
Ｍ１＝Ｋ２・ｅｘｐ（ｈ１）・Ｋ３
＝（Ｕｈ・Ｕｍ・Ｕｈ）・ｅｘｐ（ｈ１）・（Ｕｈ・Ｕｍ＊・Ｕｈ）
＝Ｕｈ・Ｕｍ・（Ｕｈ・ｅｘｐ（ｈ１）・Ｕｈ）・Ｕｍ＊・Ｕｈ
＝Ｕｈ・Ｕｍ・Ｄｈ・Ｕｍ＊・Ｕｈ
となる。
すなわち、この式より、分解対象である特殊ユニタリ行列Ｆは、
Ｆ＝Ｋ１Ｍ１
＝Ｋ１・Ｕｈ・Ｕｍ・Ｄｈ・Ｕｍ＊・Ｕｈ  …(20)
と分解できることが分かる。
【００１７】
この式(20)において、行列Ｕｈの量子回路は公知である（後述）。また、対角行列Ｄｈは、対角行列分解手段及び基本ゲート分解手段により、基本ゲートＢＧｈの積に分解できる。従って、残りのＫ１とＵｍが基本ゲートまで分解できれば、Ｆを基本ゲートに分解できる。そこで、次は、これらＫ１とＵｍを、それぞれ分解対象である特殊ユニタリ行列として本発明の処理を再帰的に繰り返す。なお、Ｕｍは対角行列計算手段が算出したものであるからＵｍを、分解対象である特殊ユニタリ行列として特定することは容易であり、また、Ｕｍが特定できるならば、残りのＫ１を式(20)から抽出することも容易である。これにより、Ｆを基本ゲートレベルまで分解できる。
【００１８】
＜第２の発明＞
上記課題を解決するために、第２の本発明では、まず、分解対象である２ｎ×２ｎの特殊ユニタリ行列Ｆ∈ＳＵ（２ｎ）の自然対数であるリー（Ｌｉｅ）代数表現ｆ∈ｓｕ（２ｎ）を、行列表現変換手段が抽出し、抽出されたリー代数表現ｆを、カルタン分解手段が、カルタン（Ｃａｒｔａｎ）分解によって、直交する２つのベクトル空間ｋ，ｍに含まれる要素ｋ１∈ｋ，ｍ１∈ｍに分解する。
次に、ｍ１を対角行列Ｄ１に対角化する特殊ユニタリ行列Ｕ１を、対角行列計算手段が算出し、対角行列分解手段が、ｅｘｐ（Ｄ１）をトフォリ（Ｔｏｆｆｏｌｉ）ゲートＴＧ１の積に分解し、基本ゲート分解手段が、上記各トフォリゲートＴＧ１を基本ゲートＢＧ１の積に分解し、分解要素格納手段が、上記ｅｘｐ（ｋ１）、Ｕ１、Ｕ１＊及びＢＧ１を、Ｆの分解要素（Ｆ＝ｅｘｐ（ｋ１）・（Ｕ１・ＢＧ１・Ｕ１＊））として記憶手段に格納する。
【００１９】
ここで、カルタン分解手段において、リー代数表現ｆを、直交するベクトル空間ｋ，ｍに分解しているため、ｋ1∈ｋ，ｍ１∈ｍとすると、
【数１１】
2005332242.tif 000013
が成り立つ。また、ｋ１，ｍ１に対応するリー群Ｋ１＝ｅｘｐ（ｋ１）及びＭ１＝ｅｘｐ（ｍ１）は、Ｆ＝Ｋ１Ｍ１の関係を満たす。
【００２０】
また、対角行列計算手段において、ｍ１を対角行列Ｄ１に対角化する特殊ユニタリ行列Ｕ１を算出している。そして、上述の式(1)の定義より、この特殊ユニタリ行列Ｕ１は、ｍ１のリー群Ｍ１＝ｅｘｐ（ｍ１）を対角行列ｅｘｐ（Ｄ１）に対角化する行列である。従って、この特殊ユニタリ行列Ｕ１を用いれば、Ｍ１は、
Ｍ１＝Ｕ１・ｅｘｐ（Ｄ１）・Ｕ１＊  …(21)
と書ける。
従って、分解対象である特殊ユニタリ行列Ｆは、
Ｆ＝Ｋ１Ｍ１
＝Ｋ１・Ｕ１・ｅｘｐ（Ｄ１）・Ｕ１＊  …(22)
と分解できることが分かる。
【００２１】
この式(22)において、対角行列Ｄ１は、対角行列分解手段及び基本ゲート分解手段により、基本ゲートＢＧ１の積に分解できる。従って、残りのＫ１とＵ１が基本ゲートまで分解できれば、Ｆを基本ゲートに分解できる。そこで、次は、これらＫ１とＵ１を、それぞれ分解対象である特殊ユニタリ行列として本発明の処理を再帰的に繰り返す。なお、Ｕ１は対角行列計算手段が算出したものであるからＵ１を、分解対象である特殊ユニタリ行列として特定することは容易であり、また、Ｕ１が特定できるならば、残りのＫ１を式(22)から抽出することも容易である。これにより、Ｆを基本ゲートレベルまで分解できる。
【発明の効果】
【００２２】
以上のように、本発明では、カルタン分解結果の一部を対角行列に置き換えることとしたため、再帰的にカルタン分解を適用することが可能となる。これにより、任意のユニタリ行列を自動的に基本ゲートに分解する処理をコンピュータ上で実現することが可能となる。
【発明を実施するための最良の形態】
【００２３】
以下、本発明の実施の形態を図面を参照して説明する。
〔第１の実施の形態〕
まず、本発明における第１の実施の形態について説明する。
＜構成＞
まず、本形態におけるユニタリ行列分解装置の構成を説明する。
図１は、本形態におけるユニタリ行列分解装置１の構成を説明するためのブロック図である。
ユニタリ行列分解装置１は、公知のコンピュータに所定のプログラムを実行させることにより構築され、入力部２、主記憶装置３（「記憶手段」に相当）、構造判定部４、行列表現変換部５、カルタン分解部６、対角行列計算部７、Ｍ分解部、対角行列分解部９、基本ゲート分解部１０、分解要素格納部１１及び出力部１２を有している。
【００２４】
＜主記憶装置＞
主記憶装置３は、２ｎ×２ｎの特殊ユニタリ行列（ＳＵ（２ｎ））と、当該特殊ユニタリ行列の自然対数であるリー（Ｌｉｅ）代数表現（ｓｕ（２ｎ））と、を対応付けて格納する。そして、分解対象とした行列を、その分解後の積の形に置き換えていく。
【００２５】
＜構造判定部＞
構造判定部４は、主記憶装置３に格納された特殊ユニタリ行列が基本ゲートであるか否かを判断し、基本ゲートでないと判断した特殊ユニタリ行列を主記憶装置３から抽出し、抽出した特殊ユニタリ行列がＳＵ（４）に含まれるか否かを判定する。
ここで、抽出した特殊ユニタリ行列がＳＵ（４）に含まれると判定された場合、構造判定部４は、その特殊ユニタリ行列を基本ゲート分解部１０に渡す。一方、抽出した特殊ユニタリ行列がＳＵ（４）に含まれないと判定された場合、構造判定部４は、その特殊ユニタリ行列を行列表現変換部５に渡す。なお、この行列表現変換部５に渡される特殊ユニタリ行列は、主記憶装置３に格納された特殊ユニタリ行列のうち、基本ゲートを除く、ｎ≧３の特殊ユニタリ行列となる（「分解対象の特殊ユニタリ行列Ｆ」に相当）。また、特殊ユニタリ行列がＳＵ（４）に含まれる（特殊ユニタリ行列がｎ＝２である）とは、特殊ユニタリ行列が４×４の行列となっている場合に限られず、各行や列の０以外の要素の数の最大値が４である場合も含まれる。
【００２６】
＜行列表現変換部＞
行列表現変換部５は、構造判定部４から受け取った分解対象の特殊ユニタリ行列Ｆ∈ＳＵ（２ｎ）に対応するリー代数表現ｆ∈ｓｕ（２ｎ）が主記憶装置３に格納されているか否かを判断する。
ここで、対応するリー代数表現ｆが格納されていると判断された場合、行列表現変換部５は、分解対象の特殊ユニタリ行列Ｆ∈ＳＵ（２ｎ）に対応するリー代数表現ｆ∈ｓｕ（２ｎ）を主記憶装置３から抽出する。一方、対応するリー代数表現ｆが格納されていないと判断された場合、行列表現変換部５は、対角行列計算部７を呼び出し、当該Ｆを対角行列Ｄ２に対角化する行列Ｕ２を計算させ、Ｕ２・ｌｏｇ（Ｄ２）・Ｕ２＊の演算結果を、当該Ｆに対応するリー代数表現ｆとして、主記憶装置３に格納する。
【００２７】
＜対角行列計算部＞
対角行列計算部７は、入力された行列を対角化するユニタリ行列を求める。そして、その対角化するユニタリ行列Ｕと、それによって対角化した対角行列Ｄとを出力する。具体的には、例えば、以下のアルゴリズムによりこの演算を行う。
［アルゴリズム１：入力行列のサイズが小さい場合］
１．固有方程式  ｄｅｔ（Ａ−λＩ）＝０を厳密に解いて固有値λ∈Ｃを求める。なお、Ａはｍ（＝２ｎ）次の入力行列を、Ｉは単位行列を、ｄｅｔ（．．．）は行列式の値をそれぞれ意味する。
【００２８】
２．求まった各固有値λをＡν＝λνに代入し、この方程式を解くことにより、各固有値λに対応する固有ベクトルν∈Ｃｍ，ν≠０を求める。
３．求められた固有値λ１，λ２，…，λｍ、及びこれらの固有値に対応する固有ベクトルν１，ν２，…，νｍから、
Ｕ＝（ν１，ν２，…，νｍ）
Ｄ＝ｄｉａｇ（λ１，λ２，…，λｍ）
を算出する。なお、ｄｉａｇ（λ１，λ２，…，λｍ）は、λ１，λ２，…，λｍを対角成分とする対角行列を意味する。
【００２９】
［アルゴリズム２：入力行列のサイズが大きい場合］
１．入力行列ＡをＨｅｒｍｉｔｅ行列Ｂ（Ｂ＊＝Ｂなる行列）に変換する。
２．ＢをＨｅｒｍｉｔｅ三重対角行列Jに変換する（相似変換）。
３．Jについて，固有方程式  ｄｅｔ（J‐λＩ）を解く。ここで、Jの固有値はＢと等しく、Jは三重対角行列であるため、Ｂから直接固有方程式を解くよりも簡単に解を求めることができる。
４. 求まったBの固有値からＡの固有値λ∈Ｃを算出する。
５．以降はアルゴリズム１と同様である。
【００３０】
なお、アルゴリズム２の「１．」におけるＨｅｒｍｉｔｅ行列への変換には、以下のような手法を利用できる。
(a)入力行列Ａがユニタリ行列の場合、Ｂ＝Ａ＋Ａ＊とすれば、ＢはＨｅｒｍｉｔｅ行列となる。この場合、Aの固有値をα１とすれば、Bの固有値β１は、β１＝α１＋α１＊（α１＊は、α１の共役複素数）である（「４．」の処理に対応）。
(b)入力行列Ａが歪みＨｅｒｍｉｔｅ行列の場合、B＝iAとすれば、ＢはＨｅｒｍｉｔｅ行列となる。この場合、Aの固有値をα１とすれば、Bの固有値β１は、β１＝‐ｉα１である（「４．」の処理に対応）。
なお、上記の方法の他にも、適切な相似変換（前処理）を行うことで、ＱＲ法やベキ乗法などのよく知られている固有値問題を解くアルゴリズムを利用すれば、固有値を求めることができる。
【００３１】
＜基本ゲート分解部＞
基本ゲート分解部１０は、トフォリゲートやＳＵ（４）に含まれる行列（主記憶装置３に格納された特殊ユニタリ行列のうち、基本ゲートを除く、ｎ＝２の特殊ユニタリ行列）を、ＳＵ（２）とＣＮＯＴの積（基本ゲートの積）に分解する。
＜カルタン分解部＞
カルタン分解部６は、受け取ったリー代数表現ｆを、カルタン（Ｃａｒｔａｎ）分解によって、直交する２つのベクトル空間ｋ，ｍに含まれる要素ｋ１∈ｋ，ｍ１∈ｍの直和に分解する。そして、分解されたｍ１をＭ分解部８へ渡す。その後、Ｍ分解部８から返された分解結果をｋとともに、分解要素格納部１１へ渡す。
【００３２】
＜Ｍ分解部＞
Ｍ分解部８は、受け取ったｍを対角行列計算部７へ渡し、Ｕｈ・ｅｘｐ（ｍ１）・Ｕｈを対角行列Ｄｈ（Ｄｈ∈Ｕｈ・ｅｘｐ（ｈ（ｎ））・Ｕｈ）に対角化する特殊ユニタリ行列Ｕｍを算出させる。そして、Ｍ分解部８は、対角行列計算部７において算出された特殊ユニタリ行列Ｕｍと対角行列Ｄｈとを受け取り、ｅｘｐ（ｍ１）をＵｈ・Ｕｍ・Ｄｈ・Ｕｍ＊・Ｕｈで置き換える。また、Ｍ分解部８は、この対角行列Ｄｈを対角行列分解部９に渡し、対角行列分解部９から返された分解結果で対角行列Ｄｈを置き換え、それらとＵｈ、Ｕｍ、Ｕｍ＊とをカルタン分解部６へ返す。
【００３３】
［行列Ｕｈの説明］
前述のように、Ｕｈはベクトル空間ｍに含まれる極大可換部分代数であるカルタン部分代数ｈ（ｎ）の基底のすべてを同時対角化する行列である。すなわち、前述の式(11)で定義されるカルタン部分代数ｈ（ｎ）の基底には、それらすべてを同時対角化するような行列Ｕｈが存在する。例えば、ｇ∈ｓｕ（２３）の場合を考えると、（ｇ，ｋ）の組に対するカルタン部分代数ｈ（ｎ）は、
【数１２】
2005332242.tif 000014
より、
h1=i(α1σ1+α2σ2+α3σ3+α4σ4)∈h(3)
と書ける。この場合、ｈ（３）の基底σ１，σ２，σ３，σ４のすべてを同時対角化する行列、すなわち、任意のｈ１∈ｈ（３）に対して、
Uh*・h(n)・Uh=α1・Uh*・σ1・Uh+α2・Uh*・σ2・Uh+α3・Uh*・σ3・Uh+α4・Uh*・σ4・Uh=Dh
が成り立つような行列Ｕｈが存在し、その行列Ｕｈは以下のようになる。
【００３４】
【数１３】
2005332242.tif 000015
ここで、Uh*・σｐ・Uh（ｐ＝１，２，３，４）を計算すると、それぞれ対角行列が求まることから、同時対角化できることがわかる。
【００３５】
このような行列Ｕｈは、ｎ≧３のとき、図３のように規則的に構成することができ、かつ、Ｕｈ＊＝Ｕｈ−１＝Ｕｈが成り立つ。すなわち、ｎ＝３のときは、図３の（ａ）に示すように、２つのＣＮＯＴゲート２１，２２と、その目標ビット経路上にＣＮＯＴゲート２１，２２に挟まれて配置されたアダマール（Ｈａｄａｍａｒｄ）ゲート３１と、これらの目標ビット及び制御ビット以外の第３の量子ビット経路上に配置されるアダマールゲート３２‐１とによって行列Ｕｈ（３）が構成される（Ｕｈ（β）は、ｎ＝βの行列Ｕｈを意味する。）。また、ｎ＝４のときは、図３の（ｂ）に示すように、さらに第４の量子ビット経路上に配置されるアダマールゲート３２‐２が追加されることによって行列Ｕｈ（４）が構成される。そして、これを一般化すると、図３の（ｃ）に示すように、２つのＣＮＯＴゲート２１，２２と、その目標ビット経路上にＣＮＯＴゲート２１，２２に挟まれて配置されたアダマールゲート３１と、アダマールゲート３２‐１〜ｎとによって行列Ｕｈ（ｎ）が構成される（行列Ｕｈの説明終わり）。
【００３６】
＜対角行列分解部＞
対角行列分解部９は、２ｎ×２ｎの対角行列を、２ｎ−１個のｎ量子ビットのトフォリ（Ｔｏｆｆｏｌｉ）ゲートの積に分解する。なお、ここでの「トフォリゲート」には、簡易な操作によりトフォリゲートの形になる行列も含まれる。
例えば、ｎ＝３のときの対角行列
【００３７】
【数１４】
2005332242.tif 000016
の場合、対角行列分解部９は、この対角行列Ｄを４個の３量子ビットのトフォリゲートの積に分解する。すなわち、Ｄ＝Ｆ１Ｆ２Ｆ３Ｆ４
【数１５】
2005332242.tif 000017
と分解する。
【００３８】
ここで、Ｆ４は３量子ビットのトフォリゲートそのものである。Ｆ１，Ｆ２，Ｆ３は、行の入れ替えをすれば、やはり３量子ビットのトフォリゲートで実現できる。例えば、Ｆ１の場合は、まず上半分と下半分とを入れ替え（第１量子ビットの０，１を反転させる）、次に下半分のうち、さらに上半分と下半分とを入れ替える（第2量子ビットの０，１を反転させる）ことで３量子ビットのトフォリゲートの形になる。本発明では、Ｆ１，Ｆ２，Ｆ３のようなものも「トフォリゲート」と呼ぶことにする。
対角行列分解部９は、対角行列をトフォリゲートに分解すると、次に、基本ゲート分解部１０を呼び出し、このトフォリゲートを基本ゲートに分解させる。そして、その分解結果をＭ分解部８に返す。
【００３９】
＜基本ゲート分解部＞
基本ゲート分解部１０は、ＳＵ（４）に含まれる特殊ユニタリ行列や、トフォリゲートを、行・列の入れ替えや対角化を利用して基本ゲートの積に分解する。なお、ｎ量子ビットのトフォリゲートは、Ｏ（ｎ2）の基本ゲートで実現できる（例えば、ｂ「A.Barenco et al., Elementary gates for quantum computation, Phys. Rev. A52, pp.3457-3467,1995.」や「C. Moore and M. Nilsson, parallel quantum computation and quantum codes, SIAM J. Comp, Vol.31, No.3, pp.799-815, 2001.」を参照。）。
【００４０】
＜分解要素格納部＞
分解要素格納部１１は、ｅｘｐ（ｋ１）、Ｕｈ、Ｕｍ、Ｕｍ＊及び基本ゲートＢＧｈを、Ｆの分解要素（Ｆ＝ｅｘｐ（ｋ１）・（Ｕｈ・Ｕｍ・ＢＧｈ・Ｕｍ＊・Ｕｈ＝ｅｘｐ（ｍ１）））として主記憶装置３に格納する（ここで、ｋ１∈ｋ、ｍ１∈ｍ）。
＜処理＞
次に、本形態におけるユニタリ行列分解方法について説明する。
図２は、本形態におけるユニタリ行列分解方法を説明するためのフローチャートである。以下、図１及び図２を用い、本形態におけるユニタリ行列の分解分解処理について説明する。
まず、任意のユニタリ行列が入力部２から入力される。入力されたユニタリ行列は、入力部２において特殊ユニタリ行列Ｆ∈ＳＵ（２ｎ）に変換され、行列リストＦとして主記憶装置３に格納される。
【００４１】
次に、構造判定部４が、主記憶装置３に格納されたすべての特殊ユニタリ行列Ｆ（主記憶装置３の行列リストに含まれる行列Ｆ）が基本ゲートであるか否かが判断する（ステップＳ１）。ここで、主記憶装置３に格納されたすべての特殊ユニタリ行列Ｆが基本ゲートであると判断された場合には処理を終了する。
一方、基本ゲートでない特殊ユニタリ行列Ｆが行列リストに存在すると判断された場合、構造判定部４は、行列リストの中で最初の基本ゲートでない特殊ユニタリ行列Ｆを主記憶装置３から読み出す（抽出する）（ステップＳ２）。特殊ユニタリ行列Ｆを抽出した構造判定部４は、抽出した特殊ユニタリ行列がＳＵ（４）に含まれるか否かを判断する（ステップＳ３）。ここで、抽出した特殊ユニタリ行列がＳＵ（４）に含まれると判断された場合（ｎ＜３であると判断された場合）、構造判定部４は、その特殊ユニタリ行列Ｆを基本ゲート分解部１０に送り、基本ゲート分解部１０は、この特殊ユニタリ行列Ｆを基本ゲートの積で置き換えて主記憶装置３に格納して処理を終了する。
【００４２】
一方、抽出した特殊ユニタリ行列がＳＵ（４）に含まれないと判断された場合（ｎ≧３であると判断された場合）、構造判定部４は、その特殊ユニタリ行列Ｆ（「分解対象である特殊ユニタリ行列Ｆ」に相当）を行列表現変換部５に送る。これを受け取った行列表現変換部５は、その分解対象である特殊ユニタリ行列Ｆに対応するリー代数表現ｆが計算されているか否か（主記憶装置３に格納されているか否か）を判断する（ステップＳ５）。ここで、対応するリー代数表現ｆが計算されていないと判断された場合、行列表現変換部５は、このリー代数表現ｆを求めて主記憶装置３に格納する（ステップＳ６）。具体的には、例えばまず、行列表現変換部５が対角行列計算部７を呼び出し、分解対象である特殊ユニタリ行列Ｆを対角行列Ｄ２に対角化する行列Ｕ２を算出させ、この行列Ｕ２及び対角行列Ｄ２を受け取る。そして、行列表現変換部５は、
ｌｏｇ（Ｆ）＝ｌｏｇ（Ｕ２・Ｄ２・Ｕ２＊）
＝Ｕ２・ｌｏｇ（Ｄ２）・Ｕ２＊
の演算結果を、当該Ｆに対応するリー代数表現ｆとして主記憶装置３に格納する。このようにＦを対角行列Ｄ２に分解してｌｏｇの演算を行うことにより、直接ｌｏｇ（Ｆ）を計算するよりも演算量を低減させることができる。なお、ｌｏｇは式(1)で定義した指数演算に対応する自然対数である。
【００４３】
一方、ステップＳ５の判断で、対応するリー代数表現ｆが計算されていると判断された場合、行列表現変換部５は、リー代数表現ｆの算出を行わない。
その後、行列表現変換部５は、分解対象である特殊ユニタリ行列Ｆ∈ＳＵ（２ｎ）に対応するリー代数表現ｆ∈ｓｕ（２ｎ）を主記憶装置３から抽出し（ステップＳ７）、カルタン分解部６に送る。カルタン分解部６は、送られたリー代数表現ｆを、カルタン分解によって、直交する２つのベクトル空間ｋ，ｍに含まれる要素ｋ１∈ｋ，ｍ１∈ｍに分解し、対応するＦ＝ｅｘｐ（ｆ）をｅｘｐ（ｋ１）・ｅｘｐ（ｍ１）で置き換える関係を保存しておく（ステップＳ８）。なお、このカルタン分解は、前述のように（図９）、分解された各行列の要素を格子状にとればよい。
【００４４】
カルタン分解部６において分解されたｍ１は、Ｍ分解部８に送られ、Ｍ分解部８は、これを対角行列計算部７に送る。そして、対角行列計算部７は、Ｕｈ・ｅｘｐ（ｍ１）・Ｕｈを対角行列Ｄｈに対角化する特殊ユニタリ行列Ｕｍを算出し、対角行列Ｄｈと特殊ユニタリ行列ＵｍとをＭ分解部８に返す。Ｍ分解部８は、ｅｘｐ（ｍ１）をＵｈ・Ｕｍ・Ｄｈ・Ｕｍ＊・Ｕｈで置き換える関係を保存しておく（ステップＳ９）。
次に、Ｍ分解部８は、対角行列Ｄｈを対角行列分解部９に送り、対角行列分解部９は、対角行列ＤｈをトフォリゲートＴＧｈの積に分解する（ステップＳ１０）。対角行列分解部９は、対角行列ＤｈをトフォリゲートＴＧｈの積で置き換える関係を保存し、これらのトフォリゲートＴＧｈを基本ゲート分解部１０に送る。基本ゲート分解部１０は、送られた各トフォリゲートＴＧｈを基本ゲートＢＧｈの積に分解し（ステップＳ１１）、トフォリゲートＴＧｈを基本ゲートＢＧｈの積に置き換えた関係を対角行列分解部９に返す。
【００４５】
対角行列分解部９は、保存しておいた「対角行列ＤｈをトフォリゲートＴＧｈの積で置き換える関係」を用い、基本ゲート分解部１０から受け取った基本ゲートＢＧｈの積で対角行列Ｄｈを置き換える。そして、その基本ゲートＢＧｈの積で置き換えられた対角行列ＤｈをＭ分解部８に返す。
Ｍ分解部８は、保存しておいた「ｅｘｐ（ｍ１）をＵｈ・Ｕｍ・Ｄｈ・Ｕｍ＊・Ｕｈで置き換える関係」を用い、対角行列分解部９から送られた基本ゲートＢＧｈの積（＝Ｄｈ）でＵｈ・Ｕｍ・Ｄｈ・Ｕｍ＊・Ｕｈを置き換え、その置き換え結果ｅｘｐ（ｍ１）＝Ｕｈ・Ｕｍ・ＢＧｈ・Ｕｍ＊・Ｕｈをカルタン分解部６に返す。
【００４６】
カルタン分解部６は、保存しておいた「Ｆ＝ｅｘｐ（ｆ）をｅｘｐ（ｋ１）・ｅｘｐ（ｍ１）で置き換える関係」を用い、Ｍ分解部８から送られたｅｘｐ（ｍ１）＝Ｕｈ・Ｕｍ・ＢＧｈ・Ｕｍ＊・ＵｈでＦ＝ｅｘｐ（ｆ）を置き換え、その置き換え結果Ｆ＝ｅｘｐ（ｋ１）・Ｕｈ・Ｕｍ・ＢＧｈ・Ｕｍ＊・Ｕｈを分解要素格納部１１に送る。
分解要素格納部１１は、ｅｘｐ（ｋ１）、ｋ１、Ｕｈ、Ｕｍ、Ｕｍ＊及びＢＧｈを、Ｆの分解要素（Ｆ＝ｅｘｐ（ｋ１）・（Ｕｈ・Ｕｍ・ＢＧｈ・Ｕｍ＊・Ｕｈ））として主記憶装置３に格納する（ステップＳ１２）。
【００４７】
ここで、主記憶装置３に格納されたＵｈの量子回路構成は前述の通り公知である（図３）。また、当然、基本ゲートＢＧｈの回路構成も公知である。従って、ｅｘｐ（ｋ１）及びＵｍがＵｈ或いはＢＧｈに分解できれば、Ｆは実現可能な量子回路に分解されたことになる。そのため、以降は、このｅｘｐ（ｋ１）及びＵｍを新たな特殊ユニタリ行列Ｆ∈ＳＵ（２ｎ）として、上述したステップＳ１〜Ｓ１２までの処理を再帰的に繰り返す。これにより、すべての行列が実現可能な量子回路に分解される。
＜３量子ビットのＦｏｕｒｉｅｒ変換の行列の分解＞
次に、本形態の具体例について説明する。この例では、３量子ビット（ｎ＝３）のＦｏｕｒｉｅｒ変換の行列の分解を行う。
【００４８】
＜基本行列＞
まず、この例の分解に使用する基本的な行列を示す。
【数１６】
2005332242.tif 000018
Ｅは２×２の単位行列で、ＮはＮＯＴゲート、Ｈはアダマールゲートである。また、Ｃ１は第１量子ビットが１のときだけ、第２量子ビットの状態を反転させる制御ＮＯＴ（ＣＮＯＴ）ゲートで、Ｃ２はＣＮＯＴの逆で、第１量子ビットが０ときだけ、第２量子ビットの状態を反転させるゲートである。また、Ｓは第１量子ビットと第２量子ビットの状態を入れ替えるＳＷＡＰゲートである。
【００４９】
＜入力＞
３量子ビットのＦｏｕｒｉｅｒ変換の行列ＵＦ∈ＳＵ（８）は、次の行列である。
【数１７】
2005332242.tif 000019
【００５０】
まず、この行列ＵＦ（「Ｆ」に相当）を入力部２（図１）に入力し、主記憶装置３に格納する。この行列ＵＦは、基本ゲートでなく（ステップＳ１）、ＳＵ（４）にも含まれない（ステップＳ３）。また、この時点では、行列ＵＦに対応するＬｉｅ代数表現も計算されていない（ステップＳ４）。そこでまず、行列表現変換部５は、対角行列計算部７を呼び出し、行列ＵＦに対応するＬｉｅ代数表現ｆを求める（ステップＳ５，Ｓ６）。つまり、ＵＦ＝ｅｘｐ（ｆ）であることから、行列表現変換部５は、ＵＦを対角行列Ｄｆに対角化する行列Ｕ１を利用し、
ＵＦ＝Ｕ１・Ｄｆ・Ｕ１＊＝ｅｘｐ（ｆ）
ｆ＝ｌｏｇ（ＵＦ）＝ｌｏｇ（Ｕ１・Ｄｆ・Ｕ１＊）＝Ｕ１・ｌｏｇ（Ｄｆ）・Ｕ１＊
により、Ｌｉｅ代数表現ｆを求める。ここで、この対角化を実現する行列Ｕ１は、ユニタリ行列の性質を満たすようにＵＦの固有ベクトルを縦に並べた行列である。すなわち、
【数１８】
2005332242.tif 000020
である。
【００５１】
そして、行列ＵＦに対応するＬｉｅ代数表現ｆは、
【数１９】
2005332242.tif 000021
である。このように算出されたＬｉｅ代数表現ｆは、行列ＵＦに対応付けられて主記憶装置３に格納される。
【００５２】
次に、行列表現変換部５は、主記憶装置３から行列ＵＦに対応するＬｉｅ代数表現ｆを抽出し（ステップＳ７）、カルタン分解部６に送る。カルタン分解部６は、カルタン分解を利用して、このｆを
【数２０】
2005332242.tif 000022
という２つの行列ｋ１，ｍ１の直和に分解する（ステップＳ８）。この分解は、図９のように格子状に要素を抽出することによってできる。すなわち、
【数２１】
2005332242.tif 000023
となる。そして、Ｋ1＝ｅｘｐ（ｋ１），Ｍ１＝ｅｘｐ（ｍ１）より、ＵＦ＝Ｋ1・Ｍ１の分解が求まる。
【００５３】
カルタン分解部６で算出されたｍ１は、Ｍ分解部８に送られ、Ｍ分解部８は、対角行列計算部７を呼び出し、Ｍ１＝ｅｘｐ（ｍ１）をＭ１＝Ｕｈ・Ｕｍ・Ｄｈ・Ｕｍ＊・Ｕｈで置き換える（ステップＳ９）。ここで、Ｕｈは前述の式(23)で示される行列であり、図３の量子回路で実現できるものである。ＤｈはＵｈ・Ｍ１・Ｕｈの固有値が対角成分にならんだ対角行列で、
Ｄｈ＝ｄｉａｇ（ｉ，−ｉ，ｉ，−ｉ，１，１，１，１）  …(24)
となる。
【００５４】
この対角行列Ｄｈは、対角行列分解部９において、＜対角行列分解部＞の説明で述べたように、４個の３量子ビットのトフォリゲートの積に分解されるが、Ｆ３，Ｆ４は単位行列となるため、２個の３量子ビットのトフォリゲートの積に分解される（ステップＳ１０）。そして、さらに基本ゲート分解部１０において以下のような基本ゲートの積に分解される（ステップＳ１１）。
【数２２】
2005332242.tif 000024
である。
【００５５】
また、このような対角化を実現する行列Ｕｍは
【数２３】
2005332242.tif 000025
である。
そして、以上のような対角行列Ｄｈの基本ゲートの積、行列Ｕｍ、Ｕｍ＊、Ｕｈ、Ｋ1＝ｅｘｐ（ｋ１），ｋ１は、分解要素格納部１１において主記憶装置３に格納される（ステップＳ１２）。
【００５６】
＜Ｕｍの分解＞
次に、ＵｍやＫ1は基本ゲートでないため（ステップＳ１）、構造判定部４において、まず行列Ｕｍが、主記憶装置３から読み出される（ステップＳ２）。ここで、式(25)に示すように、各行や列に含まれる０以外の要素の数は最大値は４である。よって、この行列ＵｍはＳＵ（４）に含まれ、構造判定部４は、この行列Ｕｍを基本ゲート分解部１０に送る。そして、基本ゲート分解部１０は、以下のように、この行列Ｕｍを基本ゲートの積で置き換える（ステップＳ４）。
【数２４】
2005332242.tif 000026
【００５７】
【数２５】
2005332242.tif 000027
ここで、Ｕ４は行と列を入れ替える行列であり、基本ゲート分解部１０は、トフォリゲートＴ８を用いて、さらにこのＵ４を以下のように構成する。
【００５８】
【数２６】
2005332242.tif 000028
このＴ8は、第１量子ビットと第２量子ビットの状態が共に１の場合にのみ、第３量子ビットの状態を反転させる制御ＮＯＴゲートである。
【００５９】
また、基本ゲート分解部１０は、Ｔ５を以下の行列のテンソル積に分解する。
【数２７】
2005332242.tif 000029
【００６０】
＜Ｕ６の分解＞
さらに、基本ゲート分解部１０は、Ｕ６を以下の形に分解する。
【数２８】
2005332242.tif 000030
以上のような分解結果は主記憶装置３に格納される。
【００６１】
＜Ｋ１＝Ｋ２・Ｍ２への分解＞
次に、まだＫ1は基本ゲートでないため（ステップＳ１）、構造判定部４においてＫ1が主記憶装置３から読み出される（ステップＳ２）。Ｋ1もＳＵ（４）に含まれるため、構造判定部４は、このＫ1基本ゲート分解部１０に送る。そして、基本ゲート分解部１０は、以下のように、このＫ1を基本ゲートの積で置き換える（ステップＳ４）。
【００６２】
まず、基本ゲート分解部１０は、Ｋ1＝ｅｘｐ（ｋ１）に対応するリー代数表現ｋ1を主記憶装置３から抽出する。そして、基本ゲート分解部１０は、カルタン分解によって、このリー代数表現ｋ1をｋ２とｍ２との直和に分解する。具体的には、例えば、ｋ1から図４の（ａ）の要素を取り出したものをｋ２とし、図４の（ｂ）の要素を取り出したものをｍ２とする。すると、
【数２９】
2005332242.tif 000031
となる。従って、
【数３０】
2005332242.tif 000032
【００６３】
【数３１】
2005332242.tif 000033
となる。
【００６４】
＜Ｋ２の分解＞
次に基本ゲート分解部１０は、上記の式(26)に示されるＫ２を、以下の形に書き換える。
【数３２】
2005332242.tif 000034
【００６５】
【数３３】
2005332242.tif 000035
ここで、Ｕ２は、Ｋ２の行や列を入れ替えて作られた行列であり、Ｓ１がその行と列の入れ替えを表している。具体的には、
【数３４】
2005332242.tif 000036
であり、このＳ１の操作は、
１.第２量子ビットと第３量子ビットを入れ替える。
２.第１量子ビットと第２量子ビットを入れ替える。
３.第１量子ビットの否定（ＮＯＴ）をとる。
という操作から構成されている。
【００６６】
＜Ｕ２の分解＞
次に基本ゲート分解部１０は、対角行列計算部７を呼び出して、上記の式(28)で示すＵ２を、以下のように対角行列Ｄ２を含む行列の積に分解する。
【数３５】
2005332242.tif 000037
さらに、基本ゲート分解部１０は、式(29)のＵ３を、以下の形に分解する。
【００６７】
【数３６】
2005332242.tif 000038
次に基本ゲート分解部１０は、式(30)のＤ２を、以下の形に分解する。
【００６８】
【数３７】
2005332242.tif 000039
【００６９】
＜Ｍ２の分解＞
また、基本ゲート分解部１０は、前述の式(27)に示されるＭ２を、以下の形に分解する。
【数３８】
2005332242.tif 000040
ここで、Ｔ６は２ビットのトフォリゲートであり、これをsingle-qubit rotationsとCNOTに分解する手法は既に知られている（例えば、ｂ「A.Barenco et al., Elementary gates for quantum computation, Phys. Rev. A52, pp.3457-3467,1995.」や「C. Moore and M. Nilsson, parallel quantum computation and quantum codes, SIAM J. Comp, Vol.31, No.3, pp.799-815, 2001.」を参照。）。
そして、以上のような分解結果は主記憶装置３に格納される。
【００７０】
以上のような処理により、求まったFuorier変換の分解は以下のようになる。
【数３９】
2005332242.tif 000041
また、図５の（ａ）は、上記の式(31)に示すＵＦのカルタン分解により求まる量子回路を示している。この図に示すように、ＵＦの量子回路は、Ｕｈ回路４１、Ｕｍ＊回路４２、Ｄｈ回路４３、Ｕｍ回路４４、Ｕｈ回路４５、Ｍ２回路４６、Ｋ２回路４７を直列に配置して構成される。
図５の（ｂ）は、Ｄｈ回路４３を基本ゲートに分解した構成（式(35)）を示している。この図に示すように、Ｄｈ回路４３は、４つのＮＯＴゲート４３ａ〜４３ｄと２つの制御ユニタリ（Ｔ９）ゲート４３ｅ，４３ｆによって構成される。
【００７１】
図５の（ｃ）は、Ｍ２回路４６を基本ゲートに分解した構成（式(33)）を示している。この図に示すように、Ｍ２回路４６は、２つのＳＷＡＰゲート４６ａ，４６ｂと１つの制御ユニタリゲート（Ｔ６）４６ｃによって構成される。
図６の（ａ）は、Ｕｍ回路４４を基本ゲートに分解した構成（式(34)）を示している。この図に示すように、Ｕｍ回路４４は、８つのＮＯＴゲート４４ａ〜４４ｈ、４つの制御ユニタリゲート（Ｔ８）４４ｉ〜４４ｐ、１つの制御ユニタリゲート（Ｔ１）４４ｋ、１つの制御ユニタリゲート（Ｔ７）４４ｍ、２つのＣＮＯＴゲート（Ｃ１）４４ｑ，４４ｒ，１つのＮＣＮＯＴゲート（Ｃ２：第１量子ビットが０ときだけ、第２量子ビットの状態を反転させるゲート）４４ｓ、２つのアダマールゲート（Ｈ）４４ｔ，４４ｕ、１つのＳＷＡＰゲート（Ｓ）４４ｖによって構成される。
【００７２】
図６の（ｂ）は、Ｋ２回路４７を基本ゲートに分解した構成（式(32)）を示している。この図に示すように、Ｋ２回路４７は、４つのＳＷＡＰゲート（Ｓ）４７ａ〜４７ｄ、４つのＮＯＴゲート４７ｅ〜４７ｈ、２つのＣＮＯＴゲート（Ｃ１）４７ｉ，４７ｊ、２つの制御ユニタリゲート（Ｔ１）４７ｍ，４７ｓ、３つの制御ユニタリゲート（Ｔ２）４７ｋ，４７ｎ、４７ｒ、１つの制御ユニタリゲート（Ｔ３）４７ｑ、１つの制御ユニタリゲート（Ｔ４）４７ｐによって構成される。
【００７３】
〔第２の実施の形態〕
次に、本発明における第２の実施の形態について説明する。
本形態は第１の実施の形態の変形例である。本形態では、前述の同時対角化行列を用いず、リー代数表現された行列を対角化する行列を利用してユニタリ行列の分解を行う。以下では、第１の実施の形態との相違点を中心に説明し、第１の実施の形態と共通する事項については説明を省略する。
【００７４】
＜構成＞
まず、本形態におけるユニタリ行列分解装置の構成を説明する。
図７は、本形態におけるユニタリ行列分解装置１００の構成を説明するためのブロック図である。なお、図７において第１の実施の形態のユニタリ行列分解装置１（図１）と共通する機能構成については図１と同じ符号を付した。
ユニタリ行列分解装置１００の構成の第１の実施の形態との相違点は、第１の実施の形態のユニタリ行列分解装置１のＭ分解部８の代わりにｍ分解部１０８を具備する点である。
【００７５】
＜Ｍ分解部＞
ｍ分解部１０８は、受け取ったｍ１を対角行列計算部７へ渡し、ｍ１を対角行列Ｄ１に対角化する特殊ユニタリ行列Ｕ１を算出させる。そして、ｍ分解部１０８は、対角行列計算部７において算出された特殊ユニタリ行列Ｕ１をと対角行列Ｄ１とを受け取り、ｅｘｐ（ｍ１）をＵ１・ｅｘｐ（Ｄ１）・Ｕ１＊で置き換える。また、ｍ分解部１０８は、この対角行列Ｄ１を対角行列分解部９に渡し、対角行列分解部９から返された分解結果で対角行列Ｄ１を置き換え、それらとＵ１、Ｕ１＊とをカルタン分解部６へ返す。
【００７６】
＜処理＞
次に、本形態におけるユニタリ行列分解方法について説明する。
図８は、本形態におけるユニタリ行列分解方法を説明するためのフローチャートである。以下、図７及び図８を用い、本形態におけるユニタリ行列の分解分解処理について説明する。
まず、任意のユニタリ行列が入力部２から入力される。入力されたユニタリ行列は、入力部２において特殊ユニタリ行列Ｆ∈ＳＵ（２ｎ）に変換され、行列リストＦとして主記憶装置３に格納される。
【００７７】
次に、構造判定部４が、主記憶装置３に格納されたすべての特殊ユニタリ行列Ｆ（主記憶装置３の行列リストに含まれる行列Ｆ）が基本ゲートであるか否かが判断する（ステップＳ２１）。ここで、主記憶装置３に格納されたすべての特殊ユニタリ行列Ｆが基本ゲートであると判断された場合には処理を終了する。
一方、基本ゲートでない特殊ユニタリ行列Ｆが行列リストに存在すると判断された場合、構造判定部４は、行列リストの中で最初の基本ゲートでない特殊ユニタリ行列Ｆを主記憶装置３から読み出す（抽出する）（ステップＳ２２）。特殊ユニタリ行列Ｆを抽出した構造判定部４は、抽出した特殊ユニタリ行列がＳＵ（４）に含まれるか（ｎ≧３であるか）否かを判断する（ステップＳ２３）。ここで、抽出した特殊ユニタリ行列がＳＵ（４）に含まれると判断された場合（ｎ＜３であると判断された場合）、構造判定部４は、その特殊ユニタリ行列Ｆを基本ゲート分解部１０に送り、基本ゲート分解部１０は、この特殊ユニタリ行列Ｆを基本ゲートの積で置き換えて主記憶装置３に格納して処理を終了する。
【００７８】
一方、抽出した特殊ユニタリ行列がＳＵ（４）に含まれないと判断された場合（ｎ≧３であると判断された場合）、構造判定部４は、その特殊ユニタリ行列Ｆ（「分解対象である特殊ユニタリ行列Ｆ」に相当）を行列表現変換部５に送る。これを受け取った行列表現変換部５は、その分解対象である特殊ユニタリ行列Ｆに対応するリー代数表現ｆが計算されているか否か（主記憶装置３に格納されているか否か）を判断する（ステップＳ２５）。ここで、対応するリー代数表現ｆが計算されていないと判断された場合、行列表現変換部５は、第１の実施の形態と同様に、このリー代数表現ｆを求めて主記憶装置３に格納する（ステップＳ２６）。一方、ステップＳ２５の判断で、対応するリー代数表現ｆが計算されていると判断された場合、行列表現変換部５は、リー代数表現ｆの算出を行わない。
【００７９】
その後、行列表現変換部５は、分解対象である特殊ユニタリ行列Ｆ∈ＳＵ（２ｎ）に対応するリー代数表現ｆ∈ｓｕ（２ｎ）を主記憶装置３から抽出し（ステップＳ２７）、カルタン分解部６に送る。カルタン分解部６は、送られたリー代数表現ｆを、カルタン分解によって、直交する２つのベクトル空間ｋ，ｍに含まれる要素ｋ１∈ｋ，ｍ１∈ｍに分解し、対応するＦ＝ｅｘｐ（ｆ）をｅｘｐ（ｋ１）・ｅｘｐ（ｍ１）で置き換える関係を保存しておく（ステップＳ２８）。
カルタン分解部６において分解されたｍ１は、ｍ分解部１０８に送られ、ｍ分解部１０８は、これを対角行列計算部７に送る。そして、対角行列計算部７は、ｍ１を対角行列Ｄ１に対角化する特殊ユニタリ行列Ｕ１を算出し、対角行列Ｄ１と特殊ユニタリ行列Ｕ１とをｍ分解部１０８に返す。ｍ分解部１０８は、ｅｘｐ（ｍ１）をＵ１・ｅｘｐ（Ｄ１）・Ｕ１＊で置き換える関係を保存しておく（ステップＳ２９）。
【００８０】
次に、ｍ分解部１０８は、対角行列ｅｘｐ（Ｄ１）を対角行列分解部９に送り、対角行列分解部９は、対角行列ｅｘｐ（Ｄ１）をトフォリゲートＴＧｈの積に分解する（ステップＳ３０）。対角行列分解部９は、対角行列ｅｘｐ（Ｄ１）をトフォリゲートＴＧｈの積で置き換える関係を保存し、これらのトフォリゲートＴＧｈを基本ゲート分解部１０に送る。基本ゲート分解部１０は、送られた各トフォリゲートＴＧｈを基本ゲートＢＧｈの積に分解し（ステップＳ３１）、トフォリゲートＴＧｈを基本ゲートＢＧｈの積に置き換えた関係を対角行列分解部９に返す。
【００８１】
対角行列分解部９は、保存しておいた「対角行列ｅｘｐ（Ｄ１）をトフォリゲートＴＧｈの積で置き換える関係」を用い、基本ゲート分解部１０から受け取った基本ゲートＢＧｈの積で対角行列ｅｘｐ（Ｄ１）を置き換える。そして、その基本ゲートＢＧｈの積で置き換えられた対角行列ｅｘｐ（Ｄ１）をｍ分解部１０８に返す。
ｍ分解部１８は、保存しておいた「ｅｘｐ（ｍ１）をＵ１・ｅｘｐ（Ｄ１）・Ｕ１＊で置き換える関係」を用い、対角行列分解部９から送られた基本ゲートＢＧｈの積（＝ｅｘｐ（Ｄ１））でＵ１・ｅｘｐ（Ｄ１）・Ｕ１＊を置き換え、その置き換え結果ｅｘｐ（ｍ１）＝Ｕ１・ＢＧｈ・Ｕ１＊をカルタン分解部６に返す。
【００８２】
カルタン分解部６は、保存しておいた「Ｆ＝ｅｘｐ（ｆ）をｅｘｐ（ｋ１）・ｅｘｐ（ｍ１）で置き換える関係」を用い、ｍ分解部１０８から送られたｅｘｐ（ｍ１）＝Ｕ１・ＢＧｈ・Ｕ１＊でＦ＝ｅｘｐ（ｆ）を置き換え、その置き換え結果Ｆ＝ｅｘｐ（ｋ１）・Ｕ１・ＢＧｈ・Ｕ１＊を分解要素格納部１１に送る。
分解要素格納部１１は、ｅｘｐ（ｋ１）、ｋ１、Ｕ１、Ｕ１＊及びＢＧ１を、上記Ｆの分解要素（Ｆ＝ｅｘｐ（ｋ１）・（Ｕ１・ＢＧ１・Ｕ１＊＝ｅｘｐ（ｍ１）））として主記憶装置３に格納する（ステップＳ３２）。
【００８３】
ここで、主記憶装置３に格納された基本ゲートＢＧｈの回路構成も公知である。従って、ｅｘｐ（ｋ）及びＵ１がＢＧｈに分解できれば、Ｆは実現可能な量子回路に分解されたことになる。そのため、以降は、このｅｘｐ（ｋ１）及びＵ１を新たな特殊ユニタリ行列Ｆ∈ＳＵ（２ｎ）として、上述したステップＳ２１〜Ｓ３２までの処理を再帰的に繰り返す。これにより、すべての行列が実現可能な量子回路に分解される。
なお、この発明は上述の各実施の形態に限定されるものではなく、その他、本発明の趣旨を逸脱しない範囲で適宜変更が可能であることはいうまでもない。
また、上述の構成をコンピュータによって実現する場合、各装置が有すべき機能の処理内容はプログラムによって記述される。そして、このプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。
【００８４】
この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等どのようなものでもよいが、具体的には、例えば、磁気記録装置として、ハードディスク装置、フレキシブルディスク、磁気テープ等を、光ディスクとして、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ（Random Access Memory）、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）等を、光磁気記録媒体として、ＭＯ（Magneto-Optical disc）等を、半導体メモリとしてＥＥＰ−ＲＯＭ（Electronically Erasable and Programmable-Read Only Memory）等を用いることができる。
また、このプログラムの流通は、例えば、そのプログラムを記録したＤＶＤ、ＣＤ−ＲＯＭ等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。
【００８５】
このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶装置に格納する。そして、処理の実行時、このコンピュータは、自己の記録媒体に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。また、このプログラムの別の実行形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。また、サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるＡＳＰ（Application Service Provider）型のサービスによって、上述の処理を実行する構成としてもよい。なお、本形態におけるプログラムには、電子計算機による処理の用に供する情報であってプログラムに準ずるもの（コンピュータに対する直接の指令ではないがコンピュータの処理を規定する性質を有するデータ等）を含むものとする。
また、この形態では、コンピュータ上で所定のプログラムを実行させることにより、本装置を構成することとしたが、これらの処理内容の少なくとも一部をハードウェア的に実現することとしてもよい。
【産業上の利用可能性】
【００８６】
本発明の産業上の利用分野としては、量子コンピュータを構成する任意のユニタリ変換量子回路の設計支援分野等を例示できる。本発明を適用することにより、容易に任意のユニタリ変換量子回路をＣＮＯＴ等の基本ゲートに分解することができる。
【図面の簡単な説明】
【００８７】
【図１】第１の実施の形態におけるユニタリ行列分解装置の構成を説明するためのブロック図。
【図２】第１の実施の形態におけるユニタリ行列分解方法を説明するためのフローチャート。
【図３】カルタン部分代数ｈ（ｎ）の基底のすべてを同時対角化する行列Ｕｈの量子回路を示した図。
【図４】カルタン分解の手法を説明するための図。
【図５】分解結果に対応する量子回路を示した図。
【図６】分解結果に対応する量子回路を示した図。
【図７】第２の実施の形態におけるユニタリ行列分解装置の構成を説明するためのブロック図。
【図８】第２の実施の形態におけるユニタリ行列分解方法を説明するためのフローチャート。
【図９】カルタン分解の手法を説明するための図。
【符号の説明】
【００８８】
１，１００  ユニタリ行列分解装置
２  入力部
３  主記憶装置（記憶手段）
４  構造判定部（構造判定手段）
５  行列表現変換部（行列表現変換手段）
６  カルタン分解部（カルタン分解手段）
７  対角行列計算部（対角行列計算手段）
８  Ｍ分解部
９  対角行列分解部（対角行列分解手段）
１０  基本ゲート分解部（基本ゲート分解手段）
１１  分解要素格納部（分解要素格納手段）
１２  出力部
１０８  ｍ分解部
【図１】
2005332242.tif 000042
【図２】
2005332242.tif 000043
【図３】
2005332242.tif 000044
【図４】
2005332242.tif 000045
【図５】
2005332242.tif 000046
【図６】
2005332242.tif 000047
【図７】
2005332242.tif 000048
【図８】
2005332242.tif 000049
【図９】
2005332242.tif 000050