(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024029679
(43)【公開日】2024-03-06
(54)【発明の名称】表示プログラム、表示方法および情報処理装置
(51)【国際特許分類】
G06N 10/80 20220101AFI20240228BHJP
G06F 8/34 20180101ALI20240228BHJP
【FI】
G06N10/80
G06F8/34
【審査請求】未請求
【請求項の数】6
【出願形態】OL
(21)【出願番号】P 2022132061
(22)【出願日】2022-08-22
(71)【出願人】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110002147
【氏名又は名称】弁理士法人酒井国際特許事務所
(72)【発明者】
【氏名】木村 悠介
【テーマコード(参考)】
5B376
【Fターム(参考)】
5B376BC08
5B376BC42
(57)【要約】
【課題】量子回路を見やすく表示すること。
【解決手段】情報処理装置は、量子回路における第1の複数のビットのうち第1の種別の第2の複数のビットの間にならない第2の種別のビットの位置を決定する。情報処理装置は、第2の複数のビットのうち、ゲート回路が関係を持たないビットと交差する数に基づいて、第2の複数のビットの順序を決定する。情報処理装置は、位置と順序とに基づいて、第1の複数のビットを並列に表示する。
【選択図】
図5
【特許請求の範囲】
【請求項1】
量子回路における第1の複数のビットのうち第1の種別の第2の複数のビットの間にならない第2の種別のビットの位置を決定し、
前記第2の複数のビットのうち、ゲート回路が関係を持たないビットと交差する数に基づいて、前記第2の複数のビットの順序を決定し、
前記位置と前記順序とに基づいて、前記第1の複数のビットを並列に表示する、
処理をコンピュータに実行させることを特徴とする表示プログラム。
【請求項2】
前記第2の複数のビットに設定された隣接するゲート回路の距離と、前記数とを基にして、煩雑度を算出する処理をコンピュータに更に実行させ、前記順序を決定する処理は、前記煩雑度を基にして、前記第2の複数のビットの順序を決定することを特徴とする請求項1に記載の表示プログラム。
【請求項3】
前記順序を決定する処理は、前記第2の複数のビットのうち、あるビットと前記あるビットよりも下のビットとの順序を入れ替えた場合の煩雑度、および、前記あるビットと前記あるビットよりも上のビットとの順序を入れ替えた場合の煩雑度を基にして、前記第2の複数のビットの順序を決定することを特徴とする請求項2に記載の表示プログラム。
【請求項4】
前記順序を決定する処理は、前記第2の複数のビットのうち、所定数のビットを選択し、選択した所定数のビットの順列に関する煩雑度をそれぞれ算出し、煩雑度が最小となる順序を、選択した所定数のビットの順序として決定することを特徴とする請求項2に記載の表示プログラム。
【請求項5】
量子回路における第1の複数のビットのうち第1の種別の第2の複数のビットの間にならない第2の種別のビットの位置を決定し、
前記第2の複数のビットのうち、ゲート回路が関係を持たないビットと交差する数に基づいて、前記第2の複数のビットの順序を決定し、
前記位置と前記順序とに基づいて、前記第1の複数のビットを並列に表示する、
処理をコンピュータが実行することを特徴とする表示方法。
【請求項6】
量子回路における第1の複数のビットのうち第1の種別の第2の複数のビットの間にならない第2の種別のビットの位置を決定し、
前記第2の複数のビットのうち、ゲート回路が関係を持たないビットと交差する数に基づいて、前記第2の複数のビットの順序を決定し、
前記位置と前記順序とに基づいて、前記第1の複数のビットを並列に表示する、
処理を実行する制御部を含む情報処理装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、量子回路を表示する表示プログラム、表示方法および情報処理装置に関する。
【背景技術】
【0002】
量子コンピュータの研究開発が活性化しており、初学者から熟練者まで、様々なレベルのユーザが、量子回路の編集を行っている。ここで、初学者であっても、量子回路の編集を容易に行うことを可能とするため、量子回路のGUI(Graphical User Interface)を表示する従来技術がある。
【0003】
図11は、従来の量子回路のGUIの一例を示す図である。
図11に示すように、GUI5には、量子回路に関する複数のパーツを配置する領域5aがある。ユーザは、領域5aに含まれるパーツを、量子ビットの領域5bにドラッグ&ドロップすることで、量子回路を作成することができる。また、ユーザは、OpenQASM記法で領域5cにソースコードを記述することで、領域5cのソースコードに対応する量子回路を、領域5bに表示することができる。
【0004】
なお、力学モデルのグラフを描画する場合に、ノード間にクーロン力(反発力)とバネを仮定し、グラフを分かりやすく描画する従来技術がある。クーロン力やバネ定数のパラメタを与えることで、様々なバリエーションのグラフを描画することができる。
【0005】
また、時系列軸を用いたグラフを分かりやすくする表示する従来技術もある。
図12は、従来技術のグラフの一例を示す図である。
図12のグラフ4の縦軸の領域4aには、人物名が配列され、横軸の領域4bには、時系列に相当する各年が設定される。ある人物が、論文を発表した年には、該当するセルに、丸印が設定される。また、各丸印にはエッジが設定される。従来技術では、なるべくエッジが短くなるように、領域4aの人物名の並び替えを行っている。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開2021-179573号公報
【特許文献2】特表2005-513680号公報
【特許文献3】米国特許出願公開第2021/0216898号明細書
【特許文献4】米国特許出願公開第2019/0102496号明細書
【発明の概要】
【発明が解決しようとする課題】
【0007】
たとえば、
図11で説明した従来技術を用いて、量子回路をGUIで作成したり閲覧したりする際に、量子ゲートが無関係の量子ビットに跨ることがある。このように、関係のない量子ビットに跨った量子ゲートが存在すると、量子回路が見にくくなるという問題がある。
【0008】
図13および
図14は、従来技術の問題点を説明するための図である。
図13の量子回路6には、量子ビットq1,q2,q3に、Hゲート6a、CYゲート6b,6c、SWAPゲート6d、CXゲート6eが配置されている。量子回路6において、量子ビットq2と、CYゲート6b,6c、CXゲート6eとは関係がないが、CYゲート6b,6c、CXゲート6eが、量子ビットq2を跨っており、量子回路6を見にくくしている。
【0009】
図14の説明に移行する。
図14に示す量子回路7は、
図13で説明した量子回路6と等価の回路である。量子回路7には、量子ビットq1,q2,q3に、Hゲート7a、CYゲート7b,7c、SWAPゲート7d、CXゲート7eが配置されている。CYゲート7b,7c、CXゲート7eは、関係のない量子ビットq2を跨っておらず、量子回路7は、量子回路6と比較して、見やすい回路といえる。
【0010】
ここで、上述した力学モデルや時系列軸を用いたグラフを分かりやすく表示するための従来技術は、量子回路以外のグラフを前提にした技術であり、量子回路特有の制約に対応できていない。このため、
図13に示した量子回路6を、
図14に示した量子回路7のような量子回路に変更することはできない。
【0011】
1つの側面では、本発明は、量子回路を見やすく表示することができる表示プログラム、表示方法および情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【0012】
第1の案では、表示プログラムは、コンピュータに次の処理を実行させる。コンピュータは、量子回路における第1の複数のビットのうち第1の種別の第2の複数のビットの間にならない第2の種別のビットの位置を決定する。コンピュータは、第2の複数のビットのうち、ゲート回路が関係を持たないビットと交差する数に基づいて、第2の複数のビットの順序を決定する。コンピュータは、位置と順序とに基づいて、第1の複数のビットを並列に表示する。
【発明の効果】
【0013】
量子回路を見やすく表示することができる。
【図面の簡単な説明】
【0014】
【
図1】
図1は、第1定義を説明するための図である。
【
図2】
図2は、第2定義を説明するための図である。
【
図3】
図3は、本実施例に係る情報処理装置の処理を説明するための図(1)である。
【
図4】
図4は、本実施例に係る情報処理装置の処理を説明するための図(2)である。
【
図5】
図5は、本実施例に係る情報処理装置の処理を説明するための図(3)である。
【
図6】
図6は、本実施例に係る情報処理装置の構成を示す機能ブロック図である。
【
図7】
図7は、本実施例に係る情報処理装置の処理手順を示すフローチャートである。
【
図8】
図8は、順序決定処理の処理手順を示すフローチャートである。
【
図9】
図9は、情報処理装置のその他の処理を説明するための図である。
【
図10】
図10は、実施例の情報処理装置と同様の機能を実現するコンピュータのハードウェア構成の一例を示す図である。
【
図11】
図11は、従来の量子回路のGUIの一例を示す図である。
【
図13】
図13は、従来技術の問題点を説明するための図(1)である。
【
図14】
図14は、従来技術の問題点を説明するための図(2)である。
【発明を実施するための形態】
【0015】
以下に、本願の開示する表示プログラム、表示方法および情報処理装置の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
【実施例0016】
本実施例に係る情報処理装置は、量子回路の表示画面を生成する場合に、量子回路の複雑度を基にして、量子回路の量子ビットの位置を入れ替えることで、量子回路を見やすくする。
【0017】
まず、本実施例に係る情報処理装置が利用する量子回路の複雑度について説明する。量子回路の複雑度Cは式(1)によって定義される。複雑度Cが大きいほど、量子回路が見にくくなる。本実施例では、量子ビットの位置を入れ替え、複雑度Cが0に近づくことを、見やすさの改善とする。
【0018】
複雑度C=C1+C2・・・(1)
【0019】
式(1)に含まれる「C1」の値は、「第1定義」によって決定される距離であり、各量子ゲートと量子ビットとの関係によって距離が決定される。式(1)に含まれる「C2」の値は、「第2定義」によって決定される距離であり、各量子ゲート間の距離によって決定される。以下において、第1定義、第2定義について、順に説明する。
【0020】
まず、第1定義について説明する。たとえば、第1定義は、以下の定義(1-1)、(1-2)、(1-3)、(1-4)である。
【0021】
(1-1)単一の量子ゲートの距離を「0」とする。
(1-2)複数の量子ビットに跨る箱型の量子ゲートの距離を「0」とする。
(1-3)量子ゲートの線分と跨る複数の量子ビットのうち、量子ゲートと無関係な量子ビットの数を距離とする。
(1-4)箱型の量子ゲートが跨る量子ビットを離そうとした場合、距離を「無限(max)」とする。
【0022】
図1は、第1定義を説明するための図である。まず、
図1の量子回路8を用いて説明する。量子回路8には、量子ビットA、B、C、Dに、CUゲート8a、SWAPゲート8b、CZゲート8c、CXゲート8dが配置されている。
【0023】
CUゲート8aに着目する。CUゲート8aは、Uゲートが、量子ビットC、Dに跨る箱型の量子ゲートであり、線分が量子ゲートBに設定されている。また、CUゲート8aの線分が、無関係な量子ビットを跨いでいない。このため、CUゲート8aに関する距離は「0」となる。
【0024】
SWAPゲート8bに着目する。SWAPゲート8bは、単一の各量子ゲートが、量子ビットA、Cに設定されている。また、SWAPゲート8bの線分が、無関係な量子ビットBを跨いでいる。このため、SWAPゲート8bに関する距離は「1」となる。
【0025】
CZゲート8cに着目する。CZゲート8cは、単一のZゲートが、量子ビットBに設定されており、CZゲート8cの線分が、量子ビットDに設定されている。また、CZゲート8cの線分が、無関係な量子ビットCを跨いでいる。このため、CZゲート8cに関する距離は「1」となる。
【0026】
CXゲート8dに着目する。CXゲート8dは、単一のXゲートが、量子ビットBに設定され、CXゲート8dの線分が量子ビットCに接続されている。また、CXゲート8dの線分が、無関係な量子ビットを跨いでいない。このため、CXゲート8dに関する距離は「0」となる。
【0027】
量子回路8に含まれる各量子ゲートに関する距離の和が、第1定義によって求められる量子回路8のC1の値となる。すなわち、量子回路8のC1の値は「2」となる。
【0028】
続いて、
図1の量子回路9を用いて説明する。量子回路9は、量子回路8の量子ビットA、Bの位置を入れ替えた回路であり、量子回路9と量子回路8とは等価な回路である。量子回路9には、量子ビットA、B、C、Dに、CUゲート9a、SWAPゲート9b、CZゲート9c、CXゲート9dが配置されている。
【0029】
CUゲート9aに着目する。CUゲート9aは、Uゲートが、量子ビットC、Dに跨る箱型の量子ゲートであり、線分が量子ゲートBに設定されている。また、CUゲート9aの線分が、無関係な量子ビットAを跨いでいる。このため、CUゲート9aに関する距離は「1」となる。
【0030】
SWAPゲート9bに着目する。SWAPゲート9bは、単一の各量子ゲートが、量子ビットA、Cに設定されている。また、SWAPゲート9bの線分が、無関係な量子ビットを跨いでいない。このため、SWAPゲート9bに関する距離は「0」となる。
【0031】
CZゲート9cに着目する。CZゲート9cは、単一のZゲートが、量子ビットBに設定されており、CZゲート9cの線分が、量子ビットDに設定されている。また、CZゲート9cの線分が、無関係な量子ビットA、Cを跨いでいる。このため、CZゲート9cに関する距離は「2」となる。
【0032】
CXゲート9dに着目する。CXゲート9dは、単一のXゲートが、量子ビットBに設定され、CXゲート9dの線分が量子ビットCに接続されている。また、CXゲート9dの線分が、無関係な量子ビットAを跨いでいる。このため、CXゲート9dに関する距離は「1」となる。
【0033】
量子回路9に含まれる各量子ゲートに関する距離の和が、第1定義によって求められる量子回路9のC1の値となる。すなわち、量子回路9のC1の値は「4」となる。
【0034】
次に、第2定義について説明する。第2定義は、第1量子ゲートと、第2量子ゲートとが隣接している場合、第1量子ゲートから第2量子ゲートまでの量子ビットの数を、各量子ゲート間の距離とする。
【0035】
図2は、第2定義を説明するための図である。まず、
図2の量子回路10を用いて説明する。量子回路10には、量子ビットA、B、C、D、E、Fに、CUゲート10a,10c、CXゲート10b、CZゲート10dが配置されている。
【0036】
CUゲート10aは、単一のUゲートが、量子ビットAに設定されており、CUゲート10aの線分が、量子ビットCに設定されている。CXゲート10bは、単一のXゲートが、量子ビットEに設定され、CXゲート10bの線分が量子ビットFに接続されている。CUゲート10cは、Uゲートが、量子ビットB、Cに跨る箱型の量子ゲートであり、線分が量子ゲートAに設定されている。CZゲート10dは、単一のZゲートが、量子ビットDに設定されており、CZゲート10dの線分が、量子ビットFに設定されている。
【0037】
隣接するCUゲート10aおよびCXゲート10bに着目すると、第2定義に基づく距離(量子ビットCからEまでの距離)は「2」となる。隣接するCXゲート10bおよびCUゲート10cに着目すると、第2定義に基づく距離(量子ビットCからEまでの距離)は「2」となる。隣接するCUゲート10cおよびCZゲート10dに着目すると、第2定義に基づく距離(量子ビットCからDまでの距離)は「1」となる。
【0038】
量子回路10に含まれる隣接する量子ゲートの距離の和が、第2定義によって求められる量子回路10のC2の値となる。すなわち、量子回路10のC2の値は「5」となる。
【0039】
続いて、
図2の量子回路11を用いて説明する。量子回路11には、量子ビットA、B、C、D、E、Fに、CUゲート11a,11c、CXゲート11b、CZゲート11dが配置されている。
【0040】
CUゲート11aは、単一のUゲートが、量子ビットAに設定されており、CUゲート10aの線分が、量子ビットCに設定されている。CXゲート11bは、単一のXゲートが、量子ビットEに設定され、CXゲート11bの線分が量子ビットFに接続されている。CUゲート11cは、Uゲートが、量子ビットB、Cに跨る箱型の量子ゲートであり、線分が量子ゲートAに設定されている。CZゲート11dは、単一のZゲートが、量子ビットDに設定されており、CZゲート11dの線分が、量子ビットFに設定されている。
【0041】
隣接するCUゲート11aおよびCXゲート11bに着目すると、第2定義に基づく距離(量子ビットCからEまでの距離)は「1」となる。隣接するCXゲート11bおよびCUゲート11cに着目すると、第2定義に基づく距離(量子ビットCからEまでの距離)は「1」となる。隣接するCUゲート11cおよびCZゲート11dに着目すると、第2定義に基づく距離(量子ビットCからFまでの距離)は「2」となる。
【0042】
量子回路11に含まれる隣接する量子ゲートの距離の和が、第2定義によって求められる量子回路11のC2の値となる。すなわち、量子回路11のC2の値は「4」となる。
【0043】
以上、本実施例に係る情報処理装置が利用する量子回路の煩雑度について説明した。次に、本実施例に係る情報処理装置の処理の一例について説明する。
【0044】
図3、
図4、
図5は、本実施例に係る情報処理装置の処理を説明するための図である。まず、
図3の量子回路15-1を用いて、説明を行う。量子回路15-1には、量子ビットA、B、C、D、古典ビットα、βに対し、CUゲート15a、SWAPゲート15b、CZゲート15c、CXゲート15d、測定ゲート15e,15fが設定される。
【0045】
CUゲート15aは、Uゲートが、量子ビットC、Dに跨る箱型の量子ゲートであり、線分が量子ゲートBに設定されている。SWAPゲート15bは、単一の各量子ゲートが、量子ビットA、Cに設定されている。CZゲート15cは、単一のZゲートが、量子ビットBに設定されており、CZゲート15cの線分が、量子ビットDに設定されている。CXゲート15dは、単一のXゲートが、量子ビットBに設定され、CXゲート15dの線分が量子ビットCに接続されている。測定ゲート15eは、量子ビットAに設定され、線分が、古典ビットαに接続されている。測定ゲート15fは、量子ビットCに設定され、線分が、古典ビットβに接続されている。
【0046】
情報処理装置は、量子回路15-1に含まれる古典ビットα、βを、最下部に移動させることで、量子回路15-2を生成する。また、情報処理装置は、量子ビットA、B、C、Dのうち、使用されていない量子ビットが存在する場合には、かかる使用されていない量子ビットを、最下部に移動される。ここで、使用されていない量子ビットは、いずれの量子ゲートも設定されず、かつ、いずれの量子ゲートの線分にも接続されていない量子ビットである。
図3の量子回路15-1では、使用されていない量子ビットの図示を省略する。
【0047】
情報処理装置は、量子回路15-2のうち、量子ビットA、B、C、Dと、量子ビットA、B、C、Dに関連する、CUゲート15a、SWAPゲート15b、CZゲート15c、CXゲート15dの部分となる量子回路15-3について、次の処理を行う。たとえば、情報処理装置は、量子回路の煩雑度が減少する量子ビットの並び替えを提示する。
【0048】
図4の説明に移行する。ここでは、説明の便宜上、
図3の量子回路15-3の代わりに、量子回路16を用いて、情報処理装置の処理を説明する。量子回路16には、量子ビットA、B、Cに対して、Hゲート16a、CXゲート16b、SWAPゲート16c、CZゲート16d、CXゲート16eが設定される。
【0049】
Hゲート16aは、単一のHゲートが、量子ビットAに設定されている。CXゲート16bは、単一のXゲートが、量子ビットCに設定され、CXゲート16bの線分が量子ビットAに接続されている。SWAPゲート16cは、単一の各量子ゲートが、量子ビットB、Cに設定されている。CZゲート16dは、単一のZゲートが、量子ビットAに設定されており、CZゲート16dの線分が、量子ビットCに設定されている。CXゲート16eは、単一のXゲートが、量子ビットAに設定され、CXゲート16eの線分が量子ビットCに接続されている。
【0050】
情報処理装置は、式(1)に基づいて、量子回路16の煩雑度Cを算出するために、第1定義に基づいて量子回路16の距離C1を算出し、第2定義に基づいて量子回路16の距離C2を算出する。
【0051】
情報処理装置は、第1定義に基づき、量子回路16の距離C1=3を算出する。これは、CXゲート16bが無関係な量子ビットBを跨ぎ、CZゲート16dが無関係な量子ビットBを跨ぎ、CXゲート16eが無関係な量子ビットBを跨ぐためである。
【0052】
情報処理装置は、第2定義に基づき、量子回路16の距離C2=0を算出する。これは、隣接する各量子ゲートの距離が0であるためである。
【0053】
上記の処理によって、情報処理装置は、式(1)に基づき、量子回路16の「煩雑度C=3」を算出する。
【0054】
続いて、情報処理装置は、量子回路16の量子ビットAと、量子ビットBとを入れ替えた場合の量子回路17の煩雑度Cを算出する。また、情報処理装置は、量子回路16の量子ビットBと、量子ビットCとを入れ替えた場合の量子回路18の煩雑度Cを算出する。情報処理装置は、煩雑度Cの算出結果を基にして、煩雑度がより小さくなる量子ビットの並び替えを提示する。
【0055】
情報処理装置は、量子ビットAと量子ビットBとを入れ替えた量子回路17の煩雑度Cを算出するために、第1定義に基づいて量子回路17の距離C1を算出し、第2定義に基づいて量子回路17の距離C2を算出する。
【0056】
情報処理装置は、第1定義に基づき、量子回路17の距離C1=1を算出する。これは、SWAPゲート16cが無関係な量子ビットAを跨ぐためである。
【0057】
情報処理装置は、第2定義に基づき、量子回路17の距離C2=0を算出する。これは、隣接する各量子ゲートの距離が0であるためである。
【0058】
上記の処理によって、情報処理装置は、式(1)に基づき、量子回路17の「煩雑度C=1」を算出する。
【0059】
情報処理装置は、量子ビットBと量子ビットCとを入れ替えた量子回路18の煩雑度Cを算出するために、第1定義に基づいて量子回路18の距離C1を算出し、第2定義に基づいて量子回路18の距離C2を算出する。
【0060】
情報処理装置は、第1定義に基づき、量子回路18の距離C1=0を算出する。これは、無関係な量子ビットを跨ぐ量子ゲートが存在ないためである。
【0061】
情報処理装置は、第2定義に基づき、量子回路18の距離C2=0を算出する。これは、隣接する各量子ゲートの距離が0であるためである。
【0062】
情報処理装置は、量子回路16,17,18のうち、煩雑度が最小となる量子回路18を特定し、量子回路16を、量子回路18に変更するための量子ビットの並び替えを提示する。量子回路16を、量子回路18に変更するための量子ビットの並び替えは、量子ビットBと、量子ビットCとの入れ替えである。
【0063】
図5の説明に移行する。情報処理装置は、メッセージ30を提示する。メッセージ30は、「量子ビットBとCを入れ替えませんか」というメッセージである。続いて、情報処理装置は、自動並び替えボタン31を表示する。情報処理装置は、自動並び替えボタン31を押下された場合に、量子回路16の量子ビットBと量子ビットCとを入れ替えることで、量子回路18に変更する。
【0064】
上記のように、本実施例に係る情報処理装置は、量子回路に含まれる複数の量子ビット、古典ビットのうち、使用されていない量子ビットの位置と、古典ビットの位置とを最下部に移動させる。また、情報処理装置は、量子ビットのうち、量子ゲートが関係を持たない量子ビットと交差する数に基づいて、量子ビットの順序を決定し、決定した順序によって、複数の量子ビットを並列に表示する。これによって、量子回路を見やすく表示することができる。
【0065】
次に、上述した処理を実行する情報処理装置の構成例について説明する。
図6は、本実施例に係る情報処理装置の構成を示す機能ブロック図である。
図6に示すように、この情報処理装置100は、通信部110、入力部120、表示部130、記憶部140、制御部150を有する。
【0066】
通信部110は、ネットワークを介して外部装置等とデータ通信を実行する。通信部110は、後述する量子回路データ141を、外部装置から受信してもよい。
【0067】
入力部120は、ユーザからの操作を受け付ける。たとえば、ユーザは、入力部120を操作して、量子回路の量子ビットに、量子ゲートを設定する処理を行う。
【0068】
表示部130は、制御部150から出力される情報を表示する。たとえば、表示部130は、量子回路の表示画面を表示する。
【0069】
記憶部140は、量子回路データ141を有する。
【0070】
量子回路データ141は、量子回路に関する各種の情報を有する。たとえば、量子回路データ141には、量子ビットの種別および量子ビットの位置と、古典ビットの種別および古典ビットの位置とが含まれる。また、量子回路データ141には、量子ゲートの種別、量子ゲートが設定される量子ビット、量子ゲートの線分が接続される量子ビットの情報が含まれる。
【0071】
量子ビットおよび古典ビットの位置は、量子回路に設定される上からの順番に対応する。たとえば、
図3の量子回路15-1を用いて説明すると、古典ビットαの位置は「1」、古典ビットβの位置は「6」となる。量子ビット「A」、「B」、「C」、「D」の位置は、それぞれ、「2」、「3」、「4」、「5」となる。
【0072】
制御部150は、取得部151、表示制御部152を有する。
【0073】
取得部151は、外部装置等から、量子回路データ141を取得し、取得した量子回路データ141を、記憶部140に登録する。なお、取得部151は、ユーザが入力部120を操作することで生成される量子回路の情報を、量子回路データ141として取得してもよい。
【0074】
表示制御部152は、量子回路データ141を基にして、量子ビット、古典ビット、量子ゲートを配置した量子回路の表示画面を生成し、生成した表示画面を、表示部130に表示させる。量子回路データ141を基にして生成される量子回路は、
図3で示した量子回路15-1等である。
【0075】
たとえば、表示制御部152は、生成した量子回路に対して、初期処理、複雑度を算出する処理、量子ビットの順序を決定する処理を行う。
【0076】
まず、表示制御部152が実行する初期処理について説明する。表示制御部152は、量子回路に含まれる古典ビットの位置を、最下部の位置に設定する。また、表示制御部152は、量子回路に含まれる量子ビットのうち、使用されていない量子ビットの位置を、最下部の位置に設定する。
【0077】
図3を用いて、表示制御部152の処理を説明する。表示制御部152は、量子回路15-1に含まれる古典ビットα、βの位置を、最下部に対応する位置に変更することで、量子回路15-2を生成する。たとえば、表示制御部152は、古典ビットαの位置を「1」から「5」に変更する。表示制御部152は、古典ビットβの位置が、既に最下層に対応する位置となっているため、古典ビットβの位置をそのままとする。
【0078】
表示制御部152は、量子ビットA、B、C、Dのうち、使用されていない量子ビットが存在する場合には、かかる使用されていない量子ビットを、最下部に移動させる。仮に、量子回路15-1の量子ビットAが、使用されていない量子ビットである場合には、表示制御部152は、量子ビットAの位置を「2」から「4」に変更する。
【0079】
以降の煩雑度を算出する処理、量子ビットの移動を提示する処理では、最下部に移動された古典ビット、使用されていない量子ビットを処理の対象外とする。
【0080】
なお、表示制御部152は、古典ビットおよび使用されていない量子ビットを最下部に移動させる場合に、「古典ビット、使用されていない量子ビットを移動しませんか?」等のメッセージと移動ボタンを、表示部130に表示させてもよい。表示制御部152は、移動ボタンが押下された場合に、量子回路の古典ビットの位置、使用されていない量子ビットの位置を、最下部に設定する。
【0081】
次に、表示制御部152が実行する煩雑度を計算する処理について説明する。以下の説明では、量子回路に含まれる位置「n」の量子ビットを、「量子ビットqn」と表記する。量子ビットqn-1は、量子ビットqnの前の量子ビット(上の量子ビット)を意味する。量子ビットqn+1は、量子ビットqnの後ろの量子ビット(下の量子ビット)を意味する。
【0082】
表示制御部152は、量子回路について、量子ビットqnの位置と、量子ビットqn-1の位置とを変更した際の複雑度の変化幅Xを算出する。変化幅Xは、量子ビットqnの位置と量子ビットqn-1の位置とを変更した後の量子回路の煩雑度から、変更前の量子回路の煩雑度を減算した値である。表示制御部152は、既に説明したように、式(1)を基にして、量子回路の煩雑度を算出する。
【0083】
変化幅Xが正の値の場合には複雑度が増加したことを意味し、変化幅Xが負の値の場合には複雑度が減少したことを意味する。表示制御部152は、第1定義の(1-4)により、変化幅XがMaxとなった場合には、量子ビットqnの位置と、量子ビットqn-2の位置とを変更して、変化幅Xを算出する。
【0084】
続いて、表示制御部152は、量子回路について、量子ビットqnの位置と、量子ビットqn+1の位置とを変更した際の複雑度の変化幅Yを算出する。変化幅Yは、量子ビットqnの位置と量子ビットqn+1の位置とを変更した後の量子回路の煩雑度から、変更前の量子回路の煩雑度を減算した値である。表示制御部152は、既に説明したように、式(1)を基にして、量子回路の煩雑度を算出する。
【0085】
変化幅Yが正の値の場合には複雑度が増加したことを意味し、変化幅Yが負の値の場合には複雑度が減少したことを意味する。表示制御部152は、第1定義の(1-4)により、変化幅YがMaxとなった場合には、量子ビットqnの位置と、量子ビットqn+2の位置とを変更して、変化幅Yを算出する。
【0086】
次に、表示制御部152が実行する量子ビットの順序を決定する処理について説明する。表示制御部152は、条件1を満たす場合には、量子回路の量子ビットqnの位置と、量子ビットqn+1の位置とを変更する旨の提示を行う。たとえば、表示制御部152は、「量子ビットqnと、量子ビットqn+1とを入れ替えませんか?」なるメッセージと、自動並び替えボタンとを、表示部130に表示させる。表示制御部152は、自動並び替えボタンが押下された場合には、量子回路の量子ビットqnと、量子ビットqn+1とを入れ替え、量子回路の複数の量子ビットの順序(上端からの順序)を決定する。
【0087】
変化幅X≧0、かつ、変化幅Y<0・・・(条件1)
【0088】
一方、表示制御部152は、条件2を満たす場合には、量子回路の量子ビットqnの位置と、量子ビットqn-1の位置とを変更する旨の提示を行う。たとえば、表示制御部152は、「量子ビットqnと、量子ビットqn-1とを入れ替えませんか?」なるメッセージと、自動並び替えボタンとを、表示部130に表示させる。表示制御部152は、自動並び替えボタンが押下された場合には、量子回路の量子ビットqnと、量子ビットqn-1とを入れ替え、量子回路の複数の量子ビットの順序(上端からの順序)を決定する。
【0089】
変化幅Y≧0、かつ、変化幅X<0・・・(条件2)
【0090】
なお、表示制御部152は、
図4で説明したように、変更前の量子回路16の煩雑度と、変更後の量子回路17,18の煩雑度とを比較し、煩雑度が最小となる量子回路18となるように、量子ビットの並び替えを提示してもよい。
【0091】
次に、本実施例に係る情報処理装置の処理手順の一例について説明する。
図7は、本実施例に係る情報処理装置の処理手順を示すフローチャートである。
図7に示すように、情報処理装置の表示制御部152は、量子回路データ141を基にして、量子回路の表示画面を、表示部130に表示させる(ステップS101)。
【0092】
表示制御部152は、量子回路の古典ビットの位置、使用されていない量子ビットの位置を、最下部に設定する(ステップS102)。表示制御部152は、量子回路から、量子ビットを選択する(ステップS103)。表示制御部152は、変更前の量子回路の煩雑度を算出する(ステップS104)。
【0093】
表示制御部152は、選択した量子ビットの位置と、選択した量子ビットの一つ上の量子ビットの位置とを入れ替えた場合の、量子回路の煩雑度を算出する(ステップS105)。表示制御部152は、変更幅Xを算出する(ステップS106)。
【0094】
表示制御部152は、選択した量子ビットの位置と、選択した量子ビットの一つ下の量子ビットの位置とを入れ替えた場合の、量子回路の煩雑度を算出する(ステップS107)。表示制御部152は、変更幅Yを算出する(ステップS108)。
【0095】
表示制御部152は、順序決定処理を実行する(ステップS109)。表示制御部152は、決定された順序を基にして量子ビットを並列に配置した量子回路を表示部130に表示させる(ステップS110)。
【0096】
表示制御部152は、別の量子ビットで再試行する場合には(ステップS111,Yes)、ステップS103に移行する。一方、表示制御部152は、別の量子ビットで再試行しない場合には(ステップS111,No)、処理を終了する。
【0097】
次に、
図7のステップS109で説明した順序決定処理の処理手順について説明する。
図8は、順序決定処理の処理手順を示すフローチャートである。
図8に示すように、情報処理装置100の表示制御部152は、条件1を満たすか否かを判定する(ステップS201)。表示制御部152は、条件1を満たさない場合には(ステップS201,No)、ステップS205に移行する。
【0098】
一方、表示制御部152は、条件1を満たす場合には(ステップS201,Yes)、選択された量子ビットと、一つ下の量子ビットを入れ替える旨のメッセージとボタンとを表示部130に表示させる(ステップS202)。
【0099】
表示制御部152は、ボタンが押下されない場合には(ステップS203,No)、順序決定処理を終了する。
【0100】
一方、表示制御部152は、ボタンが押下された場合には(ステップS203,Yes)、選択された量子ビットの位置と、一つ下の量子ビットの位置とを入れ替え(順序を変更する)(ステップS204)、順序決定処理を終了する。
【0101】
ステップS205の処理の説明に移行する。表示制御部152は、条件2を満たすか否かを判定する(ステップS205)。表示制御部152は、条件2を満たさない場合には(ステップS205,No)、順序決定処理を終了する。
【0102】
一方、表示制御部152は、条件2を満たす場合には(ステップS205,Yes)、選択された量子ビットと、一つ上の量子ビットを入れ替える旨のメッセージとボタンとを表示部130に表示させる(ステップS206)。
【0103】
表示制御部152は、ボタンが押下されない場合には(ステップS207,No)、順序決定処理を終了する。
【0104】
一方、表示制御部152は、ボタンが押下された場合には(ステップS207,Yes)、選択された量子ビットの位置と、一つ上の量子ビットの位置とを入れ替え(順序を変更する)(ステップS208)、順序決定処理を終了する。
【0105】
次に、本実施例に係る情報処理装置100の効果について説明する。情報処理装置100は、量子回路に含まれる複数の量子ビット、古典ビットのうち、使用されていない量子ビットの位置と、古典ビットの位置とを最下部に移動させる。また、情報処理装置100は、量子ビットのうち、量子ゲートが関係を持たない量子ビットと交差する数に基づいて、量子ビットの順序を決定し、決定した順序によって、複数の量子ビットを並列に表示する。これによって、量子回路を見やすく表示することができる。
【0106】
情報処理装置100は、量子ビットのうち、量子ゲートが関係を持たない量子ビットと交差する数、および、隣接する量子ゲートの距離に基づく煩雑度を算出し、煩雑度が0に近づくように、量子回路の量子ビットの順序を変更する。これによって、効率的に、見やすい量子回路を生成することができる。
【0107】
情報処理装置100は、量子回路の量子ビットqnの位置と、量子ビットqn-1の位置とを変更した際の複雑度の変化幅Xを算出する。また、情報処理装置100は、量子回路の量子ビットqnの位置と、量子ビットqn+1の位置とを変更した際の複雑度の変化幅Yを算出する。情報処理装置100は、変化幅X、Yと、条件1、2を基にして、量子回路の入れ替えの対象となる量子ビットを特定する。これによって、煩雑度のより小さい量子ビットの並び順となる量子回路を生成することができる。
【0108】
なお、上記の説明では、情報処理装置100は、量子回路の量子ビットの順番を入れ替える場合、メッセージとボタンとを表示し、ボタンがユーザによって押下された場合に、量子ビットを入れ替えていたが、これに限定されるものではない。たとえば、情報処理装置100は、メッセージを表示することなく、自動で、量子ビットの順序を入れ替えてもよい。量子ビットの入れ替えについて、ユーザに確認するか、自動で行うかは、事前に設定される。
【0109】
次に、情報処理装置100のその他の処理について説明する。たとえば、情報処理装置100は、量子回路の複数の量子ビットのうち、着目する所定数の量子ビットを選択する。情報処理装置100は、着目する所定数mの量子ビットに関して煩雑度が最小となる並び順を判定する。情報処理装置100は、着目する量子ビットを変更しながら、上記の処理を繰り返し実行することで、見やすい量子回路を生成する。
【0110】
図9は、情報処理装置のその他の処理を説明するための図である。
図9では、量子回路20-1を用いて説明を行う。情報処理装置100が一度に選択する量子ビットの数(所定数m)を「3」として説明を行う。
【0111】
量子回路20-1には、量子ビットA、B、C、D、E、Fに、CUゲート20a,20b,20c,20d,20eが配置されている。CUゲート20aが無関係な量子ビットCを跨ぎ、CUゲート20bが無関係な量子ビットB、Cを跨ぎ、CUゲート20cが無関係な量子ビットBを跨ぎ、CUゲート20dが無関係な量子ビットD、Eを跨ぐ。また、隣接するCUゲートの距離は0である。このため、式(1)に基づく、量子回路20-1の煩雑度Cは「6」である。
【0112】
CUゲート20aは、単一のUゲートが量子ビットBに設定され、CUゲート20aの線分が、量子ビットDに接続されている。CUゲート20bは、単一のUゲートが量子ビットDに設定され、CUゲート20bの線分が、量子ビットAに接続されている。
【0113】
CUゲート20cは、単一のUゲートが量子ビットAに設定され、CUゲート20cの線分が、量子ビットCに接続されている。CUゲート20dは、単一のUゲートが量子ビットCに設定され、CUゲート20dの線分が、量子ビットFに接続されている。CUゲート20eは、単一のUゲートが量子ビットFに設定され、CUゲート20eの線分が、量子ビットEに接続されている。
【0114】
情報処理装置100の表示制御部152は、量子回路20-1の量子ビットA~Fから、着目する所定数「3」の量子ビットをランダムに選択する。ここでは、表示制御部152が、着目する量子ビットとして、量子ビットA、B、Dを選択したものとして説明を行う。
【0115】
表示制御部152は、着目する量子ビットA、B、Dを先頭に移動させ、残りの量子ビットC~Fを下に移動させる。表示制御部152は、量子ビットA、B、Dと、量子ビットA、B、Dに関連するCUゲート20a,20bを基にして、量子ビットA、B、Dに関する順序のうち、煩雑度が最小となる順序を特定する。量子ビットA、B、Dの順序は、3!(6通り)存在する。なお、表示制御部152は、着目する量子ビットAと、着目しない量子ビットCとに関連するCUゲート20c、他のCUゲート20d,20eを除外して、煩雑度を算出する。
【0116】
表示制御部152は、着目する量子ビットの順序が「A、B、D」となる場合の煩雑度、順序が「A、D、B」となる場合の煩雑度、順序が「B、A、D」となる場合の煩雑度、順序が「B、D、A」となる場合の煩雑度を算出する。表示制御部152は、着目する量子ビットの順序が「D、A、B」となる場合の煩雑度、「D、B、A」となる場合の煩雑度を算出する。
【0117】
上記の複数の煩雑度のうち、量子ビットの順序が「B、A、D」となる場合の煩雑度が最小となるものとする。この場合、表示制御部152は、量子ビットの順序がB、D、A、C、E、Fとなる量子回路20-2を生成する。量子回路20-2において、CUゲート20dが無関係な量子ビットEを跨ぐ。また、隣接するCUゲートの距離は0である。このため、式(1)に基づく、量子回路20-2の煩雑度Cは「1」である。
【0118】
続いて、表示制御部152は、残りの量子ビットC、E、Fを、着目する量子ビットとして選択する。表示制御部152は、量子ビットC、E、Fと、量子ビットC、E、Fに関連するCUゲート20d,20eを基にして、量子ビットC、E、Fに関する複数の順序のうち、煩雑度が最小となる順序を特定する。量子ビットC、E、Fの順序は、3!(6通り)存在する。なお、表示制御部152は、着目する量子ビットCと、着目しない量子ビットAとに関連するCUゲート20c、他のCUゲート20a,20bを除外して、煩雑度を算出する。
【0119】
表示制御部152は、着目する量子ビットの順序が「C、E、F」となる場合の煩雑度、順序が「C、F、E」となる場合の煩雑度、順序が「E、C、F」となる場合の煩雑度、順序が「E、F、C」となる場合の煩雑度を算出する。表示制御部152は、着目する量子ビットの順序が「F、C、E」となる場合の煩雑度、「F、E、C」となる場合の煩雑度を算出する。
【0120】
上記の複数の煩雑度のうち、量子ビットの順序が「C、E、F」または「E、F、C」となる場合の煩雑度が最小となるものとする。この場合、表示制御部152は、量子ビットの順序がB、D、A、C、F、Eとなる量子回路20-3と、量子ビットの順序がB、D、A、E、F、Cとなる量子回路20-4を生成する。
【0121】
まず、量子回路20-3において、無関係な量子ビットを跨ぐCUゲートは存在しない。また、隣接するCUゲートの距離は0である。このため、式(1)に基づく、量子回路20-3の煩雑度Cは「0」である。
【0122】
一方、量子回路20-4において、CUゲート20cが、無関係な量子ビットE、Fを跨ぐ。また、隣接するCUゲートの距離は0である。このため、式(1)に基づく、量子回路20-4の煩雑度Cは「2」である。
【0123】
表示制御部152は、量子回路20-4の煩雑度よりも、量子回路20-3の煩雑度が小さいため、量子回路20-3の量子ビットの順序B、D、A、C、F、Eを採用する。たとえば、表示制御部152は、量子回路20-3の表示画面を、表示部130に表示させる。
【0124】
上記のように、情報処理装置100は、量子回路の複数の量子ビットのうち、着目する所定数の量子ビットを選択し、着目する所定数mの量子ビットに関して煩雑度が最小となる並び順を判定する処理を繰り返し実行する。これによって、見やすい量子回路を生成することができる。
【0125】
次に、上述した情報処理装置100と同様の機能を実現するコンピュータのハードウェア構成の一例について説明する。
図10は、実施例の情報処理装置と同様の機能を実現するコンピュータのハードウェア構成の一例を示す図である。
【0126】
図10に示すように、コンピュータ200は、各種演算処理を実行するCPU201と、ユーザからのデータの入力を受け付ける入力装置202と、ディスプレイ203とを有する。また、コンピュータ200は、有線または無線ネットワークを介して、外部装置等との間でデータの授受を行う通信装置204と、インタフェース装置205とを有する。また、コンピュータ200は、各種情報を一時記憶するRAM206と、ハードディスク装置207とを有する。そして、各装置201~207は、バス208に接続される。
【0127】
ハードディスク装置207は、取得プログラム207a、表示制御プログラム207bを有する。また、CPU201は、各プログラム207a,207bを読み出してRAM206に展開する。
【0128】
取得プログラム207aは、取得プロセス206aとして機能する。表示制御プログラム207bは、表示制御プロセス206bとして機能する。
【0129】
取得プロセス206aの処理は、取得部151の処理に対応する。表示制御プロセス206bの処理は、表示制御部152の処理に対応する。
【0130】
なお、各プログラム207a,207bについては、必ずしも最初からハードディスク装置207に記憶させておかなくても良い。例えば、コンピュータ200に挿入されるフレキシブルディスク(FD)、CD-ROM、DVD、光磁気ディスク、ICカードなどの「可搬用の物理媒体」に各プログラムを記憶させておく。そして、コンピュータ200が各プログラム207a,207bを読み出して実行するようにしてもよい。
【0131】
以上の各実施例を含む実施形態に関し、さらに以下の付記を開示する。
【0132】
(付記1)量子回路における第1の複数のビットのうち第1の種別の第2の複数のビットの間にならない第2の種別のビットの位置を決定し、
前記第2の複数のビットのうち、ゲート回路が関係を持たないビットと交差する数に基づいて、前記第2の複数のビットの順序を決定し、
前記位置と前記順序とに基づいて、前記第1の複数のビットを並列に表示する、
処理をコンピュータに実行させることを特徴とする表示プログラム。
【0133】
(付記2)前記第2の複数のビットに設定された隣接するゲート回路の距離と、前記数とを基にして、煩雑度を算出する処理をコンピュータに更に実行させ、前記順序を決定する処理は、前記煩雑度を基にして、前記第2の複数のビットの順序を決定することを特徴とする付記1に記載の表示プログラム。
【0134】
(付記3)前記順序を決定する処理は、前記第2の複数のビットのうち、あるビットと前記あるビットよりも下のビットとの順序を入れ替えた場合の煩雑度、および、前記あるビットと前記あるビットよりも上のビットとの順序を入れ替えた場合の煩雑度を基にして、前記第2の複数のビットの順序を決定することを特徴とする付記2に記載の表示プログラム。
【0135】
(付記4)前記順序を決定する処理は、前記第2の複数のビットのうち、所定数のビットを選択し、選択した所定数のビットの順列に関する煩雑度をそれぞれ算出し、煩雑度が最小となる順序を、選択した所定数のビットの順序として決定することを特徴とする付記2に記載の表示プログラム。
【0136】
(付記5)量子回路における第1の複数のビットのうち第1の種別の第2の複数のビットの間にならない第2の種別のビットの位置を決定し、
前記第2の複数のビットのうち、ゲート回路が関係を持たないビットと交差する数に基づいて、前記第2の複数のビットの順序を決定し、
前記位置と前記順序とに基づいて、前記第1の複数のビットを並列に表示する、
処理をコンピュータが実行することを特徴とする表示方法。
【0137】
(付記6)前記第2の複数のビットに設定された隣接するゲート回路の距離と、前記数とを基にして、煩雑度を算出する処理をコンピュータに更に実行させ、前記順序を決定する処理は、前記煩雑度を基にして、前記第2の複数のビットの順序を決定することを特徴とする付記5に記載の表示方法。
【0138】
(付記7)前記順序を決定する処理は、前記第2の複数のビットのうち、あるビットと前記あるビットよりも下のビットとの順序を入れ替えた場合の煩雑度、および、前記あるビットと前記あるビットよりも上のビットとの順序を入れ替えた場合の煩雑度を基にして、前記第2の複数のビットの順序を決定することを特徴とする付記6に記載の表示方法。
【0139】
(付記8)前記順序を決定する処理は、前記第2の複数のビットのうち、所定数のビットを選択し、選択した所定数のビットの順列に関する煩雑度をそれぞれ算出し、煩雑度が最小となる順序を、選択した所定数のビットの順序として決定することを特徴とする付記6に記載の表示方法。
【0140】
(付記9)量子回路における第1の複数のビットのうち第1の種別の第2の複数のビットの間にならない第2の種別のビットの位置を決定し、
前記第2の複数のビットのうち、ゲート回路が関係を持たないビットと交差する数に基づいて、前記第2の複数のビットの順序を決定し、
前記位置と前記順序とに基づいて、前記第1の複数のビットを並列に表示する、
処理を実行する制御部を含む情報処理装置。
【0141】
(付記10)前記第2の複数のビットに設定された隣接するゲート回路の距離と、前記数とを基にして、煩雑度を算出する処理をコンピュータに更に実行させ、前記順序を決定する処理は、前記煩雑度を基にして、前記第2の複数のビットの順序を決定することを特徴とする付記9に記載の情報処理装置。
【0142】
(付記11)前記順序を決定する処理は、前記第2の複数のビットのうち、あるビットと前記あるビットよりも下のビットとの順序を入れ替えた場合の煩雑度、および、前記あるビットと前記あるビットよりも上のビットとの順序を入れ替えた場合の煩雑度を基にして、前記第2の複数のビットの順序を決定することを特徴とする付記10に記載の情報処理装置。
【0143】
(付記12)前記順序を決定する処理は、前記第2の複数のビットのうち、所定数のビットを選択し、選択した所定数のビットの順列に関する煩雑度をそれぞれ算出し、煩雑度が最小となる順序を、選択した所定数のビットの順序として決定することを特徴とする付記10に記載の情報処理装置。