IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 日本電気株式会社の特許一覧

特許7464136情報処理システム、情報処理装置、情報処理方法、及び、プログラム
<>
  • 特許-情報処理システム、情報処理装置、情報処理方法、及び、プログラム 図1
  • 特許-情報処理システム、情報処理装置、情報処理方法、及び、プログラム 図2
  • 特許-情報処理システム、情報処理装置、情報処理方法、及び、プログラム 図3
  • 特許-情報処理システム、情報処理装置、情報処理方法、及び、プログラム 図4
  • 特許-情報処理システム、情報処理装置、情報処理方法、及び、プログラム 図5
  • 特許-情報処理システム、情報処理装置、情報処理方法、及び、プログラム 図6
  • 特許-情報処理システム、情報処理装置、情報処理方法、及び、プログラム 図7
  • 特許-情報処理システム、情報処理装置、情報処理方法、及び、プログラム 図8
  • 特許-情報処理システム、情報処理装置、情報処理方法、及び、プログラム 図9
  • 特許-情報処理システム、情報処理装置、情報処理方法、及び、プログラム 図10
  • 特許-情報処理システム、情報処理装置、情報処理方法、及び、プログラム 図11
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-04-01
(45)【発行日】2024-04-09
(54)【発明の名称】情報処理システム、情報処理装置、情報処理方法、及び、プログラム
(51)【国際特許分類】
   G06N 10/00 20220101AFI20240402BHJP
   G06N 99/00 20190101ALI20240402BHJP
