(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-11-06
(45)【発行日】2024-11-14
(54)【発明の名称】量子回路設計プログラム、量子回路設計方法および量子回路設計装置
(51)【国際特許分類】
G06N 10/20 20220101AFI20241107BHJP
【FI】
G06N10/20
(21)【出願番号】P 2023570516
(86)(22)【出願日】2021-12-27
(86)【国際出願番号】 JP2021048573
(87)【国際公開番号】W WO2023127022
(87)【国際公開日】2023-07-06
【審査請求日】2024-03-26
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110002918
【氏名又は名称】弁理士法人扶桑国際特許事務所
(72)【発明者】
【氏名】石井 雅俊
【審査官】北川 純次
(56)【参考文献】
【文献】米国特許出願公開第2021/0192113(US,A1)
【文献】米国特許出願公開第2020/0184024(US,A1)
【文献】ITOKO, Toshinari et al.,Optimization of Quantum Circuit Mapping using Gate Transformation and Commutation,arXiv.org,2019年10月18日,v2,[online], [retrieved on 2022.08.30], Retrieved from the Internet: <URL: https://arxiv.org/abs/1907.02686v2>
(58)【調査した分野】(Int.Cl.,DB名)
G06N 10/00-10/80
(57)【特許請求の範囲】
【請求項1】
複数の要素を含む量子回路であって、量子コンピュータに含まれる複数の量子ビットそれぞれへの操作順序を前記量子回路内における前記複数の要素それぞれの配置によって示す第1量子回路から、前記複数の量子ビットのうちの複数の第1量子ビットへの所定の操作を示す第1要素と、前記複数の第1量子ビットへの前記所定の操作を示す第2要素とを検出し、
前記第1量子回路の前記第1要素を、前記複数の第1量子ビットに対応するイオン操作用の第1等価回路に変換し、前記第1等価回路の要素を前記複数の第1量子ビットの配置方向に対称移動させた配置の第2等価回路に前記第2要素を変換した第2量子回路を生成する、
処理をコンピュータに実行させる量子回路設計プログラム。
【請求項2】
前記第1等価回路は、前記複数の第1量子ビットのうちの2つに対する所定の角度の回転操作を示す2量子ビットゲートを含む、
請求項1記載の量子回路設計プログラム。
【請求項3】
前記所定の操作は、前記複数の第1量子ビットのうちの2つのコントロールビットに応じて前記複数の第1量子ビットのうちの1つのターゲットビットの位相を反転させる操作である、
請求項1または2記載の量子回路設計プログラム。
【請求項4】
前記第2量子回路を生成する処理では、前記複数の第1量子ビットのうちの2つのコントロールビットに応じて前記複数の第1量子ビットのうちの1つのターゲットビットのビットを反転させる第3要素を、前記所定の操作を含む第3等価回路に変換する、
請求項3記載の量子回路設計プログラム。
【請求項5】
前記第2量子回路を生成する処理では、前記複数の第1量子ビットを含む複数の第2量子ビットのうちの3以上のコントロールビットに応じて前記複数の第2量子ビットのうちの1つのターゲットビットのビットを反転させる第4要素を、前記第3要素を含む第4等価回路に変換する、
請求項4記載の量子回路設計プログラム。
【請求項6】
前記第1要素および前記第2要素はそれぞれ量子ゲートであることを特徴とする請求項1から5までのいずれかに記載の量子回路設計プログラム。
【請求項7】
前記第3要素はCCXゲートであることを特徴とする請求項4記載の量子回路設計プログラム。
【請求項8】
前記第4要素はCnNOTゲートであることを特徴とする請求項5記載の量子回路設計プログラム。
【請求項9】
複数の要素を含む量子回路であって、量子コンピュータに含まれる複数の量子ビットそれぞれへの操作順序を前記量子回路内における前記複数の要素それぞれの配置によって示す第1量子回路から、前記複数の量子ビットのうちの複数の第1量子ビットへの所定の操作を示す第1要素と、前記複数の第1量子ビットへの前記所定の操作を示す第2要素とを検出し、
前記第1量子回路の前記第1要素を、前記複数の第1量子ビットに対応するイオン操作用の第1等価回路に変換し、前記第1等価回路の要素を前記複数の第1量子ビットの配置方向に対称移動させた配置の第2等価回路に前記第2要素を変換した第2量子回路を生成する、
処理をコンピュータが実行する量子回路設計方法。
【請求項10】
複数の要素を含む量子回路であって、量子コンピュータに含まれる複数の量子ビットそれぞれへの操作順序を前記量子回路内における前記複数の要素それぞれの配置によって示す第1量子回路から、前記複数の量子ビットのうちの複数の第1量子ビットへの所定の操作を示す第1要素と、前記複数の第1量子ビットへの前記所定の操作を示す第2要素とを検出し、前記第1量子回路の前記第1要素を、前記複数の第1量子ビットに対応するイオン操作用の第1等価回路に変換し、前記第1等価回路の要素を前記複数の第1量子ビットの配置方向に対称移動させた配置の第2等価回路に前記第2要素を変換した第2量子回路を生成する処理部、
を有する量子回路設計装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、量子回路設計プログラム、量子回路設計方法および量子回路設計装置に関する。
【背景技術】
【0002】
量子の性質を利用して古典コンピュータより高速に計算を実行する量子コンピュータがある。量子ゲート方式の量子コンピュータは、量子回路に示される順序で量子ビットにゲート操作をすることで量子計算をする。
【0003】
量子ゲート方式の量子コンピュータが実行する量子アルゴリズムとしては、例えばデータを検索するグローバーのアルゴリズムがある。例えばN個(Nは自然数)のデータから1つのデータを検索する場合、古典コンピュータによる演算回数の平均がN/2回であるのに対し、グローバーのアルゴリズムによればN1/2回の演算で検索可能である。
【0004】
量子コンピュータに関する技術としては、例えば、量子計算において期待されるサイズおよび型の量子回路を最適化するための自動化技法が提案されている。また入力集合のベクトルに関してグローバー量子サーチアルゴリズムに従ってランダム干渉操作を実施するランダム干渉ゲートに関する技術も提案されている。さらに量子アルゴリズムを、原子イオンを用いた量子情報処理実験で実行可能な、最適化された物理レベルの回路にコンパイルする技術も提案されている。
【先行技術文献】
【特許文献】
【0005】
【文献】特表2021-503116号公報
【文献】特表2003-526855号公報
【非特許文献】
【0006】
【文献】Dmitri Maslov, ”Basic circuit compilation techniques for an ion-trap quantum Machine” New Journal of Physics, Volume 19, February 2017
【発明の概要】
【発明が解決しようとする課題】
【0007】
量子ビットは、例えば超電導やイオントラップ等を利用して実現される。また量子ビットへのゲート操作では、量子コンピュータは、例えば量子ビットにマイクロ波を照射する。このような量子ビットへのゲート操作に含まれるノイズによって、量子計算のエラーが発生することがある。
【0008】
1つの側面では、本件は、量子計算のエラーを低減させることを目的とする。
【課題を解決するための手段】
【0009】
1つの案では、以下の処理をコンピュータに実行させる量子回路設計プログラムが提供される。
コンピュータは、複数の要素を含む量子回路であって、量子コンピュータに含まれる複数の量子ビットそれぞれへの操作順序を量子回路内における複数の要素それぞれの配置によって示す第1量子回路から、複数の量子ビットのうちの複数の第1量子ビットへの所定の操作を示す第1要素と、複数の第1量子ビットへの所定の操作を示す第2要素とを検出する。そしてコンピュータは、第1量子回路の第1要素を、複数の第1量子ビットに対応するイオン操作用の第1等価回路に変換し、第1等価回路の要素を複数の第1量子ビットの配置方向に対称移動させた配置の第2等価回路に第2要素を変換した第2量子回路を生成する。
【発明の効果】
【0010】
1態様によれば、量子計算のエラーを低減させることができる。
本発明の上記および他の目的、特徴および利点は本発明の例として好ましい実施の形態を表す添付の図面と関連した以下の説明により明らかになるであろう。
【図面の簡単な説明】
【0011】
【
図1】第1の実施の形態に係る量子回路設計方法の一例を示す図である。
【
図2】第2の実施の形態のシステム構成の一例を示す図である。
【
図3】制御コンピュータのハードウェアの一構成例を示す図である。
【
図4】グローバーのアルゴリズムによる確率振幅の変化の一例を示す図である。
【
図5】3量子ビットでグローバーのアルゴリズムを実行する量子回路の一例を示す図である。
【
図6】超伝導型量子コンピュータ用のCCZゲートの等価回路の一例を示す図である。
【
図7】XXゲートを用いたCXゲートの等価回路の一例を示す図である。
【
図8】XXゲートを用いたCCZゲートの等価回路の第1の例を示す図である。
【
図9】CCZゲートを同じ等価回路に置き換えた場合の量子計算結果とノイズとの関係の一例を示す図である。
【
図10】制御コンピュータの機能例を示すブロック図である。
【
図12】超伝導型量子コンピュータで量子計算を行う場合の変換後の量子回路の一例を示す図である。
【
図13】XXゲートを用いたCCZゲートの等価回路の第2の例を示す図である。
【
図14】イオントラップ型量子コンピュータで量子計算を行う場合の変換後の量子回路の一例を示す図である。
【
図15】CCXゲートの変換処理の一例を示す図である。
【
図16】CnNOTゲートの変換処理の一例を示す図である。
【
図17】CnNOTゲートの等価回路の一例を示す図である。
【
図18】量子回路変換処理の手順の一例を示すフローチャートである。
【
図19】量子計算結果とノイズとの関係の一例を示す図(その1)である。
【
図20】XXゲートを用いたCCZゲートの等価回路の第3の例を示す図である。
【
図21】XXゲートを用いたCCZゲートの等価回路の第4の例を示す図である。
【
図22】XXゲートを用いたCCZゲートの等価回路の第5の例を示す図である。
【
図23】XXゲートを用いたCCZゲートの等価回路の第6の例を示す図である。
【
図24】量子計算結果とノイズとの関係の一例を示す図(その2)である。
【
図25】量子計算結果とノイズとの関係の一例を示す図(その3)である。
【
図26】量子計算結果とノイズとの関係の一例を示す図(その4)である。
【
図27】量子計算結果とノイズとの関係の一例を示す図(その5)である。
【
図28】6量子ビットでグローバーのアルゴリズムを実行する量子回路の一例を示す図である。
【
図29】C5NOTゲートの等価回路内のCCXゲートの変換例を示す図である。
【
図30】量子計算結果とノイズとの関係の一例を示す図(その6)である。
【
図31】量子計算結果とノイズとの関係の一例を示す図(その7)である。
【発明を実施するための形態】
【0012】
以下、本実施の形態について図面を参照して説明する。なお各実施の形態は、矛盾のない範囲で複数の実施の形態を組み合わせて実施することができる。
〔第1の実施の形態〕
まず、第1の実施の形態について説明する。第1の実施の形態は、イオントラップ型量子コンピュータにおける量子計算のエラーを低減させることが可能な量子回路設計方法である。
【0013】
図1は、第1の実施の形態に係る量子回路設計方法の一例を示す図である。
図1には、量子計算のエラーを低減させることが可能な量子回路設計方法を実施する量子回路設計装置10が示されている。量子回路設計装置10は、例えば量子回路設計プログラムを実行することにより、量子計算のエラーを低減させることが可能な量子回路設計方法を実施することができる。
【0014】
量子回路設計装置10は、処理部11を有する。処理部11は、例えば量子回路設計装置10が有するプロセッサ、または演算回路である。処理部11は、第1量子回路1に含まれる要素を変換した第2量子回路を生成する。第1量子回路1は、複数の要素を含む量子回路であって、量子ビットq0,q1,q2それぞれへの操作順序を量子回路内における複数の要素それぞれの配置によって示す。例えば第1量子回路1は、量子ビットq0,q1,q2それぞれに対応する線を有する。第1量子回路1では、上から順に量子ビットq0に対応する線、量子ビットq1に対応する線、量子ビットq2に対応する線が配置される。第1量子回路1が有する各線上には、対応する量子ビットの量子状態に対する操作を示す要素が配置される。第1量子回路1では、先に行われる操作を示す要素ほど左に配置される。
【0015】
第1量子回路1に配置される要素としては、例えばHゲート、Xゲート、CCZゲート、測定等がある。ここでCCZゲートは、2つのコントロールビットと1つのターゲットビットとを設定して配置される。CCZゲートは、2つのコントロールビットが「1」である場合に、1つのターゲットビットに対してZゲートを作用させる(位相を反転させる)ことを示す。なおCCZゲートは、3つの量子ビットから2つのコントロールビットと1つのターゲットビットとをいずれの組み合わせで設定した場合も等価である。
【0016】
処理部11は、第1量子回路1に含まれる、量子ビットq0,q1,q2のうちの複数の第1量子ビットへの所定の操作を示す第1要素1aと、所定の操作を示す第2要素1bとを検出する。ここで所定の操作は、3つの量子ビットq0,q1,q2のうちの2つのコントロールビットに応じて量子ビットq0,q1,q2のうちの1つのターゲットビットの位相を反転させる操作である。つまり、処理部11は、量子ビットq0,q1,q2に対するCCZゲートを2つ検出する。
【0017】
そして、処理部11は、第1量子回路1において第1要素1aを第1等価回路2に変換し、第1等価回路2の要素を複数の第1量子ビットの配置方向に対称移動させた配置の第2等価回路3に第2要素1bを変換した第2量子回路を生成する。第1等価回路2に含まれる量子ゲートは、2量子ビットゲート2a~2eまたは1量子ビットゲートである。同様に第2等価回路3に含まれる量子ゲートは、2量子ビットゲート3a~3eまたは1量子ビットゲートである。第1等価回路2と第2等価回路3とにおける各量子ゲートの操作対象の量子ビット数が2つ以下となっていることで、第1等価回路2と第2等価回路3それぞれに従った量子ビットの操作が可能となる。
【0018】
第1等価回路2は、イオントラップ型量子コンピュータにおける量子ビットに対応するイオン操作用の等価回路である。イオントラップ型量子コンピュータにおける量子ビットに対応するイオン操作にはXXゲートが用いられる。XXゲートは、2つ量子ビットの状態をX軸周りに所定の角度だけ同時に回転させる操作を示すゲートである。
【0019】
例えば処理部11は、第1量子回路1に含まれる量子ビットq0,q1,q2に対するCCZゲートを、XXゲート、Rxゲート、Ryゲート、Rzゲート、Tゲート、およびT†ゲートの組み合わせであり、そのCCZゲートに等価な第1等価回路2に変換する。Rxゲートは、X軸周りに任意の角度だけ回転させる操作を示すゲートである。Ryゲートは、Y軸周りに任意の角度だけ回転させる操作を示すゲートである。Rzゲートは、Z軸周りに任意の角度だけ回転させる操作を示すゲートである。Tゲートは、Z軸周りに45度回転させる操作を示すゲートである。T†ゲートは、Tゲートの回転方向を反対方向にした回転操作を示すゲートである。
【0020】
また、処理部11は、第1量子回路1に含まれ、第1等価回路2に変換したCCZゲートと異なる、量子ビットq0,q1,q2に対するCCZゲートを、量子ビットq1に対応する線を軸として第1等価回路2の要素を対称移動させた配置の第2等価回路3に変換する。
【0021】
このように、処理部11は、量子ビットq0,q1,q2それぞれへの操作順序を要素の配置によって示す第1量子回路1に含まれる、量子ビットq0,q1,q2のうちの複数の第1量子ビットへの所定の操作を示すゲート(第1要素1aと第2要素1b)を検出する。そして処理部11は、第1量子回路1において第1要素1aを第1等価回路2に変換し、第1等価回路2の要素を複数の第1量子ビットの配置方向に対称移動させた配置の第2等価回路3に第2要素1bを変換した第2量子回路を生成する。
【0022】
量子計算では、量子ビットへのゲート操作に含まれるノイズによって、各量子ビットにエラーが発生することがあるため、各量子ビットに対するゲート操作数に偏りがあると、ゲート操作数の多い量子ビットにエラーが発生しやすくなる。第2量子回路は、第2等価回路3が第1等価回路2の要素を複数の第1量子ビットの配置方向に対称移動させた配置をしているため、量子ビットごとのゲート操作数に偏りが少ない。そのため、イオントラップ型量子コンピュータが第2量子回路に従って量子ビットを操作することで、ノイズの影響を受ける量子ビットの偏りを低減することができる。よって量子回路設計装置10は、量子計算のエラーを低減させることができる。
【0023】
また、所定の操作は、3つの第1量子ビットのうちの2つのコントロールビットに応じて第1量子ビットのうちの1つのターゲットビットの位相を反転させる操作である。この所定の操作は、例えばCCZゲートである。これにより、量子回路設計装置10は、CCZゲートを含む量子計算のエラーを低減させることができる。
【0024】
なお、処理部11は、第1量子ビットのうちの2つのコントロールビットに応じて第1量子ビットのうちの1つのターゲットビットのビットを反転させる第3要素を、所定の操作を含む第3等価回路に変換してもよい。第3要素は、例えばCCXゲートである。これにより、量子回路設計装置10は、CCXゲートを含む量子計算のエラーを低減させることができる。
【0025】
また、処理部11は、第1量子ビットを含む第2量子ビットのうちの3以上のコントロールビットに応じて第2量子ビットのうちの1つのターゲットビットのビットを反転させる第4要素を、第3要素を含む第4等価回路に変換してもよい。第4要素は、例えばCnNOTゲートである。これにより、量子回路設計装置10は、CnNOTゲートを含む量子計算のエラーを低減させることができる。
【0026】
〔第2の実施の形態〕
次に第2の実施の形態について説明する。第2の実施の形態は、量子回路に従ってイオントラップ型の量子コンピュータが量子計算をするシステムである。
【0027】
図2は、第2の実施の形態のシステム構成の一例を示す図である。量子コンピュータ300は、イオントラップ型の量子コンピュータである。イオントラップ型の量子コンピュータ300は、ゲート方式の量子コンピュータの1つである。量子コンピュータ300は、制御コンピュータ100と量子ビット制御装置200とを有する。制御コンピュータ100には、ネットワーク20を介して端末装置31,32,・・・が接続されている。端末装置31,32,・・・は、量子コンピュータ300による量子計算を依頼するユーザが使用するコンピュータである。制御コンピュータ100は、端末装置31,32,・・・から量子回路を受け付ける。量子回路は、ゲート等の要素の配置によって量子ビットへの操作の順序を示すものである。量子ビットは、「0」の状態と「1」の状態との重ね合わせの状態を表現することが可能なビットである。
【0028】
制御コンピュータ100は、端末装置31,32,・・・から受け付けた量子回路に従って、量子ビット制御装置200に量子ビットを制御するための指示をする。また、制御コンピュータ100は、量子ビット制御装置200から各量子ビットの測定結果を取得する。
【0029】
量子ビット制御装置200は、複数の量子ビットと複数の量子ビットそれぞれを操作するための装置を有する。例えば量子ビット制御装置200は、レーザ信号発生装置210と希釈冷却器220を有する。レーザ信号発生装置210は、制御コンピュータ100からの指示に従って複数のレーザ光223を出力する。希釈冷却器220は、電磁場を用いた複数のイオン(荷電粒子)222を自由空間内に閉じ込めている。希釈冷却器220は、複数のイオン222を極低温に冷却した状態を保つ。複数のイオン222それぞれには、レーザ信号発生装置210から出力されたレーザ光223が照射される。複数のイオン222それぞれの状態は、希釈冷却器220内に設けられた光検出器221によって観測される。
【0030】
複数のイオン222それぞれが量子ビットに対応し、複数のイオン222それぞれの状態が対応する量子ビットの状態を表す。量子ビット制御装置200は、複数の量子ビットそれぞれの状態を測定すると、測定結果を制御コンピュータ100に送信する。
【0031】
図3は、制御コンピュータのハードウェアの一構成例を示す図である。制御コンピュータ100は、CPU(Central Processing Unit)101によって装置全体が制御されている。CPU101は、プログラムの命令を実行するプロセッサである。なお、CPU101は複数のプロセッサコアを含んでもよい。また、CPU101は、複数のプロセッサであってもよく、MPU(Micro Processing Unit)、またはDSP(Digital Signal Processor)等であってもよい。また、CPU101がプログラムを実行することで実現する機能の少なくとも一部を、ASIC(Application Specific Integrated Circuit)、PLD(Programmable Logic Device)等の電子回路で実現してもよい。CPU101には、バス110を介してRAM(Random Access Memory)102と複数の周辺機器が接続されている。
【0032】
RAM102は、制御コンピュータ100の主記憶装置である。RAM102には、CPU101に実行させるOS(Operating System)のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、RAM102には、CPU101による処理に利用する各種データが格納される。なお、制御コンピュータ100は、RAM以外の種類のメモリを備えてもよく、複数個のメモリを備えてもよい。
【0033】
バス110に接続されている周辺機器としては、HDD(Hard Disk Drive)103、GPU(Graphics Processing Unit)104、入力インタフェース105、光学ドライブ装置106、機器接続インタフェース107,108およびネットワークインタフェース109がある。
【0034】
HDD103は、制御コンピュータ100の補助記憶装置である。HDD103は、内蔵した磁気ディスクに対して、磁気的にデータの書き込みおよび読み出しを行う。HDD103には、OSのプログラム、アプリケーションプログラム、および各種データが格納される。なお、制御コンピュータ100は、フラッシュメモリやSSD(Solid State Drive)等の他の種類の補助記憶装置を備えてもよく、複数の補助記憶装置を備えてもよい。
【0035】
GPU104には、モニタ21が接続されている。GPU104は、CPU101からの命令に従って、画像をモニタ21の画面に表示させる。モニタ21としては、有機EL(Electro Luminescence)を用いた表示装置や液晶表示装置等がある。
【0036】
入力インタフェース105には、キーボード22とマウス23とが接続されている。入力インタフェース105は、キーボード22やマウス23から送られてくる信号をCPU101に送信する。なお、マウス23は、ポインティングデバイスの一例であり、他のポインティングデバイスを使用することもできる。他のポインティングデバイスとしては、タッチパネル、タブレット、タッチパッド、トラックボール等がある。
【0037】
光学ドライブ装置106は、レーザ光等を利用して、光ディスク24に記録されたデータの読み取りを行う。光ディスク24は、光の反射によって読み取り可能なようにデータが記録された可搬型の記録媒体である。光ディスク24には、DVD(Digital Versatile Disc)、DVD-RAM、CD-ROM(Compact Disc Read Only Memory)、CD-R(Recordable)/RW(ReWritable)等がある。
【0038】
機器接続インタフェース107は、制御コンピュータ100に周辺機器を接続するための通信インタフェースである。例えば機器接続インタフェース107には、メモリ装置25やメモリリーダライタ26を接続することができる。メモリ装置25は、機器接続インタフェース107との通信機能を搭載した記録媒体である。メモリリーダライタ26は、メモリカード27へのデータの書き込み、またはメモリカード27からのデータの読み出しを行う装置である。メモリカード27は、カード型の記録媒体である。
【0039】
機器接続インタフェース108は、制御コンピュータ100に量子ビット制御装置200を接続するための通信インタフェースである。制御コンピュータ100は、機器接続インタフェース108を介して、量子ビットを制御するための指示を量子ビット制御装置200に送信する。
【0040】
ネットワークインタフェース109は、ネットワーク20に接続されている。ネットワークインタフェース109は、ネットワーク20を介して、他のコンピュータまたは通信機器との間でデータの送受信を行う。
【0041】
制御コンピュータ100は、以上のようなハードウェア構成によって、第2の実施の形態の処理機能を実現することができる。なお、第1の実施の形態に示した量子回路設計装置10も、
図3に示した制御コンピュータ100と同様のハードウェアにより実現することができる。また、CPU101は、第1の実施の形態に示した処理部11の一例である。
【0042】
制御コンピュータ100は、例えばコンピュータ読み取り可能な記録媒体に記録されたプログラムを実行することにより、第2の実施の形態の処理機能を実現する。制御コンピュータ100に実行させる処理内容を記述したプログラムは、様々な記録媒体に記録しておくことができる。例えば、制御コンピュータ100に実行させるプログラムをHDD103に格納しておくことができる。CPU101は、HDD103内のプログラムの少なくとも一部をRAM102にロードし、プログラムを実行する。また、制御コンピュータ100に実行させるプログラムを、光ディスク24、メモリ装置25、メモリカード27等の可搬型記録媒体に記録しておくこともできる。可搬型記録媒体に格納されたプログラムは、例えば、CPU101からの制御により、HDD103にインストールされた後、実行可能となる。また、CPU101が、可搬型記録媒体から直接プログラムを読み出して実行することもできる。
【0043】
第2の実施の形態では、量子コンピュータ300が量子計算を実行する。量子コンピュータ300が実行可能な量子アルゴリズムとして、例えばグローバーのアルゴリズムがある。
【0044】
図4は、グローバーのアルゴリズムによる確率振幅の変化の一例を示す図である。グローバーのアルゴリズムでは、以下のような確率振幅の反転増幅処理をN
1/2回繰り返すことで、N個のデータから正解データの検索が可能である。
【0045】
グラフ41は、基底状態x1,x2,x3,x4の重ね合わせ状態における、基底状態x1~x4それぞれの確率振幅を示す。なお基底状態x1~x4は、それぞれ検索対象のデータに対応する。グラフ41では、基底状態x1~x4それぞれの確率振幅は、N-1/2である。
【0046】
グローバーのアルゴリズムの反転処理では、オラクルUfが適用される。オラクルUfは、以下の(1)式で示される。
【0047】
【数1】
式(1)のxは、各基底状態を示す。また式(1)のvは、正解データに対応する基底状態である。また式(1)のf(x)は、f(v)=1となり、v以外のxでf(x)=0となる関数である。また式(1)のIは、N行N列の単位行列である。
【0048】
グラフ42は、グラフ41で示される基底状態x1~x4の重ね合わせ状態に対してオラクルUfが適用された場合の基底状態x1~x4それぞれの確率振幅を示す。なお正解データに対応する基底状態は、基底状態x3であるものとする。グラフ42では、基底状態x1~x4のうちの基底状態x3のみ、グラフ41に対して確率振幅の符号が反転している。
【0049】
グローバーのアルゴリズムの増幅処理では、以下の(2)式で示される-Wが適用される。
【0050】
【数2】
式(2)のwは、全状態の重ね合わせの状態を示す。グラフ43は、グラフ42で示される状態に対して-Wが適用された場合の基底状態x
1~x
4それぞれの確率振幅を示す。グラフ43では、グラフ42に対して基底状態x
1~x
4の確率振幅が平均値周りで反転している。このような反転増幅処理によって、正解データに対応する基底状態x
3の確率振幅が基底状態x
1,x
2,x
4に対して大きくなる。
【0051】
次に上記のようなグローバーのアルゴリズムを3量子ビットで実行する具体例を説明する。3量子ビットで示される状態の重ね合わせの状態|ψ>は、以下の式(3)で示される。
【0052】
【数3】
式(3)は、3量子ビットそれぞれについて、状態「0」である確率振幅と状態「1」である確率振幅とが2
-1/2であることを示す。また式(3)は、3量子ビットで示される状態「000」~「111」それぞれの確率振幅が8
-1/2であることを示す。ここで状態「010」が正解データに対応するものとすると、オラクルU
fが適用された状態U
f|ψ>は、以下の式(4)で示される。
【0053】
【数4】
式(4)は、状態「000」~「111」のうち、状態「010」の確率振幅が-8
-1/2であり、状態「010」以外の状態の確率振幅が8
-1/2であることを示す。つまり式(4)は、式(3)で示される状態から状態「010」の確率振幅の符号が反転した状態を示す。また、状態U
f|ψ>における確率振幅の平均値は、以下の式(5)で示される。
【0054】
【数5】
状態U
f|ψ>に-Wが適用された状態-WU
f|ψ>は、以下の式(6)で示される。
【0055】
【数6】
式(6)は、式(4)で示される状態から状態「000」~「111」の確率振幅が、式(5)で示される確率振幅の平均値周りで反転した状態を示す。状態-WU
f|ψ>において状態「010」となる確率は、確率振幅の2乗なので以下の式(7)で示される。
【0056】
【数7】
以上のように、状態「000」~「111」の重ね合わせの状態|ψ>に-WU
fが適用されることで、状態「010」となる確率は、ランダムに8つの状態のうちの1つの状態となる確率である0.125から0.781に増加する。なお、状態|ψ>に-WU
fが2回適用されると、状態「010」となる確率は、0.945となる。
【0057】
次に、グローバーのアルゴリズムを量子コンピュータ300に実行させるための量子回路について説明する。
図5は、3量子ビットでグローバーのアルゴリズムを実行する量子回路の一例を示す図である。量子回路50は、繰り返し回数1回のグローバーのアルゴリズムを3量子ビットで実行する場合の、量子ビットq
0,q
1,q
2それぞれに対する操作の順序を示す。量子回路50は、量子ビットq
0,q
1,q
2それぞれに対応する線を有する。量子回路50では、上から順に量子ビットq
0に対応する線、量子ビットq
1に対応する線、量子ビットq
2に対応する線が配置される。量子回路50では、先に行われる操作を示す要素ほど左に配置される。
【0058】
量子回路50の、量子ビットq0,q1,q2それぞれに対応する線上に配置されたHと記載されたブロックは、Hゲート(アダマールゲート)を示す。Hゲートは、重ね合わせの状態を作る操作を示す。また、量子回路50の、量子ビットq0,q1,q2それぞれに対応する線上に配置されたXと記載されたブロックは、Xゲートを示す。Xゲートは、配置された線に対応する量子ビットのビットを反転させる操作を示す。
【0059】
また、量子回路50の、量子ビットq0,q1,q2それぞれに対応する線上に配置されたZと記載されたブロックと、Zと記載されたブロックと線で結ばれ、量子ビットq0,q1,q2それぞれに対応する線上に配置された2つの点とは、CCZゲートを示す。なお、Zと記載されたブロックは、CCZゲートのターゲットビットとなる量子ビットに対応する線上に配置され、2つの点は、CCZゲートの2つのコントロールビットとなる量子ビットそれぞれに対応する線上に配置される。CCZゲートは、2つのコントロールビットが「1」である場合に、1つのターゲットビットに対してZゲートを作用させる(位相を反転させる)ことを示す。
【0060】
なおCCZゲートは、3つの量子ビットから2つのコントロールビットと1つのターゲットビットとをいずれの組み合わせで設定した場合も等価である。つまり量子ビットq1,q2をコントロールビットとし、量子ビットq0をターゲットビットとするCCZゲートは、量子ビットq0,q2をコントロールビットとし、量子ビットq1をターゲットビットとするCCZゲートに置き換えられてもよい。また量子ビットq1,q2をコントロールビットとし、量子ビットq0をターゲットビットとするCCZゲートは、量子ビットq0,q1をコントロールビットとし、量子ビットq2をターゲットビットとするCCZゲートに置き換えられてもよい。以下では、量子ビットq0,q1,q2から2つのコントロールビットと1つのターゲットビットとが設定されたCCZゲートを、量子ビットq0,q1,q2に対するCCZゲートということがある。
【0061】
量子回路50の、量子ビットq0,q1,q2それぞれに対応する線上に配置された、半円の弧と直線とを組み合わせた図形が記載されたブロックは、測定を示す。測定によって量子ビットq0,q1,q2は、それぞれ「0」または「1」の状態に確定する。
【0062】
量子回路50の左端には、量子ビットq0,q1,q2それぞれに対するHゲートが配置されている。量子回路50で示される最初の操作として量子ビットq0,q1,q2それぞれにHゲートが作用されることで、量子ビットq0,q1,q2は、式(3)で示される重ね合わせ状態となる(初期化される)。また、量子回路50では、初期化を示すHゲートの右側に、オラクルを適用する処理を示すXゲートとCCZゲートとの組み合わせが配置される。また、量子回路50では、オラクルを示すゲートの組み合わせの右側に、増幅処理を示すHゲートと、Xゲートと、CCZゲートとの組み合わせが配置される。また、量子回路50では、増幅処理を示すゲートの組み合わせの右側に、量子ビットq0,q1,q2それぞれに対する観測が配置される。量子回路50に示される観測によって、グローバーのアルゴリズムの反転増幅処理を1回行った場合の結果が出力される。
【0063】
なお、量子コンピュータ300は、2つ以下の量子ビットに対するゲート操作をする装置を有し、3つ以上の量子ビットに対するゲート操作が可能な装置を有しないことがある。そこでCCZゲートのような3つの量子ビットに対するゲートは、2つの量子ビットまたは1つの量子ビットに対するゲートを組み合わせた等価回路に変換される。
【0064】
図6は、超伝導型量子コンピュータ用のCCZゲートの等価回路の一例を示す図である。等価回路51は、量子ビットq
0,q
1,q
2に対するCCZゲートに等価で、2つの量子ビットまたは1つの量子ビットに対するゲートを組み合わせた量子回路である。等価回路51の、量子ビットq
0,q
1,q
2それぞれに対応する線上に配置されたTと記載されたブロックは、Tゲートを示す。Tゲートは、位相を所定値だけ回転させる操作を示す。また、等価回路51の、量子ビットq
0,q
1,q
2それぞれに対応する線上に配置されたT
†と記載されたブロックは、T
†ゲートを示す。T
†ゲートは、位相をTゲートと反対方向に所定値だけ回転させる操作を示す。
【0065】
また、等価回路51の、量子ビットq0,q1,q2それぞれに対応する線上に配置された円と+とを組み合わせた記号と、当該記号と線で結ばれ、量子ビットq0,q1,q2それぞれに対応する線上に配置された点とは、CNOTゲートを示す。なお、円と+とを組み合わせた記号は、CNOTゲートのターゲットビットとなる量子ビットに対応する線上に配置され、点は、CNOTゲートのコントロールビットとなる量子ビットに対応する線上に配置される。CNOTゲートは、コントロールビットが「1」である場合に、ターゲットビットのビットを反転させることを示す。
【0066】
このように、CCZゲートは、2つの量子ビットまたは1つの量子ビットに対するゲートを組み合わせた等価回路51に変換可能である。ただし、
図6に示した等価回路51は、超伝導型量子コンピュータ用である。イオントラップ型量子コンピュータの場合、2量子ビットはXXゲートを用いた等価回路に置き換えられる。XXゲートは、2量子ビットを同時に、X軸を中心に所定の角度だけ回転させるゲートである。XXゲートは、イジングゲートと呼ばれるゲートの1つである。
【0067】
図7は、XXゲートを用いたCXゲートの等価回路の一例を示す図である。CXゲートは以下の式(8)で表される。
【0068】
【数8】
他方、XXゲートは以下の式(9)で表される。
【0069】
【数9】
XXゲートを用いることでCXゲートの等価回路60を作成することができる。その場合のXXゲートのχの値は「π/4」である。等価回路60におけるR
Xと記載されたブロックは、ブロッホ球のX軸周りの回転操作を示している。R
Yと記載されたブロックは、ブロッホ球のY軸周りの回転操作を示している。R
Zと記載されたブロックは、ブロッホ球のZ軸周りの回転操作を示している。各ブロック内に記載された角度(±π/2)が、各軸周りの回転角である。
【0070】
等価回路60において2つの量子ビットに跨がっているブロックがXXゲートである。XXゲートにおいて「0」と記載された方がCXゲートにおけるコントロールビットに対応し、「1」と記載された方がCXゲートにおけるターゲットビットに対応する。XXゲートを示すブロック内に記載されている角度が、操作対象の2つの量子ビットの回転角度である。CXゲートの等価回路60の場合、XXゲートによる回転角度はπ/2である。回転角度を2で除算した値が、XXゲートの式(9)におけるχの値となる。
【0071】
このようなXXゲートを用いることで、CCZゲートについてもイオントラップ型量子コンピュータに適用可能な等価回路を生成することができる。
図8は、XXゲートを用いたCCZゲートの等価回路の第1の例を示す図である。CCZゲートの等価回路61は、2量子ビットへのπ/2の回転操作を示すXXゲート、ブロッホ球の各軸周りの±π/2の回転操作を示すゲート(R
x,R
y,R
z)、Tゲート、T
†ゲートを組み合わせて作成されている。なお、CCZゲートのXXゲートを用いた等価回路は、
図8に示す等価回路61以外にも複数存在する。ここでCCZゲートのXXゲートを用いた複数の等価回路のうちの等価回路61の識別番号を「#0」とする。
【0072】
イオントラップ型である量子コンピュータ300が量子回路50で示される処理を実行する場合、制御コンピュータ100は、量子回路50に含まれる2つのCCZゲートそれぞれを等価回路61に変換した量子回路を生成することが考えられる。そして制御コンピュータ100は、生成した量子回路に従って、量子ビット制御装置200に量子ビットを制御するための指示をすることが考えられる。
【0073】
ここで量子コンピュータ300による量子計算では、ゲート操作に含まれるノイズによって、各量子ビットにエラーが発生することがある。量子ビットのエラーには、外部環境との干渉によるエラー(Stochastic Pauli、Depolarization、Amplitude Damping、Phase Damping)と内部のみで発生するエラー(コヒーレントエラー)とがある。コヒーレントエラーは、量子ゲートの実装不備によるエラーで、完全に除去することは難しい。コヒーレントエラーでは1キュービットエラーと2キュービットエラーがある。実際のデバイスでは2キュービットのエラーの方が、1キュービットエラーよりも発生確率が10程度大きい。そのため、2キュービットエラーの方が全体のエラーに対する影響が1キュービットエラーより大きい。
【0074】
よって量子回路50に含まれる2つのCCZゲートを等価回路61に変換した場合、等価回路61においてゲート操作数が多い量子ビットにエラーが発生しやすくなる。例えば
図8に示した等価回路61であれば、量子ビットq
0は操作の回数が他の量子ビットよりも多く、量子ビットq
0はエラーが発生しやすい。すると
図5に示した量子回路50をイオントラップ型である量子コンピュータ300で計算する場合において、2つのCCZゲートを共に等価回路61で実現すると、量子ビットごとのエラーの発生確率に偏りが生じる。量子ビットごとのエラーの発生確率の偏りは、グローバーのアルゴリズムの計算において正しい計算結果が得られる確率に影響を及ぼす。
【0075】
図9は、CCZゲートを同じ等価回路に置き換えた場合の量子計算結果とノイズとの関係の一例を示す図である。グラフ81は、3量子ビットのグローバーのアルゴリズムに含まれる2つのCCZゲートを等価回路61に変換した量子回路による量子計算を、ゲート操作のノイズ量を変えてシミュレーションした結果を示す。グラフ81の縦軸は、正解データに対応する状態が出力される確率を示す。グラフ81の横軸は、ゲート操作に含まれるノイズ量を示す。なおsqrt(ε)は、ゲート操作に含まれるノイズ量の指標である。グラフ81の各線は、正解データに対応する状態が「000」~「111」それぞれの場合のシミュレーション結果を示す。
【0076】
グラフ81の各線は、いずれもノイズなしの場合の確率は「0.781」である。各線は、ノイズが増えるに従って、ノイズなしの場合の確率は「0.781」との差が大きくなる。ノイズなしの場合の確率との差がどの程度になるのかは、オラクルにより依存性がある。すなわち、どの状態が検索されるかによりノイズがある場合の確率が変化する。そして、どの状態を検索する場合でも、概ねコヒーレントノイズが大きくなるほど出力される確率のノイズなしの場合との差が広がる。出力される確率のノイズなしの場合との差が大きい程、ノイズの影響が大きいこととなる。
【0077】
そこで第2の実施の形態では、制御コンピュータ100は、量子回路にCCZゲートが複数含まれる場合、一部のCCZゲートを等価回路61に変換し、残りのCCZゲートを等価回路61の各要素を上下に対称移動させた配置の等価回路に変換する。
【0078】
次に、制御コンピュータ100の機能について詳細に説明する。
図10は、制御コンピュータの機能例を示すブロック図である。制御コンピュータ100は、記憶部120、量子計算制御部130、ゲート検出部140およびゲート変換部150を有する。記憶部120は、変換情報121を記憶する。変換情報121には、変換するゲートと等価回路とが対応付けて登録されている。
【0079】
量子計算制御部130は、量子計算を制御する。まず、量子計算制御部130は、量子回路を取得する。例えば量子計算制御部130は、端末装置31,32,・・・から、量子コンピュータ300による量子計算の依頼と量子回路とを受け付ける。そして量子計算制御部130は、ゲート変換部150によって変換された量子回路に従って量子ビット制御装置200を制御する。
【0080】
ゲート検出部140は、量子計算制御部130が取得した量子回路からCCZゲートを検出する。またゲート検出部140は、量子回路からCCZゲートが検出された場合、検出されたCCZゲートと同じ量子ビットの組み合わせに対するCCZゲートを検出する。
【0081】
ゲート変換部150は、量子回路に含まれる3つ以上の量子ビットに対するゲートを、1ビットゲートまたは2ビットゲートを組み合わせた等価回路に変換する。例えばゲート変換部150は、軸周りの回転操作を示す1ビットゲートとXXゲートとを組み合わせた等価回路に変換する。例えばゲート変換部150は、ゲート検出部140が検出したCCZゲートを等価回路61に変換する。またゲート変換部150は、等価回路に変換したCCZゲートと同じ量子ビットの組み合わせに対するCCZゲートを、変換した等価回路の要素を対称に移動させた等価回路に変換する。例えばゲート変換部150は、CCZゲートを等価回路61の各要素を上下に対称移動させた配置の等価回路に変換する。
【0082】
なお、
図10に示した各要素間を接続する線は通信経路の一部を示すものであり、図示した通信経路以外の通信経路も設定可能である。また、
図10に示した各要素の機能は、例えば、その要素に対応するプログラムモジュールをコンピュータに実行させることで実現することができる。
【0083】
次に、記憶部120に格納される変換情報121について詳細に説明する。
図11は、変換情報の一例を示す図である。変換情報121には、検出ゲートおよび等価回路の欄が設けられている。検出ゲートの欄には、検出対象のゲートが設定されている。等価回路の欄には、検出対象のゲートの等価回路が設定されている。例えば変換情報121には、CCZゲートと等価回路61および等価回路61の各要素を上下に対称移動させた配置の等価回路とが対応付けて登録されている。
【0084】
ゲート変換部150は、変換情報121に基づいて、3量子ビット以上のゲート操作に対応する等価回路を決定することができる。
図12は、超伝導型量子コンピュータで量子計算を行う場合の変換後の量子回路の一例を示す図である。ゲート変換部150は、量子回路変換処理によって量子回路50を量子回路50aに変換する。量子回路50aは、量子回路50に含まれる2つのCCZゲートの一方を等価回路51に変換し、他方を等価回路52に変換したものである。等価回路52は、等価回路51の各要素を上下に対称移動させた配置の等価回路である。等価回路52では、等価回路51の各要素の配置が量子ビットq
1に対応する線を軸として反転している。
【0085】
図12の例と同様に、イオントラップ型の量子コンピュータ用の等価回路を生成する場合においても、複数のCCZゲートを異なる等価回路に変換することができる。
図13は、XXゲートを用いたCCZゲートの等価回路の第2の例を示す図である。等価回路66は、
図8に示した「#0」の等価回路61における各要素の配置を、量子ビットq
1に対応する線を軸として対称移動させた構成となっている。この等価回路66も、等価回路61と同様にCCZゲートと等価である。この等価回路の識別番号を「#5」とする(識別番号「#1~#4」の等価回路については後述する)。
【0086】
図14は、イオントラップ型量子コンピュータで量子計算を行う場合の変換後の量子回路の一例を示す図である。ゲート変換部150は、イオントラップ型の量子コンピュータで量子回路50の量子計算を行う場合、例えば量子回路50を量子回路50bに変換する。量子回路50bは、量子回路50に含まれる2つのCCZゲートの一方を等価回路61(
図8参照)に変換し、他方を等価回路66(
図13参照)に変換したものである。
【0087】
量子計算制御部130は、量子回路50を取得すると、ゲート変換部150によって変換された量子回路50bに従って量子ビット制御装置200を制御する。量子ビット制御装置200は、量子回路50bに示される順序で各量子ビットに対するゲート操作をする。これにより、量子回路50に含まれる2つのCCZゲートを等価回路61に変換した場合よりも特定の量子ビットへのゲート操作の偏りが抑制される。
【0088】
次にゲート変換部150によるCCXゲートの変換処理について説明する。なおCCXゲートは、Toffoliゲートとも呼ばれる。
図15は、CCXゲートの変換処理の一例を示す図である。CCXゲート70は、2つのコントロールビットが「1」である場合に、1つのターゲットビットに対してXゲートを作用させる(ビットを反転させる)ことを示す。量子回路において、CCXゲート70のターゲットビットとなる量子ビットに対応する線上には円と+とを組み合わせた記号が配置され、2つのコントロールビットとなる量子ビットそれぞれに対応する線上には当該記号と線で結ばれた点が配置される。CCXゲート70は、量子回路に含まれるCCXゲートを、HゲートとCCZゲートとを組み合わせた等価回路71に変換することができる。
【0089】
等価回路71は、量子ビットq0に対するHゲートと、量子ビットq0,q1,q2に対するCCZゲートと、量子ビットq0に対するHゲートとが並べて配置されたものである。ゲート変換部150は、等価回路71に含まれるCCZゲートを例えば等価回路61に変換することで、CCXゲート70と等価なイオントラップ型量子コンピュータ用の等価回路に変換できる。
【0090】
このように、ゲート変換部150は、量子回路に含まれるCCXゲートを、CCZゲートを含む等価回路に変換できる。そして、ゲート変換部150は、CCZゲートを等価回路に変換することで、CCXゲートを含む量子回路において、特定の量子ビットにゲート操作が偏ることを抑制できる。そして、CCXゲート70の等価回路71を用いれば、4ビット以上の多数ビットの操作においても、量子ビット間の操作回数の偏りを抑制することが可能である。
【0091】
次にゲート変換部150によるCnNOTゲートの変換処理について説明する。
図16は、CnNOTゲートの変換処理の一例を示す図である。CnNOTゲートは、n個(nは1以上の整数)のコントロールビットがすべて「1」である場合に、1つのターゲットビットのビットを反転させることを示す。量子回路において、CnNOTゲートのターゲットビットとなる量子ビットに対応する線上には円と+とを組み合わせた記号が配置され、n個のコントロールビットとなる量子ビットそれぞれに対応する線上には当該記号と線で結ばれた点が配置される。ゲート変換部150は、量子回路に含まれるCnNOTゲートを、CCXゲートとCNOTゲートとを組み合わせた等価回路に変換する。
【0092】
図16に示す等価回路73は、量子ビットq
0,q
1,q
2,q
3,q
4をコントロールビットとし、量子ビットq
5をターゲットビットとするC5NOTゲート72に等価な量子回路である。等価回路73は、量子ビットq
0~q
4,a
0,a
1,a
2,a
3のいずれか2つをコントロールビットとし、量子ビットq
0~q
4,a
0~a
3のいずれか1つをターゲットビットとするCCXゲートを含む。なお量子ビットa
0~a
3は、アンシラビットである。CnNOTゲートの変換ではn-1個のアンシラビットが使用される。
【0093】
等価回路73は、量子ビットq0,q1をコントロールビットとし、量子ビットa0をターゲットビットとするCCXゲートを2つ含む。また、等価回路73は、量子ビットq2,a0をコントロールビットとし、量子ビットa1をターゲットビットとするCCXゲートを2つ含む。また、等価回路73は、量子ビットq3,a1をコントロールビットとし、量子ビットa2をターゲットビットとするCCXゲートを2つ含む。また、等価回路73は、量子ビットq4,a2をコントロールビットとし、量子ビットa3をターゲットビットとするCCXゲートを2つ含む。また、等価回路73は、量子ビットa3をコントロールビットとし、量子ビットq5をターゲットビットとするCNOTゲートを1つ含む。
【0094】
ゲート変換部150は、等価回路73に含まれるCCXゲートを、CCZゲートとHゲートとを組み合わせた等価回路に変換できる(
図15参照)。従って、CnNOTゲートは、1量子ビットゲートと2量子ビットゲートとを組み合わせて等価回路に変換可能である。
【0095】
図17は、CnNOTゲートの等価回路の一例を示す図である。等価回路74は、等価回路73に含まれるCCXゲートを、CCZゲートとHゲートとを組み合わせた等価回路に変換したものである。つまり、等価回路74は、同じ量子ビットの組み合わせに対するCCZゲートを2つずつ含む。例えば、等価回路74は、量子ビットq
0,q
1,a
0に対するCCZゲートを2つ含む。
【0096】
ゲート変換部150は、等価回路74に含まれる同じ量子ビットの組み合わせに対する2つのCCZゲートの一方を等価回路61に変換し、他方を等価回路61の各要素を上下に対称移動させた配置の等価回路66に変換する。これにより、ゲート変換部150は、CnNOTゲートを含む量子回路において、特定の量子ビットにゲート操作が偏ることを抑制できる。
【0097】
次に、量子回路変換処理の手順について詳細に説明する。
図18は、量子回路変換処理の手順の一例を示すフローチャートである。以下、
図18に示す処理をステップ番号に沿って説明する。
【0098】
[ステップS101]量子計算制御部130は、量子回路を取得する。例えば量子計算制御部130は、端末装置31,32,・・・から、量子コンピュータ300による量子計算の依頼と量子回路とを受け付ける。
【0099】
[ステップS102]ゲート変換部150は、量子回路に含まれるCnNOTゲートをCCXゲートとCNOTゲートとの組み合わせに変換する。例えばゲート変換部150は、ステップS101で取得された量子回路に含まれるCnNOTゲートを検出する。ゲート変換部150は、検出されたCnNOTゲートのコントロールビットおよびn-1個のアンシラビットのうちの2つをコントロールビットとし、1つをターゲットビットとする複数のCCXゲートと、CNOTゲートとを組み合わせた等価回路を生成する。そしてゲート変換部150は、検出されたCnNOTゲートを生成した等価回路に変換する。
【0100】
[ステップS103]ゲート変換部150は、量子回路に含まれるCCXゲートをCCZゲートとHゲートとの組み合わせに変換する。例えばゲート変換部150は、ステップS102で変換された量子回路に含まれるCCXゲートを検出する。ゲート変換部150は、検出されたCCXゲートのターゲットビットに対するHゲートと、コントロールビットおよびターゲットビットに対するCCZゲートと、ターゲットビットに対するHゲートとを並べて配置した等価回路を生成する。そしてゲート変換部150は、検出されたCCXゲートを生成した等価回路に変換する。
【0101】
[ステップS104]ゲート検出部140は、量子回路からCCZゲートを1つ検出する。
[ステップS105]ゲート検出部140は、ステップS104で量子回路からCCZゲートが検出されたか否かを判定する。ゲート検出部140は、ステップS104で量子回路からCCZゲートが検出されたと判定した場合、処理をステップS106に進める。また、ゲート検出部140は、ステップS104で量子回路からCCZゲートが検出されなかったと判定した場合、処理をステップS110に進める。
【0102】
[ステップS106]ゲート変換部150は、ステップS104で検出されたCCZゲートを1つまたは2つの量子ビットへの操作の組み合わせである等価回路に変換する。例えばゲート変換部150は、ステップS104で検出されたCCZゲートを変換情報121に登録された等価回路61に変換する。
【0103】
[ステップS107]ゲート検出部140は、量子回路から、ステップS104で検出されたCCZゲートと同じ量子ビットの組み合わせに対するCCZゲートを1つ検出する。
【0104】
[ステップS108]ゲート検出部140は、ステップS107で量子回路からCCZゲートが検出されたか否かを判定する。ゲート検出部140は、ステップS107で量子回路からCCZゲートが検出されたと判定した場合、処理をステップS109に進める。また、ゲート検出部140は、ステップS107で量子回路からCCZゲートが検出されなかったと判定した場合、処理をステップS104に進める。
【0105】
[ステップS109]ゲート変換部150は、ステップS107で検出されたCCZゲートを、ステップS106で変換した等価回路の要素を対称に移動させた等価回路に変換する。例えばゲート変換部150は、ステップS107で検出されたCCZゲートを、変換情報121に登録された等価回路61の各要素を上下に対称移動させた配置の等価回路66に変換する。そして処理がステップS104に進む。
【0106】
[ステップS110]量子計算制御部130は、変換後の量子回路に従って量子ビット制御装置200を制御する。
このようにゲート変換部150は、同じ量子ビットの組み合わせに対するCCZゲートの一方を等価回路に変換し、他方を等価回路51の各要素を上下に対称移動させた配置の等価回路に変換する。これにより、ゲート変換部150は、特定の量子ビットにゲート操作が偏ることを抑制できる。
【0107】
なおゲート変換部150は、CnNOTゲートをCCXゲートとCNOTゲートとの組み合わせに変換し、CCXゲートをCCZゲートとHゲートとの組み合わせに変換してから、CCZゲートの変換をする。これにより、ゲート変換部150は、量子回路にCCXゲートやCnNOTゲートが含まれる場合でも特定の量子ビットにゲート操作が偏ることを抑制できる。
【0108】
次にゲート操作に含まれるノイズの量子計算への影響について説明する。
図19は、量子計算結果とノイズとの関係の一例を示す図(その1)である。グラフ81は、3量子ビットのグローバーのアルゴリズムに含まれる2つのCCZゲートを等価回路61に変換した量子回路による量子計算を、ゲート操作のノイズ量を変えてシミュレーションした結果を示す。グラフ81の縦軸は、正解データに対応する状態の出力確率を示す。グラフ81の横軸は、ゲート操作に含まれるノイズ量を示す。なおsqrt(ε)は、ゲート操作に含まれるノイズ量の指標である。グラフ81の各線は、正解データに対応する状態が「000」~「111」それぞれの場合のシミュレーション結果を示す。
【0109】
グラフ82は、3量子ビットのグローバーのアルゴリズムに含まれる2つのCCZゲートの一方を等価回路61に変換し、他方を等価回路66に変換した量子回路による量子計算を、ゲート操作のノイズ量を変えてシミュレーションした結果を示す。グラフ82の縦軸、横軸、各線の意味は、グラフ81と同様である。
【0110】
グラフ81,82は、ゲート操作のノイズがないと、正解データに対応する状態の出力確率が式(7)に示した理論値0.781となることを示す。また、グラフ81,82は、ゲート操作のノイズ量が増加すると、正解データに対応する状態の出力確率が減少することを示す。ここでグラフ82は、ノイズ量の増加に対する出力確率の理論値0.781との差がグラフ81に対して小さい。つまり、グラフ81,82は、2つのCCZゲートの一方を等価回路61に変換し、他方を等価回路66に変換した量子回路で量子計算をすると、2つのCCZゲートを等価回路61に変換した量子回路で量子計算をするよりもノイズの影響を低減できることを示す。
【0111】
このように、ゲート変換部150は、同じ量子ビットの組み合わせに対するCCZゲートの一方を等価回路61に変換し、他方を等価回路66に変換することで、ゲート操作に含まれるノイズの影響が特定の量子ビットに偏ることで発生するエラーを低減できる。よってゲート変換部150は、量子計算のエラーを低減させることができる。
【0112】
なお、CCZゲートは、上記の例で示した等価回路61,66以外の等価回路にも変換できる。ゲート変換部150は、CCZゲートを等価回路61,66以外の等価回路に変換してもよい。
【0113】
図20は、XXゲートを用いたCCZゲートの等価回路の第3の例を示す図である。
図20に示す等価回路62では、等価回路61の量子ビットq
0に対応する線に配置されている各要素が、量子ビットq
0に対応する線に配置されている。また、等価回路62では、等価回路61の量子ビットq
1に対応する線に配置されている各要素が、量子ビットq
2に対応する線に配置されている。また、等価回路62では、等価回路61の量子ビットq
2に対応する線に配置されている各要素が、量子ビットq
1に対応する線に配置されている。この等価回路62の識別番号を「#1」とする。
【0114】
図21は、XXゲートを用いたCCZゲートの等価回路の第4の例を示す図である。
図21に示す等価回路63では、等価回路61の量子ビットq
0に対応する線に配置されている各要素が、量子ビットq
1に対応する線に配置されている。また、等価回路63では、等価回路61の量子ビットq
1に対応する線に配置されている各要素が、量子ビットq
0に対応する線に配置されている。また、等価回路63では、等価回路61の量子ビットq
2に対応する線に配置されている各要素が、量子ビットq
2に対応する線に配置されている。この等価回路63の識別番号を「#2」とする。
【0115】
図22は、XXゲートを用いたCCZゲートの等価回路の第5の例を示す図である。
図22に示す等価回路64は、
図21に示した「#2」の等価回路63における各要素の配置を、量子ビットq
1に対応する線を軸として対称移動させた構成となっている。この等価回路64の識別番号を「#3」とする。
【0116】
図23は、XXゲートを用いたCCZゲートの等価回路の第6の例を示す図である。
図23に示す等価回路65は、
図20に示した「#1」の等価回路62における各要素の配置を、量子ビットq
1に対応する線を軸として対称移動させた構成となっている。この等価回路65の識別番号を「#4」とする。
【0117】
CCZゲートの6個の等価回路61~66のうち、一方が他方の要素の配置を対称移動させた構成となっている等価回路の組を生成すると、3つの組が生成できる。すなわち「#0」の等価回路61と「#5」の等価回路66との組、「#1」の等価回路62と「#4」の等価回路65との組、および「#2」の等価回路63と「#4」の等価回路65との組が生成できる。ゲート変換部150は、同じ量子ビットの組み合わせに対するCCZゲートが2つある場合、1つのCCZゲートを、いずれかの組を構成する一方の等価回路に変換し、もう1つのCCZゲートを、その組を構成する他方の等価回路に変換してもよい。
【0118】
図24は、量子計算結果とノイズとの関係の一例を示す図(その2)である。グラフ83は、3量子ビットのグローバーのアルゴリズムに含まれる2つのCCZゲートを等価回路62に変換した量子回路による量子計算を、ゲート操作のノイズ量を変えてシミュレーションした結果を示す。また、グラフ84は、3量子ビットのグローバーのアルゴリズムに含まれる2つのCCZゲートの一方を等価回路62に変換し、他方を等価回路65に変換した量子回路による量子計算を、ゲート操作のノイズ量を変えてシミュレーションした結果を示す。グラフ83,84の縦軸、横軸、各線の意味は、グラフ81と同様である。なおグラフ84では、正解が「111」の場合の結果を示す線と正解が「101」の場合の結果を示す線はほぼ重なっている。
【0119】
グラフ84は、ノイズ量の増加に対する出力確率のノイズがない場合との差がグラフ83に対して小さい。よって、グラフ83,84は、2つのCCZゲートの一方を等価回路62に変換し、他方を等価回路65に変換した量子回路で量子計算をすると、2つのCCZゲートを等価回路62に変換した量子回路で量子計算をするよりもノイズの影響を低減できることを示す。
【0120】
図25は、量子計算結果とノイズとの関係の一例を示す図(その3)である。グラフ85は、3量子ビットのグローバーのアルゴリズムに含まれる2つのCCZゲートを等価回路63に変換した量子回路による量子計算を、ゲート操作のノイズ量を変えてシミュレーションした結果を示す。また、グラフ86は、3量子ビットのグローバーのアルゴリズムに含まれる2つのCCZゲートの一方を等価回路63に変換し、他方を等価回路64に変換した量子回路による量子計算を、ゲート操作のノイズ量を変えてシミュレーションした結果を示す。グラフ85,86の縦軸、横軸、各線の意味は、グラフ81と同様である。なおグラフ86では、正解が「111」の場合の結果を示す線と正解が「110」の場合の結果を示す線とはほぼ重なっている。
【0121】
グラフ86は、ノイズ量の増加に対する出力確率のノイズがない場合との差がグラフ85に対して小さい。よって、グラフ85,86は、2つのCCZゲートの一方を等価回路63に変換し、他方を等価回路64に変換した量子回路で量子計算をすると、2つのCCZゲートを等価回路63に変換した量子回路で量子計算をするよりもノイズの影響を低減できることを示す。
【0122】
図26は、量子計算結果とノイズとの関係の一例を示す図(その4)である。グラフ87は、3量子ビットのグローバーのアルゴリズムに含まれる2つのCCZゲートを1種類の等価回路に変換した場合と2種類の等価回路に変換した場合との違いを比較するものである。グラフ87の縦軸は、正解データに対応する状態が出力される確率の平均(平均確率)を示す。グラフ87の横軸は、ゲート操作に含まれるノイズ量を示す。
【0123】
グラフ87の等価回路1種類の場合の結果を示す線は、グラフ81,83,85等の1種類の等価回路を用いて量子計算を行った場合の正解の値ごとに得られる、ノイズ量に応じた正解データの出力確率を、ノイズ量ごとに平均した値を示している。グラフ87の等価回路2種類の場合の結果を示す線は、グラフ82,84,86のように組となる2種類の等価回路を用いて量子計算を行った場合の正解の値ごとに得られる、ノイズ量に応じた正解データの出力確率を、ノイズ量ごとに平均した値を示している。
【0124】
グラフ87に示すように、2つのCCZゲートを2種類の等価回路に変換した場合、1種類の等価回路に変換した場合に比べて、平均確率とノイズがない場合の確率との差が少ない。
【0125】
図27は、量子計算結果とノイズとの関係の一例を示す図(その5)である。グラフ88は、
図26に示したグラフ87の生成に用いた各量子計算の、sqrt(ε)=0.3の場合の正解データに対応する状態の出力確率を示す。グラフ88は、量子回路に含まれる2つのCCZゲートを同じ等価回路に変換した量子回路(等価回路1種類)による量子計算をsqrt(ε)=0.3で実行した場合の出力確率を示す。また、グラフ88は、量子回路に含まれる2つのCCZゲートの一方を、他方の等価回路の各要素を上下に対称移動させた配置の等価回路に変換した量子回路(等価回路2種類)による量子計算をsqrt(ε)=0.3で実行した場合の出力確率を示す。
【0126】
グラフ88では、2つのCCZゲートについて、1種類の等価回路に変換した量子回路によって量子計算をする場合よりも、2種類の等価回路に変換した量子回路によって量子計算を実行した場合のほうが、得られる確率は、ノイズがない場合の確率に近い値となる。よって、ゲート変換部150は、2つのCCZゲートを2種類の等価回路に変換することで、量子計算のエラーを低減させることができる。
【0127】
なお、上記では、3量子ビットのグローバーのアルゴリズムを例に説明したが、グローバーのアルゴリズムは、4以上の量子ビットでも実行可能である。
図28は、6量子ビットでグローバーのアルゴリズムを実行する量子回路の一例を示す図である。量子回路75は、繰り返し回数1回のグローバーのアルゴリズムを6量子ビットで実行する場合の、量子ビットq
0,q
1,q
2,q
3,q
4,q
5それぞれに対する操作の順序を示す。
【0128】
量子回路75の左端には、量子ビットq0~q5それぞれに対するHゲートが配置されている。量子回路75で示される最初の操作として量子ビットq0~q5それぞれにHゲートが作用されることで、量子ビットq0~q5は、重ね合わせ状態となる(初期化される)。また、量子回路75では、初期化を示すHゲートの右側に、オラクルを適用する処理を示すXゲートとHゲートとCnNOTゲートとの組み合わせが配置される。また、量子回路75では、オラクルを示すゲートの組み合わせの右側に、増幅処理を示すHゲートと、Xゲートと、CnNOTゲートとの組み合わせが配置される。また、量子回路75では、増幅処理を示すゲートの組み合わせの右側に、量子ビットq0~q5それぞれに対する観測が配置される。量子回路75に示される観測によって、6量子ビットのグローバーのアルゴリズムの反転増幅処理を1回行った場合の結果が出力される。
【0129】
ゲート変換部150は、量子回路75に含まれるCnNOTゲートをCCXゲートとCNOTゲートとの組み合わせに変換し、CCXゲートをCCZゲートとHゲートとの組み合わせに変換する。そしてゲート変換部150は、CnNOTゲートから変換された同じ量子ビットの組み合わせに対する2つのCCZゲートの一方を例えば等価回路61に変換し、他方を等価回路66に変換する。
【0130】
図29は、C5NOTゲートの等価回路内のCCXゲートの変換例を示す図である。等価回路76は、C5NOTゲートの等価回路73(
図16参照)内のCCXゲートそれぞれについて、1種類のCCZゲート(#0)を用いて、
図15に示すような等価回路71に変換する例である。それに対して、等価回路77は、C5NOTゲートの等価回路73(
図16参照)内のCCXゲートについて、2種類のCCZゲート(#0,#5)のいずれかを用いて、
図15に示すような等価回路71に変換する例である。例えば等価回路77の先頭から5つのCCXゲートは、CCZゲートの「#0」の等価回路61を用いて、
図15に示すようなCCXゲートの等価回路71に変換される。また等価回路77の後方から5つのCCXゲートは、CCZゲートの「#5」の等価回路66を用いて、
図15に示すようなCCXゲートの等価回路71に変換される。
【0131】
次に、6量子ビットでグローバーのアルゴリズムを実行する量子回路において、C5NOTゲートを等価回路76のように変換した場合と、等価回路77のように変換した場合との正解データの確率の違いについて説明する。
【0132】
図30は、量子計算結果とノイズとの関係の一例を示す図(その6)である。グラフ91,92は、6量子ビットのグローバーのアルゴリズムに含まれるC5NOTゲートを変換した量子回路による量子計算を、ゲート操作のノイズ量を変えてシミュレーションした結果を示す。グラフ91,92の縦軸は、正解データに対応する状態が「000000」~「111111」それぞれの場合の正解データに対応する状態の出力確率を示す。グラフ91,92の横軸は、ゲート操作に含まれるノイズ量を示す。
【0133】
グラフ91は、C5NOTゲートから変換された同じ量子ビットの組み合わせに対する2つのCCZゲートを
図29に示す等価回路76のように変換した量子回路(等価回路1種類)による量子計算のシミュレーション結果を示す。また、グラフ92は、C5NOTゲートから変換された同じ量子ビットの組み合わせに対する2つのCCZゲートを
図29に示す等価回路77のように変換した量子回路(等価回路2種類)による量子計算のシミュレーション結果を示す。
【0134】
図31は、量子計算結果とノイズとの関係の一例を示す図(その7)である。グラフ93の縦軸は、正解データに対応する状態が「000000」~「111111」それぞれの場合の正解データに対応する状態の出力確率の平均を示す。グラフ93の横軸は、ゲート操作に含まれるノイズ量を示す。
【0135】
グラフ93に示される線の一方は、グラフ91(等価回路1種類)に示される正解データに対応する状態が「000000」~「111111」それぞれの場合の正解データに対応する状態の出力確率の平均を示している。他方の線は、グラフ92(等価回路2種類)に示される正解データに対応する状態が「000000」~「111111」それぞれの場合の正解データに対応する状態の出力確率の平均を示している。
【0136】
グラフ93によれば、2つのCCZゲートを1種類の等価回路に変換した量子回路によって量子計算をする場合よりも、2つのCCZゲートを2種類の等価回路に変換した量子回路によって量子計算を実行した場合のほうが出力確率の減少量が小さい。つまり、グラフ93は、2つのCCZゲートを1種類の等価回路に変換した量子回路によって量子計算をする場合よりも、2つのCCZゲートを2種類の等価回路に変換した量子回路によって量子計算を実行した場合のほうがノイズの影響を低減できることを示す。
【0137】
このように、ゲート変換部150は、CnNOTゲートを含む量子回路によって実行される量子計算においても、ゲート操作に含まれるノイズの影響が特定の量子ビットに偏ることで発生するエラーを低減できる。
【0138】
以上、実施の形態を例示したが、実施の形態で示した各部の構成は同様の機能を有する他のものに置換することができる。また、他の任意の構成物や工程が付加されてもよい。さらに、前述した実施の形態のうちの任意の2以上の構成(特徴)を組み合わせたものであってもよい。
【0139】
上記については単に本発明の原理を示すものである。さらに、多数の変形、変更が当業者にとって可能であり、本発明は上記に示し、説明した正確な構成および応用例に限定されるものではなく、対応するすべての変形例および均等物は、添付の請求項およびその均等物による本発明の範囲とみなされる。
【符号の説明】
【0140】
1 第1量子回路
1a 第1要素
1b 第2要素
2 第1等価回路
2a~2e,3a~3e 2量子ビットゲート
3 第2等価回路
10 量子回路設計装置
11 処理部