(57)【要約】【課題】  ２ｎ個の状態中から正しい状態を見つけ出す効率的な量子アルゴリズムを古典（物理的）計算機に直接実行させることを可能とする。【解決手段】  ｎビットの初期状態｜Ψ＞＝｜００…０＞をキュビットにアダマール変換を行って同一振幅の２ｎ個の状態の重ね合せ状態を作り、この重ね合せ状態をｎ個のテンソルの積に、密度行列繰り込み群法により最適に圧縮し、この圧縮形式に演算子の形式を変換部２３で変換し、この変換された演算子を接続初期状態情報に演算・最適化部２４で作用させるとともに圧縮が最適された演算結果を得、この演算結果に対し、次の演算子に対する形式変換を行って演算・最適化を行うことを順次実行する。【選択図】  図１
2005250563.tif 000002
【特許請求の範囲】
【請求項１】
複数キュビットの初期状態が情報圧縮された状態情報が入力され、演算量子アルゴリズムを実行する装置であって、
上記量子アルゴリズムの演算に必要とする演算子が記憶された演算子記憶部と、
上記演算子の形式を情報圧縮された状態情報の圧縮形式に変換する形式変換部と、
上記形式変化された演算子と上記情報圧縮された状態情報との演算を行うとともに情報圧縮を最適化した演算結果の状態情報を出力する演算・最適化部と、
上記情報圧縮された演算結果状態情報をそのキュビットごとに観測する観測部と
を具備する量子アルゴリズム実行装置。
【請求項２】
上記演算・最適化部よりの出力圧縮された状態情報が入力され、位相シフト演算を行い、その演算結果の圧縮状態情報を上記演算・最適化部へ入力する位相シフト演算部を備えることを特徴とする請求項１記載の量子アルゴリズム実行装置。
【請求項３】
上記複数キュビットはメインキュビット及びターゲットキュビットを含み、
上記演算・最適化部の出力中の上記ターゲットキュビットに対し、射影演算子を適用する非ユニタリ変換部を備えることを特徴とする請求項１記載の量子アルゴリズム実行装置。
【請求項４】
予め決められた順に上記演算子記憶部から演算子を取り出し、その演算子を上記形式変換部に入力し、その変換された演算子を上記演算・最適化部に入力することを行う制御部を備えることを特徴とする請求項１〜３のいずれかに記載の量子アルゴリズム実行装置。
【請求項５】
複数キュビットの初期状態が情報圧縮された状態情報が入力され、演算量子アルゴリズムを実行する装置であって、
上記圧縮された複数キュビットの状態情報が入力され、上記圧縮された状態情報中に含まれる１乃至複数のキュビットの情報に対し行列演算を行う複数の演算ユニットを有し、所望の量子アルゴリズムを実行する量子回路を備えることを特徴とする量子アルゴリズム実行装置。
【請求項６】
上記複数キュビットはメインキュビット及びワークキュビットとターゲットキュビットを含み、
上記演算ユニットは上記圧縮された状態情報中に含まれるメインキュビット１乃至複数とワークキュビット１乃至複数に対し行列演算を行う複数の演算ユニットと、上記ワークキュビットと上記ターゲットキュビットに対し行列演算を行う演算ユニットであり、
上記演算ユニットがそのワークキュビットに対する演算結果を１つの入力として順次連結され、上記所望の量子アルゴリズムを実行する上記量子回路が構成されていることを特徴とする請求項５記載の量子アルゴリズム実行装置。
【請求項７】
上記量子回路の出力が入力され、これら出力中の上記メインキュビットに対しアダマール行列及び行入れ替え行列を演算する第１行列演算ユニットと、これら行列演算ユニットの各演算結果と状態｜０＞に初期化されたワークキュビットが入力され、これらに対し、上記量子回路の上記演算ユニットの連結と同一連結されている演算部と、この演算部の出力中の上記メインキュビットに対しアダマール行列及び行入れ替え行列を演算する第２行列演算ユニットと、これ等の演算結果と上記演算部の出力のワークキュビットと、上記量子回路のターゲットキュビット出力とを上記量子回路の対応するキュビット入力に帰還する位相シフト演算部と
を備えることを特徴とする請求項６記載の量子アルゴリズム実行装置。
【請求項８】
上記ターゲットキュビットの初期状態は｜０＞であり、
上記量子回路出力中の上記ターゲットキュビットの出力に対し射影演算子を適用する非ユニタリ変換部を備えることを特徴とする請求項６記載の量子アルゴリズム実行装置。
【請求項９】
複数キュビットの初期状態が情報圧縮された状態情報が入力部より入力される過程と、
演算子記憶部から実行する量子アルゴリズムにより予め決められた順番に１つの演算子を取り出す演算子選択過程と、
上記取り出した演算子を、上記圧縮された状態情報の圧縮形式と対応する形式に形式変換部で変換する形式変換過程と、
上記形式変換された演算子を圧縮された状態情報に作用させるとともに、その演算結果の圧縮最適化を演算・最適化部で行って圧縮された演算結果の状態情報を求める演算・最適化過程と、
上記量子アルゴリズムの実行が終了するまで上記圧縮された演算結果の状態情報に対し、上記選択過程、上記形式変換過程、上記演算・最適化過程を繰り返し実行する過程とを有する量子アルゴリズム実行方法。
【請求項１０】
請求項１〜８のいずれかに記載した量子アルゴリズム実行装置としてコンピュータを機能させるためのプログラム。
【請求項１１】
請求項１０に記載したプログラムが記録されたコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は量子アルゴリズムを利用して、例えば検索問題を処理する装置、及びその方法、プログラム及び記録媒体に関する。
【背景技術】
【０００２】
量子計算機は“１”と“０”の重ね合わせの状態をとることができる量子ビット（quantum bit）あるいはキュビット（qubit）を利用することにより超並列計算を実現できる。この量子計算機の超並列計算を活かす応用としてグローバーの量子検索アルゴリズムが非特許文献１により提案されている。
この量子検索計算を図１０を参照して簡単に説明する。ｎ個のメインキュビットの初期状態｜Ψ＞＝｜０００…０＞（０の個数はｎ個）がアダマール変換部１１１，１１２，…，１１ｎでアダマール変換されて、同じ大きさ（等振幅）の２ｎ個の状態を重ね合わせた状態（量子状態情報）を作る。キュビット“０”及びキュビット“１”はそれぞれ次式で表わせる。｜・＞は「・」の列ベクトル（ケットベクトル）を表わす。
【０００３】
【数１】
2005250563.tif 000003
この明細書ではこの式をアダマール変換という。
【０００４】
図１０において、アダマール変換部１１１，…，１１ｎは並列に示してあるが、｜Ψ＞＝｜００…０＞に対し順次アダマール変換を行うことを表わす。つまり、例えばｎ＝４，｜Ψ＞＝｜００００＞の場合、その１つ目の“０”についてアダマール変換を変換部１１１で行うと次のようになる。
（１／√２）｜００００＞＋（１／√２）｜１０００＞
これら各ケットベクトルの各２つ目について変換部１１２でアダマール変換を行う。その結果は次のようになる。
（１／２）｜００００＞＋（１／２）｜０１００＞＋（１／２）｜１０００＞＋（１／２）｜１１００＞
【０００５】
以下同様にして変換部１１３ではこれら４つのケットベクトルの３つ目に対して変換する。変換部１１４では更に得られた８個のケットベクトルの各４つ目について変換を行う。従って最終的には振幅がそれぞれ（１／√２）４の４つのキュビットの全ての取り得る状態の２４個のケットベクトルを重ねた状態が得られる。
また｜１＞にセットしたターゲットキュビットがアダマール変換部１１Ｔでアダマール変換され、これと前記同一振幅の２ｎ個の状態が重ね合わされた量子状態とに対し量子回路１２が作用される。量子回路１２では例えば２ｎ個のファイル（状態）から１乃至複数の正しいファイル（状態）を検索する量子計算が行われる。その結果、例えば正解となる（当りとなる）状態の振幅（振幅の自乗が出現確率）が大きくなる。
【０００６】
しかし２ｎ個の状態間の出現確率の差は比較的小さい。よって量子回路１２の出力中の入力ｎメインキュビットと対応する出力に対し位相シフト演算を位相シフト演算部１３で作用させ、その結果の対応メインキュビット及び量子回路１２の出力中のターゲットキュビットと対応する出力とを量子回路１２に再び入力する。この量子回路１２と位相シフト演算部１３の適用を複数回繰り返す。この繰り返しは、正しい状態つまり正しいファイル検索の場合、当りのファイル（状態）の数をｔ個とすると、√（Ｎ／ｔ）（Ｎ＝２ｎ）行う。
【０００７】
この繰り返しの後に、位相シフト演算部１３の出力が観測部１４で観測される。この観測部では１乃至複数の状態（ケットベクトル）の中から１つの状態（ケットベクトル）だけが確率的に決定する。この観測について図１１を参照して簡単に説明する。例として観測部１４に渡される４キュビットの量子状態が、｜Ψ＞＝１／２｜００００＞＋１／２｜１０００＞＋１／２｜１１００＞＋１／２｜１１１１＞の様に４つの状態（ケットベクトル）の和である場合を考える（量子状態４０）。
まず、１つ目のキュビットに注目すると、１つ目のキュビットが“０”である確率が１／４、“１”である確率が３／４となっている。もし、１つ目のキュビットについて確率的観測を行い“０”が観測されたとすると、波束の収縮により、量子状態４０は量子状態４１ａに変化し、残りのキュビットについては確率１で“０”が観測される。また、１つ目のキュビットについて“１”が観測されたとすると、量子状態４０は量子状態４１ｂに変化する。次に、量子状態４１ｂの２つ目のキュビットに注目すると、“０”である確率が１／３、“１”である確率が２／３となっている。ここでも確率的観測によって２つ目のキュビットの値が決定する。このようなキュビットに対する観測を全キュビットに行うことによって全キュビットの値が決定する。ただし、一度の確率的観測によって判明する状態は、量子状態４０の４つの状態（ケットベクトル）の中の１つだけである。もし、４つの状態（ケットベクトル）の全てが知りたい場合は、確率的観測を複数回（少なくとも４回）行う必要がある。しかし、物理系を用いて量子計算機を構成した場合は位相シフト演算部１３の出力と同じ状態を保存しておくことはできないので図１０の始めからやり直す必要がある。一方、古典計算機を用いて量子計算機をシミュレートする場合は位相シフト演算部１３の出力情報を記憶媒体上に保存しておき、観測部１４だけを複数回繰り返すことによって全状態（ケットベクトル）を得ることができる。
【０００８】
このようにグローバーのアルゴリズムによれば量子計算機の超並列計算を活すことによって、２ｎ個のファイルから正しい１個のファイルを探し出す問題は２ｎ／２回の繰り返しで正しいファイルを見つけ出すことができる。この検索問題を、古典計算機により古典アルゴリズムにより実行するには、約２ｎ回の繰り返しが必要であった。つまり古典アルゴリズムによれば例えば２１０＝１０２４回の繰り返しが必要であった所を、量子アルゴリズムによれば２５＝３２回で済む。
このように量子計算機は複数の状態の重ね合わさった波動関数を用い、その複数の状態ごとに波動関数を、外部の入力関数に応じて制御することにより、量子アルゴリズムを実行し、その結果の波動関数により表わされている量子状態を観測して入力関数についての論理計算の結果を得るものである。量子計算機により量子演算を行わせるには、例えば光子を用いた場合、偏光を９０度回転させるための制御をビームスプリッタなどにより行っていた。つまり従来においては物理系を用いて量子計算機を構成し、量子アルゴリズムを実行させていた。
【０００９】
前述したように量子計算はキュビット同士が互いに相関した状態を保ちながら演算を実行しなければならない。このため実際の物理系を用いた量子計算機ではキュビット数の増加にともなって指数関数的に増加する状態（ｎキュビットの場合２ｎ個の状態）を制御することが困難になってくる。
また古典計算機を用いて量子計算機をシミュレートする研究も報告されているが、従来の方法は２ｎ個の状態を保存する必要があるため計算機の記憶容量の限界から約３０キュビットが限界となっており、計算時間も指数関数的に増加するため多キュビットのシミュレーションは非常に困難であった。従来においては古典計算機に量子アルゴリズムを直接実行させるのは困難と思われていた。
【００１０】
状態情報を密度行列繰り込み群法により圧縮することが非特許文献２及び３に示されている。
【非特許文献１】L.K.Grover著、Phys.Rev.Lett.７９巻，３２５頁（１９９７）
【非特許文献２】S.R.White著、Phys.Rev.Lett.６９巻，２８６３頁（１９９２）
【非特許文献３】西野友年，柴田尚和著，固体物理，３２巻，１２頁（１９９７）
【発明の開示】
【発明が解決しようとする課題】
【００１１】
この発明の目的は古典計算機に量子アルゴリズムを直接実行させることを可能とし、かつ記憶容量と計算時間を大幅に削減することができる量子アルゴリズム実行装置及びその方法、プログラム及びその記録媒体を提供することにある。
【課題を解決するための手段】
【００１２】
この発明によれば情報圧縮した初期状態の量子状態情報に演算子を作用させるとともに情報圧縮を最適化する演算・最適化部と、
その最適化された圧縮情報の情報形式と対応した形式に次の演算子を変換する形式変換部とを備える。
【発明の効果】
【００１３】
この発明によれば情報量が最適に圧縮された量子状態情報と演算子との演算が行われるため、行列の演算のみで済み量子アルゴリズムを古典計算機に直接実行させることができ、しかも記憶している情報量が少なくて済み、また演算時間も短縮される。
【発明を実施するための最良の形態】
【００１４】
この発明による実施形態の機能構成を図１に、その処理手順を図２に示す。
検索などの処理を量子計算により実行させるために必要な量子回路を構成する各演算子が入力部２１に入力され、演算子が演算子記憶部２２に格納される（ステップＳ１）。その後、情報量が圧縮された初期状態が入力される（ステップＳ２）。この初期量子状態は例えばｎ個のキュビットが“０”の状態｜Ψ＞＝｜００…０＞（０の数はｎ個）であり、これに対する情報量圧縮は、例えば非特許文献２又は３に示されている密度行列繰り込み群法により行われる。初期状態は情報圧縮した状態が自明なものならどのようなものでもよい。初期量子状態を入力し、これを最適化圧縮してもよいが、一般には圧縮情報が自明のものを用い、それだけ処理回数を少なくする。
【００１５】
各量子状態と各演算子との演算を順次行って目的とする量子計算（量子回路の作用）が行われるが、その順に演算子記憶部２２から演算子が１つ取り出され（ステップＳ３）、その演算子はこの演算が施されるべき圧縮量子状態の圧縮形式（フォーマット）に形式変換部２３により変換される（ステップＳ４）。
この形式変換された演算子と圧縮初期状態との演算が演算・最適化部２４で行われると共に演算結果の圧縮の最適化が行われる（ステップＳ５）。
【００１６】
つまり波動関数Ψ（ｉ１，ｉ２，…，ｉｎ）はΨがどのような状態でも次式で表わすことができる。
【数２】
2005250563.tif 000004
【００１７】
ｉ１，ｉ２，…，ｉｎはキュビットの状態（“０”又は“１”）を表し、Ψ（ｉ１，ｉ２，…，ｉｎ）は２ｎ個の情報を持つｎ階のテンソルとなっている。右辺はｎ個の３階のテンソルの積となっており、新たな変数ｘ１，ｘ２，…，ｘｎ＋１（ｘａ＝１，…，ｍａ）の和の形式で表わされる。Ｕａとｍａの値は密度行列繰り込み群法により決められる。つまり式（１）における右辺はΣで表わされている和演算を行わない状態は量子状態Ψ（ｉ１，ｉ２，…，ｉｎ）を情報圧縮した状態（情報）となっている。この圧縮情報に対し演算子との演算が行われるが、この演算は演算子とＵ１，Ｕ２，…，Ｕｎを用いて演算が行われ、その結果Ｖ１が求まり、更に演算子とＶ１，Ｕ１，Ｕ２，…，Ｕｎを用いて演算を行ってＶ２が求まり、と順次計算され、最終的にＶ１，Ｖ２，…，Ｖｎが得られるが、この最終結果は情報圧縮が最適化されたものとなる。なおこの演算子と圧縮情報との演算は行列の演算であり、古典計算機で直接実行される。このことは後に具体的説明で明らかにする。
【００１８】
この演算・圧縮最適化の後、演算子記憶部２２に次に演算すべき演算子が残っているかが調べられる（ステップＳ６）。残っていればステップＳ３に戻り、前記演算順に従った次の演算子が取り出され、この演算子に対し、演算・最適化部２４の出力（圧縮状態情報）の圧縮形式（フォーマット）に適合する変換が行われる（ステップＳ４）。以下同様のことが繰り返され、演算子記憶部２２にその量子回路の量子計算に必要とする演算子が残っていなければ、この演算・最適化部２４の出力に対する観測が観測部２５で行われる（ステップＳ７）。この観測も圧縮された状態に対して行われる。制御部２６は各部を順次動作させ、また演算子の記憶部２２からの順次取り出し、演算すべき演算子が残っているか否かの判断などを行う。
【実施例１】
【００１９】
以下の実施例では情報圧縮された状態情報が入力され、その圧縮された状態情報中に含まれる１乃至複数のキュビットの情報に対して行列演算を行う複数の演算ユニットが設けられ、これ等演算ユニットが接続されて、所望の量子アルゴリズムを実行する量子回路が構成されている例を説明する。
まず量子回路と位相シフト演算部との繰り返し演算を行う場合にこの発明を適用した実施例１の機能構成例を図３に示す。この実施例１ではメインキュビットがｎ＝４キュビット、ワークキュビットが３キュビット、ターゲットキュビットが１キュビットの場合で、図３中の記号Ｈは図４Ａに示すようにアダマール変換行列Ｈによるアダマール変換を表わし、記号Ｘは図４Ｂに示すように行入れ替え行列Ｘによる行入れ替え変換を表わし、図４Ｃに示すように黒丸記号１５と丸内×記号１６の接続は、これら記号１５及び１６に入力される２キュビット、つまり４通りの状態が同時に存在し、これに対し、行列Ｃ−ＮＯＴの変換を行うもので記号１５部分に入力された２要素の列ベクトルをそのまま通過させ、記号１６部分に入力された２要素の列ベクトルの行の入れ替えを行って通過させることを表わし、図４Ｄに示すように、記号１５を２つ接続し、これに対し記号１６を接続したものは、記号１５部分はそのまま通過させ、記号１６は行入れ替えして通過させ、つまりこれら２つの記号１５部分及び１つの記号１６部分に入力された３キュビットは２３＝８個の状態の重ね合せであり、これに対し、行列Ｃ２−ＮＯＴの変換を行うものである。
【００２０】
図１０に示した場合と同様に初期状態｜００００＞のメインキュビット（４キュビット）及び初期状態｜１＞のターゲットキュビットはアダマール変換部１１１〜１１４，１１Ｔによりそれぞれアダマール変換される。この実施例ではメインキュビット（１，２，４，６番目）とワークキュビット（３，５，７番目）が“０”の状態及びターゲットキュビット（８番目）が“１”の状態の初期状態｜０００００００１＞が式（１）に示すように圧縮され、かつその圧縮が最適化されたものが量子回路３１に入力される。先に述べたように初期状態としては圧縮された形式が自明のものが用いられ、つまり予め知られている情報圧縮された初期状態が量子回路３１に入力される。この量子回路３１は行列演算により行うことができる構成とされており、この例ではｔ個の正解の状態を含むＮ＝２ｎ個、図示例では１６＝２４個の状態の中から正解の１つの状態を効率的に取り出すための回路である。
【００２１】
アダマール変換をした後の情報圧縮された状態に対し、１つ目及び２つ目のメインキュビットと１つ目のワークキュビットに対する行列演算が演算ユニット３１ａで行われ、その結果のワークキュビットと３つ目のメインキュビットと２つ目の初期ワークキュビットに対する行列演算が演算ユニット３１ｂで行われ、その結果のワークキュビットと４つ目のメインキュビットと３つ目の初期ワークキュビットに対する行列演算が演算ユニット３１ｃで行われ、その結果のワークキュビットとターゲットキュビットに対する行列演算が演算ユニット３１ｄで行われる。つまり情報圧縮された状態に対する量子演算が、３つのキュビットに対する８×８行列の演算と、２つのキュビットに対する４×４行列の演算とが順次演算されて量子回路の演算が実質的に行われる。
【００２２】
つまり圧縮状態情報の１又は複数のメインキュビットとワークキュビットとに対し行列演算を行う複数の演算ユニットと、ワークキュビットとターゲットキュビットに対し行列演算を行う演算ユニットとが、演算ユニットのワークキュビットに対する演算結果を入力として、順次縦続的に接続されて、目的とする量子アルゴリズムが実行されるように量子回路３１が構成されている。
量子回路３１の演算結果、つまり情報圧縮された状態に対し、量子演算がなされ、かつ最適に圧縮された情報を表わす情報が位相シフト演算部３２に入力される。位相シフト演算部３２も量子回路３１と同様にその入力に対して行列演算を順次行うものであるが、図１０中の位相シフト演算部１３で実行されている量子演算と同様の機能が圧縮状態情報に対して行われる。この場合も圧縮状態情報に対する演算子を適用させながら圧縮状態の最適化も行われる。つまり圧縮状態情報中の当りの状態（正しい状態）の振幅（確率）が大きく、当りでない状態の振幅（確率）が小さくなるように作用される。
【００２３】
この例では量子回路３１の出力中のメインキュビットに対応する出力に対し、それぞれアダマール行列を作用させ、更に行入れ替え行列を作用させる行列演算ユニット３２ａと、この行列演算ユニットの出力と、量子回路３１の出力中の各ワークキュビット出力とが入力され、量子回路３１と同様構成の演算ユニットよりなる演算部３２ｂと、演算部３２ｂの出力中のメインキュビットに対し、アダマール行列を作用させ、更に行入れ替え行列を作用させる行列演算ユニット３２ｃとにより位相シフト演算部３２が構成されている。ただし演算部３２ｂは、ターゲットキュビット及びこれと行列演算されるべきワークキュビットが入力されていないため、最後、つまり４つ目のメインキュビットに対する演算ユニット３１ｃはＣ２−ＮＯＴ行列ではなく、この４つ目のメインキュビットと、その直前のキュビットに対する演算ユニットのワークキュビットに対する演算結果とに対しＣ−ＮＯＴ行列を作用させる演算ユニットとなっている。
【００２４】
この位相シフト演算部３２の演算結果と量子回路３１のターゲットキュビットの出力は、図１０に示したものと同様に、量子回路３１に再び入力されて量子回路３１と位相シフト演算部３２との繰り返し演算が√（Ｎ／ｔ）回、図３の実施例では√（２４／１）回実行される。その後、位相シフト演算部３２の出力は観測部３４へ出力され観測部３４でその圧縮された状態情報が直接、１キュビットずつ、確率的に観測される。
このようにこの実施例１によれば、量子アルゴリズムを古典計算機により直接実行することができる。また図３に示したものを例とすれば、アダマール変換された後のメインキュビット状態は図５中の左辺に示すように２４の情報を持つが、図３に示したものでは、この状態情報が圧縮され、図５中の右辺に示す２×４個の情報に削減される。
【００２５】
つまりｎキュビットの重ね合わせ状態は、従来は２ｎ（＝Ｎ）個に対する記憶容量が必要であったが、圧縮後では２×ｎ個で済む。なお実行時間は従来の量子計算機によれば√（Ｎ／ｔ）（ｔlogＮ）であったが、実施例１では√（Ｎ／ｔ）（ｔlogＮ）３となる。
【実施例２】
【００２６】
実施例１では演算を√（Ｎ／ｔ）回繰り返す必要があり、演算時間が比較的長くなる。実施例２は演算時間を短くしたものであり、図３に示した演算に対し、この実施例２を適用したものを対応する部分に同一参照番号を付けて図６に示す。
この実施例２では情報圧縮された初期状態は、行列演算を順次実行する量子回路３１に図３と同様に入力されるが、ターゲットキュビットはアダマール変換が施されることなく、｜０＞が量子回路３１に入力される。また量子回路３１より出力される行列演算の結果としての、最適に情報圧縮された状態は位相シフト演算部へ出力されることはない、つまり繰り返し演算は行われない。
【００２７】
この量子回路３１は入力状態中の正しい状態、つまりこの例では当りの状態によってターゲットキュビットの演算結果を｜１＞に変える演算を２ｎ個の状態に対して同時に行うものである。
この実施例２では量子回路３１より出力されたターゲットキュビットに対し、非ユニタリ変換部３５により射影演算子を作用させる。射影演算子は演算結果のターゲットキュビットを｜０＞とする状態の確率（振幅）を０にし、かつ波束の収縮を起させるため、ターゲットキュビットを｜１＞とする正しい（当りの）状態のみを大きな確率（振幅）とする作用がある。射影演算子は図６中の非ユニタリ変換部を示す枠３５内に示すように２×２の非ユニタリ行列であり、量子回路３１の出力中のターゲットキュビットが｜１＞の時は非ユニタリ変換部３５の出力は１となり、この演算結果のターゲットキュビットが｜０＞の時は非ユニタリ変換部３５の出力は０となる。
【００２８】
つまり量子回路３１の入力は圧縮された状態情報であるが、圧縮前の２ｎ＝Ｎ個の状態｜φ１＞の各状態は図７Ａの｜φ１＞の欄に示すように全てターゲットキュビットを｜０＞とするものであり、その確率は同一であり、｜１＞とするものは図７Ｂの｜φ１＞欄に示すように存在しない、つまり全て確率が０である。図中真線の長さは｜０＞になる確率の大きさを、破線は確率０を表わす。
入力圧縮状態情報に対し、量子回路３１の演算が施されると、この演算結果は情報圧縮された状態であるが、その圧縮が解かれたＮ個の状態についてみると、図７中の｜φ２＞欄に示すように、ターゲットキュビットを｜０＞とする状態、この例では第０番目〜第Ｎ−２番目の状態のＮ−１個（図７Ａ側）と、ターゲットキュビットを｜１＞とする状態、この例では第Ｎ−１番目の状態の１個（図７Ｂ側）とが存在するようになる。
【００２９】
この演算結果に対し実施例１では量子回路３１と位相シフト演算３２との繰り返し演算を√（Ｎ／ｔ）回必要としたが、この実施例２では量子回路３１の出力の２ｎ個の状態中の｜１＞の状態のみを残す射影演算子をターゲットキュビットに作用させる。
この射影演算を作用させると、状態｜０＞の確率を０とし、状態｜１＞の確率を１とする波束の収縮が起り、ターゲットキュビットを｜０＞にする状態、この例では第０〜第Ｎ−２番目の各状態は図７中の｜φ３＞欄のＡ側に示すように、確率が全てゼロになり、ターゲットキュビットを｜１＞にする状態、この例では第Ｎ−１番目の状態の確率が大きくなる。実際には量子回路３１、非ユニタリ変換部３５のいずれにおいても圧縮された状態情報に対して処理がなされ、図７に示したように各個々の状態が出現しているのではない。圧縮を解くとＮ個の各状態はこのような関係にあることを示すものである。
【００３０】
図７中の｜φ３＞欄に示すＮ個の状態が圧縮された状態情報は観測部３４により、１ビット目から順次確率的観測が行われる。正しい（当りの）状態が複数ある場合は図３に示した実施例１も同様であるが、射影演算子を施した演算結果である圧縮状態情報を計算機上で保存しておき、観測を繰り返すことにより全ての正しい状態を見つける。
この実施例２の場合、図１中に破線で示すように観測部２５の入力側に演算結果のターゲットキュビットに対する非ユニタリ変換部２７が挿入されることになる。また図２に示した処理においては破線で示すように、ステップＳ６で残りの演算子がなければ、演算結果のターゲットキュビットに対しステップＳ８で射影演算子が適用、つまり非ユニタリ演算が実行されてステップＳ７に移ることになる。なお量子回路３１による処理内容によっては、その量子回路３１の演算結果を出力する前の途中の演算子を適用した状態に対し非ユニタリ変換（射影演算）を行い、その後量子回路３１の続きの演算を行なうこともある。
【００３１】
この実施例２においても、全体の処理は行列の演算で行われ、従って古典計算機により量子アルゴリズムを直接実行することができる。実施例１も同様であるが、式（１）中のテンソル（ユニタリ行列）Ｕ１の変数ｘ２は次のテンソル（ユニタリ行列）Ｕ２に変数として用いられ、このテンソル（ユニタリ行列）Ｕ２の変数ｘ３は次のテンソル（ユニタリ行列）Ｕ３の変数として含まれ、以下同様に１つのユニタリ行列の１つの変数が次のユニタリ行列の変数に順次含まれ、テンソルＵａは１次元でつながっている。
式（１）中の変換ｘ１，ｘ２，…，ｘｎ＋１（ｘａ＝１，…，ｍａ）のｍａの値（１から最大２ｎ／２）はキュビット間の相関（エンタングルメント）に依存する。右辺は、波動関数の情報をｎ個のテンソルＵで表わしているから、計算機に必要な記憶容量はＯ（ｍ２ｎ）（Ｏ（・）はオーダを表わす）となる。ここでｍはｍａ（ａ＝１，…，ｎ＋１）の最大値を表わす。
【００３２】
図８は、２ｎ個の状態の中から一個もしくは二個の正しい状態を見つけ出す検索を、実施例２によって実行したときのキュビット数ｎと実行時間の関係であり、黒丸は正しい状態が一個の場合（ｔ＝１）、白丸は正しい状態が二個の場合（ｔ＝２）に対応している。この計算は、Intel Xeon ２．４Ｇプロセッサ１個を用い、数値精度は４倍精度で実行している。量子回路３１がＯ（ｎ）のオーダの量子演算子（量子ゲート）で構成され、かつ、密度行列繰り込み群法を利用した場合、計算時間はＯ（ｍ３ｎ３）となる。図８において、実線と破線は、それぞれ黒丸と白丸を最小自乗法で３次関数にフィットさせた結果であり、キュビット数ｎに対して計算時間は３次で変化することが確認された。
【００３３】
図９は、２32個の状態の中からｔ個の正しい状態を見つけ出す検索を、実施例２によって実行したときの正しい状態数ｔと実行時間の関係である。数値精度は２倍精度で実行しており、ｔ個の正しい状態をランダムに設定することによって、あるｔに対する計算時間の上限を見積もっている。ただし、計算途中も含めターゲットキュビットが｜１＞を返す数が最大ｔ個の場合を示している。図９におけるバツ印は、それぞれのｔに関して検索を１０回ずつ試行した中の最も時間がかかった場合を表し、実線はバツ印を最小自乗法で３次関数にフィットさせた結果であり、正しい状態数ｔに関して計算時間は３次で変化することが確認された。ここで、正しい状態数ｔとｍは密接な関係があり、１≦ｍ≦ｔ＋１で表される関係を持っている。つまり、実施例２で実行される検索問題の場合、計算時間の上限はＯ（ｔlogＮ）３で表すことができ、キュビット数ｎ（＝logＮ）に対して多項式で増加する時間（ｔlogＮ）３で正しい状態を見つけ出すことが可能であり、従来の実行時間√（Ｎ／ｔ）（ｔlogＮ）より著しく短かくなる。
【００３４】
図１、図３、図６にそれぞれ示した量子アルゴリズム実行装置は、コンピュータにより機能させることもできる。この場合はこれら装置としてコンピュータを機能させるための量子アルゴリズム実行プログラムをＣＤ−ＲＯＭ、磁気ディスク、半導体メモリなどの記録媒体からコンピュータにインストールし、又は通信回線を介してダウンロードして、この量子アルゴリズム実行プログラムをコンピュータに実行させればよい。
【図面の簡単な説明】
【００３５】
【図１】この発明装置の実施形態の機能構成を示すブロック図。
【図２】この発明方法の実施形態の処理手順を示す流れ図。
【図３】この発明装置の実施例を示す機能構成図。
【図４】図３中の各記号を説明するための図。
【図５】圧縮前の初期状態と圧縮後の初期状態の例を示す図。
【図６】この発明装置の他の実施例を示す機能構成図。
【図７】図６に示した装置の各部における各状態の確率の大きさの例を示す図。
【図８】この発明の実施例２の場合のキュビット数と実行時間の関係を示す図。
【図９】この発明の実施例２の場合の正しい状態の数と実行時間の関係を示す図。
【図１０】従来の量子アルゴリズム実行装置を示す機能構成図。
【図１１】観測部１４で行う観測の具体例を説明するための図。
【図１】
2005250563.tif 000005
【図２】
2005250563.tif 000006
【図３】
2005250563.tif 000007
【図４】
2005250563.tif 000008
【図５】
2005250563.tif 000009
【図６】
2005250563.tif 000010
【図７】
2005250563.tif 000011
【図８】
2005250563.tif 000012
【図９】
2005250563.tif 000013
【図１０】
2005250563.tif 000014
【図１１】
2005250563.tif 000015