(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024125043
(43)【公開日】2024-09-13
(54)【発明の名称】情報処理プログラム、情報処理装置、および情報処理方法
(51)【国際特許分類】
G06N 10/70 20220101AFI20240906BHJP
【FI】
G06N10/70
【審査請求】未請求
【請求項の数】5
【出願形態】OL
(21)【出願番号】P 2023033111
(22)【出願日】2023-03-03
(71)【出願人】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110002147
【氏名又は名称】弁理士法人酒井国際特許事務所
(72)【発明者】
【氏名】本田 巧
(57)【要約】
【課題】NISQ向けの量子回路開発では、量子回路にノイズゲートを付与して意図的にノイズを発生させる、ノイズありシミュレーションを行っている。しかしながら、ノイズありシミュレーションでは、複数回のシミュレーションを行うことが要求され、シミュレーションに時間がかかってしまう。
【解決手段】情報処理プログラムは、ノイズを発生させるノイズゲートを有するノイズあり量子回路を、ノイズゲートの処理を実行しないノイズなしシミュレーションとして実行して、ノイズゲートの直前の量子ビットの状態を量子状態として記憶し、ノイズあり量子回路を、ノイズゲートの処理を実行するノイズありシミュレーションとして実行する場合、ノイズが発生すると判定されたノイズゲートの直前の量子状態を用いて、ノイズが発生すると判定されたノイズゲート以降のノイズあり量子回路を実行する処理をコンピュータに実行させる。
【選択図】
図9
【特許請求の範囲】
【請求項1】
ノイズを発生させるノイズゲートを有するノイズあり量子回路を、前記ノイズゲートの処理を実行しないノイズなしシミュレーションとして実行して、前記ノイズゲートの直前の量子ビットの状態を量子状態として記憶し、
前記ノイズあり量子回路を、前記ノイズゲートの処理を実行するノイズありシミュレーションとして実行する場合、ノイズが発生すると判定された前記ノイズゲートの直前の前記量子状態を用いて、前記ノイズが発生すると判定された前記ノイズゲート以降の前記ノイズあり量子回路を実行する
処理をコンピュータに実行させることを特徴とする情報処理プログラム。
【請求項2】
前記ノイズが発生すると判定された前記ノイズゲートの直前の前記量子状態を取得する処理は、
前記ノイズあり量子回路における前記ノイズゲートの実行順に、前記ノイズゲートに前記ノイズが発生するか否かを判定し、
前記ノイズゲートに前記ノイズは発生しないと判定された場合、次の実行順のノイズゲートに前記ノイズが発生するか否かを判定し、
前記ノイズゲートに前記ノイズが発生すると判定された場合、前記ノイズが発生すると判定された前記ノイズゲートの直前の前記量子状態を取得する
処理を含むことを特徴とする請求項1に記載の情報処理プログラム。
【請求項3】
前記ノイズが発生すると判定された前記ノイズゲート以降の前記ノイズあり量子回路を実行する処理は、
前記ノイズあり量子回路から、前記ノイズが発生すると判定された前記ノイズゲート以降の前記量子回路を取得し、前記ノイズが発生すると判定された前記ノイズゲートを、前記ノイズを発生させるゲートに変更することにより、前記ノイズが発生すると判定された前記ノイズゲート以降の前記ノイズあり量子回路を生成し、
取得した前記量子状態を入力データとして用いて、前記ノイズが発生すると判定された前記ノイズゲート以降の前記ノイズあり量子回路を実行する
処理を含むことを特徴とする請求項1または2に記載の情報処理プログラム。
【請求項4】
ノイズを発生させるノイズゲートを有するノイズあり量子回路を、前記ノイズゲートの処理を実行しないノイズなしシミュレーションとして実行して、前記ノイズゲートの直前の量子ビットの状態を量子状態として記憶し、
前記ノイズあり量子回路を、前記ノイズゲートの処理を実行するノイズありシミュレーションとして実行する場合、ノイズが発生すると判定された前記ノイズゲートの直前の前記量子状態を用いて、前記ノイズが発生すると判定された前記ノイズゲート以降の前記ノイズあり量子回路を実行する
処理を実行する制御部を備えたことを特徴とする情報処理装置。
【請求項5】
ノイズを発生させるノイズゲートを有するノイズあり量子回路を、前記ノイズゲートの処理を実行しないノイズなしシミュレーションとして実行して、前記ノイズゲートの直前の量子ビットの状態を量子状態として記憶し、
前記ノイズあり量子回路を、前記ノイズゲートの処理を実行するノイズありシミュレーションとして実行する場合、ノイズが発生すると判定された前記ノイズゲートの直前の前記量子状態を用いて、前記ノイズが発生すると判定された前記ノイズゲート以降の前記ノイズあり量子回路を実行する
処理をコンピュータが実行することを特徴とする情報処理方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ノイズあり量子回路シミュレーションの高速化技術に関する。
【背景技術】
【0002】
現状、ゲート方式量子コンピュータの開発は、量子誤り耐性付きの量子コンピュータであるFTQC(Fault Tolerant Quantum Computer)を目標として進んでいる。一方で、量子誤り訂正が不十分なNISQ(Noisy Intermediate-Scale Quantum Computer)でも、量子化学計算や量子近似最適化、量子機械学習などの分野において量子コンピュータの優位性が実現可能といわれ始めている。
【0003】
現在のNISQはノイズの影響を受けやすく、量子ビットにエラーが発生する可能性があるため、ノイズを考慮した量子回路設計が要求される。そのため、NISQ向けの量子回路開発では、量子回路にノイズゲートを付与して意図的にノイズを発生させる、ノイズありシミュレーションを行っている。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】米国特許出願公開第2019/0018721号明細書
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、ノイズありシミュレーションでは、ノイズの発生箇所や、ノイズの種類が様々であるため、複数回のシミュレーションを行うことが要求され、シミュレーションに時間がかかってしまう。
【0006】
1つの側面では、量子回路のノイズありシミュレーションをより高速に行うことを目的とする。
【課題を解決するための手段】
【0007】
1つの態様において、情報処理プログラムは、ノイズを発生させるノイズゲートを有するノイズあり量子回路を、ノイズゲートの処理を実行しないノイズなしシミュレーションとして実行して、ノイズゲートの直前の量子ビットの状態を量子状態として記憶し、ノイズあり量子回路を、ノイズゲートの処理を実行するノイズありシミュレーションとして実行する場合、ノイズが発生すると判定されたノイズゲートの直前の量子状態を用いて、ノイズが発生すると判定されたノイズゲート以降のノイズあり量子回路を実行する処理をコンピュータに実行させる。
【発明の効果】
【0008】
1つの側面では、量子回路のノイズありシミュレーションをより高速に行うことができる。
【図面の簡単な説明】
【0009】
【
図1】
図1は、古典ビットおよび量子ビットについて説明するための図である。
【
図2】
図2は、n量子ビットのState Vector表現について説明するための図である。
【
図3】
図3は、量子回路シミュレーションについて説明するための図である。
【
図4】
図4は、ノイズありシミュレーションについて説明するための図である。
【
図5】
図5は、本実施形態にかかる情報処理装置10の構成例を示す図である。
【
図6】
図6は、本実施形態にかかるノイズゲート直前の量子状態の記憶について説明するための図である。
【
図7】
図7は、本実施形態にかかるノイズ発生の判定について説明するための図である。
【
図8】
図8は、本実施形態にかかるノイズありシミュレーションの回路再構築について説明するための図である。
【
図9】
図9は、本実施形態にかかるノイズありシミュレーションの高速化について説明するための図である。
【
図10】
図10は、本実施形態にかかるノイズゲート直前の量子状態の取得処理の流れを示すフローチャートである。
【
図11】
図11は、本実施形態にかかるノイズありシミュレーションの実行処理の流れを示すフローチャートである。
【
図12】
図12は、本実施形態にかかる情報処理装置10のハードウェア構成例を示す図である。
【発明を実施するための形態】
【0010】
以下に、本実施形態にかかる情報処理プログラム、情報処理装置、および情報処理方法の実施例を図面に基づいて詳細に説明する。なお、この実施例により本実施形態が限定されるものではない。また、各実施例は、矛盾のない範囲内で適宜組み合わせることができる。
【0011】
まず、本実施形態で取り扱うノイズありシミュレーションについて説明するために、量子ビットや量子回路シミュレーションについて説明する。
図1は、古典ビットおよび量子ビットについて説明するための図である。
【0012】
図1の左側に示す古典ビット(classical bit, bit)は、現在普及している一般的なコンピュータである古典コンピュータにおける情報の単位である。1bitの古典ビットは、
図1の左側に示すように、“0”または“1”の状態しか持てない。
【0013】
一方、
図1の右側に示す量子ビット(quantum bit, qubit)は、量子力学的な現象を用いて駆動するコンピュータである量子コンピュータにおける情報の単位である。1qubitの量子ビット(以下、「1量子ビット」という)は、例えば、|ψ〉と表され、
図1の右側に、「ブロッホ球」として示すように、“0”および“1”の他、“0”でも“1”でもない状態も持っている。「ブロッホ球」は、量子ビットの状態を単位球面上の点として表す、量子状態の表現法の1つである。また、「ブロッホ球」において、θはz軸とのなす角であり、φは|ψ〉からxy平面上に下した垂線とx軸とのなす角であり、θおよびφは実数をとる。
【0014】
そして、1量子ビットは、観察することで、“0”または“1”の状態が確率的に得られる。なお、“0”および“1”の状態は、それぞれ、|0〉および|1〉と表され、それぞれを得る確率は、
図1の右側に示すように、|c
0|
2%、|c
1|
2%である。また、c
0およびc
1は、「|c
0|
2+|c
1|
2=1」の関係を満たす複素数である。また、1量子ビット|ψ〉は、例えば、次の式(1)で表現できる。
【0015】
【0016】
以上説明したように、量子ビットは、古典ビットと異なり、“0”や“1”といった単一の状態を持つわけではないため、量子回路シミュレーションを行う際には、得られ得る全ての量子状態を配列の要素として持つ。
図2は、n量子ビットのState Vector表現について説明するための図である。State Vector表現は、量子ビットの配列表現の一例である。State Vector表現では、
図2に示すように、n量子ビット(nは自然数)は、n個の量子ビットから得られ得る量子状態“0”および“1”の全ての組み合わせを、2
n個の要素のベクトルとして配列に持つ。例えば、2量子ビットの場合は、2つの量子ビットから得られ得る量子状態“0”および“1”の全ての組み合わせ、2
2=4個の要素ベクトルを配列に持つ。同様に、例えば、4量子ビットの場合は、2
4=16個の要素ベクトルを配列に持つ。
【0017】
量子回路のシミュレーションでは、量子回路を実行して、
図2を用いて説明したようなn量子ビットの得られ得る量子状態を更新しながらシミュレーションが行われる。
図3は、量子回路シミュレーションについて説明するための図である。
図3の例は、4量子ビットの量子回路のシミュレーションについて示すものである。量子回路のシミュレーションでは、例えば、量子回路を実行すると、量子回路の左側から、各量子ビットに対して各量子ゲートの処理が実行され、量子状態が更新される。なお、シミュレーションであるため、この際に更新される量子状態は、得られ得る全ての量子状態であり、例えば、4量子ビットの場合は、State Vector表現で示される配列の全16要素である。このように量子状態の全要素を更新することで、量子回路のシミュレーションでは、実際に量子計算として量子回路を実行する場合と異なり、量子状態の全てのパターンの観測が可能となる。なお、
図3に示す量子回路は一例であり、様々な量子回路のシミュレーションを行うことができる。
【0018】
次に、NISQ向けの量子回路開発で行われるノイズありの量子回路のシミュレーションについて説明する。
図4は、ノイズありシミュレーションについて説明するための図である。
図4の例は、10量子ビットのノイズあり量子回路のシミュレーションについて示すものである。
図4において破線で示すように、ノイズありシミュレーションでは、量子回路にノイズを発生させるためのノイズゲートが各量子ビットに付与される。
図4の例では、各ノイズゲートにおいてノイズが発生する確率は0.001%としているが、ノイズの発生確率は、シミュレーション対象とする量子回路に合わせて自由に設定できる。また、
図4の例では、量子回路のdepth(深度)0~8のゲート処理ごとにノイズゲートを付与しているが、depthの間隔や、ノイズゲートを付与する箇所や数も、シミュレーション対象とする量子回路に合わせて自由に設定できる。なお、ノイズゲートにおいてノイズが発生しない場合、量子ビットにはエラーが発生しないことになるため、ノイズゲートの通過前後で量子状態は同じになる。そのため、ノイズありシミュレーションを複数回行う場合、量子回路を実行してノイズゲートにおいてノイズが発生するまでは、常に同一の処理結果となり、同一の量子状態が維持されることになる。換言すると、ノイズありシミュレーションを複数回行う場合、ノイズゲートにおいてノイズが発生するまでは、同一の処理が繰り返されることになる。また、上述したように、ノイズありシミュレーションでは、複数回のシミュレーションを行うことが要求される。そこで、本実施形態では、ノイズありシミュレーションを複数回行う際に、ノイズが発生するまでの量子状態を保持して、それまでの同一の処理をスキップさせることで、量子回路のノイズありシミュレーションをより高速に行う。
【0019】
(情報処理装置10の機能構成)
次に、本実施形態の動作主体となる情報処理装置10の機能構成について説明する。
図5は、本実施形態にかかる情報処理装置10の構成例を示す図である。
図5に示す情報処理装置10は、例えば、サーバコンピュータ、またはデスクトップPC(Personal Computer)やノートPCなどの情報処理装置である。なお、
図5では、情報処理装置10を1台のコンピュータとして示しているが、複数台のコンピュータで構成される分散型コンピューティングシステムであってもよい。また、情報処理装置10は、クラウドコンピューティングサービスを提供するサービス提供者によって管理されるクラウドコンピュータ装置であってもよい。
【0020】
図5に示すように、情報処理装置10は、通信部20、記憶部30、および制御部40を有する。
【0021】
通信部20は、他の装置との間の通信を制御する処理部であり、例えば、ネットワークインタフェースカードなどの通信インタフェースやUSB(Universal Serial Bus)インタフェースである。
【0022】
記憶部30は、各種データや、制御部40が実行するプログラムを記憶する機能を有し、例えば、メモリやハードディスクなどの記憶装置により実現される。記憶部30は、量子回路情報31、および量子状態情報32などを記憶する。
【0023】
量子回路情報31には、例えば、シミュレーションを行う量子回路に関する情報などが記憶される。より具体的には、量子回路情報31には、例えば、
図4に示したような、ノイズありシミュレーションを行うためのノイズゲートやその他の量子ゲートを含むノイズあり量子回路に関する情報が記憶される。また、ノイズありシミュレーションをより高速に行うために再構築されたノイズあり量子回路に関する情報が記憶される。当該再構築されたノイズあり量子回路の詳細については後述する。
【0024】
量子状態情報32には、例えば、量子ビットの状態である量子状態に関する情報などが記憶される。より具体的には、量子状態情報32には、例えば、
図2や3に示したようなState Vector表現で、ノイズありシミュレーションで用いる量子状態に関する情報が記憶される。また、ノイズありシミュレーションをより高速に行うために取得される、ノイズゲート直前の量子状態に関する情報が記憶される。ノイズゲート直前の量子状態の詳細についても後述する。
【0025】
なお、記憶部30に記憶される上記情報はあくまでも一例であり、記憶部30は、上記情報以外にも様々な情報を記憶できる。
【0026】
制御部40は、情報処理装置10全体を司る処理部であり、例えば、プロセッサなどである。制御部40は、実行部41、取得部42、判定部43、および生成部44を備える。なお、各処理部は、プロセッサが有する電子回路の一例やプロセッサが実行するプロセスの一例である。
【0027】
実行部41は、例えば、ノイズを発生させるノイズゲートを有するノイズあり量子回路を、ノイズゲートの処理を実行しないノイズなしシミュレーションとして実行して、ノイズゲートの直前の量子ビットの状態を量子状態として記憶する。このようなノイズゲートの直前の量子状態の記憶について、
図6を用いて、より具体的に説明する。
【0028】
図6は、本実施形態にかかるノイズゲート直前の量子状態の記憶について説明するための図である。
図6に示す量子回路は、ノイズありシミュレーションを行うためのノイズゲートやその他の量子ゲートを含むノイズあり量子回路である。このようなノイズあり量子回路は、予め構築(生成)され、その情報が量子回路情報31に記憶される。実行部41は、例えば、量子回路情報31から、ノイズあり量子回路の情報を取得し、当該ノイズあり量子回路を、ノイズゲートの処理は実行せずに、ノイズなしシミュレーションとして実行する。この際、
図6に示すように、実行部41は、例えば、各ノイズゲート直前の量子ビットの状態を量子状態として量子状態情報32に記憶する。なお、この際、各量子状態には、どのノイズゲート直前の量子状態かを示す位置情報が対応付けて記憶される。
【0029】
また、実行部41は、例えば、生成部44によって再構築されたノイズあり量子回路を、ノイズありシミュレーションとして実行する。当該再構築されたノイズあり量子回路の実行の詳細については後述する。
【0030】
取得部42は、ノイズあり量子回路を、ノイズゲートの処理を実行するノイズありシミュレーションとして実行する場合、判定部43によりノイズが発生すると判定されたノイズゲートの直前の量子状態を量子状態情報32から取得する。なお、ここで取得されるノイズゲートの直前の量子状態は、
図6を用いて説明したような、実行部41によってノイズなしシミュレーションとして実行された際に量子状態情報32に記憶された量子状態である。
【0031】
判定部43は、例えば、ノイズあり量子回路を、ノイズありシミュレーションとして実行する場合、ノイズあり量子回路におけるノイズゲートの実行順に、ノイズゲートにノイズが発生するか否かを判定する。また、判定部43は、例えば、ノイズゲートにノイズは発生しないと判定された場合、次の実行順のノイズゲートにノイズが発生するか否かを判定する。このようなノイズゲートのノイズ発生の判定について、
図7を用いて、より具体的に説明する。
【0032】
図7は、本実施形態にかかるノイズ発生の判定について説明するための図である。
図7に示す量子回路は、
図6に示す、ノイズゲート直前の量子状態が予め記憶されたノイズあり量子回路である。
図7に示すように、判定部43は、例えば、ノイズあり量子回路におけるノイズゲートの実行順、すなわち、量子回路の左側から、ノイズゲートにノイズが発生するか否かを判定する。なお、
図7において破線で示すように、ノイズゲートは各量子ビットに付与されているため、例えば、各量子ビットに付与されるノイズゲート群単位(破線内のノイズゲート群単位)で、ノイズが発生するか否かが判定される。そして、各量子ビットに付与されるノイズゲート群のうち1つでもノイズを発生させるノイズゲートがある場合は、ノイズが発生すると判定される。なお、ノイズゲートがノイズを発生させるか否かの判定について、
図7の例では、0.001%の確率でノイズゲートがノイズを発生させるため、例えば、ノイズゲートごとに乱数を用いた判定を行い、ノイズが発生するか否かの判定が行われる。また、
図7に示すように、ノイズゲートにノイズが発生すると判定された場合、ノイズ発生の判定処理は終了する。一方、ノイズゲート群のいずれのノイズゲートでもノイズが発生しないと判定された場合は、次の実行順のノイズゲート群に対してノイズが発生するか否かの判定が行われる。
【0033】
生成部44は、例えば、ノイズあり量子回路から、ノイズが発生すると判定部43によって判定されたノイズゲート以降の量子回路を取得する。そして、生成部44は、例えば、ノイズが発生すると判定されたノイズゲートを、ノイズを発生させるゲートに変更することにより、ノイズが発生すると判定されたノイズゲート以降のノイズあり量子回路を生成する。このようなノイズが発生すると判定されたノイズゲート以降のノイズあり量子回路の生成について、
図8を用いて、より具体的に説明する。
【0034】
図8は、本実施形態にかかるノイズありシミュレーションの回路再構築について説明するための図である。
図8は、depth2と3との間のノイズゲートにおいてノイズが発生すると判定された例である。この場合、
図8に示すように、生成部44は、ノイズが発生すると判定されたノイズゲートを、
図8では“Noise”ゲートと示される、ノイズを発生させるゲートに変更する。ノイズを発生させるゲートは、100%ノイズを発生させる量子ゲートである。また、
図8に示すように、ノイズが発生すると判定されたノイズゲートと同一のノイズゲート群に含まれる、ノイズは発生しないと判定されたノイズゲートは、ノイズを発生させないように取り除かれる。なお、
図8は、ノイズが発生すると判定されたノイズゲートが、同一のノイズゲート群で1つであった場合の例であるが、同一のノイズゲート群で、ノイズが発生すると判定されたノイズゲートが複数存在する場合はあり得る。そして、
図8に示すように、生成部44は、“Noise”ゲートの後に、ノイズが発生すると判定されたノイズゲート後のノイズあり量子回路、
図8の例ではdepth3以降の量子回路が実行されるように、量子回路を再構築する。なお、
図8に示すように、再構築された量子回路には、ノイズが発生すると判定されたノイズゲート前のノイズあり量子回路、
図8の例ではdepth2以前の量子回路は含まれない。このようにして再構築された量子回路は、
図9に示す量子回路である。
【0035】
図9は、本実施形態にかかるノイズありシミュレーションの高速化について説明するための図である。
図9に示すように、実行部41は、例えば、生成部44によって再構築されたノイズあり量子回路を、ノイズありシミュレーションとして実行する。この際、実行部41は、例えば、取得部42によって取得された、ノイズが発生すると判定されたノイズゲートの直前の量子状態を用いて、ノイズが発生すると判定されたノイズゲート以降のノイズあり量子回路を実行する。より具体的には、
図9に示すように、ノイズが発生すると判定されたdepth2と3との間のノイズゲートの直前の量子状態を量子状態情報32から読み込んで取得し、これを入力データとして用いて、depth3以降の量子回路を実行する。これにより、depth2以前の量子回路の実行がスキップできるので、量子回路のノイズありシミュレーションをより高速に行うことができる。
【0036】
(処理の流れ)
次に、
図10を用いて、情報処理装置10によって実行されるノイズゲート直前の量子状態の取得処理について説明する。
図10は、本実施形態にかかるノイズゲート直前の量子状態の取得処理の流れを示すフローチャートである。
図10に示す取得処理は、ノイズありシミュレーションをより高速に行うために、ノイズなしシミュレーションとして予め行われる処理である。
【0037】
まず、
図10に示すように、情報処理装置10は、例えば、初期状態として、シミュレーションで用いる量子ビットの数に合わせて、得られ得る全ての量子状態の配列の要素を生成する(ステップS101)。ここで生成される配列の要素は、例えば、
図2や
図3を用いて説明したようなState Vector表現で示されるn量子ビットの配列の要素である。
【0038】
次に、情報処理装置10は、例えば、予め生成された、ノイズを発生させるノイズゲートを有するノイズあり量子回路の情報を量子回路情報31から取得する(ステップS102)。
【0039】
次に、情報処理装置10は、例えば、ステップS102で取得した回路情報に対応するノイズあり量子回路に含まれるゲート情報を実行順に取得する(ステップS103)。ここで、ゲート情報を実行順に取得するとは、例えば、
図6に示した量子回路を用いて説明すると、量子回路の左側から順番に量子ゲートの情報を取得することである。
【0040】
ステップS103で取得したゲート情報が、ノイズゲート以外の量子ゲートの情報であった場合(ステップS104:No)、情報処理装置10は、例えば、当該量子ゲートの処理を実行し、量子状態を更新する(ステップS105)。ここで更新される量子状態とは、例えば、ステップS101で生成された、得られ得る全ての量子状態の配列の要素である。
【0041】
一方、ステップS103で取得したゲート情報がノイズゲートの情報であった場合(ステップS104:Yes)、情報処理装置10は、例えば、当該ノイズゲートの位置とその時の量子状態を記憶する(ステップS106)。ここで記憶される量子状態は、いわゆる、ノイズゲートの直前の量子状態であり、例えば、当該量子状態と、ノイズゲートの位置とは対応付けて、量子状態情報32に記憶される。なお、ステップS103で取得したゲート情報がノイズゲートの情報であっても、
図10に示す取得処理はノイズなしシミュレーションとして実行されるため、当該ノイズゲートの処理は実行されない。
【0042】
ステップS105またはS106の実行後、ステップS102で取得した回路情報に対応するノイズあり量子回路に含まれる全ての量子ゲートの処理が完了した場合(ステップS107:Yes)、
図10に示す取得処理は終了する。
【0043】
一方、処理が未完了の量子ゲートがある場合(ステップS107:No)、情報処理装置10は、ステップS103に戻り、次の実行順のゲート情報を取得し、全ての量子ゲートの処理が完了するまで処理を繰り返す。
【0044】
図10に示す取得処理により、
図9を用いて説明したように、例えば、各ノイズゲート直前の量子状態が、どのノイズゲート直前の量子状態かを示す位置情報と対応付けられて量子状態情報32に記憶される。
【0045】
次に、
図11を用いて、情報処理装置10によって実行されるノイズありシミュレーションの実行処理について説明する。
図11は、本実施形態にかかるノイズありシミュレーションの実行処理の流れを示すフローチャートである。
図11に示す実行処理は、
図10に示す取得処理により取得されたノイズゲート直前の量子状態を用いて、より高速に行われるノイズありシミュレーションの実行処理である。
【0046】
まず、
図11に示すように、情報処理装置10は、例えば、初期状態として、シミュレーションで用いる量子ビットの数に合わせて、得られ得る全ての量子状態の配列の要素を生成する(ステップS201)。ここで生成される配列の要素は、例えば、
図2や
図3を用いて説明したようなState Vector表現で示されるn量子ビットの配列の要素である。
【0047】
次に、情報処理装置10は、例えば、予め生成された、ノイズを発生させるノイズゲートを有するノイズあり量子回路の情報を量子回路情報31から取得する(ステップS202)。
【0048】
次に、情報処理装置10は、例えば、ステップS202で取得した回路情報に対応するノイズあり量子回路に含まれる実行順が最初のノイズゲートの情報を取得する(ステップS203)。ここで取得される、実行順が最初のノイズゲートとは、例えば、
図4に示した量子回路を用いて説明すると、depth0と1との間のノイズゲートである。
【0049】
次に、情報処理装置10は、例えば、ステップS203で取得したノイズゲートにおいてノイズが発生するか否かを判定する(ステップS204)。ここで、ノイズが発生するか否かの判定について、例えば、
図7を用いて説明したように、同一のノイズゲート群のうち1つでもノイズを発生させるノイズゲートがある場合は、ノイズが発生すると判定される。取得したノイズゲートにおいてノイズは発生しないと判定された場合(ステップS204:No)、情報処理装置10は、例えば、実行順が次のノイズゲートの情報を取得する(ステップS205)。そして、情報処理装置10は、ステップS204に戻り、ステップS205で取得したノイズゲートにおいてノイズが発生するか否かを判定する。
【0050】
一方、取得したノイズゲートにおいてノイズが発生すると判定された場合(ステップS204:Yes)、情報処理装置10は、ステップS202で取得した回路情報に対応するノイズあり量子回路を再構築する(ステップS206)。ここで、ノイズあり量子回路を再構築するとは、例えば、
図8を用いて説明したように、ノイズが発生すると判定されたノイズゲートを、ノイズを発生させるゲートに変更し、以降の量子回路が実行されるように再構築することである。
【0051】
次に、情報処理装置10は、例えば、ステップS204でノイズが発生すると判定されたノイズゲートの直前の量子状態を量子状態情報32から取得する(ステップS207)。ここで取得される量子状態は、
図10に示す取得処理のステップS106において量子状態情報32に記憶されたノイズゲート直前の量子状態である。
【0052】
次に、情報処理装置10は、例えば、ステップS207で取得した量子状態を入力データとして用いて、ステップS206で再構築した量子回路を、ノイズありシミュレーションとして実行する(ステップS208)。なお、ステップS208の量子回路の実行は、ノイズありシミュレーションとして実行されるため、ノイズなしシミュレーションと異なり、ノイズゲートの処理は実行される。ステップS208の実行後、
図11に示す実行処理は終了する。
【0053】
(効果)
上述したように、情報処理装置10は、ノイズを発生させるノイズゲートを有するノイズあり量子回路を、ノイズゲートの処理を実行しないノイズなしシミュレーションとして実行して、ノイズゲートの直前の量子ビットの状態を量子状態として記憶し、ノイズあり量子回路を、ノイズゲートの処理を実行するノイズありシミュレーションとして実行する場合、ノイズが発生すると判定されたノイズゲートの直前の量子状態を用いて、ノイズが発生すると判定されたノイズゲート以降のノイズあり量子回路を実行する。
【0054】
このように、情報処理装置10は、ノイズゲートの直前の量子状態を予め記憶し、ノイズありシミュレーションにおいて当該量子状態を用いて、ノイズが発生するまでの処理をスキップする。これにより、情報処理装置10は、量子回路のノイズありシミュレーションをより高速に行うことができる。
【0055】
また、情報処理装置10によって実行される、ノイズが発生すると判定されたノイズゲートの直前の量子状態を取得する処理は、ノイズあり量子回路におけるノイズゲートの実行順に、ノイズゲートにノイズが発生するか否かを判定し、ノイズゲートにノイズは発生しないと判定された場合、次の実行順のノイズゲートにノイズが発生するか否かを判定し、ノイズゲートにノイズが発生すると判定された場合、ノイズが発生すると判定されたノイズゲートの直前の量子状態を取得する処理を含む。
【0056】
これにより、情報処理装置10は、量子回路のノイズありシミュレーションをより高速に行うことができる。
【0057】
また、情報処理装置10によって実行される、ノイズが発生すると判定されたノイズゲート以降のノイズあり量子回路を実行する処理は、ノイズあり量子回路から、ノイズが発生すると判定されたノイズゲート以降の量子回路を取得し、ノイズが発生すると判定されたノイズゲートを、ノイズを発生させるゲートに変更することにより、ノイズが発生すると判定されたノイズゲート以降のノイズあり量子回路を生成し、取得した量子状態を入力データとして用いて、ノイズが発生すると判定されたノイズゲート以降のノイズあり量子回路を実行する処理を含む。
【0058】
これにより、情報処理装置10は、量子回路のノイズありシミュレーションをより高速に行うことができる。
【0059】
(システム)
上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報は、特記する場合を除いて任意に変更されてもよい。また、実施例で説明した具体例、分布、数値などは、あくまで一例であり、任意に変更されてもよい。
【0060】
また、情報処理装置10の構成要素の分散や統合の具体的形態は図示のものに限られない。例えば、情報処理装置10の実行部41が複数の処理部に分散されたり、情報処理装置10の実行部41と取得部42とが1つの処理部に統合されたりしてもよい。つまり、その構成要素の全部または一部は、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合されてもよい。さらに、各装置の各処理機能は、その全部または任意の一部が、CPUおよび当該CPUにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【0061】
図12は、本実施形態にかかる情報処理装置10のハードウェア構成例を示す図である。
図12に示すように、情報処理装置10は、通信インタフェース10a、HDD(Hard Disk Drive)10b、メモリ10c、プロセッサ10dを有する。また、
図12に示した各部は、バスなどで相互に接続される。
【0062】
通信インタフェース10aは、ネットワークインタフェースカードなどであり、他の情報処理装置との通信を行う。HDD10bは、例えば、情報処理装置10の各機能を動作させるプログラムやデータを記憶する。
【0063】
プロセッサ10dは、CPU、MPU(Micro Processing Unit)、GPU(Graphics Processing Unit)などである。また、プロセッサ10dは、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などの集積回路により実現されるようにしてもよい。プロセッサ10dは、例えば、
図5などに示した各処理部と同様の処理を実行するプログラムをHDD10bなどから読み出してメモリ10cに展開する。これにより、プロセッサ10dは、情報処理装置10の各機能を実現するプロセスを実行するハードウェア回路として動作可能である。
【0064】
また、情報処理装置10は、媒体読取装置によって記録媒体から上記プログラムを読み出し、読み出された上記プログラムを実行することで上記実施例と同様の機能を実現することもできる。なお、この他の実施例でいうプログラムは、情報処理装置10によって実行されることに限定されるものではない。例えば、他の情報処理装置がプログラムを実行する場合や、他の情報処理装置と情報処理装置10とが協働してプログラムを実行するような場合にも、上記実施例が同様に適用されてよい。
【0065】
当該プログラムは、インターネットなどのネットワークを介して配布されてもよい。また、当該プログラムは、ハードディスク、フレキシブルディスク(FD)、CD-ROM、MO(Magneto-Optical disk)、DVD(Digital Versatile Disc)などのコンピュータ可読記憶媒体に記録されてよい。そして、当該プログラムは、情報処理装置10などによって記録媒体から読み出されることによって実行されてもよい。
【0066】
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
【0067】
(付記1)ノイズを発生させるノイズゲートを有するノイズあり量子回路を、前記ノイズゲートの処理を実行しないノイズなしシミュレーションとして実行して、前記ノイズゲートの直前の量子ビットの状態を量子状態として記憶し、
前記ノイズあり量子回路を、前記ノイズゲートの処理を実行するノイズありシミュレーションとして実行する場合、ノイズが発生すると判定された前記ノイズゲートの直前の前記量子状態を用いて、前記ノイズが発生すると判定された前記ノイズゲート以降の前記ノイズあり量子回路を実行する
処理をコンピュータに実行させることを特徴とする情報処理プログラム。
【0068】
(付記2)前記ノイズが発生すると判定された前記ノイズゲートの直前の前記量子状態を取得する処理は、
前記ノイズあり量子回路における前記ノイズゲートの実行順に、前記ノイズゲートに前記ノイズが発生するか否かを判定し、
前記ノイズゲートに前記ノイズは発生しないと判定された場合、次の実行順のノイズゲートに前記ノイズが発生するか否かを判定し、
前記ノイズゲートに前記ノイズが発生すると判定された場合、前記ノイズが発生すると判定された前記ノイズゲートの直前の前記量子状態を取得する
処理を含むことを特徴とする付記1に記載の情報処理プログラム。
【0069】
(付記3)前記ノイズが発生すると判定された前記ノイズゲート以降の前記ノイズあり量子回路を実行する処理は、
前記ノイズあり量子回路から、前記ノイズが発生すると判定された前記ノイズゲート以降の前記量子回路を取得し、前記ノイズが発生すると判定された前記ノイズゲートを、前記ノイズを発生させるゲートに変更することにより、前記ノイズが発生すると判定された前記ノイズゲート以降の前記ノイズあり量子回路を生成し、
取得した前記量子状態を入力データとして用いて、前記ノイズが発生すると判定された前記ノイズゲート以降の前記ノイズあり量子回路を実行する
処理を含むことを特徴とする付記1または2に記載の情報処理プログラム。
【0070】
(付記4)ノイズを発生させるノイズゲートを有するノイズあり量子回路を、前記ノイズゲートの処理を実行しないノイズなしシミュレーションとして実行して、前記ノイズゲートの直前の量子ビットの状態を量子状態として記憶し、
前記ノイズあり量子回路を、前記ノイズゲートの処理を実行するノイズありシミュレーションとして実行する場合、ノイズが発生すると判定された前記ノイズゲートの直前の前記量子状態を用いて、前記ノイズが発生すると判定された前記ノイズゲート以降の前記ノイズあり量子回路を実行する
処理を実行する制御部を備えたことを特徴とする情報処理装置。
【0071】
(付記5)前記ノイズが発生すると判定された前記ノイズゲートの直前の前記量子状態を取得する処理は、
前記ノイズあり量子回路における前記ノイズゲートの実行順に、前記ノイズゲートに前記ノイズが発生するか否かを判定し、
前記ノイズゲートに前記ノイズは発生しないと判定された場合、次の実行順のノイズゲートに前記ノイズが発生するか否かを判定し、
前記ノイズゲートに前記ノイズが発生すると判定された場合、前記ノイズが発生すると判定された前記ノイズゲートの直前の前記量子状態を取得する
処理を含むことを特徴とする付記4に記載の情報処理装置。
【0072】
(付記6)前記ノイズが発生すると判定された前記ノイズゲート以降の前記ノイズあり量子回路を実行する処理は、
前記ノイズあり量子回路から、前記ノイズが発生すると判定された前記ノイズゲート以降の前記量子回路を取得し、前記ノイズが発生すると判定された前記ノイズゲートを、前記ノイズを発生させるゲートに変更することにより、前記ノイズが発生すると判定された前記ノイズゲート以降の前記ノイズあり量子回路を生成し、
取得した前記量子状態を入力データとして用いて、前記ノイズが発生すると判定された前記ノイズゲート以降の前記ノイズあり量子回路を実行する
処理を含むことを特徴とする付記4または5に記載の情報処理装置。
【0073】
(付記7)ノイズを発生させるノイズゲートを有するノイズあり量子回路を、前記ノイズゲートの処理を実行しないノイズなしシミュレーションとして実行して、前記ノイズゲートの直前の量子ビットの状態を量子状態として記憶し、
前記ノイズあり量子回路を、前記ノイズゲートの処理を実行するノイズありシミュレーションとして実行する場合、ノイズが発生すると判定された前記ノイズゲートの直前の前記量子状態を用いて、前記ノイズが発生すると判定された前記ノイズゲート以降の前記ノイズあり量子回路を実行する
処理をコンピュータが実行することを特徴とする情報処理方法。
【0074】
(付記8)前記ノイズが発生すると判定された前記ノイズゲートの直前の前記量子状態を取得する処理は、
前記ノイズあり量子回路における前記ノイズゲートの実行順に、前記ノイズゲートに前記ノイズが発生するか否かを判定し、
前記ノイズゲートに前記ノイズは発生しないと判定された場合、次の実行順のノイズゲートに前記ノイズが発生するか否かを判定し、
前記ノイズゲートに前記ノイズが発生すると判定された場合、前記ノイズが発生すると判定された前記ノイズゲートの直前の前記量子状態を取得する
処理を含むことを特徴とする付記7に記載の情報処理方法。
【0075】
(付記9)前記ノイズが発生すると判定された前記ノイズゲート以降の前記ノイズあり量子回路を実行する処理は、
前記ノイズあり量子回路から、前記ノイズが発生すると判定された前記ノイズゲート以降の前記量子回路を取得し、前記ノイズが発生すると判定された前記ノイズゲートを、前記ノイズを発生させるゲートに変更することにより、前記ノイズが発生すると判定された前記ノイズゲート以降の前記ノイズあり量子回路を生成し、
取得した前記量子状態を入力データとして用いて、前記ノイズが発生すると判定された前記ノイズゲート以降の前記ノイズあり量子回路を実行する
処理を含むことを特徴とする付記7または8に記載の情報処理方法。
【0076】
(付記10)プロセッサと、
プロセッサに動作可能に接続されたメモリと
を備えた情報処理装置であって、プロセッサは、
ノイズを発生させるノイズゲートを有するノイズあり量子回路を、前記ノイズゲートの処理を実行しないノイズなしシミュレーションとして実行して、前記ノイズゲートの直前の量子ビットの状態を量子状態として記憶し、
前記ノイズあり量子回路を、前記ノイズゲートの処理を実行するノイズありシミュレーションとして実行する場合、ノイズが発生すると判定された前記ノイズゲートの直前の前記量子状態を用いて、前記ノイズが発生すると判定された前記ノイズゲート以降の前記ノイズあり量子回路を実行する
処理を実行することを備えたことを特徴とする情報処理装置。
【符号の説明】
【0077】
10 情報処理装置
10a 通信インタフェース
10b HDD
10c メモリ
10d プロセッサ
20 通信部
30 記憶部
31 量子回路情報
32 量子状態情報
40 制御部
41 実行部
42 取得部
43 判定部
44 生成部