【FI】
G06N10/00
G06N99/00 180
【請求項の数】 9
(21)【出願番号】P 2022551227
(86)(22)【出願日】2021-08-31
(86)【国際出願番号】 JP2021031966
(87)【国際公開番号】W WO2022064976
(87)【国際公開日】2022-03-31
【審査請求日】2023-02-24
(31)【優先権主張番号】P 2020159139
(32)【優先日】2020-09-23
(33)【優先権主張国・地域又は機関】JP
(73)【特許権者】
【識別番号】000004237
【氏名又は名称】日本電気株式会社
(74)【代理人】
【識別番号】100106909
【弁理士】
【氏名又は名称】棚井 澄雄
(74)【代理人】
【識別番号】100134544
【弁理士】
【氏名又は名称】森 隆一郎
(74)【代理人】
【識別番号】100149548
【弁理士】
【氏名又は名称】松沼 泰史
(74)【代理人】
【識別番号】100162868
【弁理士】
【氏名又は名称】伊藤 英輔
(72)【発明者】
【氏名】西村 考弘
(72)【発明者】
【氏名】井上 浩明
(72)【発明者】
【氏名】荒木 拓也
(72)【発明者】
【氏名】鈴木 基己
(72)【発明者】
【氏名】鷹野 芙美代
(72)【発明者】
【氏名】小林 悠記
(72)【発明者】
【氏名】千嶋 博
(72)【発明者】
【氏名】矢田部 彰宏
【審査官】▲はま▼中 信行
(56)【参考文献】
【文献】川合 遼、左尾 将隆,組合せ最適化問題を高速に解くデジタルアニーラの活用技術,計算工学,一般社団法人日本計算工学会,2019年01月31日,Vol.24, No.1,pp.21-24
【文献】植田 圭、戸川 望、木村 晋二,量子アニーリングエミュレータのためのデータ構造,情報処理学会 シンポジウム DAシンポジウム 2019,情報処理学会,2019年08月21日,pp.39-44
(58)【調査した分野】(Int.Cl.,DB名)
G06N 10/00
G06N 99/00
G06F 8/00- 8/54
G06F 15/00
(57)【特許請求の範囲】
【請求項1】
アニーリングエンジンにて処理対象であるQUBOモデルのデータ量と、前記QUBOモデルを表すプログラムのデータ量とを比較し、データ量の少ない方を前記アニーリングエンジンに送信するデータ形式決定手段
を備える情報処理装置。
【請求項2】
前記アニーリングエンジンにて処理する対象におけるハミルトニアンを、前記プログラムから抽出し、抽出した前記ハミルトニアンを、数式処理技術を用いてデータ量のより少ないハミルトニアンに変換し、変換後の前記ハミルトニアンにて表されている処理をプログラムに変換する定式分解手段
をさらに備える請求項1に記載の情報処理装置。
【請求項3】
前記定式分解手段は、前記ハミルトニアンにて表されている前記処理を、量子ビットの2乗は前記量子ビットと同じであることを用いて、前記プログラムに変換する
請求項2に記載の情報処理装置。
【請求項4】
前記定式分解手段は、前記プログラムにおいて、前記ハミルトニアンを算出する処理が反復処理によって記載されている場合に、該反復処理を、該反復処理と同等な処理を表す関数に変換する
請求項2または請求項3に記載の情報処理装置。
【請求項5】
前記定式分解手段は、前記プログラム内の前記ハミルトニアンが、3つ以上のスピンの積を2つ以下のスピンの積になるよう導入される第2スピンを含む場合に、前記プログラムを、前記第2スピンを含まない第2プログラムに変換する
請求項2乃至請求項4のいずれか1項に記載の情報処理装置。
【請求項6】
前記データ形式決定手段は、前記QUBOモデルを表すマトリックスが、前記マトリックスに対して圧縮処理を実行することを判定する基準を満たしているか否かを判定し、前記マトリックスが前記基準を満たしている場合には、前記マトリックスを所定の圧縮形式にて表される情報に変換する
請求項1乃至請求項5のいずれか1項に記載の情報処理装置。
【請求項7】
請求項1乃至請求項6のいずれか1項に記載の情報処理装置と、
前記アニーリングエンジンと
を備える情報処理システム。
【請求項8】
コンピュータが、アニーリングエンジンにて処理対象であるQUBOモデルのデータ量と、前記QUBOモデルを表すプログラムのデータ量とを比較し、データ量の少ない方を前記アニーリングエンジンに送信する情報処理方法。
【請求項9】
アニーリングエンジンにて処理対象であるQUBOモデルのデータ量と、前記QUBOモデルを表すプログラムのデータ量とを比較する機能と
データ量の少ない方を前記アニーリングエンジンに送信する機能と
をコンピュータに実現させる情報処理プログラム
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、通信ネットワークを介して通信する情報処理装置等に関する。
【背景技術】
【0002】
特許文献1に例示されているように、アニーリングを用いるクラウドサービスが提供されている。
【先行技術文献】
【特許文献】
【0003】
【文献】日本特開2020-042687号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかし、特許文献1に開示されたクラウドサービスを用いる場合に、問題規模が大きくなるにつれ、モデルのデータのデータ量は、急速に巨大になる。この結果、該クラウドサービスにおいては、該データを通信するのに要する通信時間が長くなるので、実用的な時間にてサービスの提供を受けることが難しくなる。
【0005】
そこで、本発明の目的の1つは、実用的な時間にてサービスの提供を受けることが可能な情報処理装置等を提供することである。
【課題を解決するための手段】
【0006】
本発明の1つの態様として、情報処理装置は、アニーリングエンジンにて処理対象であるQUBOモデルのデータ量と、前記QUBOモデルを表すプログラムのデータ量とを比較し、データ量の少ない方を前記アニーリングエンジンに送信するデータ形式決定手段を有する。
【0007】
また、本発明の他の態様として、情報処理方法は、コンピュータが、アニーリングエンジンにて処理対象であるQUBOモデルのデータ量と、前記QUBOモデルを表すプログラムのデータ量とを比較し、データ量の少ない方を前記アニーリングエンジンに送信する。
【0008】
また、本発明の他の態様として、情報処理プログラムは、アニーリングエンジンにて処理対象であるQUBOモデルのデータ量と、前記QUBOモデルを表すプログラムのデータ量とを比較する機能とデータ量の少ない方を前記アニーリングエンジンに送信する機能とをコンピュータに実現させる。さらに、同目的は、係るプログラムを記録するコンピュータが読み取り可能な記録媒体によっても実現される。
【発明の効果】
【0009】
本発明に係る情報処理装置等によれば、実用的な時間にてサービスの提供を受けることができる。
【図面の簡単な説明】
【0010】
図1】本発明の第1の実施形態に係る情報処理システムが有する構成を示すブロック図である。
図2】第1の実施形態に係る情報処理システムにおける処理の概略を示すフローチャートである。
図3】巡回セールスマン問題の一例を概念的に表す図である。
図4】巡回セールスマン問題におけるスピンの一例を概念的に表す図である。
図5】ハミルトニアンを算出する処理を表すプログラムの一例を概念的に表す図である。
図6】QUBOモデルをマトリックス形式にて表す一例を概念的に表す図である。
図7】第1の実施形態に係る情報処理装置(ローカルマシン)における処理の流れを示すフローチャートである。
図8】第1の実施形態に係るサーバにおける処理の流れを示すフローチャートである。
図9】本発明の第2の実施形態に係る情報処理装置が有する構成を示すブロック図である。
図10】第2の実施形態に係る情報処理装置における処理の流れを示すフローチャートである。
図11】本発明の各実施形態に係る情報処理システム、情報処理装置、及び、サーバを実現可能な計算処理装置のハードウェア構成例を概略的に示すブロック図である。
【発明を実施するための形態】
【0011】
次に、本発明を実施する実施形態について図面を参照しながら詳細に説明する。
【0012】
<第1の実施形態>
図1を参照しながら、本発明の第1の実施形態に係る情報処理システム101が有する構成について詳細に説明する。図1は、本発明の第1の実施形態に係る情報処理システム101が有する構成を示すブロック図である。
【0013】
第1の実施形態に係る情報処理システム101は、情報処理装置110と、通信ネットワーク151と、サーバ120とを有する。情報処理装置110と、サーバ120とは、通信ネットワーク151を介して、通信可能に接続されている。情報処理装置110と、サーバ120とは、伝送路を介して接続されていてもよい。
【0014】
情報処理装置110は、定式分解部111と、データ形式決定部112と、データセット作成部113とを有する。以降、説明の便宜上、情報処理装置110を、「ローカルマシン」とも表す。
【0015】
サーバ120は、データ展開部121と、アニーリングエンジン122とを有する。
サーバ120は、最小エネルギー探索計算法による組み合わせ最適化問題に対する解を出力するサービスを提供することができる。この場合に、情報処理装置110にサービスを提供する情報処理システム101は、図2に例示されているような処理によって実現することができる。図2は、第1の実施形態に係る情報処理システム101における処理の概略を示すフローチャートである。
【0016】
情報処理システム101における処理は、大別して、図2に例示されているステップS101乃至ステップS105における処理を順に実行することにより実現される。
【0017】
(ステップS101)計算対象である課題を抽出する処理(以降、「抽出処理1」と表す)。抽出処理1は、所与の問題が組み合わせ最適化問題を含んでいるか否かを判定し、該所与の問題が組み合わせ最適化問題を含んでいる場合には、該所与の問題から組み合わせ最適化問題を抽出する処理であるともいうことができる。
【0018】
(ステップS102)抽出した課題を、スピンを表すパラメータを用いて表す処理(スピンを表すパラメータを割り当てる処理)(以降、「スピン割当処理2」と表す)、スピン割当処理2は、抽出された組み合わせ最適化問題を、スピンを用いて表す処理であるともいうことができる。
【0019】
(ステップS103)割り当てたスピンを用いて課題を定式化する処理(以降、「定式化処理3」と表す)。
【0020】
(ステップS104)定式化された式を、QUBO(「Quadratic unconstrained binary optimization」の略称)モデルにて表す処理(QUBOモデルを作成する処理)(以降、「モデル作成処理4」と表す)。
【0021】
(ステップS105)作成されたQUBOモデルに従い、アニーリングによって解を求める処理(以降、「アニーリング処理5」と表す)。当該処理は、量子チップを用いて実現されている場合とも、アニーリング動作であるともいうことができる。
以降、説明の便宜上、スピンを表すパラメータを、単に、「スピン」と表す。
【0022】
次に、定式分解部111と、データ形式決定部112と、データセット作成部113とについて説明する。本実施形態に係る情報処理システム101は、たとえば、定式化処理3からモデル作成処理4までの処理の間にて、以下に示す処理を実行する。
【0023】
定式分解部111は、アニーリング計算を用いる処理が記載されているソースプログラム(以降、「ソースプログラムS」と表す)を入力する。ソースプログラムSは、たとえば、pyquboやsympy等を用いて記述されている。pyquboは、QUBOを作成する作成ライブラリを表す。sympyは、Pythonにて記述された代数計算ライブラリを表す。
【0024】
定式分解部111は、入力したソースプログラムSを解析し、ソースプログラムSのうち、ハミルトニアン(式1及び式2等を参照しながら後述する)についての処理を抽出する。ハミルトニアンについての処理は、概念的に、式1及び式2(後述)に例示されているように記述することができる。
以降、説明の便宜上、ソースプログラムSのうちハミルトニアンについての処理を、ハミルトニアンを表す数式を用いて説明する。
【0025】
定式分解部111は、数式処理技術に従い、該数式を簡略化することが可能か否かを判定する。定式分解部111は、たとえば、数式を因数分解することにより、データ量が少なくなるような数式に変換可能か否かを判定する。
あるいは、定式分解部111は、たとえば、ソースプログラムSにおいて補助スピン(第2スピン)が用いられているか否かを判定してもよい。補助スピンは、たとえば、3つ以上のスピンの積が2つ以下のスピンの積になるよう導入されるスピンを表す。補助スピンは、複数のスピンの積を用いて定義されるスピンを表すともいうことができる。定式分解部111は、たとえば、ソースプログラムSが、補助スピンを定義するためのコマンド(または、ルール)を含む場合には、該コマンド(または、ルール)を用いて判定してもよい。この処理については、後述の例2において、式6乃至式8等を参照しながら詳述する。
【0026】
定式分解部111は、ハミルトニアンが補助スピンを含む場合に、該ハミルトニアンと同値なハミルトニアンであって、補助スピンを含まない(または、補助スピンの個数が入力したハミルトニアンよりも少ない)ハミルトニアンを作成する。該処理は、たとえば、数学における変数(パラメータ)を消去する処理と同様な処理を実行することにより、実現される。この場合に、作成したハミルトニアンは、3つ以上のスピンの積を含む。補助スピンを含まないプログラムのデータ量が、補助スピンを含むプログラムのデータ量よりも小さいので、該処理によれば、プログラムのデータ量を減らすことができるという効果を奏する。
尚、上述した処理において、ハミルトニアンを対象として処理を説明したが、該ハミルトニアンと同様な処理を表すプログラムを対象として、上述した処理と同様な処理を実行してもよい。
【0027】
データ形式決定部112は、ソースプログラムSにおける処理を表すイジング及びQUBOモデルにおけるマトリックスのデータ量を圧縮可能であるか否かを判定する。たとえば、データ形式決定部112は、マトリックスが疎であると判定する場合に圧縮可能であると判定する。マトリックスが疎であるか否かの判定は、たとえば、マトリックスの要素のうち非ゼロ要素の個数が少ないことを判定する判定基準を満たすか否かに応じて判定される。すなわち、該判定基準は、マトリックスが圧縮可能であると判定する基準である。該判定基準については、図7を参照しながら後述する。
【0028】
データ形式決定部112は、圧縮後のマトリックスのデータ量を算出する。データ形式決定部112は、算出したデータ量と、定式分解部111によって算出されたデータ量とを比較し、データ量が少ないデータを選択する。
データ形式決定部112は、データ量が少ない方をサーバ120に送信する。
【0029】
サーバ120において、データ展開部121は、ローカルマシンからプログラム(たとえば、プログラムR)または、QUBOモデルにおけるマトリックスを受信する。ローカルマシンからプログラムを受信した場合に、データ展開部121は、受信したプログラムに従い、イジング及びQUBOモデルを作成する。データ展開部121は、作成したイジング及びQUBOモデルを、アニーリングエンジン122に対して出力する。ローカルマシンからイジング及びQUBOモデルを受信した場合に、データ展開部121は、作成したイジング及びQUBOモデルを、アニーリングエンジン122に対して出力する。
【0030】
アニーリングエンジン122は、イジング及びQUBOモデルを入力し、入力したイジング及びQUBOモデルの解を算出する。
以降、巡回セールスマン問題、及び、シフト最適化問題の例を参照しながら、本実施形態に係る情報処理システム101の処理について説明する。
【0031】
(例1:巡回セールスマン問題)
図3を参照しながら、巡回セールスマン問題の例について説明する。図3は、巡回セールスマン問題の一例を概念的に表す図である。
【0032】
図3に例示された巡回セールスマン問題は、5都市を一回ずつ訪問する場合に、移動距離が最小である場合の経路を探索する問題である。図3において、5都市は、札幌、金沢、仙台、名古屋、及び、東京である。巡回セールスマン問題は、都市数が増えるにつれ、都市間の組み合わせ数が指数的に増大する組み合わせ最適化問題である。
訪問先は、必ずしも、都市でなくともよく、たとえば、駅、工場、タクシー乗り場、荷物の集配場、家屋等であってもよい。訪問先は、上述した例に限定されない。以降、訪問先を、より一般的に「ノード」と表すこともある。
【0033】
(例1におけるスピン割当処理2)
図3に例示された巡回セールスマン問題の場合に、たとえば、図4に示すようなスピンが割り当てられる。図4は、巡回セールスマン問題におけるスピンの一例を概念的に表す図である。
スピンは、たとえば、マトリックス形式にて表されている。スピンを表す形式は、マトリックス形式に限定されない。マトリックスの行は、訪問する順番を表す。マトリックスの列は、各都市を表す。この例において、スピンは、(5×5)のマトリックスを用いて表されている。すなわち、スピンの個数は、25である。
【0034】
スピンの値が1である場合には、その順番にその都市を訪問することを表す。スピンの値が0である場合には、その順番にその都市を訪問しないことを表す。たとえば、(3,2)要素の値は、1である。これは、3番目(3行目に対応)に、仙台(2列目に対応)を訪問することを表す。たとえば、(4,4)要素の値は、1である。これは、4番目(4行目に対応)に、名古屋(4列目に対応)を訪問することを表す。たとえば、(1,3)要素の値は、0である。これは、1番目(1行目に対応)に、金沢(3列目に対応)を訪問しないことを表す。すなわち、i番目に都市jを訪問する場合に、スピンXij((i,j)要素に対応)の値は、1である。i番目に都市jを訪問しない場合に、スピンXij((i,j)要素に対応)の値は、0である。
【0035】
(例1における定式化処理3)
都市p1及び都市p2間の距離をDp1p2と表すとする。上述した5都市(都市0から都市4まで)のそれぞれに対応する移動距離を、式1に示すようなハミルトニアンH1によって表す。
【0036】
【数1】
【0037】
ただし、Dp1p2は、都市p1及び都市p2間の距離を表す。Σは、合計を算出する演算子を表す。式1は、都市jから都市(j+1)を訪問する際に、他の3つの都市を訪問しながら移動する距離の合計を、都市0から都市4まで足し算する処理を表す。
巡回セールスマン問題には、以下の制約1及び制約2に示す2つの制約がある。
【0038】
(制約1)各都市には一度しか訪問しない。すなわち、各都市の訪問順番を表す5個のスピン(図4に例示されたマトリックスの1列)は、1つの順番を表す行に対応する要素(すなわち、1列のうちの1つの要素)の値だけ1であり、残りの要素の値は0である。
【0039】
(制約2)また、巡回セールスマン問題において、1回に訪問できる都市は、1つの都市だけである。すなわち、順番を表す5個のスピン(図4に例示されたマトリックスの1行)は1つの都市を表す列に対応する要素(すなわち、1行のうちの1つの要素)だけ1であり、残りの要素の値は0である。
制約1、及び、制約2についてのハミルトニアンH2は、以下の式2を用いて表すことができる。
【0040】
【数2】
【0041】
式2の右辺のうち、第1項は、制約1についての処理を表す。式2の右辺のうち、第2項は、制約2についての処理を表す。
【0042】
図5を参照しながら、巡回セールスマン問題等におけるハミルトニアンを算出する処理を表すプログラムについて説明する。図5は、ハミルトニアンを算出する処理を表すプログラムの一例を概念的に表す図である。
【0043】
図5の最下行に記載されているパラメータHは、ハミルトニアンを表す。パラメータH1a、H1b、H2a、H2bは、見やすさのために用いるパラメータである。Sumは、合計値を算出する処理を表す。dlength[i][k]は、都市i及び都市k間の距離を表すパラメータである。パラメータpos_listは、都市の位置を表す位置情報である。パラメータxは、スピンを表す。
【0044】
パラメータH1aを含む行よりも前の処理は、各都市の位置を表す情報から、任意の2つの都市の間の距離を算出する処理を表す。パラメータH1aを含む行以降の処理は、ハミルトニアンを算出する処理を表す。
プログラムは、図5に示された例に限定されず、たとえば、各都市間の距離を入力としてハミルトニアンを算出するプログラムであってもよい。あるいは、プログラムは、後述の例2にて説明するようなプログラムであってもよい。
【0045】
(例1におけるモデル作成処理4)
図6を参照しながら、QUBOモデルについて説明する。図6は、QUBOモデルをマトリックス形式にて表す一例を概念的に表す図である。
【0046】
QUBOモデルは、N(Nは自然数)行N列を有する(N×N)マトリックス形式にて表すことができる。行、及び、列は、都市を表す。図6に示されるマトリックスの例では、N個の都市が表されている。行の各要素、及び、列の各要素は、ともに、各都市に対応している。そして、I行J列(I、Jは自然数)の要素((I,J)要素)の値は、ハミルトニアン(式1及び式2に例示)に従い算出される値を表している。たとえば、(I,J)要素の値は、式1の値と式2の値とが足し算された値、あるいは、式1の値と式2の値とにそれぞれ重み付けし、重み付けされた値が足し算された値を表している。この場合に、(I,J)要素の値は、(J,I)要素の値に等しいので、QUBOモデルを表すマトリックスは、対称である。便宜上、図6では、「I<J」である(I,J)要素の値のみを記載している。マトリックスは、上述した例に限定されない。
【0047】
ローカルマシンは、QUBOモデルを表すマトリックスをサーバ120に送信する場合に、(N×N)上三角形マトリックスの全要素分の値を、サーバ120に送信する。すなわち、ローカルマシンは、Nの2乗オーダーのデータをサーバ120に送信する。これに対して、ローカルマシンは、QUBOモデルと同等な処理を表すプログラム(図5に例示)をサーバ120に送信する場合に、データ量がNの2乗オーダーより小さくなる可能性がある。
【0048】
図7及び図8を参照しながら、第1の実施形態に係る情報処理システム101の処理について説明する。図7は、第1の実施形態に係る情報処理装置110(ローカルマシン)における処理の流れを示すフローチャートである。図8は、第1の実施形態に係るサーバ120における処理の流れを示すフローチャートである。
【0049】
定式分解部111は、ハミルトニアンについての処理が記載されているソースプログラムSを解析し、該ハミルトニアンを表す処理(式1及び式2に例示)を抽出する(ステップS111)。定式分解部111は、抽出した数式を、数式処理技術を用いてより簡単な数式に変換可能か否かを判定する。言い換えると、定式分解部111は、抽出した数式を、数式処理技術を用いて、より小さなデータ量を有する数式に変換可能か否かを判定する(ステップS112)。
【0050】
たとえば、抽出された数式が、式2にて表されているハミルトニアン(数式)であるとする。この場合に、2つのビットのうち、いずれかが1になる場合に注目すると、式2は、以下の式3に変換することができる。
【0051】
H2=(X[0,0]+X[0,1]-1)**2+(X[0,0]+X[1,0]-1)**2+(X[0,1]+X[1,1]-1)**2+(X[1,0]+X[1,1]-1)**2・・・(式3)。
ただし、「**2」は、2乗の演算子を表す。
【0052】
式3を展開し、さらに、QUBOモデルにおいて、量子ビット(すなわち、スピンを表すパラメータ)の2乗は、量子ビットの値そのものと同じであるという条件(たとえば、X[0,0]**2=X[0,0]、X[1,0]**2=X[1,0]等)を適用すると、式3は、以下の式4に変換することができる。
H2=2*X[0,0]*X[0,1]+2*X[0,0]*X[1,0]-2*X[0,0]+2*X[0,1]*X[1,1]-2*X[0,1]+2*X[1,0]*X[1,1]-2*X[1,0]-2*X[1,1]+4・・・(式4)。
ただし、「*」は、掛け算の演算子を表す。
【0053】
したがって、量子ビット(すなわち、スピンを表すパラメータ)が2乗された値が、該量子ビットの値そのものと同じであるという条件を用いて、量子ビットの2乗を該量子ビットに変換することによって、掛け算の回数は減少する。すなわち、当該処理によれば、演算回数が少なくなる分だけデータ量が少なくなるので、ローカルマシンとサーバ120との間の通信における通信量を減らすことができるという効果を奏する。
そして、さらに、式4は、因数分解処理を適用することによって、以下の式5に変換することができる。
【0054】
H2=2*(X[0,0]+X[1,1]-1)*(X[0,1]+X[1,0]-1)+2・・・(式5)。
【0055】
式5に例示されるハミルトニアンは、式2に例示されるハミルトニアンよりもデータ量が少ないので、定式分解部111は、ソースプログラムSがより簡単な数式を用いるプログラムに変換可能であると判定する(ステップS112にてYES)。ステップS112にてYESの場合に、定式分解部111は、ソースプログラムSをより簡易化されたハミルトニアンを用いるプログラムに変換する(ステップS117)。
【0056】
変換後のプログラムは、図5に例示されているプログラムと同様な形式を有するが、変換後のプログラムのデータ量は、ソースプログラムSのデータ量よりも小さい。したがって、定式分解部111における、上述したような処理によれば、変換後のプログラムのデータ量がソースプログラムSのデータ量よりも減少するので、ローカルマシンとサーバ120との間の通信における通信量を減らすことができるという効果を奏する。
【0057】
ステップS112にて、定式分解部111は、ソースプログラムSにおいてハミルトニアンを算出する処理がループ処理(反復処理、繰り返し処理)によって記載されているか否かを判定してもよい。該処理がループ処理によって記載されている場合に(ステップS112にてYES)、定式分解部111は、該ループ処理を、sum関数を用いる同等な処理を表すプログラムに変換する(ステップS117)。言い換えると、定式分解部111は、ハミルトニアンを算出する処理が、反復処理によって合計値を算出する反復処理である場合に、該合計値を算出する関数に該反復処理を変換する。
あるいは、定式分解部111は、ループ処理と同等な処理を表す関数が定義されている場合には、該ループ処理を、該関数に変換してもよい。言い換えると、定式分解部111は、プログラムにおいて、ハミルトニアンを算出する処理が反復処理によって記載されている場合に、該反復処理を、該反復処理と同等な処理を表す関数に変換してもよい。ループ処理は、合計値を算出する処理に限定されない。
この場合に、ループ処理を、該ループ処理と同等な処理を実行する関数を用いる処理に書き換えることによって、プログラムのデータ量が減少するので、上述したような処理によれば、ローカルマシンとサーバ120との間の通信における通信量を減らすことができるという効果を奏する。
【0058】
ステップS112にてNOの場合に、定式分解部111は、ステップS117に示された処理を実行しない。
定式分解部111は、プログラム(たとえば、プログラムR、または、ソースプログラムS)が、補助スピンを用いるプログラムであるか否かを判定する(ステップS113)。ステップS113及びステップS118については、後述の例2にて説明する。
定式分解部111は、ステップS117にて作成されたプログラムのデータ量を算出する(ステップS114)。
【0059】
データ形式決定部112は、QUBOモデル(図6に例示)を表すマトリックスを圧縮することが可能であるか否かを判定する(ステップS115)。データ形式決定部112は、たとえば、マトリックスにおける要素の値が非ゼロである要素の個数が、ゼロである要素の個数に比べて少ない場合に、マトリックスを圧縮することが可能であると判定する(ステップS115にてYES)。
該判定処理は、たとえば、マトリックスに含まれる要素数に対する、非ゼロである要素の個数の割合が、所定の判定基準を満たしているか否かに応じて実行される。所定の判定基準は、マトリックスに対して圧縮処理を実行することを判定する基準であり、たとえば、全体の要素数に対する非ゼロである要素の個数の割合が50%、30%、または、10%以下であるという基準である。所定の判定基準は、上述した例に限定されない。
【0060】
巡回セールスマン問題は、必ずしも、任意の2つの都市間を移動可能であるという全結合問題ではなく、たとえば、都市間を移動可能な経路のみが結合されている問題であってもよい。該経路数は、たとえば、全結合数の数%である。この場合に、QUBOモデルを表すマトリックス(図6に例示)の要素のうち、大多数の要素の値は0である。
【0061】
ステップS115にてYESの場合に、データ形式決定部112は、QUBOモデルを表すマトリックス(図6に例示)を、所定の圧縮形式にて記載されている情報に変換する(ステップS119)。所定の圧縮形式は、たとえば、ランレングス符号形式、または、CRS(Compress Row sparse)形式である。ランレングス符号形式は、連続した同じ符号列データを、1つの符号と、該1つの符号が連続して出現している文字列の長さを表す符号とを用いて表す形式である。CRS形式は、各行のうち、非ゼロ要素を表す列番号と、その要素の値とを用いてマトリックスを表す形式である。所定の圧縮形式は、上述した例に限定されない。データ形式決定部112は、圧縮後の情報のデータ量を算出する。
【0062】
上述の圧縮処理によれば、圧縮前におけるマトリックスに比べ、圧縮後におけるマトリックスのデータ量が減少するので、ローカルマシンとサーバ120との間の通信における通信量を減らすことができるという効果を奏する。
【0063】
そして、データ形式決定部112は、ステップS114にて算出されたデータ量と、ステップS119にて算出されたデータ量とを比較する(ステップS116)。言い換えると、データ形式決定部112は、アニーリングエンジン122にて処理対象であるQUBOモデルのデータ量と、該QUBOモデルを表すプログラム(すなわち、プログラムR、または、ソースプログラムS)のデータ量とを比較する。
【0064】
ステップS119にて算出されたデータ量が、ステップS114にて算出されたデータ量よりも小さい場合に(ステップS116にてNO)、データ形式決定部112は、QUBOモデルをサーバ120に送信する(ステップS120)。
【0065】
ステップS119にて算出されたデータ量が、ステップS114にて算出されたデータ量以上である場合に(ステップS116にてYES)、データセット作成部113は、図6のようなQUBOモデルを表すプログラムについての計算処理を分解できるか否かを判定する(ステップS121)。
あるいは、データセット作成部113は、プログラムをサーバ120に送信してもよい。この場合に、データセット作成部113は、アニーリングエンジン122にて処理対象であるQUBOモデルのデータ量と、該QUBOモデルを表すプログラムのデータ量とを比較し、データ量の少ない方をアニーリングエンジン122に送信するともいうことができる。
【0066】
ステップS121において、たとえば、図5における都市間の距離dlength[i][k]のデータを、各都市の位置を表す(x,y)座標のデータに分解できる場合に、データセット作成部113は、計算処理を分解できると判定する。
計算処理を分解できると判定する場合に(ステップS121にてYES)、データセット作成部113は、各都市の位置を表す(x,y)座標を表すデータを含むデータセットと、距離dlength[i][k]を計算するプログラムを作成し(ステップS122)、作成したデータセットとプログラムとを、サーバ120に送信する(ステップS123)。
計算処理を分解できないと判定する場合に(ステップS121にてNO)、ステップS122における処理は実行されない。
【0067】
巡回セールスマン問題の場合に、ハミルトニアンH1(式1に例示)におけるDp1p2、及び、プログラム(図5に例示)におけるdlength[i][k]は、ともに、2つの都市間の距離を表す。dlength[i][k]の値の記憶領域は、point_num(都市の個数)の二乗のデータ分の領域が必要である。これに対して、dlength[i][k]を算出する処理の場合に、記憶領域は、point_num個分の都市の(x,y)座標データ分の領域(すなわち、(2×point_num)のデータ量)が必要である。
【0068】
上述したように、係る処理によれば、記憶領域を減らすことができるので、ローカルマシンとサーバ120との間の通信における通信量を減らすことができるという効果を奏する。
【0069】
(例1におけるアニーリング処理5)
サーバ120において、データ展開部121は、ローカルマシンが送信した情報を受信し(図8のステップS131)、受信した情報が、QUBOモデルにて表されているか否かを判定する(ステップS132)。受信した情報がQUBOモデルにて表されていない場合に(ステップS132にてNO)、受信した情報は、プログラムにて表されている。
情報がQUBOモデルにて表されている場合に(ステップS132にてYES)、データ展開部121は、受信した情報をアニーリングエンジン122に出力する。情報がプログラムにて表されている場合に(ステップS132にてNO)、データ展開部121は、受信した情報に基づき、受信した情報をQUBOモデルにて表す形式に変換する(ステップS134)。データ展開部121は、作成したQUBOモデルをアニーリングエンジン122に出力する。
アニーリングエンジン122は、QUBOモデルを入力し、入力したQUBOモデルを用いてアニーリング処理する(ステップS133)。すなわち、アニーリングエンジン122は、QUBOモデルにて表されている問題の解を表す情報を算出する。サーバ120は、アニーリングエンジン122によって算出された情報をローカルマシンに送信する。 すなわち、サーバ120は、QUBOモデル、及び、プログラムを受け取ることができるので、係るサーバ120の処理によれば、ローカルマシンが、サーバ120に送信するデータを選択する処理が可能であるという効果を奏する。
【0070】
次に、本発明の第1の実施形態に係る情報処理システム101に関する効果について説明する。
【0071】
第1の実施形態に係る情報処理システム101によれば、実用的な時間にてサービスを受けることができる。
この理由は、情報処理システム101では、特許文献1等に開示されている装置に比べ、通信するデータ量が少ないからである。この理由について説明する。特許文献1等に開示されている装置は、ソースプログラムに対応するイジング及びQUBOモデルをサーバに送信する。これに対して、本実施形態に係るローカルマシンは、ソースプログラムSと同等な処理を、データ量が小さなプログラムに変換し、変換後のプログラムに対応するイジング及びQUBOモデル、または、プログラムをサーバ120に送信する。この結果、第1の実施形態に係る情報処理システム101によれば、問題規模が大きな場合であっても、実用的な時間にてサービスを受けることができる。
【0072】
たとえば、特許文献1に開示された装置は、300都市についての巡回セールスマン問題において、9万(=300×300)ビットのデータをサーバに送信する。たとえば、各都市間の結合密度が約1.3%である場合に、QUBOモデルのデータ量は、約200MB(メガバイト)である。
これに対して、本実施形態に係る情報処理システム101の場合に、300都市の位置を表す(x,y)座標を表すデータ量は、2.4K(キロ)B(=4B×2×300)であり、距離計算プログラムのデータ量は、せいぜい10KBである。この場合に、本実施形態に係る情報処理システム101は、15KBのデータを通信する。
したがって、第1の実施形態に係る情報処理システム101によれば、通信するデータ量が少ないので、問題規模が大きな場合であっても、実用的な時間にてサービスを受けることができる。
【0073】
(例2:シフト最適化問題)
シフト最適化問題は、たとえば、看護師が病院に勤務する際の勤務シフトについてのスケジュールを作成する問題である。最適なシフト勤務を作成するというスケジューリングは、組み合わせ最適化問題の一例である。
【0074】
(例2におけるスピン割当処理2)及び(例2における定式化処理3)
シフト最適化問題においては、たとえば、以下の制約3乃至制約6に示される制約がある。
(制約3)1日あたり5人以上の看護師は勤務する。
(制約4)労働日数は、平均化されている。
(制約5)勤務する看護師のうち、少なくとも1人は、主任クラスである。
(制約6)看護師は、3連勤禁止である。
制約3乃至制約6についても、上述した制約1乃至制約2と同様にハミルトニアンを表す数式を用いて表すことができる。たとえば、制約6は、次の式6のように表すことができる。
【0075】
【数3】
【0076】
ただし、m(0≦m≦20を満たす自然数)は、看護師の識別子を表す。看護師の人数は21人であるとする。d(0≦d≦28(=30-2)を満たす自然数)は、1日乃至31日までのうちの1日を表す。式6においての右辺は、(d)乃至(d+2)なるパラメータを含むので、0≦d≦28の場合に、該パラメータは、0~30(すなわち、31日分)までのいずれかの値を表す。Xmdは、スピンを表す。Xmdの値が0の場合に、看護師mは、d日に休みであることを表す。Xmdの値が1の場合に、看護師mは、d日に出勤であることを表す。
【0077】
式6は、スピンについての3次式である。しかし、QUBOモデルは、スピンについての2次式までしか扱うことができない。そこで、「Ymd=Xmd*Xmd+1」のような補助スピンYmdを導入する。この場合に、式6は、以下の式7に変形することができる。
【0078】
【数4】
【0079】
すなわち、式7は、スピンについての2次式である。
ただし、この場合に、スピン数は、増加する。言い換えると、「Ymd=Xmd*Xmd+1」という制約を表すハミルトニアンHp(式8に例示)が必要である。
【0080】
【数5】
【0081】
言い換えると、式8は、式6に例示されたハミルトニアンに係る処理を、QUBOモデルにて表すために用いられる制約を表す数式である。ただし、補助スピンの表し方、及び、該補助スピンについての制約を表す数式は、上述した例に限定されない。
たとえば、プログラムが、補助スピンを定義するためのコマンド(または、ルール)を含む場合には、該コマンド(または、ルール)を用いて判定してもよい。プログラムが補助スピンを含んでいるか否かを判定する処理は、たとえば、式8に例示されているような制約を含むか否かを判定する処理によって実現することができる。あるいは、プログラムが補助スピンを含んでいるか否かを判定する処理は、少なくとも2つのスピンの積によってスピンを算出する処理と、その処理結果を用いてハミルトニアンを算出する処理(式8に例示)とを該プログラムが含むか否かに応じて判定してもよい。
あるいは、補助スピンに値を代入する処理によっても、プログラムが補助スピンを含んでいるか否かを判定することができる。該判定処理は、たとえば、式8におけるXmdと、Xmd+1と、Ymdとに、それぞれ、0または1を設定し、その後、「Ymd=Xmd*Xmd+1」なる制約についてエネルギー(たとえば、両辺の差異)を算出し、そのエネルギーが、「Ymd=Xmd*Xmd+1」なる制約を満たすときのみ0であり、そうでない場合には1以上であることを判定することによっても実現できる。
プログラムが補助スピンを含んでいるか否かについての判定処理は、上述した例に限定されない。
【0082】
(例2におけるモデル作成処理4)
図7を参照しながら、例2の場合における、第1の実施形態に係る情報処理システム101の処理について説明する。
【0083】
ステップS111乃至ステップS113、及び、ステップS117における処理は、例1にて上述した処理と同様であるので、ステップS111乃至ステップS113、及び、ステップS117についての説明を省略する。
【0084】
例2において、ハミルトニアン(式7、及び、式8に例示)は、補助スピンを表すパラメータを含む。この場合に(ステップS113にてYES)、定式分解部111は、該ハミルトニアンと同値なハミルトニアンであって、補助スピンを含まない(あるいは、補助スピンが、入力されたハミルトニアンにおける補助スピンの個数よりも少ない)ハミルトニアン(式6に例示)を作成する(ステップS118)。定式分解部111は、作成したハミルトニアン(式6に例示)を用いて記載されたプログラムのデータをサーバ120へ送信する。
ハミルトニアンが補助スピンを含む場合と比較して、ハミルトニアンが補助スピンを含まない場合の方がプログラムの記載量が減少するので、上記処理によれば、ローカルマシンとサーバ120との間の通信における通信量を削減することができるという効果を奏する。
【0085】
サーバ120は、スピンについての3次以上の項を含むハミルトニアンを表すプログラムを受信した場合に、該ハミルトニアンと同値なハミルトニアンであって、スピンについての2次以下の項のみを含むハミルトニアンを作成する。例2において、サーバ120は、たとえば、補助スピンを用いて、式7及び式8に例示されたハミルトニアンにおける処理を表すプログラムを作成する(ステップS118)。
【0086】
ローカルマシンにおいて、データ形式決定部112は、ハミルトニアンにおける処理を表すQUBOモデルを生成する。データ形式決定部112は、作成したQUBOモデルを圧縮する(ステップS115、及び、ステップS119)。
【0087】
データ形式決定部112は、圧縮後のQUBOモデルのデータ量と、補助スピンを含むハミルトニアンにおける処理を表すプログラムのデータ量とを比較する(ステップS116)。プログラムのデータ量がQUBOモデルのデータ量以上である場合に(ステップS116にてNO)、データ形式決定部112は、QUBOモデルをサーバ120に送信する(ステップS120)。QUBOモデルのデータ量がプログラムのデータ量よりも大きい場合に(ステップS116にてYES)、データ形式決定部112は、ステップS121に示された処理を実行する。
【0088】
上記のQUBOモデルにおけるマトリックスを、該マトリックスを算出するプログラムと、該マトリックスを算出する基であるデータとに分解することはできないので(ステップS121にてNO)、データ形式決定部112は、プログラムをサーバ120に送信する(ステップS123)。
以降、サーバ120は、図8に示された処理を実行する。
【0089】
例2における情報処理装置110及び情報処理システム101の効果について説明する。
たとえば、50人(参考文献「平成29年医療施設(静態・動態)調査・病院報告の概況」の100床当たりの平均看護師数は52.3人より)について1H(時間)単位で30日間の勤務シフト表を作成するには、最低でも50×24×30=36000ビットが必要である。このような病院、警備、コンビニなどのシフト勤務の業種においても、本実施形態に係る情報処理装置110及び情報処理システム101によれば、実用的な時間にてサービスを受けることができる。
【0090】
<第2の実施形態>
次に、第1の実施形態の基本である本発明の第2の実施形態について説明する。
【0091】
図9を参照しながら、本発明の第2の実施形態に係る情報処理装置200が有する構成について詳細に説明する。図9は、本発明の第2の実施形態に係る情報処理装置200が有する構成を示すブロック図である。
【0092】
第2の実施形態に係る情報処理装置200は、データ形式決定部201を有する。
情報処理装置200は、通信ネットワークを介して、サーバと通信可能に接続されている。情報処理装置200と、サーバとは、伝送路を介して接続されていてもよい。
サーバは、最小エネルギー探索計算法による組み合わせ最適化問題を解くサービスを提供可能であり、該サービスにおける動作を実現するアニーリングエンジンを有する。
次に、図10を参照しながら、本発明の第2の実施形態に係る情報処理装置200における処理について詳細に説明する。図10は、第2の実施形態に係る情報処理装置200における処理の流れを示すフローチャートである。
データ形式決定部201は、アニーリングエンジンにて処理対象であるQUBOモデルのデータ量と、QUBOモデルを表すプログラムのデータ量とを比較する(ステップS201)。該QUBOモデル、及び、該プログラムについては、第1の実施形態にて上述した通りである。
【0093】
データ形式決定部201は、該QUBOモデル、及び、該プログラムのうち、データ量の少ない方を、アニーリングエンジンを有するサーバに送信する(ステップS202)。 サーバは、データ形式決定部201が送信した情報を受信し、受信した情報をアニーリングエンジンに出力する。アニーリングエンジンは、入力した情報に従い動作する。すなわち、アニーリングエンジンは、最小エネルギー探索計算法による組み合わせ最適化問題に対する解を算出する。
【0094】
第2の実施形態に係るデータ形式決定部201は、第1の実施形態に係るデータ形式決定部112(図1)が有する機能と同様な機能を用いて実現することができる。したがって、第2の実施形態に係る情報処理装置200は、第1の実施形態に係る情報処理装置110(図1)の機能と同様な機能を用いて実現することができる。第2の実施形態に係るデータ形式決定部201は、たとえば、第1の実施形態に係る定式分解部111(図1)の機能、及び、データセット作成部113(図1)の機能と同様な機能を有していてもよい。
【0095】
次に、本発明の第2の実施形態に係る情報処理装置200に関する効果について説明する。
本実施形態に係る情報処理装置200によれば、実用的な時間にてサービスの提供を受けることができる。この理由は、QUBOモデル及びプログラムのうち、データ量が少ない方を選びサーバに送信するからである。
【0096】
(ハードウェア構成例)
上述した本発明の各実施形態に係る情報処理システム、情報処理装置、及び、サーバを、1つの計算処理装置(情報処理装置、コンピュータ)を用いて実現するハードウェア資源の構成例について説明する。但し、係る情報処理システム、情報処理装置、及び、サーバは、物理的または機能的に少なくとも2つの計算処理装置を用いて実現されてもよい。また、係る情報処理システム、情報処理装置、及び、サーバは、専用の装置として実現されてもよい。
【0097】
図11は、本発明の各実施形態に係る情報処理システム、情報処理装置、及び、サーバを実現可能な計算処理装置のハードウェア構成例を概略的に示すブロック図である。計算処理装置20は、中央処理演算装置(Central_Processing_Unit、以降「CPU」と表す)21、揮発性記憶装置22、ディスク23、不揮発性記録媒体24、及び、通信インターフェース(以降、「通信IF」と表す)27を有する。計算処理装置20は、量子チップ28を有してもよい。計算処理装置20は、入力装置25、出力装置26に接続可能であってもよい。計算処理装置20は、通信IF27を介して、他の計算処理装置、及び、通信装置と情報を送受信することができる。
【0098】
不揮発性記録媒体24は、コンピュータが読み取り可能な記録媒体、たとえば、コンパクトディスク(Compact_Disc)、デジタルバーサタイルディスク(Digital_Versatile_Disc)である。また、不揮発性記録媒体24は、ユニバーサルシリアルバスメモリ(USBメモリ)、ソリッドステートドライブ(Solid_State_Drive)等であってもよい。不揮発性記録媒体24は、電源を供給しなくてもプログラムを保持し、持ち運びを可能にする。不揮発性記録媒体24は、上述した媒体に限定されない。また、不揮発性記録媒体24の代わりに、通信IF27、及び、通信ネットワークを介して係るプログラムを持ち運びしてもよい。
【0099】
揮発性記憶装置22は、コンピュータが読み取り可能であって、一時的にデータを記憶することができる。揮発性記憶装置22は、DRAM(dynamic random access memory)、SRAM(static random access memory)等のメモリ等である。
【0100】
すなわち、CPU21は、ディスク23に格納されているソフトウェア・プログラム(コンピュータ・プログラム:以下、単に「プログラム」と称する)を、実行する際に揮発性記憶装置22にプログラムをコピーし、演算処理を実行する。CPU21は、プログラムの実行に必要なデータを揮発性記憶装置22から読み取る。表示が必要な場合に、CPU21は、出力装置26に出力結果を表示する。外部からプログラムを入力する場合に、CPU21は、入力装置25からプログラムを読み取る。
【0101】
量子チップ28は、量子力学における量子状態を用いて動作するチップである。量子チップ28は、アニーリングエンジンについて上述したように動作する。アニーリングエンジンにおける動作は、量子チップ28によって実現されていてもよいし、CPU21によって実現されていてもよい。
【0102】
CPU21は、上述した図1、または、図9に示す各部が表す機能(処理)に対応するところの揮発性記憶装置22にある情報処理プログラム(図2図7図8、または、図10)を解釈し実行する。CPU21は、上述した本発明の各実施形態において説明した処理を実行する。
すなわち、このような場合に、本発明の各実施形態は、係る情報処理プログラムによっても成し得ると捉えることができる。さらに、係る情報処理プログラムが記録されたコンピュータが読み取り可能な不揮発性の記録媒体によっても、本発明の各実施形態は成し得ると捉えることができる。
【0103】
以上、上述した実施形態を模範的な例として本発明を説明した。しかし、本発明は、上述した実施形態には限定されない。すなわち、本発明は、本発明のスコープ内において、当業者が理解し得る様々な態様を適用することができる。
【0104】
この出願は、2020年9月23日に出願された日本特願2020-159139号を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【産業上の利用可能性】
【0105】
本発明は、例えば、通信ネットワークを使用したサービスの提供に利用可能である。
【符号の説明】
【0106】
101 情報処理システム
110 情報処理装置
111 定式分解部(定式分解手段)
112 データ形式決定部
113 データセット作成部
151 通信ネットワーク
120 サーバ
121 データ展開部
122 アニーリングエンジン
200 情報処理装置
201 データ形式決定部(データ形式決定手段)
20 計算処理装置
21 CPU
22 揮発性記憶装置
23 ディスク
24 不揮発性記録媒体
25 入力装置
26 出力装置
27 通信IF
28 量子チップ
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11