(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024039170
(43)【公開日】2024-03-22
(54)【発明の名称】エラー検知プログラム、エラー検知方法、および情報処理装置
(51)【国際特許分類】
G06N 10/70 20220101AFI20240314BHJP
【FI】
G06N10/70
【審査請求】未請求
【請求項の数】7
【出願形態】OL
(21)【出願番号】P 2022143513
(22)【出願日】2022-09-09
【国等の委託研究の成果に係る記載事項】(出願人による申告)令和2年度、国立研究開発法人科学技術振興機構、研究成果展開事業 共創の場形成支援(共創の場形成支援プログラム)「量子ソフトウェア研究に関する国立大学法人大阪大学による研究開発」委託研究、産業技術力強化法第17条の適用を受ける特許出願
(71)【出願人】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(71)【出願人】
【識別番号】504176911
【氏名又は名称】国立大学法人大阪大学
(74)【代理人】
【識別番号】110002918
【氏名又は名称】弁理士法人扶桑国際特許事務所
(72)【発明者】
【氏名】藤▲崎▼ 淳
(72)【発明者】
【氏名】大島 弘敬
(72)【発明者】
【氏名】藤井 啓祐
(57)【要約】
【課題】Yエラーの検知確率を向上させる。
【解決手段】情報処理装置10は、エネルギー式4に示されるエネルギーをより低下させる第1のデータ量子ビットと第2のデータ量子ビットとの組合せを決定する。エネルギー式4には、第1~第3のエネルギー項4a,4b,4cが含まれる。第1のエネルギー項4aは、Zエラーが発生した第1のデータ量子ビットを特定するための項である。第2のエネルギー項4bは、Xエラーが発生した第2のデータ量子ビットを特定するための項である。第3のエネルギー項4cは、ZエラーとXエラーとが同時発生した第3のデータ量子ビットが多いほどエネルギーを低下させる項である。情報処理装置10は、第3のデータ量子ビットでYエラーが発生したと判断する。
【選択図】
図1
【特許請求の範囲】
【請求項1】
量子計算における論理量子ビットに含まれる複数のデータ量子ビットに関するZエラー検知用の複数の第1の補助量子ビットの状態を示す第1の状態データと、前記複数のデータ量子ビットに関するXエラー検知用の複数の第2の補助量子ビットの状態を示す第2の状態データとを取得し、
前記複数のデータ量子ビットのうちのZエラーが発生した第1のデータ量子ビットを前記第1の状態データに基づいて特定するための第1のエネルギー項と、前記複数のデータ量子ビットのうちのXエラーが発生した第2のデータ量子ビットを前記第2の状態データに基づいて特定するための第2のエネルギー項と、前記第1のデータ量子ビットと前記第2のデータ量子ビットとの両方に該当する第3のデータ量子ビットが多いほどエネルギーを低下させる第3のエネルギー項とを有するエネルギー式に基づいて、前記エネルギー式に示されるエネルギーをより低下させる前記第1のデータ量子ビットと前記第2のデータ量子ビットとの組合せを決定し、
前記第3のデータ量子ビットでYエラーが発生し、前記第3のデータ量子ビットに該当したもの以外の前記第1のデータ量子ビットでZエラーが発生し、前記第3のデータ量子ビットに該当したもの以外の前記第2のデータ量子ビットでXエラーが発生したと判断する、
処理をコンピュータに実行させるエラー検知プログラム。
【請求項2】
前記第3のエネルギー項には、前記複数のデータ量子ビットそれぞれに対応づけて、エネルギー低下量を制御する係数が含まれており、
前記第1のデータ量子ビットと前記第2のデータ量子ビットとの組合せを決定する処理では、前記複数のデータ量子ビットそれぞれに対応する前記係数の値を、対応するデータ量子ビットに隣接する第1の補助量子ビットと第2の補助量子ビットそれぞれの状態に基づいて算出する、
請求項1記載のエラー検知プログラム。
【請求項3】
前記第1の状態データは、前記複数の第1の補助量子ビットそれぞれの状態が初期状態から反転したか否かを示しており、
前記第2の状態データは、前記複数の第2の補助量子ビットそれぞれの状態が初期状態から反転したか否かを示しており、
前記第1のデータ量子ビットと前記第2のデータ量子ビットとの組合せを決定する処理では、一のデータ量子ビットに隣接する第1の補助量子ビットのうちの少なくとも1つの状態が初期状態から反転しており、かつ前記一のデータ量子ビットに隣接する第2の補助量子ビットのうちの少なくとも1つの状態が初期状態から反転している場合、その他の場合よりも前記一のデータ量子ビットに対応する前記係数の値を大きくする、
請求項1記載のエラー検知プログラム。
【請求項4】
前記第1のデータ量子ビットと前記第2のデータ量子ビットとの組合せを決定する処理では、前記複数のデータ量子ビットそれぞれの前記係数の値を示す係数データと前記第1の状態データと前記第2の状態データとをイジングマシンに送信して、前記イジングマシンに、前記エネルギー式に示されるエネルギーをより低下させる前記第1のデータ量子ビットと前記第2のデータ量子ビットとの組合せを求解させる、
請求項2記載のエラー検知プログラム。
【請求項5】
前記第1の状態データと前記第2の状態データとを取得する処理では、前記量子計算を実行している量子コンピュータから、前記第1の状態データと前記第2の状態データとを取得し、
Yエラー、Zエラー、およびXエラーそれぞれが発生したデータ量子ビットの判断結果に基づいて、前記量子コンピュータに対してエラー訂正を指示する、
処理をコンピュータにさらに実行させる請求項1記載のエラー検知プログラム。
【請求項6】
量子計算における論理量子ビットに含まれる複数のデータ量子ビットに関するZエラー検知用の複数の第1の補助量子ビットの状態を示す第1の状態データと、前記複数のデータ量子ビットに関するXエラー検知用の複数の第2の補助量子ビットの状態を示す第2の状態データとを取得し、
前記複数のデータ量子ビットのうちのZエラーが発生した第1のデータ量子ビットを前記第1の状態データに基づいて特定するための第1のエネルギー項と、前記複数のデータ量子ビットのうちのXエラーが発生した第2のデータ量子ビットを前記第2の状態データに基づいて特定するための第2のエネルギー項と、前記第1のデータ量子ビットと前記第2のデータ量子ビットとの両方に該当する第3のデータ量子ビットが多いほどエネルギーを低下させる第3のエネルギー項とを有するエネルギー式に基づいて、前記エネルギー式に示されるエネルギーをより低下させる前記第1のデータ量子ビットと前記第2のデータ量子ビットとの組合せを決定し、
前記第3のデータ量子ビットでYエラーが発生し、前記第3のデータ量子ビットに該当したもの以外の前記第1のデータ量子ビットでZエラーが発生し、前記第3のデータ量子ビットに該当したもの以外の前記第2のデータ量子ビットでXエラーが発生したと判断する、
処理をコンピュータが実行するエラー検知方法。
【請求項7】
量子計算における論理量子ビットに含まれる複数のデータ量子ビットに関するZエラー検知用の複数の第1の補助量子ビットの状態を示す第1の状態データと、前記複数のデータ量子ビットに関するXエラー検知用の複数の第2の補助量子ビットの状態を示す第2の状態データとを取得し、
前記複数のデータ量子ビットのうちのZエラーが発生した第1のデータ量子ビットを前記第1の状態データに基づいて特定するための第1のエネルギー項と、前記複数のデータ量子ビットのうちのXエラーが発生した第2のデータ量子ビットを前記第2の状態データに基づいて特定するための第2のエネルギー項と、前記第1のデータ量子ビットと前記第2のデータ量子ビットとの両方に該当する第3のデータ量子ビットが多いほどエネルギーを低下させる第3のエネルギー項とを有するエネルギー式に基づいて、前記エネルギー式に示されるエネルギーをより低下させる前記第1のデータ量子ビットと前記第2のデータ量子ビットとの組合せを決定し、
前記第3のデータ量子ビットでYエラーが発生し、前記第3のデータ量子ビットに該当したもの以外の前記第1のデータ量子ビットでZエラーが発生し、前記第3のデータ量子ビットに該当したもの以外の前記第2のデータ量子ビットでXエラーが発生したと判断する、
処理部、
を有する情報処理装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、エラー検知プログラム、エラー検知方法、および情報処理装置に関する。
【背景技術】
【0002】
量子コンピュータは、様々な計算に利用できる。例えば量子コンピュータを用いて、計算対象のモデルのエネルギーの最小値を求めることができる。量子コンピュータの計算は複数の量子ビットに対する初期化、ゲート操作、測定処理を行うことで実現される。量子コンピュータでは、このような量子ビットへの操作の過程で環境ノイズなどにより量子ビットにエラー(物理エラー)が発生する。そこで量子コンピュータでは、エラー量子ビットとエラー内容特定のため、従来型の計算機(古典コンピュータとも呼ばれる)と同様に量子ビットの冗長化が行われる。
【0003】
冗長化させた量子ビットを用いてエラー量子ビットとエラー内容を特定する手法の1つに表面符号がある。表面符号では、2次元格子状にデータ量子ビットと補助量子ビットとが交互に並べられる。格子状に配置された複数の量子ビット(データ量子ビットと補助量子ビット)のうちのデータ量子ビットの状態が1つの論理量子ビットに符号化される。補助量子ビットは、1列ごとにXエラー検知用とZエラー検知用のどちらかとして使用される。表面符号を行う場合、量子コンピュータは、最初に論理量子状態を適切に初期化し、エラー検知の際、1つの補助量子ビットと周囲4つのデータ量子ビットとの間のゲート操作を行い、補助量子ビットの測定を行う。量子コンピュータは、補助量子ビットの値に基づいてXエラー(ビット反転エラー)またはZエラー(位相反転エラー)を検知する。そして量子コンピュータは、エラーの種類を示す情報と、エラー個所であると特定したデータ量子ビットの位置情報を用いて、量子ビットへのエラー訂正処理のゲート操作を行う。
【0004】
量子ビットのエラー訂正に関する技術としては、例えばエラー訂正を実行している間に量子ゲート・パラメータの連続的な最適化を実施する量子計算システムが提案されている。また表面符号誤り訂正のためのキュービットグリッドにおける寄生相互作用の低減に関する技術も提案されている。さらに、構築が容易であり、エラー訂正オーバーヘッドを低減可能なシステムも提案されている。
【0005】
なお量子コンピュータによるエネルギー最小化に関連する技術としては、例えば相関したフェルミオンシステムの基底状態を決定するための量子コンピュータの相関したフェルミオン状態を準備する技術がある。また3以上の情報量子ビット間の結合相互作用の形成方法に関する技術もある。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開2021-106029号公報
【特許文献2】特表2020-530619号公報
【特許文献3】特表2019-531531号公報
【特許文献4】特表2021-507401号公報
【特許文献5】米国特許出願公開第2019/0122133号明細書
【発明の概要】
【発明が解決しようとする課題】
【0007】
表面符号ではXエラーとZエラーを補助量子ビットのビット反転として検知することができるが、量子コンピュータでは、Yエラー(パウリ演算子Yの誤作用によるエラー)も起こり得る。パウリ演算子Yはパウリ演算子X,Zを用いて「Y=iXZ」(iは虚数単位)と表すことができる。
【0008】
表面符号では、Yエラーを直接検知することができない。そのため表面符号では、XエラーとZエラーが同時に同じ量子ビットで起こった場合に、その量子ビットにおいてYエラーが発生したものと判断される。
【0009】
しかし、Yエラーが発生した量子ビットの周囲の別の量子ビットにおいて、XエラーまたはZエラーが発生すると、表面符号においてYエラーの発生個所を正しく特定できない場合がある。例えばZエラーとYエラーとの2つのエラーが隣接する量子ビットで同時に発生したとき、高い確率で3個所の量子ビットがエラー個所であると誤って特定されてしまうようなエラー発生パターンがある。エラー個所が誤って特定されると、量子コンピュータにおけるエラー訂正に失敗し、正しい計算結果を得ることができなくなる。
【0010】
なお、Yエラーの発生個所を正しく特定するのが困難であるという問題は、表面符号に限らず、スタビライザーから構成されるCSS(Calderbank-Shor-Steane code)符号全般において発生する問題である。
【0011】
1つの側面では、本件は、Yエラー発生個所を特定できる確率を向上させることを目的とする。
【課題を解決するための手段】
【0012】
1つの案では、以下の処理をコンピュータに実行させるエラー検知プログラムが提供される。
コンピュータは、量子計算における論理量子ビットに含まれる複数のデータ量子ビットに関するZエラー検知用の複数の第1の補助量子ビットの状態を示す第1の状態データと、複数のデータ量子ビットに関するXエラー検知用の複数の第2の補助量子ビットの状態を示す第2の状態データとを取得する。コンピュータは、複数のデータ量子ビットのうちのZエラーが発生した第1のデータ量子ビットを第1の状態データに基づいて特定するための第1のエネルギー項と、複数のデータ量子ビットのうちのXエラーが発生した第2のデータ量子ビットを第2の状態データに基づいて特定するための第2のエネルギー項と、第1のデータ量子ビットと第2のデータ量子ビットとの両方に該当する第3のデータ量子ビットが多いほどエネルギーを低下させる第3のエネルギー項とを有するエネルギー式に基づいて、エネルギー式に示されるエネルギーをより低下させる第1のデータ量子ビットと第2のデータ量子ビットとの組合せを決定する。そしてコンピュータは、第3のデータ量子ビットでYエラーが発生し、第3のデータ量子ビットに該当したもの以外の第1のデータ量子ビットでZエラーが発生し、第3のデータ量子ビットに該当したもの以外の第2のデータ量子ビットでXエラーが発生したと判断する。
【発明の効果】
【0013】
1態様によれば、Yエラー発生個所を特定できる確率を向上させることができる。
【図面の簡単な説明】
【0014】
【
図1】第1の実施の形態に係るエラー検知方法の一例を示す図である。
【
図3】古典コンピュータのハードウェアの一例を示す図である。
【
図6】量子ビットにおけるエラー発生状況の一例を示す図である。
【
図8】補助量子ビットを用いた測定の一例を示す図である。
【
図9】表面符号を行うための量子ビットの構成の一例を示す図である。
【
図10】Xエラー検知のゲート操作の一例を示す図である。
【
図11】Zエラー検知のゲート操作の一例を示す図である。
【
図14】イジングモデルを用いたエラー個所特定方法の一例を示す図である。
【
図15】エラー発生個所を一意に特定できない場合の一例を示す図である。
【
図16】誤訂正による論理エラーの一例を示す図である。
【
図17】Yエラーを含むエラー検知の一例を示す図である。
【
図18】Zエラー検知とXエラー検知とが可能なイジングモデルの一例を示す図である。
【
図20】Yエラーが検知できないことにより発生する論理エラーの一例を示す図である。
【
図21】Yエラーを正しく特定するエラー個所特定の一例を示す図である。
【
図22】係数J’
iの値の決め方の一例を示す図である。
【
図23】エラー検知を伴う量子計算を指示するための古典コンピュータの機能の一例を示す図である。
【
図24】量子計算の手順を示すシーケンス図である。
【
図25】量子エラー訂正処理の手順の一例を示すシーケンス図である。
【
図26】エラー個所特定処理の手順の一例を示すフローチャートである。
【
図27】データ量子ビットの周囲の補助量子ビットの配置の一例を示す図である。
【
図28】Yエラー特定率の計算結果を示す図である。
【
図29】論理エラー確率の計算結果を示す図である。
【
図30】第3の実施の形態のシステム構成の一例を示す図である。
【
図31】第3の実施の形態におけるエラー個所特定処理の手順を示すシーケンス図である。
【発明を実施するための形態】
【0015】
以下、本実施の形態について図面を参照して説明する。なお各実施の形態は、矛盾のない範囲で複数の実施の形態を組み合わせて実施することができる。
〔第1の実施の形態〕
第1の実施の形態は、量子計算の途中で発生したYエラーの発生個所を、表面符号によって高い確率で特定できるようにしたエラー検知方法である。
【0016】
図1は、第1の実施の形態に係るエラー検知方法の一例を示す図である。
図1には、第1の実施の形態に係るエラー検知方法を実施する情報処理装置10が示されている。情報処理装置10は、例えばエラー検知プログラムを実行することにより、エラー検知方法を実施することができる。
【0017】
情報処理装置10は、記憶部11と処理部12とを有する。記憶部11は、例えば情報処理装置10が有するメモリまたはストレージ装置である。処理部12は、例えば情報処理装置10が有するプロセッサまたは演算回路である。
【0018】
情報処理装置10は、例えば量子コンピュータ1に対して、所定の量子回路に基づく量子計算を指示する。量子コンピュータ1は、複数の物理量子ビットに対するゲート操作を行い、量子計算を実施する。その際、量子コンピュータ1は、量子回路で操作対象とする量子ビットの状態を、複数の物理量子ビットで構成される論理量子ビットで表現する。以下、論理量子ビットの状態の表現に用いられる物理量子ビットがデータ量子ビット5(
図1の実線の矩形すべて)である。
【0019】
また量子コンピュータ1は、物理量子ビットの一部を、論理量子ビットに含まれるデータ量子ビットを表面符号でエラーを検知するための補助量子ビットとして使用する。補助量子ビットは、Zエラー検知用の複数の第1の補助量子ビット6(
図1の一点鎖線の矩形すべて)とXエラー検知用の複数の第2の補助量子ビット7(
図1の破線の矩形すべて)とに分けられる。
【0020】
量子コンピュータ1は、情報処理装置10からの指示に従った量子計算の途中で、表面符号によるエラー検知用のゲート操作を行い、第1の補助量子ビット6と第2の補助量子ビット7の状態を測定する。そして量子コンピュータ1は、複数の第1の補助量子ビット6の状態を示す第1の状態データ2と、複数の第2の補助量子ビット7の状態を示す第2の状態データ3とを情報処理装置10に送信する。
【0021】
情報処理装置10は、第1の状態データ2と第2の状態データ3とに基づいて、エラー検知処理を行い、Zエラー、Xエラー、またはYエラーの発生個所を検知する。そのために、記憶部11には、エネルギー式4が格納されている。エネルギー式4は、表面符号におけるエラー発生個所の求解問題をイジングモデルに置き換えた場合におけるイジングモデルのエネルギーを表す式である。
【0022】
エネルギー式4は、第1のエネルギー項4a、第2のエネルギー項4b、第3のエネルギー項4cを含む。第1のエネルギー項4aは、複数のデータ量子ビット5のうちのZエラーが発生した第1のデータ量子ビットを第1の状態データ2に基づいて特定するための項である。第2のエネルギー項4bは、複数のデータ量子ビット5のうちのXエラーが発生した第2のデータ量子ビットを第2の状態データ3に基づいて特定するための項である。第3のエネルギー項4cは、第1のデータ量子ビットと第2のデータ量子ビットとの両方に該当した第3のデータ量子ビットが多いほどエネルギーを低下させる項である。
【0023】
なお、第3のエネルギー項4cは、例えばいずれのエラーも発生していないデータ量子ビットが多いほどエネルギーを低下させる作用も有する。さらに第3のエネルギー項4cは、例えばZエラーまたはXエラーのみが発生しているデータ量子ビットが多いほどエネルギーを増加させる作用も有する。
【0024】
情報処理装置10の処理部12は、量子コンピュータ1から第1の状態データ2と第2の状態データ3とを取得する。次に処理部12は、第1の状態データと第2の状態データ3とに基づいて、エネルギー式4に示されるエネルギーをより低下させる第1のデータ量子ビットと第2のデータ量子ビットとの組合せを決定する。例えば処理部12は、イジングモデルで示される組合せ最適化問題を解くことにより、エネルギーが最小となる第1のデータ量子ビットと第2のデータ量子ビットとの組合せを求める。
【0025】
そして処理部12は、エネルギーが最小となる第1のデータ量子ビットと第2のデータ量子ビットとの組合せに基づいて、エラーの発生個所とエラーの内容を判断する。例えば処理部12は、第1のデータ量子ビットに該当するが第2のデータ量子ビットに該当しないデータ量子ビットでZエラーが発生したと判断する。また処理部12は、第2のデータ量子ビットに該当するが第1のデータ量子ビットに該当しないデータ量子ビットでXエラーが発生したと判断する。さらに処理部12は、第1のデータ量子ビットと第2のデータ量子ビットとの両方に該当するデータ量子ビットでYエラーが発生したと判断する。
【0026】
処理部12は、検知したエラーの訂正を量子コンピュータ1に指示する。例えば処理部12は、Zエラーが発生したと判断したデータ量子ビットを指定して、そのデータ量子ビットのZエラーの訂正(Zゲートの操作)を指示する。また処理部12は、Xエラーが発生したと判断したデータ量子ビットを指定して、そのデータ量子ビットのXエラーの訂正(Xゲートの操作)を指示する。さらに処理部12は、Yエラーが発生したと判断したデータ量子ビットを指定して、そのデータ量子ビットのYエラーの訂正(Yゲートの操作)を指示する。
【0027】
このようにして、Yエラーを含めたエラー検知を行うことで、Yエラーを高確率で特定することができる。すなわちエネルギー式4に第3のエネルギー項4cが含まれているため、Yエラーが発生した場合の方が、XエラーとZエラーとが個別に発生した場合よりもエネルギーが低くなる。
【0028】
例えば複数の第1の補助量子ビット6の初期状態は「0」であるものとする(bv=+1)。同様に、複数の第2の補助量子ビット7の初期状態も「0」であるものとする(bf=+1)。第1の状態データ2では、複数の第1の補助量子ビット6のうち、2つの第1の補助量子ビット6a,6bの状態が反転(bv=-1)したことが示されている。第2の状態データ3では、複数の第2の補助量子ビット7のうち、2つの第2の補助量子ビット7a,7bの状態が反転(bf=-1)したことが示されている。
【0029】
このような補助量子ビットの状態を再現可能なデータ量子ビットのエラー発生パターンは、複数存在する。例えば、1つのデータ量子ビット5aでXエラーが発生し、2つのデータ量子ビット5c,5dでZエラーが発生した場合、補助量子ビットの状態は
図1に示す状態となる(このエラー検知パターンを第1の検知パターンとする)。また1つのデータ量子ビット5aでYエラーが発生し、1つのデータ量子ビット5bでZエラーが発生した場合にも、補助量子ビットの状態は
図1に示す状態となる(このエラー検知パターンを第2の検知パターンとする)。
【0030】
エラー検知処理では、Zエラーの発生個所とXエラーの発生個所とが判断され、両方のエラーが同一のデータ量子ビットで発生した場合、そのデータ量子ビットでYエラーが発生したと判断される。
【0031】
エネルギー式4の第1のエネルギー項4aは、反転した第1の補助量子ビット6a,6bの周囲のデータ量子ビットのZエラー数が奇数であればエネルギーを増加させ、Zエラーの発生数が少ないほどエネルギーを低下させる。
図1に示す第1のエラー検知パターンと第2のエラー検知パターンとでは、第1のエネルギー項4aの値は同じとなる。
【0032】
エネルギー式4の第2のエネルギー項4bは、反転した第2の補助量子ビット7a,7bの周囲のデータ量子ビットのXエラー数が奇数であればエネルギーを増加させ、Xエラーの発生数が少ないほどエネルギーを低下させる。
図1に示す第1のエラー検知パターンと第2のエラー検知パターンとでは、第2のエネルギー項4bの値も同じとなる。
【0033】
第1のエラー検知パターンでは、第1のデータ量子ビットと第2のデータ量子ビットとの両方に該当した第3のデータ量子ビットが存在しない。他方、第2のエラー検知パターンでは、データ量子ビット5aが第3のデータ量子ビットとなる。そのため、エネルギー式4の第3のエネルギー項4cは、第1のエラー検知パターンではエネルギーを低下させる作用はないが、第2のエラー検知パターンではエネルギーを低下させる。その結果、第1のエラー検知パターンよりも第2のエラー検知パターンの方が、エネルギーが低くなる。
【0034】
最終的に、エネルギー式4に示されるエネルギーをより低下させる第1のデータ量子ビットと第2のデータ量子ビットとの組合せとしては、第2のエラー検知パターンに決定される。そして、データ量子ビット5aでYエラーが発生し、データ量子ビット5bでZエラーが発生したと判断される。
【0035】
このようにしてYエラーを高確率で特定することができる。しかもYエラーの特定確率が向上することで、エラー発生個所を正しく特定できる可能性も向上する。例えばZエラー、Xエラー、Yエラーそれぞれの発生確率が10%程度で大きな差がない場合を想定する。このような場合、第1のエラー検知パターンのように3つのエラーが密集して発生する可能性よりも、第2のエラー検知パターンのように2つのエラーが発生する可能性の方が高い。各エラーの発生確率がさらに低くなれば、発生したエラーの総数が少ない第2のエラー検知パターンの方が正しい可能性が高くなる。
【0036】
なお、第3のエネルギー項4cには、複数のデータ量子ビット5それぞれに対応づけて、エネルギー低下量を制御する係数を設定することができる。その場合、処理部12は、複数のデータ量子ビット5それぞれに対応する係数の値を、対応するデータ量子ビットに隣接する第1の補助量子ビットと第2の補助量子ビットそれぞれの状態に基づいて算出する。
【0037】
例えば第1の状態データ2は、複数の第1の補助量子ビット6それぞれの状態が初期状態から反転したか否かを示しているものとする。また、第2の状態データ3は、複数の第2の補助量子ビット7それぞれの状態が初期状態から反転したか否かを示しているものとする。このとき処理部12は、次の2つの条件が満たされるか否かを判断する。1つ目の条件は、一のデータ量子ビットに隣接する第1の補助量子ビットのうちの少なくとも1つの状態が初期状態から反転していることである。2つ目の条件は、一のデータ量子ビットに隣接する第2の補助量子ビットのうちの少なくとも1つの状態が初期状態から反転していることである。処理部12は、2つの条件が共に満たされる場合、その他の場合よりも一のデータ量子ビットに対応する係数の値を大きくする。
【0038】
このように複数のデータ量子ビット5それぞれに対応する係数を決定することで、Yエラーが発生している可能性の高いデータ量子ビットの係数を大きくし、第3のエネルギー項4cによるエネルギーの減少量を大きくすることができる。その結果、Yエラーの発生個所を正しく特定できる可能性が向上する。
【0039】
なお、処理部12は、エネルギーをより低下させる第1のデータ量子ビットと第2のデータ量子ビットとの組合せを、専用のハードウェアを用いて決定することもできる。例えば処理部12は、複数のデータ量子ビット5それぞれの係数の値を示す係数データと第1の状態データ2と第2の状態データ3とをイジングマシンに送信する。そして処理部12は、イジングマシンに、エネルギー式4に示されるエネルギーをより低下させる第1のデータ量子ビットと第2のデータ量子ビットとの組合せを求解させる。イジングマシンは、組合せ最適化問題の解を高速に計算することができる。そのため、エネルギーをより低下させる第1のデータ量子ビットと第2のデータ量子ビットとの組合せをイジングマシンに計算させることで、高速なエラー検知が可能となる。
【0040】
〔第2の実施の形態〕
第2の実施の形態は、量子計算の過程でYエラーを含めたエラー訂正を行うことが可能なコンピュータシステムである。
【0041】
図2は、システム構成の一例を示す図である。例えば量子コンピュータ200と古典コンピュータ100とがネットワーク20を介して接続されている。量子コンピュータ200は、演算装置210と制御装置220とを有する。演算装置210は、冷凍機に格納されたQPU(Quantum Processing Unit)により量子計算を行う装置である。制御装置220は、与えられた量子回路に従って演算装置210に量子計算を指示する装置である。
【0042】
古典コンピュータ100は、量子コンピュータ200に量子回路に従った計算の実行を指示するコンピュータである。古典コンピュータ100は、いわゆるノイマン型コンピュータである。例えば古典コンピュータ100は、ユーザから指定された量子回路を量子コンピュータ200に送信し、量子コンピュータ200から計算結果を取得する。
【0043】
なお古典コンピュータ100は量子コンピュータ200と連係動作することで、表面符号によるエラー訂正を実現することができる。例えば制御装置220は、QPUの一部を補助量子ビットとして使用し、表面符号におけるエラー検知用の補助量子ビットの状態を定期的に計測する。制御装置220は、計測した補助量子ビットの状態を示す情報を、古典コンピュータ100に送信する。古典コンピュータ100は、補助量子ビットの状態に基づいて、エラーが発生した量子ビットを検知する。古典コンピュータ100は、エラーの発生を検知した場合、該当の量子ビットのエラー訂正を量子コンピュータ200に指示する。
【0044】
図3は、古典コンピュータのハードウェアの一例を示す図である。古典コンピュータ100は、プロセッサ101によって装置全体が制御されている。プロセッサ101には、バス109を介してメモリ102と複数の周辺機器が接続されている。プロセッサ101は、マルチプロセッサであってもよい。プロセッサ101は、例えばCPU(Central Processing Unit)、MPU(Micro Processing Unit)、またはDSP(Digital Signal Processor)である。プロセッサ101がプログラムを実行することで実現する機能の少なくとも一部を、ASIC(Application Specific Integrated Circuit)、PLD(Programmable Logic Device)などの電子回路で実現してもよい。PLDには、FPGA(field-programmable gate array)も含まれる。
【0045】
メモリ102は、古典コンピュータ100の主記憶装置として使用される。メモリ102には、プロセッサ101に実行させるOS(Operating System)のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、メモリ102には、プロセッサ101による処理に利用する各種データが格納される。メモリ102としては、例えばRAM(Random Access Memory)などの揮発性の半導体記憶装置が使用される。
【0046】
バス109に接続されている周辺機器としては、ストレージ装置103、GPU(Graphics Processing Unit)104、入力インタフェース105、光学ドライブ装置106、機器接続インタフェース107およびネットワークインタフェース108がある。
【0047】
ストレージ装置103は、内蔵した記録媒体に対して、電気的または磁気的にデータの書き込みおよび読み出しを行う。ストレージ装置103は、古典コンピュータ100の補助記憶装置として使用される。ストレージ装置103には、OSのプログラム、アプリケーションプログラム、および各種データが格納される。なお、ストレージ装置103としては、例えばHDD(Hard Disk Drive)やSSD(Solid State Drive)を使用することができる。
【0048】
GPU104は画像処理を行う演算装置であり、グラフィックコントローラとも呼ばれる。GPU104には、モニタ21が接続されている。GPU104は、プロセッサ101からの命令に従って、画像をモニタ21の画面に表示させる。モニタ21としては、有機EL(Electro Luminescence)を用いた表示装置や液晶表示装置などがある。
【0049】
入力インタフェース105には、キーボード22とマウス23とが接続されている。入力インタフェース105は、キーボード22やマウス23から送られてくる信号をプロセッサ101に送信する。なお、マウス23は、ポインティングデバイスの一例であり、他のポインティングデバイスを使用することもできる。他のポインティングデバイスとしては、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
【0050】
光学ドライブ装置106は、レーザ光などを利用して、光ディスク24に記録されたデータの読み取り、または光ディスク24へのデータの書き込みを行う。光ディスク24は、光の反射によって読み取り可能なようにデータが記録された可搬型の記録媒体である。光ディスク24には、DVD(Digital Versatile Disc)、DVD-RAM、CD-ROM(Compact Disc Read Only Memory)、CD-R(Recordable)/RW(ReWritable)などがある。
【0051】
機器接続インタフェース107は、古典コンピュータ100に周辺機器を接続するための通信インタフェースである。例えば機器接続インタフェース107には、メモリ装置25やメモリリーダライタ26を接続することができる。メモリ装置25は、機器接続インタフェース107との通信機能を搭載した記録媒体である。メモリリーダライタ26は、メモリカード27へのデータの書き込み、またはメモリカード27からのデータの読み出しを行う装置である。メモリカード27は、カード型の記録媒体である。
【0052】
ネットワークインタフェース108は、ネットワーク20に接続されている。ネットワークインタフェース108は、ネットワーク20を介して、他のコンピュータまたは通信機器との間でデータの送受信を行う。ネットワークインタフェース108は、例えばスイッチやルータなどの有線通信装置にケーブルで接続される有線通信インタフェースである。またネットワークインタフェース108は、基地局やアクセスポイントなどの無線通信装置に電波によって通信接続される無線通信インタフェースであってもよい。
【0053】
古典コンピュータ100は、以上のようなハードウェアによって、第2の実施の形態の処理機能を実現することができる。なお、第1の実施の形態に示した情報処理装置10も、
図3に示した古典コンピュータ100と同様のハードウェアにより実現することができる。
【0054】
古典コンピュータ100は、例えばコンピュータ読み取り可能な記録媒体に記録されたプログラムを実行することにより、第2の実施の形態の処理機能を実現する。古典コンピュータ100に実行させる処理内容を記述したプログラムは、様々な記録媒体に記録しておくことができる。例えば、古典コンピュータ100に実行させるプログラムをストレージ装置103に格納しておくことができる。プロセッサ101は、ストレージ装置103内のプログラムの少なくとも一部をメモリ102にロードし、プログラムを実行する。また古典コンピュータ100に実行させるプログラムを、光ディスク24、メモリ装置25、メモリカード27などの可搬型記録媒体に記録しておくこともできる。可搬型記録媒体に格納されたプログラムは、例えばプロセッサ101からの制御により、ストレージ装置103にインストールされた後、実行可能となる。またプロセッサ101が、可搬型記録媒体から直接プログラムを読み出して実行することもできる。
【0055】
以下、表面符号を用いたエラー訂正を伴う量子計算の説明の前に、
図4~
図16を参照し、量子コンピュータにおける表面符号によるエラー訂正と論理エラーの発生原因について説明する。
【0056】
図4は、量子ビットを説明する図である。量子ビットとは、従来のコンピュータでの情報量の最小単位「ビット」(古典ビット)に対応する量子情報の最小単位である。量子ビットは、「0」と「1」の量子力学的な重ね合わせ状態(量子状態)を取る。量子ビットの量子状態は、数学的には以下の式(1)に示すような2次元ベクトルで表され、|0>,|1>がそれぞれ古典ビットの「0」と「1」の状態に対応する。
【0057】
【0058】
αとβとは複素数である。αとβとを実数φ,θ、虚数単位iを用いて式(2)のように書き直すと、量子ビットは
図4に示すブロッホ球31で表現される。
【0059】
【0060】
古典ビットでは「0」か「1」の状態だけなのに対し、量子ビットはブロッホ球31面上の任意の状態を取ることができる。量子ゲート方式の量子コンピュータでは、量子ビットに対してゲート操作を行うことで、目的に沿った計算を進めることができる。
【0061】
ゲート操作は量子状態を変更する操作であり、数学的には量子状態のベクトルに行列演算子を作用させることとして表現される。ゲート操作としては、例えば量子ビットのビット反転を行うXゲートがある。Xゲートによる操作を数式で表すと以下の通りである。
【0062】
【0063】
また量子ビットの位相反転を行うZゲートによる操作を数式で表すと以下の通りである。
【0064】
【0065】
Xゲート操作、Zゲート操作それぞれに対応する行列演算子は、パウリ演算子として知られている。パウリ演算子としては、以下の3つの行列演算子がある。
【0066】
【0067】
パウリ演算子の積に関しては(XY=-YX,YZ=-ZY,ZX=-XZ)という性質がある。このような関係が満たされることは、反交換関係を満たすと呼ばれる。また、マイナス符号を伴わない関係(例えば恒等演算子Iとの関係XI=IX)を満たすことは、交換関係を満たすと呼ばれる。パウリ演算子同士は互いに依存関係があり、「Y=iXZ」という関係が成り立つ。
【0068】
ゲート操作に用いる演算子としては、他にHadamard演算子がある。Hadamard演算子は、|0>と|1>に重ね合わせ状態を作り出すゲート操作に用いられる。Hadamard演算子は、以下の式(6)で表される。
【0069】
【0070】
以上の行列演算子は、1量子ビットに作用する行列演算子である。2量子ビットに作用する演算子もある。
2量子ビットの状態は1量子ビット状態のテンソル積「|a>×|b>」(×はテンソル積であり、正しくは丸の中に×の記号)と表され、通常|ab>と書かれる。これは2×2の4次元ベクトルである。2量子ビットに作用する行列演算子としては、例えばCNOT演算子がある。
【0071】
CNOT演算子は、片方の量子ビット(コントロール量子ビット)が1のとき、もう片方の量子ビット(ターゲット量子ビット)をビット反転させる(|10>→|11>)。2量子ビットの状態が4次元ベクトルのため、対応する行列演算子は4×4次元となる。CNOT演算子は、以下の式で表される。
【0072】
【0073】
複数の量子ビットに対するゲート操作をまとめて表現するために量子回路が用いられる。量子回路では、量子ビットの状態遷移が線で表され、各ゲート操作が対応する記号で表される。
【0074】
図5は、量子回路の一例を示す図である。量子回路32の横線それぞれが量子ビットに対応する。横線の左側に量子ビットへの入力が示されている。各横線の上に、対応する量子ビットに対するゲート操作を示す記号が、時系列順に横方向(左から右)に並べられている。横線の右側のメータのような記号32a,32bは測定操作を示している。
【0075】
量子回路32に示されているゲート操作のうち、例えば矩形で囲まれたXの記号32cは、パウリ演算子「X」(Xゲート操作)を示している。矩形で囲まれたZの記号32dは、パウリ演算子「Z」(Zゲート操作)を示している。矩形で囲まれたHの記号32eは、Hadamard演算子「H」(Hadamardゲート操作)を示している。
【0076】
2量子ビットに対するゲート操作は、複数の横線を跨がって記載される。例えばCNOT演算子CXに対応するゲート操作を示す記号32f,32gは、中に+を有する白丸と黒丸とを線で接続したものである。黒丸はコントロール量子ビットの横線の上に配置され、中に+を有する白丸はターゲット量子ビットの横線上に配置される。
【0077】
例えば
図5に示す量子回路32は、状態|ψφ>の2つの量子ビットにゲート操作「C
X(2,1)Z
(1)C
X(1,2)H
(2)X
(1)」を行うことを示している。ゲート操作を示す式では右から左の順で作用させる行列演算子が記載される。行列演算子の右下の添字は作用させる量子ビットの番号である。
【0078】
量子コンピュータでは、量子回路32で示されるゲート操作が順番に実行される。その際、量子ビットにエラーが発生する可能性がある。正しい計算結果を得るには、エラーの発生を検出し、そのエラーを訂正できることが重要となる。
【0079】
図6は、量子ビットにおけるエラー発生状況の一例を示す図である。量子ビット33はさまざまなノイズの影響を受ける。ノイズの種類としては、環境ノイズ、量子ビット操作時のノイズ、他の量子ビットからの干渉などがある。量子ビット33はノイズの影響で状態が意図せずに変化する可能性がある。このような意図しない状態の変化が量子ビットのエラーである。量子ビットに発生するエラーのうち、直接エラー検知が可能なエラーとして以下の2種類に分類される。
・ビット反転エラー(Xエラー):|0>→|1>、|1>→|0>
・位相反転エラー(Zエラー):|+>→|->、|->→|+>
ビット反転エラーは、数学的には量子状態にパウリ演算子Xを作用させることと同じである。同様に位相反転エラーは、量子状態にパウリ演算子Zを作用させることと同じである。
【0080】
すなわち、量子ビットのエラーはエラーと同じパウリ演算子(X,Z)を作用させることで訂正が可能である。このような操作を量子エラー訂正という。例えばXエラーが発生した量子ビットに対するパウリ演算子Xによる訂正を行う場合を想定する。Xエラーは以下の式(8)で表され、訂正のゲート操作は式(9)で表される。
【0081】
【0082】
【0083】
エラー発生と訂正とにより、量子状態は「|0>→|1>→|0>」のように変化する。このようなエラー訂正を行うには、エラーが発生した量子ビット(エラー量子ビット)とエラーの内容(ビット反転(Xエラー)なのか位相反転(Zエラー)なのか)を特定することが求められる。そこでエラー量子ビットの特定とエラー内容特定のため、量子ビットの冗長化が行われる。
【0084】
図7は、量子ビットの冗長化の一例を示す図である。
図7には、8量子ビットを用いた冗長化の例が示されている。量子ビットを冗長化した場合、1つの量子ビット34で表されていた量子状態|ψ>が、論理量子ビット35による論理量子状態|ψ>
Lで表される。論理量子ビット35は、複数の量子ビット35a~35hで構成される。
【0085】
ここで、論理量子ビット35を構成する1つの量子ビット35hにエラーが発生したものとする。この場合、エラー量子ビットとエラー内容との特定処理により、エラー量子ビットとエラー内容が特定される。
【0086】
量子ビット35hがエラー量子ビットであると正しく特定され、エラー内容も正しく特定された場合、量子ビット35hにエラー訂正のゲート操作が行われる。エラー訂正により、論理量子ビット35の状態が、エラーが発生していない場合の状態に訂正される。
【0087】
図7の例では、エラー量子ビットを正しく特定できたものとしているが、エラー量子ビットの特定は簡単ではない。エラー量子ビットの特定には、論理量子ビット35を構成する量子ビット35a~35hの状態に関する情報が用いられるが、量子ビットを直接測定すると量子状態が壊れて計算を続けられなくなってしまう。そのため補助量子ビットが導入され、補助量子ビットの状態を測定することで論理量子ビット35を構成する量子ビット35a~35hの状態に関する情報が取得される。
【0088】
図8は、補助量子ビットを用いた測定の一例を示す図である。量子ビット36の状態を補助量子ビット37にコピーすることはできない。そこで量子ビット36と補助量子ビット37とに対して2量子ビット操作が行われる。2量子ビット操作により、量子ビット36の状態に応じて補助量子ビット37の状態を変化させる。補助量子ビット37の状態を測定することで、補助量子ビット37の初期状態からの変化を検知できる。補助量子ビット37が初期状態から変化したか否かにより、量子ビット36の状態を知ることができる。
【0089】
補助量子ビットを用いて得られる量子ビットの状態に基づいてエラー量子ビットを特定する手法として表面符号がある。表面符号は、量子エラー訂正における代表的な符号化(冗長化)の手法である。
【0090】
図9は、表面符号を行うための量子ビットの構成の一例を示す図である。
図9の例では、量子ビットが2次元の格子状に並べられている。データ量子ビット40a~40hと補助量子ビット41a~41d,42a~42dは行方向と列方向のそれぞれにおいて交互に並べられている。補助量子ビット41a~41d,42a~42dは、Xエラー検知用の補助量子ビット41a~41dとZエラー検知用の補助量子ビット42a~42dとに分けられる。そして1列ごとにXエラー検知用の補助量子ビット41a~41dとZエラー検知用の補助量子ビット42a~42dとが交互に配置されている。
【0091】
なお
図9に示す量子ビットは、表面符号によるエラー訂正に用いる量子ビットの一部である。表面符号によるエラー訂正を行う場合、1つの論理量子ビットのエラー訂正に用いる全量子ビットを含む2次元格子の1辺の量子ビット数(データ量子ビットと補助量子ビットの合計)は奇数であり、4つの角に配置されるのはデータ量子ビットである(
図13参照)。なお1つの論理量子ビットは、対応する2次元格子内に配置されたすべてのデータ量子ビットによって構成される。
【0092】
量子コンピュータ200は、最初に論理量子状態を適切に初期化し、エラー検知の際、1つの補助量子ビットと周囲4つのデータ量子ビットとの間にゲート操作(2量子ビット操作)を行い、補助量子ビットの測定を行う。古典コンピュータ100は、補助量子ビットの測定結果に基づいて、エラーの有無を検知できる。
【0093】
図10は、Xエラー検知のゲート操作の一例を示す図である。例えば補助量子ビット41dを用いて、補助量子ビット41dに隣接するデータ量子ビット40d,40e,40h,40fのいずれかにおけるエラーを検知する場合を想定する。ここでデータ量子ビット40dの識別子を「a」、データ量子ビット40eの識別子を「b」、データ量子ビット40hの識別子を「c」、データ量子ビット40fの識別子を「d」、補助量子ビット41dの識別子を「e」とする。
【0094】
これらの量子ビットに対して、量子回路43に示すようなゲート操作を行うことで、データ量子ビット40d,40e,40h,40fのXエラー検知が可能となる。量子回路43には、データ量子ビット40d,40e,40h,40fそれぞれをコントロール量子ビットとし、補助量子ビット41dをターゲット量子ビットとするCNOTゲート操作を行うことが示されている。このようなゲート操作により、データ量子ビット40d,40e,40h,40fのうちの1つでXエラーが発生していた場合、補助量子ビット41dが初期状態から変化する。
図10の例では、補助量子ビット41dの初期状態は|0>である。そのため、補助量子ビット41dのZ基底(量子状態が|0>の|1>のどちらかという視点)での測定により|1>の状態が検知された場合には、データ量子ビット40d,40e,40h,40fのいずれかでXエラーが発生していると判定できる。
【0095】
図11は、Zエラー検知のゲート操作の一例を示す図である。例えば補助量子ビット42aを用いて、補助量子ビット42aに隣接するデータ量子ビット40a,40c,40d,40eのいずれかにおけるエラーを検知する場合を想定する。ここでデータ量子ビット40aの識別子を「g」、データ量子ビット40cの識別子を「f」、補助量子ビット42aの識別子を「h」とする。
図10と同様に、データ量子ビット40dの識別子は「a」であり、データ量子ビット40eの識別子は「b」である。
【0096】
これらの量子ビットに対して、量子回路44に示すようなゲート操作を行うことで、データ量子ビット40a,40c,40d,40eのZエラー検知が可能となる。量子回路44には、まず補助量子ビット42aにHadamardゲート操作を行うことが示されている。その後、データ量子ビット40a,40c,40d,40eそれぞれをターゲット量子ビットとし、補助量子ビット42aをコントロール量子ビットとするCNOTゲート操作が行われる。さらに補助量子ビット42aにHadamardゲート操作が行われる。なお量子回路44に示される状況では、Zエラーが発生したデータ量子ビットと補助量子ビット42aとの間のCNOTゲート操作では、ターゲット量子ビットの状態に応じてコントロール量子ビットである補助量子ビット42aの状態が変化する。
【0097】
このようなゲート操作により、データ量子ビット40a,40c,40d,40eのうちの1つでZエラーが発生していた場合、補助量子ビット42aが初期状態から変化する。
図11の例では、補助量子ビット42aの初期状態は|0>である。そのため、補助量子ビット42aのZ基底での測定により|1>の状態が検知された場合には、データ量子ビット40a,40c,40d,40eのいずれかでZエラーが発生していると判定できる。
【0098】
次に、データ量子ビットの初期化について説明する。論理量子状態|ψ>
Lを任意に決めると、
図10または
図11に示したエラー検知のためのゲート操作によって、エラーがない場合にもデータ量子ビットと補助量子ビットの状態が変化してしまう。それを回避するため、論理量子状態|ψ>
Lは、スタビライザ演算子の固有状態(固有値は+1もしくは-1)になるように初期化される。スタビライザ演算子は、補助量子ビットの周囲4つのデータ量子ビットに作用するZ演算子またはX演算子の積である。
【0099】
例えば
図10に示すXエラー検知用のスタビライザ演算子は「Z
(i1)Z
(i2)Z
(i3)Z
(i4)|ψ>
L=±|ψ>
L」となる。iはXエラー検知用の補助量子ビットのインデックスである。iの右の数字は、補助量子ビットの周囲のデータ量子ビットを区別する数字である。例えば補助量子ビットを基準として、上のデータ量子ビットが「1」、左のデータ量子ビットが「2」、下のデータ量子ビットが「3」、右のデータ量子ビットが「4」となる。例えばZ
(i1)は、i番目の補助量子ビットの上のデータ量子ビットに作用するZ演算子を示している。
【0100】
また
図11に示すZエラー検知用のスタビライザ演算子は「X
(j1)X
(j2)X
(j3)X
(j4)|ψ>
L=±|ψ>
L」となる。jはZエラー検知用の補助量子ビットのインデックスである。jの右の数字は、補助量子ビットの周囲のデータ量子ビットを区別する数字である。
【0101】
このように論理量子状態|ψ>Lの初期化により、補助量子ビットを測定しても量子ビットの状態は影響を受けない。
次に表面符号によるエラー検知方法について説明する。表面符号において、1つのデータ量子ビットにXエラーが起こった場合、状態|ψ>Lはスタビライザ演算子の固有値が異なる固有状態|ψ’>Lに変化する。
【0102】
図12は、Xエラー検知の一例を示す図である。例えば|ψ>
Lが固有値+1の場合、i番目の補助量子ビットの周囲のデータ量子ビットの1つでXエラーが発生すると「|ψ’>
L=X
(i1)|ψ>
L」となる。
図12の例では、データ量子ビット40dにエラーが発生しているものとする。
【0103】
このときエラーが発生したデータ量子ビット40dに、補助量子ビット41d周囲のZスタビライザ演算子を作用させると「Z(i1)Z(i2)Z(i3)Z(i4)|ψ’>L」と表される。この式は「|ψ’>L=X(i1)|ψ>L」の関係を用いて以下のように変形できる。
【0104】
Z(i1)Z(i2)Z(i3)Z(i4)|ψ’>L=Z(i1)Z(i2)Z(i3)Z(i4)X(i1)|ψ>L=Z(i1)X(i1)Z(i2)Z(i3)Z(i4)|ψ>L
X演算子とZ演算子は反交換関係(ZX=-XZ)を満たすので、さらに以下のように変形できる。
【0105】
Z(i1)X(i1)Z(i2)Z(i3)Z(i4)|ψ>L=-X(i1)Z(i1)Z(i2)Z(i3)Z(i4)|ψ>L=-X(i1)|ψ>L=-|ψ’>L
「-|ψ’>L」は、固有値が「-1」に変化していることを示している。この固有値の変化は、量子回路43を用いることで、補助量子ビット41dのビット反転として検知できる。
【0106】
このように補助量子ビットを測定することで、その周囲のデータ量子ビットの1つにおけるエラーの発生が検知できることが説明できる。ただし、1つの補助量子ビットだけでは、その周囲のデータ量子ビットのどれでエラーが発生したのかが分からない。そこで複数の補助量子ビットのうちエラーを検出した2以上の補助量子ビットの位置関係に基づいて、エラーが発生したデータ量子ビットが特定される。
【0107】
図13は、エラー個所特定の一例を示す図である。
図13ではZエラーのエラー個所の特定例を示しているがXエラーに関しても同様のエラー個所を特定可能である。
図13では、補助量子ビットのうち、Xエラー検知用の補助量子ビットが省略されている(
図14~
図16においても同様)。
【0108】
ここで、データ量子ビット51においてZエラーが発生したものとする。エラー検知処理では、すべての補助量子ビットについて、
図11に示した量子回路44と同様のゲート操作によりエラー検知が行われ、状態が測定される。
図13では、測定対象の補助量子ビットと、その補助量子ビットによるエラー検知対象のデータ量子ビットとを円で囲んでいる。
【0109】
エラーが発生したデータ量子ビット51は、2つの補助量子ビット52,53それぞれと同じ円内にある。この場合、補助量子ビット52,53は、測定によって状態が反転したことが検知される。補助量子ビット52,53の状態が反転したことで、それらに挟まれた位置にあるデータ量子ビット51が、エラー発生個所として特定される。そこでデータ量子ビット51に対してエラー訂正の操作(Zゲート操作)が行われる。
【0110】
エラー個所の特定は、補助量子ビットの状態の測定結果に基づいて、古典コンピュータ100を用いて実行することができる。
図13に示したように、エラー個所が1個所だけであれば、古典コンピュータ100は、エラー個所を一意に特定可能である。しかし、エラー量子ビットの数が多い場合、古典コンピュータ100によるエラー個所の特定処理は非常に複雑になる。表面符号によるエラー個所の特定方法の1つとして、エラー個所特定問題を、イジングモデルのエネルギー最小化問題として解く方法がある。
【0111】
図14は、イジングモデルを用いたエラー個所特定方法の一例を示す図である。
図14の例では、イジングモデルによりZエラーを検知する場合を想定している。例えばエラー発生パターン60に示すように、2つのデータ量子ビット60a,60bにおいてZエラーが発生したものとする。この場合、Zエラー検知のためのゲート操作を行い補助量子ビットの状態を測定すると、データ量子ビット60a,60bの周囲のZエラー検知用の補助量子ビット60c~60fについて、反転した状態が検知される。
【0112】
補助量子ビットの測定結果を受信した古典コンピュータ100は、データ量子ビットをイジングモデルにおけるスピンに置き換える。また補助量子ビットを格子点として、補助量子ビットの測定データを、その格子点に設定する。例えばv番目(vは自然数)の補助量子ビットの状態が反転していなければ、その補助量子ビットに対応する格子点の測定データbvは「+1」となる。またv番目の補助量子ビットの状態が反転していれば、その補助量子ビットに対応する格子点の測定データbvは「-1」となる。
【0113】
このときZエラー検知用のイジングモデルのエネルギー(ハミルトニアン)は、以下の式(10)で表される。
【0114】
【0115】
ここで、Jとhは定数(正の実数)である。Nvは、格子点の数である。Evは、v番目の格子点に隣接するスピンσiのインデックスの集合である。Ndは、スピンの数である。スピンσiは、非反転(上向きの矢印)であれば、値は「+1」である。またスピンσiは、反転(下向き矢印)であれば、値は「-1」である。古典コンピュータ100は、式(10)で与えられるエネルギーが最小となるスピンの向きを決定する。古典コンピュータ100は、エネルギーが最小となったときに反転しているスピンに対応するデータ量子ビット60a,60bを、エラー個所として特定する。
【0116】
式(10)の右辺の第1項は、v番目の格子点の測定データbvが「+1」の場合、その周囲のスピンのうちの反転したスピン(σi=-1)の数が偶数であれば、全体のエネルギーを低下させるように作用する。また右辺の第1項は、v番目の格子点の測定データbvが「-1」の場合、その周囲のスピンのうちの反転したスピン(σi=-1)の数が奇数であれば、全体のエネルギーを増加させるように作用する。
【0117】
式(10)の右辺の第2項は、反転したスピンの数が少ないほど全体のエネルギーを低下させるように作用する。第2項があることで、例えばエラーが発生していないにも拘わらず、すべてのスピンが反転した状態でエネルギー最小値となることが抑止される。
【0118】
図14に示したエラー発生パターン60は、エラー個所を一意に特定できる場合の例である。しかし、エラー発生個所が近接する場合、エラーを一意に特定できない可能性がある。
【0119】
図15は、エラー発生個所を一意に特定できない場合の一例を示す図である。
図15に示すエラー発生パターン61では、2個所のデータ量子ビット61a,61bでエラーが発生している。これらのデータ量子ビット61a,61bは行方向に1行ずれており、列方向にも1行ずれている。この場合、エラー検知により、データ量子ビット61aの上に隣接する補助量子ビット61cの状態が反転するとともに、データ量子ビット61bの右に隣接する補助量子ビット61dの状態が反転する。
【0120】
補助量子ビット61c,61dが反転し、その他の補助量子ビットが反転しないようなエラーの発生パターンは、データ量子ビット61a,61bでエラーが発生した場合(正しいエラー検知例)以外にもある。例えばデータ量子ビット61e,61fでエラーが発生した場合である。そのためデータ量子ビット61e,61fでエラーが発生したと検知してしまう可能性がある(誤ったエラー検知例)。
【0121】
このように補助量子ビットの状態を再現可能なエラー発生パターンが複数存在する場合、補助量子ビットの測定データから、いずれのエラー発生パターンなのかを特定することはできない。そのため誤ったエラー検知例に示すようなエラー個所の特定が行われる可能性がある。また、誤ったエラー個所の特定に基づいてエラー訂正が行われると、補助量子ビットの測定では検知できないエラー(論理エラー)が引き起こされる場合がある。
【0122】
図16は、誤訂正による論理エラーの一例を示す図である。
図16に示すエラー発生パターン62は、一辺のデータ量子ビットが6個の系で、3個のエラーが1つおきに発生した場合である。例えば同じ行上のデータ量子ビット62a~62cでZエラーが発生している。この場合、同じ行上でデータ量子ビット62a~62cのいずれかに隣接する補助量子ビット62d~62hの状態が反転する。
【0123】
この場合は以下の補助量子ビットの測定データを再現できるエラー検知パターンは2通りある。1つは、データ量子ビット62a~62cを正しくエラー量子ビットとして検知するエラー検知パターンである。この場合、データ量子ビットとして検知されたデータ量子ビット62a~62cに対するエラー訂正操作を行うことで、発生したエラーは正しく訂正することができる。
【0124】
もう1つのエラー検知パターンは、エラーが発生したデータ量子ビット62a~62cとは別のデータ量子ビット62i~62kがエラー量子ビットとして検知するパターンである。データ量子ビット62i~62kがエラー量子ビットとして検知された場合、データ量子ビット62i~62kに対してエラー訂正操作が行われる。その結果、エラー量子ビットもしくは誤訂正によって反転したデータ量子ビットの並びが、一方の境界から反対側の境界までつながった状態になる。このような状態は論理エラーと呼ばれる。論理エラーが発生した状態では、論理量子状態|ψ>Lが変化している。そのため、このまま計算を進めても正しい結果が得られない。
【0125】
このようにZエラーだけでも、正しくエラー個所を検知できない場合がある。Xエラーについても同様である。そしてYエラーについても訂正することを想定すると、正しいエラー検知がさらに複雑となる。
【0126】
図17は、Yエラーを含むエラー検知の一例を示す図である。表面符号ではXエラーとZエラーを補助量子ビットのビット反転に基づいて検知するが、量子コンピュータ200では、Yエラー(数学的にはパウリ演算子Yの作用)も起こり得る。パウリ演算子Yはパウリ演算子X,ZとY=iXZ(iは虚数単位)という関係にある。表面符号では、Yエラー検知用のスタビライザ演算子が存在しない。そのため、Yエラーの検知は、Zエラーの検知とXエラーの検知とを組み合わせて行われることとなる。すなわちYエラーが発生したデータ量子ビットではXエラーとZエラーが同時に起こったとみなし、XエラーとZエラーが同時に発生したデータ量子ビットがYエラーの発生個所として特定される。
【0127】
図17に示すエラー発生パターン63では、データ量子ビット63aにYエラーが発生しており、データ量子ビット63bにZエラーが発生している。データ量子ビット63aとデータ量子ビット63bとの位置は、行方向に1行だけずれており、列方向にも1列だけずれている。この場合、Zエラー検知用のゲート操作により、データ量子ビット63bに隣接するZエラー検知用の補助量子ビット63cとデータ量子ビット63aに隣接するZエラー検知用の補助量子ビット63dとの状態が反転する。なお補助量子ビット63gは、エラーが発生したデータ量子ビット63a,63bの両方に隣接するため、状態は反転しない。またXエラー検知用のゲート操作により、データ量子ビット63aに隣接するXエラー検知用の補助量子ビット63e,63fの状態が反転する。
【0128】
ここで、古典コンピュータ100では、Zエラー検知用の補助量子ビット63c,63dの状態に基づいて、データ量子ビット63a,63bでのZエラーの発生を検知したものとする。また古典コンピュータ100では、Xエラー検知用の補助量子ビット63e,63fの状態に基づいて、データ量子ビット63aでのXエラーの発生を検知することができる。この場合、データ量子ビット63aにおいて、ZエラーとXエラーとの両方が検知されているため、古典コンピュータ100は、データ量子ビット63aで発生したエラーがYエラーであると判定することができる。
【0129】
このようにZエラー検知とXエラー検知との組合せにより、Yエラーを検知することが可能である。そしてYエラーを含めたエラー検知についても、イジングモデルを用いたエネルギー最小化問題として解くことができる。
【0130】
図18は、Zエラー検知とXエラー検知とが可能なイジングモデルの一例を示す図である。例えばZエラー検知用の補助量子ビットそれぞれに対応付けて、Zエラー検知用のスタビライザ演算子(v-th Zスタビライザ演算子71)が定義される。このスタビライザ演算子の固有値の測定データb
vは、+1もしくは-1である。またXエラー検知用の補助量子ビットそれぞれに対応付けて、Xエラー検知用のスタビライザ演算子(f-th Xスタビライザ演算子72)が定義される。このスタビライザ演算子の固有値の測定データb
fは、+1もしくは-1である。
【0131】
このようなスタビライザ演算子を用いたエラー検知を行うために、データ量子ビットごとに、Zエラー特定用のスピン変数σiとXエラー特定用のスピン変数σ’iとが用意される。この場合のイジングモデルのエネルギーは、例えば以下の式で与えることができる。
【0132】
【0133】
スピン変数σi,σ’iの初期状態は「+1」である。Nvは、Zエラー検知用の補助量子ビットに対応する格子点の数である。Evは、Zエラー検知用の補助量子ビットに対応するv番目の格子点に隣接するスピン変数σiのインデックスの集合である。Nfは、Xエラー検知用の補助量子ビットに対応する格子点の数である。Efは、Xエラー検知用の補助量子ビットに対応するf番目の格子点に隣接するスピン変数σ’iのインデックスの集合である。Ndは、スピン変数σiの数である(スピン変数σ’iの数も同数)。スピン変数σi,σ’iの初期状態は「+1」である。
【0134】
式(11)の右辺の第1項と第2項がZエラー個所特定用のエネルギー計算部分である。また式(11)の右辺の第3項と第4項がXエラー個所特定用のエネルギー計算部分である。このように式(11)では、Zエラー個所特定用のエネルギー計算部分とXエラー個所特定用のエネルギー計算部分とが分離されている。すなわち、Zエラーの個所とXエラーの個所とに関する相関を考慮されていない。そのため式(11)のようにXエラーとZエラーで別々に特定した際に、元のYエラーが検知できない場合がある。
【0135】
図19は、Yエラー検知失敗の一例を示す図である。例えば
図17の場合と同様のエラー発生パターン63を想定する。この場合、データ量子ビット63aにおいてXエラーが検知され、2つのデータ量子ビット63h,63iでZエラーが検知される可能性がある。この例では、本来は2個所で発生したエラーであるにも拘わらず、3個のデータ量子ビットをエラー発生個所として特定していることとなる。
【0136】
図19に示すような誤ったエラー検知を行った場合でも、
図17に示すように発生したエラーを正しく検知した場合と式(11)で示されるエネルギーは同じとなる。そのため、式(11)でエネルギー計算を行うと、正しくエラー検知ができる場合と誤ったエラー検知となる場合とは等確率で起こり得る。
【0137】
発生したYエラーが正しく特定できないことは、論理エラーの発生原因となる。
図20は、Yエラーが検知できないことにより発生する論理エラーの一例を示す図である。
図20のエラー発生パターン64では、Yエラーが発生したデータ量子ビット64aとZエラーが発生したデータ量子ビット64bとが同じ行に存在する。エラーが発生したデータ量子ビット64a,64bは、2列だけ離れている。この場合、Zエラー検知用の補助量子ビット64cとXエラー検知用の補助量子ビット64d,64eとの状態が反転する。
【0138】
このような場合において式(11)を用いてエラー個所を特定すると、データ量子ビット64aでのXエラー、データ量子ビット64f,64gでのZエラーを検知する可能性がある。このような検知結果に基づいてエラー訂正が行われると、Zエラーに関して論理エラーが発生する。すなわち、Yエラーを正しく特定できないことにより、論理エラーの発生確率が増加する。
【0139】
そこで古典コンピュータ100は、エネルギーの式(11)に対して、同じデータ量子ビットに対応するスピン変数σi,σ’iの向きが揃いやすくなるような項を追加した式(12)を用いてデータ個所が特定される。
【0140】
【0141】
J’iは、データ量子ビットごとに第5項の重みを示す係数(正の実数)である。式(12)の右辺の第1項~第4項は、式(11)と同じである。第5項が、同じデータ量子ビットに対応するスピン変数σi,σ’iの向きを揃えるための項である。第5項は、同じデータ量子ビットに対応するスピン変数σi,σ’iの値が同じであるほど、エネルギーを低下させるように作用する。
【0142】
図21は、Yエラーを正しく特定するエラー個所特定の一例を示す図である。例えば
図17、
図19と同様のエラー発生パターン63のエラーが発生したものとする。その場合において、例えばデータ量子ビット63aがXエラーの発生個所として特定されたものとする。この場合、データ量子ビット63aに対応するXエラー検知用のスピン変数σ’
iの値は「-1」となる。
【0143】
ここで、別のデータ量子ビット63iをZエラーの発生個所として特定した場合と、同じデータ量子ビット63aをZエラーの発生個所として特定した場合との式(12)のエネルギーを比較する。
【0144】
Zエラーの発生個所がデータ量子ビット63aであってもデータ量子ビット63iであっても、式(12)の右辺の第1項~第4項の値は同じである。そこで、相違する第5項の値の変化量をΔHとする。
【0145】
Zエラーの発生個所をデータ量子ビット63iとした場合は、データ量子ビット63aに対応するZエラー検知用のスピン変数σiの値は「+1」のままとなる。そのためデータ量子ビット63aに対応する2つのスピン変数σiσ’iそれぞれの値は相違する。すると右辺の第5項の値の変化量は「ΔH=-J’iσiσ’i=J’i>0」となる。
【0146】
Zエラーの発生個所をデータ量子ビット63aとした場合は、データ量子ビット63aに対応するZエラー検知用のスピン変数σiの値は「-1」となる。するとデータ量子ビット63aに対応する2つのスピン変数σi,σ’iそれぞれの値は一致する。そのため右辺の第5項の値の変化量は「ΔH=-J’iσiσ’i=-J’i<0」となる。
【0147】
このように、式(12)であれば、ZエラーとXエラーとの発生個所を同じデータ量子ビットに特定した方が、別のデータ量子ビットに特定する場合よりもエネルギーが低下する。その結果、Yエラーの検出確率が向上する。
【0148】
次に係数J’
iの値の決め方について説明する。例えば古典コンピュータ100は、Yエラーが孤立して起こっている場合に、より係数J’
iの値が大きくなるようにする。
図22は、係数J’
iの値の決め方の一例を示す図である。例えば古典コンピュータ100は、i番目のデータ量子ビットに隣接した補助量子ビットの測定の結果、Zエラー検知用の補助量子ビットとXエラー検知用の補助量子ビットとの両方が反転していれば、「J’
i=J’
a+J’
b」とする。また古典コンピュータ100は、i番目のデータ量子ビットに隣接した補助量子ビットの測定の結果、Zエラー検知用の補助量子ビットとXエラー検知用の補助量子ビットとの一方でしか反転していなければ、「J’
i=J’
a」とする。なおJ’
aとJ’
bとは、定数パラメータ(正の実数)である。
【0149】
図22に示したエラー発生パターン65では、2つのデータ量子ビット65a,65bでYエラーが発生し、1つのデータ量子ビット65cでZエラーが発生している。このエラー発生パターン65では、Xエラー検知用の補助量子ビット65d~65gとZエラー検知用の補助量子ビット65h~65jとの状態が反転している。
【0150】
Yエラーが発生したデータ量子ビット65aに隣接している補助量子ビットについては、Xエラー検知用の補助量子ビットとZエラー検知用の補助量子ビットとの両方が反転している。従ってデータ量子ビット65aがi番目のデータ量子ビットとなった場合の係数は「J’i=J’a+J’b」となる。
【0151】
Yエラーが発生したデータ量子ビット65bに隣接している補助量子ビットについては、Xエラー検知用の補助量子ビットは反転しているが、Zエラー検知用の補助量子ビットは反転していない。従ってデータ量子ビット65bがi番目のデータ量子ビットとなった場合の係数は「J’i=J’a」となる。
【0152】
このようにして、Yエラーが発生している可能性の高いデータ量子ビットについての係数J’iの値が、高く設定される。その結果、Yエラーを適切に検知することが可能となる。
【0153】
図23は、エラー検知を伴う量子計算を指示するための古典コンピュータの機能の一例を示す図である。古典コンピュータ100は、記憶部110、量子計算指示部120、エラー個所特定部130、およびエラー訂正指示部140を有する。
【0154】
記憶部110は、量子コンピュータ200に計算させる量子回路111を記憶する。
量子計算指示部120は、量子回路111の計算要求を量子コンピュータ200に指示する。そして量子計算指示部120は、量子回路の計算結果を量子コンピュータ200から取得する。また量子計算指示部120は、量子コンピュータ200から補助量子ビットの状態の測定結果を受信すると、受信した測定結果をエラー個所特定部130に転送する。
【0155】
エラー個所特定部130は、補助量子ビットの状態の測定結果に基づいて、Xエラー、Zエラー、またはYエラーが発生したデータ量子ビットを特定する。例えばエラー個所特定部130は、式(12)に示したイジングモデルのエネルギー式を最小化するスピン状態を求め、スピン状態が反転したスピンに対応するデータ量子ビットに基づいて、エラー発生個所を特定する。エラー個所特定部130は、エラーの発生個所の特定結果をエラー訂正指示部140に送信する。
【0156】
エラー訂正指示部140は、発生したエラーを訂正するゲート操作を量子コンピュータ200に指示する。例えばエラー訂正指示部140は、Xエラーが発生したデータ量子ビットに対するXゲートの操作を指示する。またエラー訂正指示部140は、Zエラーが発生したデータ量子ビットに対するZゲート操作を指示する。さらにエラー訂正指示部140は、Yエラーが発生したデータ量子ビットに対するYゲート操作を指示する。
【0157】
なお、
図23に示した各要素の機能は、例えば、その要素に対応するプログラムモジュールをコンピュータに実行させることで実現することができる。
量子コンピュータ200では、量子回路111に従った量子計算が実行される。量子コンピュータ200は、量子計算の途中で、定期的に、ZエラーおよびXエラー検知用のゲート操作を行い、補助量子ビットの状態を測定する。量子コンピュータ200は、補助量子ビットの測定結果を古典コンピュータ100に送信する。
【0158】
図24は、量子計算の手順を示すシーケンス図である。古典コンピュータ100は、量子回路111の計算要求を量子コンピュータ200の制御装置220に送信する(ステップS11)。制御装置220は、量子回路111に従って量子演算命令を演算装置210に送信する(ステップS12)。演算装置210は、量子演算命令に従って量子ビットに対するゲート操作を行うことで量子演算を実行する(ステップS13)。その後、所定のタイミングで、古典コンピュータ100と量子コンピュータ200とが連係して量子エラー訂正処理を実行する(ステップS14)。
【0159】
以後、制御装置220による量子演算命令(ステップS15)、演算装置210による量子演算(ステップS16)が行われ、前回のエラー訂正処理から所定の期間ΔTが経過すると、量子エラー訂正処理(ステップS17)が行われる。その後も同様に、制御装置220による量子演算命令(ステップS18)、演算装置210による量子演算(ステップS19)が行われ、前回のエラー訂正処理から所定の期間ΔTが経過すると、量子エラー訂正処理(ステップS20)が行われる。
【0160】
このような量子演算と量子エラー訂正処理が繰り返され、量子回路111の計算が最後まで達すると、演算装置210がデータ量子ビットの状態を測定する(ステップS21)。そして演算装置210は、データ量子ビットの測定結果を制御装置220に送信する(ステップS22)。制御装置220は、測定結果を示す情報を、量子演算結果として古典コンピュータ100に送信する(ステップS23)。
【0161】
このように、量子計算の途中で、定期的に量子エラー訂正処理が実行される。量子エラー訂正処理では、イジングモデルを用いてXエラー、Zエラー、Yエラーの発生個所が特定され、発生したエラーが訂正される。
【0162】
図25は、量子エラー訂正処理の手順の一例を示すシーケンス図である。量子コンピュータ200の制御装置220は、スタビライザ固有値の測定命令を、演算装置210に送信する(ステップS31)。演算装置210は、Xエラー検知およびZエラー検知用の2量子ビットゲート操作を行い、補助量子ビットの状態を測定する(ステップS32)。演算装置210は、測定した補助量子ビットの状態を示す測定データを制御装置220に送信する(ステップS33)。制御装置220は、演算装置210から取得した測定データを古典コンピュータ100に送信する(ステップS34)。
【0163】
古典コンピュータ100は、測定データに基づいてエラー個所を特定する(ステップS35)。古典コンピュータ100は、特定したエラー個所を示すエラー個所データを制御装置220に送信する(ステップS36)。
【0164】
制御装置220は、エラー個所データにおいてエラーが発生したとされているデータ量子ビットのエラー訂正命令を演算装置210に送信する(ステップS37)。演算装置210は、エラー訂正命令に従ってエラー訂正を行う(ステップS38)。
【0165】
次に、表面符号によるエラー個所特定処理について詳細に説明する。
図26は、エラー個所特定処理の手順の一例を示すフローチャートである。以下、
図26に示す処理をステップ番号に沿って説明する。
【0166】
[ステップS101]エラー個所特定部130は、スピン変数データσi,σ’i,(i=1,・・・,Ndata)の値を「+1」に初期化する。Ndataは、データ量子ビットの数である。
【0167】
[ステップS102]エラー個所特定部130は、補助量子ビットの測定データbv,bf(v=1,・・・,NZ,f=1,・・・,NX)の値、およびJ’aとJ’bとの値を設定する。NXは、Xエラー検知用の補助量子ビットの数である。NZは、Zエラー検知用の補助量子ビットの数である。
【0168】
[ステップS103]エラー個所特定部130は、iを1から1ずつカウントアップし、Ndataとなるまで、ステップS104~S107の処理を繰り返す。ステップS104~S107の処理は、データ量子ビットごとの係数J’iの決定処理である。i番目のデータ量子ビットの係数J’iは、そのデータ量子ビットの周囲の補助量子ビットの測定データに基づいて決定される。
【0169】
図27は、データ量子ビットの周囲の補助量子ビットの配置の一例を示す図である。例えば
図27に示すデータ量子ビット81がi番目のデータ量子ビットであるものとする。この場合、データ量子ビット81の左右に配置されている補助量子ビット82,83が、周囲のZエラー検知用の補助量子ビットである。またデータ量子ビット81の上下に配置されている補助量子ビット84,85が、周囲のXエラー検知用の補助量子ビットである。
【0170】
以下、
図26の説明に戻る。
[ステップS104]エラー個所特定部130は、i番目のデータ量子ビットの周囲のZエラー検知用の補助量子ビットの測定データb
vのうちのいずれかの値が「-1」か否かを判断する。エラー個所特定部130は、周囲の補助量子ビットのうちの少なくとも1つにおいて、測定データb
Vの値が「-1」の場合、処理をステップS105に進める。またエラー個所特定部130は、周囲の補助量子ビットのすべてについて、測定データb
vの値が「1」の場合、処理をステップS106に進める。
【0171】
[ステップS105]エラー個所特定部130は、i番目のデータ量子ビットの周囲のXエラー検知用の補助量子ビットの測定データbfのうちのいずれかの値が「-1」か否かを判断する。エラー個所特定部130は、周囲の補助量子ビットのうちの少なくとも1つにおいて、測定データbfの値が「-1」の場合、処理をステップS107に進める。またエラー個所特定部130は、周囲の補助量子ビットのすべてについて、測定データbfの値が「1」の場合、処理をステップS106に進める。
【0172】
[ステップS106]エラー個所特定部130は、係数データJ’iの値を「J’i=J’a」に決定する。その後、エラー個所特定部130は処理をステップS108に進める。
【0173】
[ステップS107]エラー個所特定部130は、係数データJ’iの値を「J’i=J’a+J’b」に決定する。
[ステップS108]エラー個所特定部130は、i=NdataまでステップS104~S107の処理が完了した場合、処理をステップS109に進める。
【0174】
ステップS103~S108の処理により、データ量子ビットごとの係数J’iの値を示す係数データが生成される。
[ステップS109]エラー個所特定部130は、式(12)で表されるイジングモデルのエネルギーを最小化するスピン変数σi,σ’iの値を求める。例えばエラー個所特定部130は、組合せ最適化問題の解探索手法を用いて、エネルギーを最小化するスピン変数σi,σ’iの値を求めることができる。
【0175】
[ステップS110]エラー個所特定部130は、値が「-1」となったスピン変数σi,σ’iに対応するデータ量子ビットを、エラー個所として特定する。またエラー個所特定部130は、エラー個所となったデータ量子ビットに発生したエラーの種別(Xエラー、Zエラー、またはYエラー)についても特定する。すなわち、ステップS109~S110の処理は、エラー種別ごとのエラー個所特定処理である。
【0176】
例えばエラー個所特定部130は、i番目のデータ量子ビットのスピン変数σ’iの値が「-1」であり、スピン変数σiの値が「+1」の場合、そのデータ量子ビットがZエラーの発生個所であると特定する。またエラー個所特定部130は、i番目のデータ量子ビットのスピン変数σiの値が「+1」であり、スピン変数σ’iの値が「-1」の場合、そのデータ量子ビットがXエラーの発生個所であると特定する。さらにエラー個所特定部130は、i番目のデータ量子ビットのスピン変数σiの値が「-1」であり、スピン変数σ’iの値も「-1」の場合、そのデータ量子ビットがYエラーの発生個所であると特定する。
【0177】
このようにしてZエラー、Xエラー、およびYエラーの発生個所を特定することができる。エラー個所は、式(12)に示したイジングモデルのエネルギーの最小化問題を求解することで特定できる。このエネルギー式には、i番目のデータ量子ビットのスピン変数σiとスピン変数σ’iとの値が同じであるほどエネルギーを低下させる項(右辺の第5項)が含まれている。その結果、Yエラーの特定率を向上させることができる。また発生したエラーを正しく修正できることにより、論理エラーの発生確率を低下させることができる。
【0178】
以下、Yエラー特定率の向上効果と論理エラー発生率の低減効果とについて詳細に説明する。エラー訂正において、ZエラーとXエラーとの位置関係を考慮に入れた場合(式(12)を適用)と考慮に入れない場合(式(11)を適用)とのYエラー特定率と論理エラー確率との計算結果を、
図28と
図29とに示す。
【0179】
なおYエラー特定率は、「特定したYエラーの個数/実際のYエラーの個数」である。実際のYエラーの個数を明確にするため、古典コンピュータ100を使ったシミュレーションでエラー発生および補助量子ビットの状態データ作成を行った結果を用いて、エラー個所特定処理を行うものとする。論理エラー確率は、「論理エラーが起こった回数/試行回数」である。
【0180】
以下の例は、1つの論理量子ビットのための2次元量子ビット配列の一辺のデータ量子ビット数「d=6」として、表面符号によるエラー訂正のシミュレーションを行うことで、上記評価値(Yエラー特定率と論理エラー確率)を算出したものである。エネルギーの最小化には、シミュレーテッドアニーリング(SA:Simulated Annealing)が用いられている。またJ’aとJ’bとの値を変えながら、J’aとJ’bとの値に応じた評価値を計算している。J’aとJ’bとの1つの組合せに対して、1000パターンの物理エラーを発生させ評価値を計算している。物理エラーの発生確率pは「p=10%」である。
【0181】
図28は、Yエラー特定率の計算結果を示す図である。Yエラー特定率表91では、J’
aの値が行のラベルに設定され、J’
bの値が列のラベルに設定されている。J’
aは、上の行ほど小さい値であり、下の行ほど大きい値である。J’
bは、左の列ほど小さい値であり、右の列ほど大きい値である。Yエラー特定率表91の各行と各列との交差する位置に、該当行のJ’
aの値と該当列のJ’
bの値とを設定してエラー訂正を行った場合のYエラー特定率が設定されている。なおYエラー特定率表91では、Yエラー特定率を百分率(パーセント)で示している。
【0182】
Yエラー特定率表91の第1行のJ’
aの値は「0.0」であり、第1列のJ’
bの値も「0.0」である。J’
aとJ’
bとが共に「0」の場合、エネルギーの式(12)における第5項の値が常に「0」となる。そのためYエラー特定率表91の第1行、第1列に設定されている値は、ZエラーとXエラーとの位置関係を考慮に入れない場合(式(11)を適用)のYエラー特定率に相当する。
図28の例では、ZエラーとXエラーとの位置関係を考慮に入れない場合のYエラー特定率は「19.4%」である。
【0183】
J’aとJ’bとのそれぞれについて値を増加させるほど、Yエラー特定率が向上している。例えば「J’a=4.0」と「J’b=2.0」の場合のYエラー特定率は「49.4%」である。すなわち「J’a=4.0」と「J’b=2.0」とすることで、ZエラーとXエラーとの位置関係を考慮に入れない場合よりもYエラー特定率が約2.5倍となっている。
【0184】
図29は、論理エラー確率の計算結果を示す図である。論理エラー確率表92では、J’
aの値が行のラベルに設定され、J’
bの値が列のラベルに設定されている。J’
aは、上の行ほど小さい値であり、下の行ほど大きい値である。J’
bは、左の列ほど小さい値であり、右の列ほど大きい値である。論理エラー確率表92の各行と各列との交差する位置に、該当行のJ’
aの値と該当列のJ’
bの値とを設定してエラー訂正を行った場合の論理エラーの発生確率が設定されている。なお論理エラー確率表92では、論理エラーの発生確率を百分率(パーセント)で示している。
【0185】
論理エラー確率表92の第1行のJ’
aの値は「0.0」であり、第1列のJ’
bの値も「0.0」である。
図29の例では、ZエラーとXエラーとの位置関係を考慮に入れない場合(論理エラー確率表92の第1行、第1列)の論理エラーの発生確率は「65.0%」である。
【0186】
J’aとJ’bとのそれぞれについて値を増加させるほど、論理エラーの発生確率が低下している。例えば「J’a=4.0」と「J’b=2.0」の場合の論理エラーの発生確率は「32.9%」である。すなわち「J’a=4.0」と「J’b=2.0」とすることで、ZエラーとXエラーとの位置関係を考慮に入れない場合よりも論理エラーの発生確率が約半分に減少している。
【0187】
なおJ’
bの値を大きくしすぎると、論理エラーの発生確率が増加する。
図29の例では、「J’
a=4.0」のとき「J’
b≧4.0」となると、J’
bの増加に伴って論理エラーの発生確率も増加している。
【0188】
〔第3の実施の形態〕
第3の実施の形態は、イジングモデルのエネルギー最小値の計算を、専用のハードウェアを用いて実行するものである。
【0189】
図30は、第3の実施の形態のシステム構成の一例を示す図である。第3の実施の形態では古典コンピュータ100にイジングマシン300が接続されている。イジングマシン300は、イジングモデルを用いた最適化問題の求解に特化した計算機である。イジングマシン300は、例えばASIC、PLD、GPU、その他の専用のプロセッサを用いてイジングモデルのエネルギー最小値を高速に求めることができる。
【0190】
第3の実施の形態における量子計算処理は、エラー個所特定処理のみが、第2の実施の形態と異なる。そこで第3の実施の形態におけるエラー個所特定処理について、詳細に説明する。
【0191】
図31は、第3の実施の形態におけるエラー個所特定処理の手順を示すシーケンス図である。ステップS201のスピン変数データの初期化処理は、
図26のステップS101の処理と同様である。スピン変数データの初期化後、古典コンピュータ100のエラー個所特定部130は、J’
aとJ’
bとの値を設定する(ステップS202)。次のステップS203の処理は、
図26のステップS103~S108の係数データ生成処理を纏めたものである。
【0192】
係数データ決定処理が終了すると、古典コンピュータ100は、補助量子ビットの状態を示す測定データと、データ量子ビットごとの係数J’iの値が示された係数データとをイジングマシン300に送信する(ステップS204)。イジングマシン300では、測定データと係数データとに基づいて、イジングモデルのエネルギーの最小値を探索し、最小値を得るスピン変数σi、σ’iの値が示されるスピン変数データを生成する(ステップS205)。イジングマシン300は、生成したスピン変数データを古典コンピュータ100に送信する(ステップS206)。
【0193】
古典コンピュータ100は、取得したスピン変数データに基づいて、値が「-1」となったスピン変数σ
i,σ’
iに対応するデータ量子ビットを、エラー個所として特定する(ステップS207)。この処理は、
図26のステップS110の処理と同様である。
【0194】
このようにイジングマシン300にスピン変数σi,σ’iの値を計算させることで、エラー個所特定処理に要する時間を短縮することができる。その結果、量子計算全体の処理時間も短縮される。
【0195】
〔その他の実施の形態〕
上記の実施の形態について表面符号の例を用いて説明したが、表面符号に限らず、XとZのスタビライザから構成されるCSS符号全般にそのまま適用可能である。
【0196】
以上、実施の形態を例示したが、実施の形態で示した各部の構成は同様の機能を有する他のものに置換することができる。また、他の任意の構成物や工程が付加されてもよい。さらに、前述した実施の形態のうちの任意の2以上の構成(特徴)を組み合わせたものであってもよい。
【符号の説明】
【0197】
1 量子コンピュータ
2 第1の状態データ
3 第2の状態データ
4 エネルギー式
4a 第1のエネルギー項
4b 第2のエネルギー項
4c 第3のエネルギー項
5,5a,5b,5c,5d データ量子ビット
6,6a,6b 第1の補助量子ビット
7,7a,7b 第2の補助量子ビット
10 情報処理装置
11 記憶部
12 処理部