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

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

▶ 株式会社日立製作所の特許一覧

特開2023-39823情報処理方法、情報処理システム、及び情報処理プログラム
<>
  • 特開-情報処理方法、情報処理システム、及び情報処理プログラム 図1
  • 特開-情報処理方法、情報処理システム、及び情報処理プログラム 図2
  • 特開-情報処理方法、情報処理システム、及び情報処理プログラム 図3
  • 特開-情報処理方法、情報処理システム、及び情報処理プログラム 図4
  • 特開-情報処理方法、情報処理システム、及び情報処理プログラム 図5
  • 特開-情報処理方法、情報処理システム、及び情報処理プログラム 図6
  • 特開-情報処理方法、情報処理システム、及び情報処理プログラム 図7
  • 特開-情報処理方法、情報処理システム、及び情報処理プログラム 図8
  • 特開-情報処理方法、情報処理システム、及び情報処理プログラム 図9
  • 特開-情報処理方法、情報処理システム、及び情報処理プログラム 図10
  • 特開-情報処理方法、情報処理システム、及び情報処理プログラム 図11
  • 特開-情報処理方法、情報処理システム、及び情報処理プログラム 図12
  • 特開-情報処理方法、情報処理システム、及び情報処理プログラム 図13
  • 特開-情報処理方法、情報処理システム、及び情報処理プログラム 図14
  • 特開-情報処理方法、情報処理システム、及び情報処理プログラム 図15
  • 特開-情報処理方法、情報処理システム、及び情報処理プログラム 図16
  • 特開-情報処理方法、情報処理システム、及び情報処理プログラム 図17
  • 特開-情報処理方法、情報処理システム、及び情報処理プログラム 図18
  • 特開-情報処理方法、情報処理システム、及び情報処理プログラム 図19
  • 特開-情報処理方法、情報処理システム、及び情報処理プログラム 図20
  • 特開-情報処理方法、情報処理システム、及び情報処理プログラム 図21
  • 特開-情報処理方法、情報処理システム、及び情報処理プログラム 図22
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023039823
(43)【公開日】2023-03-22
(54)【発明の名称】情報処理方法、情報処理システム、及び情報処理プログラム
(51)【国際特許分類】
   G06F 17/10 20060101AFI20230314BHJP
【FI】
G06F17/10 Z
【審査請求】有
【請求項の数】15
【出願形態】OL
(21)【出願番号】P 2021147128
(22)【出願日】2021-09-09
(71)【出願人】
【識別番号】000005108
【氏名又は名称】株式会社日立製作所
(74)【代理人】
【識別番号】110002365
【氏名又は名称】弁理士法人サンネクスト国際特許事務所
(72)【発明者】
【氏名】高見 知親
(72)【発明者】
【氏名】副島 裕一
【テーマコード(参考)】
5B056
【Fターム(参考)】
5B056BB91
(57)【要約】
【課題】組合せ最適化問題における制約式を格納するメモリの必要容量を削減する。
【解決手段】最適化問題の最適解探索を実行する情報処理システムが実行する情報処理方法では、情報処理システムは、メモリと協働して処理を実行する処理部と、最適化問題のハミルトニアンに適用するデータ量の圧縮方式、圧縮方式の適用可否を示す圧縮可能条件、及び圧縮方式を適用してハミルトニアンを圧縮した場合の該ハミルトニアンの特徴量を表す圧縮形式を対応付けた圧縮方法判定情報を格納する記憶部と、を有する。処理部は、圧縮方法判定情報を参照し、圧縮可能条件を充足するハミルトニアンに含まれる部分を判定し、圧縮可能条件を充足すると判定されたハミルトニアンに含まれる部分を圧縮可能条件に対応する前記圧縮方式により特徴量を抽出して圧縮形式へ圧縮する。
【選択図】図5
【特許請求の範囲】
【請求項1】
最適化問題の最適解探索を実行する情報処理システムが実行する情報処理方法であって、
前記情報処理システムは、
メモリと協働して処理を実行する処理部と、前記最適化問題のハミルトニアンに適用するデータ量の圧縮方式、該圧縮方式の適用可否を示す圧縮可能条件、及び該圧縮方式を適用して該ハミルトニアンを圧縮した場合の該ハミルトニアンの特徴量を表す圧縮形式を対応付けた圧縮方法判定情報を格納する記憶部と、を有し、
前記処理部が、
前記圧縮方法判定情報を参照し、前記圧縮可能条件を充足する前記ハミルトニアンに含まれる部分を判定し、
前記圧縮可能条件を充足すると判定された前記ハミルトニアンに含まれる部分を前記圧縮可能条件に対応する前記圧縮方式により前記特徴量を抽出して前記圧縮形式へ圧縮する
ことを特徴とする情報処理方法。
【請求項2】
請求項1に記載の情報処理方法であって、
前記ハミルトニアンは、2次の制約式であり、
前記処理部が、
前記制約式に含まれる2次項が前記圧縮可能条件を充足する場合に、該2次項を該圧縮可能条件に対応する前記圧縮方式による前記圧縮形式へ圧縮する
ことを特徴とする情報処理方法。
【請求項3】
請求項2に記載の情報処理方法であって、
前記処理部が、
前記制約式が3次以上である場合には、前記制約式の次数を2次へ下げた次数下げ後制約式を生成し、
前記次数下げ後制約式に含まれる2次項が前記圧縮可能条件を充足する場合に、該2次項を該圧縮可能条件に対応する前記圧縮方式による前記圧縮形式へ圧縮する
ことを特徴とする情報処理方法。
【請求項4】
請求項1に記載の情報処理方法であって、
前記ハミルトニアンは、行列であり、
前記処理部が、
前記行列を分割した部分であるブロック行列が前記圧縮可能条件を充足する場合に、該ブロック行列を該圧縮可能条件に対応する前記圧縮方式による前記圧縮形式へ圧縮する
ことを特徴とする情報処理方法。
【請求項5】
請求項4に記載の情報処理方法であって、
前記処理部が、
前記行列を、前記行列の連続して並んだ対角成分を最大限含んで前記圧縮可能条件を充足する1以上のブロック対角行列と、前記行列を該ブロック対角行列へ分割した際の分割線で分割される前記行列の該ブロック対角行列以外のブロック行列と、に分割し、
分割した前記ブロック対角行列及び前記ブロック行列を前記圧縮可能条件に対応する前記圧縮方式による前記圧縮形式へ圧縮する
ことを特徴とする情報処理方法。
【請求項6】
請求項1に記載の情報処理方法であって、
前記処理部が、
前記ハミルトニアンに含まれる部分が前記圧縮可能条件を充足するか否かを、該部分の所定の定式化条件への該非、又は、所定アルゴリズムによって判定する
ことを特徴とする情報処理方法。
【請求項7】
請求項1に記載の情報処理方法であって、
前記圧縮方式は、前記ハミルトニアンに含まれる部分を、N個からM個を選択するN個中M個選択問題、N個の飛車を互いに効きがない状態でマス目上に配置するN飛車問題、N都市を1回ずつ最短距離で訪問するN都市巡回セールスマン問題、零行列、定数行列、疎行列、及び転置行列の何れかのパラメータに置き換える方式である
ことを特徴とする情報処理方法。
【請求項8】
請求項1に記載の情報処理方法であって、
前記処理部が、
圧縮した前記圧縮形式を前記メモリへ格納し、
前記メモリに格納された前記圧縮方式による前記圧縮形式を、該圧縮方式に対応するアルゴリズムで処理することで、前記最適化問題の最適解探索を実行する
ことを特徴とする情報処理方法。
【請求項9】
最適化問題の最適解探索を実行する情報処理システムであって、
メモリと協働して処理を実行する処理部と、前記最適化問題のハミルトニアンに適用するデータ量の圧縮方式、該圧縮方式の適用可否を示す圧縮可能条件、及び該圧縮方式を適用して該ハミルトニアンを圧縮した場合の該ハミルトニアンの特徴量を表す圧縮形式を対応付けた圧縮方法判定情報を格納する記憶部と、を有し、
前記処理部は、
前記圧縮方法判定情報を参照し、前記圧縮可能条件を充足する前記ハミルトニアンに含まれる部分を判定し、
前記圧縮可能条件を充足すると判定された前記ハミルトニアンに含まれる部分を前記圧縮可能条件に対応する前記圧縮方式により前記特徴量を抽出して前記圧縮形式へ圧縮する
ことを特徴とする情報処理システム。
【請求項10】
請求項9に記載の情報処理システムであって、
前記ハミルトニアンは、2次の制約式であり、
前記処理部は、
前記制約式に含まれる2次項が前記圧縮可能条件を充足する場合に、該2次項を該圧縮可能条件に対応する前記圧縮方式による前記圧縮形式へ圧縮する
ことを特徴とする情報処理システム。
【請求項11】
請求項9に記載の情報処理システムであって、
前記ハミルトニアンは、行列であり、
前記処理部は、
前記行列を分割した部分であるブロック行列が前記圧縮可能条件を充足する場合に、該ブロック行列を該圧縮可能条件に対応する前記圧縮方式による前記圧縮形式へ圧縮する
ことを特徴とする情報処理システム。
【請求項12】
請求項11に記載の情報処理システムであって、
前記処理部は、
前記行列を、前記行列の連続して並んだ対角成分を最大限含んで前記圧縮可能条件を充足する1以上のブロック対角行列と、前記行列を該ブロック対角行列へ分割した際の分割線で分割される前記行列の該ブロック対角行列以外のブロック行列と、に分割し、
分割した前記ブロック対角行列及び前記ブロック行列を前記圧縮可能条件に対応する前記圧縮方式による前記圧縮形式へ圧縮する
ことを特徴とする情報処理システム。
【請求項13】
請求項9に記載の情報処理システムであって、
前記処理部は、
前記ハミルトニアンに含まれる部分が前記圧縮可能条件を充足するか否かを、該部分の所定の定式化条件への該非、又は、所定アルゴリズムによって判定する
ことを特徴とする情報処理システム。
【請求項14】
請求項9に記載の情報処理システムであって、
前記圧縮方式は、前記ハミルトニアンに含まれる部分を、N個からM個を選択するN個中M個選択問題、N個の飛車を互いに効きがない状態でマス目上に配置するN飛車問題、N都市を1回ずつ最短距離で訪問するN都市巡回セールスマン問題、零行列、定数行列、疎行列、及び転置行列の何れかのパラメータに置き換える方式である
ことを特徴とする情報処理システム。
【請求項15】
請求項9~14の何れか1項に記載の情報処理システムとしてコンピュータを機能させるための情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理方法、情報処理システム、及び情報処理プログラムに関する。
【背景技術】
【0002】
物理現象や社会現象の多くは相互作用モデルで表現可能である。相互作用モデルは、モデルを構成する複数のノード、ノード間の相互作用、及びノード毎に作用する係数で定義される。物理学や社会科学等の分野において、イジングモデルを始めとする種々のモデルが提案されているが、いずれも相互作用モデルの一態様である。そして、物理学や社会科学等の問題は、相互作用モデルに関係付けられた指標を最小化又は最大化するノード状態を求める二値二次の組合せ最適化問題に置き換えられる。
【0003】
二値二次の組合せ最適化問題では、制約式の集合は、例えばイジングモデルにおけるスピン系のハミルトニアンとして記述される。制約式は、例えばスピンと呼ばれる変数を含む式であり、制約式の値が最小となるようなスピンの値の組合せが二値二次の組合せ最適化問題の解に対応する。制約式は、例えばH=(S+S+S+S+2)のように2次のハミルトニアンHで表される。ここでS、S、S、Sはスピン変数であり、-1又は1(あるいは0又は1)の値を取る。この制約式Hの例では、1個のスピンが1で残りのスピンが-1になる場合にHが最小(=求める状態(解に対応))になる。
【0004】
一般的に二値二次の組合せ最適化問題は、疑似アニーリング計算機を用いて求解される。疑似アニーリングで扱う問題における制約式Hを行列で記述すると式(1)のように表される。疑似アニーリング計算機は、式(1)のように、行列(Jij)とベクトルhで表現される問題を入力とし、ハミルトニアンHを最小化するσを探索する。
【数1】
【0005】
このように二値二次の組合せ最適化問題における制約式を行列で表すと、N次(正方)行列となるため、制約式を疑似アニーリング計算機のメモリに格納する際、行列の1要素あたりnバイトとして、n×Nバイトのメモリ容量が必要になる。これに関して、行列を特異値分解と内積計算を用いて圧縮することで、制約式を格納するために必要なメモリ容量を削減する技術が提案されている(例えば特許文献1参照)。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開2017-142629号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
しかしながら、上述の従来技術では、入力行列をN次行列とした場合に、依然としてNのオーダーのメモリ容量を必要としており、メモリの必要容量のさらなる削減の余地がある。
【0008】
本発明は、上述の問題に鑑みてなされたものであり、組合せ最適化問題における制約式を格納するメモリの必要容量を削減することを1つの目的とする。
【課題を解決するための手段】
【0009】
上述した課題を解決するため、本発明の一態様では、最適化問題の最適解探索を実行する情報処理システムが実行する情報処理方法であって、前記情報処理システムは、メモリと協働して処理を実行する処理部と、前記最適化問題のハミルトニアンに適用するデータ量の圧縮方式、該圧縮方式の適用可否を示す圧縮可能条件、及び該圧縮方式を適用して該ハミルトニアンを圧縮した場合の該ハミルトニアンの特徴量を表す圧縮形式を対応付けた圧縮方法判定情報を格納する記憶部と、を有し、前記処理部が、前記圧縮方法判定情報を参照し、前記圧縮可能条件を充足する前記ハミルトニアンに含まれる部分を判定し、前記圧縮可能条件を充足すると判定された前記ハミルトニアンに含まれる部分を前記圧縮可能条件に対応する前記圧縮方式により前記特徴量を抽出して前記圧縮形式へ圧縮することを特徴とする。
【発明の効果】
【0010】
本発明によれば、例えば、組合せ最適化問題における制約式を格納するメモリの必要容量を削減することができる。
【図面の簡単な説明】
【0011】
図1】N個中M個選択問題を説明するための図。
図2】N飛車問題を説明するための図。
図3】N都市巡回セールスマン問題を説明するための図。
図4】ハミルトニアンの圧縮を説明するための図。
図5】実施形態1の全体システムの構成を示す図。
図6】実施形態1の第1の圧縮方法判定テーブルを示す図。
図7】実施形態1の第2の圧縮方法判定テーブルを示す図。
図8】実施形態1の変数グループテーブルを示す図。
図9】実施形態1の分割情報テーブルを示す図。
図10】実施形態1の全体処理を示すフローチャート。
図11】実施形態1の圧縮処理の前半処理を示すフローチャート。
図12】実施形態1の圧縮処理の前半処理の入出力を示す図。
図13】実施形態1の圧縮処理の後半処理を示すフローチャート。
図14】実施形態1の圧縮処理の後半処理の入出力を示す図。
図15】実施形態1の圧縮形式を用いた行列計算処理を示すフローチャート。
図16】実施形態2の全体システムの構成を示す図。
図17】実施形態2の第1の圧縮方法判定テーブルを示す図。
図18】実施形態2の全体処理を示すフローチャート。
図19】実施形態2の圧縮処理を示すフローチャート。
図20】実施形態2の圧縮処理における分割箇所決定処理を示すフローチャート。
図21】実施形態2における行列分割を説明するための図。
図22】実施形態の情報処理システムを実現するコンピュータのハードウェアの構成例を示す図。
【発明を実施するための形態】
【0012】
以下、図面を参照して本発明の実施形態を説明する。実施形態は、図面を含め、本発明を説明するための例示に過ぎず、本発明を限定するものではなく、説明の明確化のため、適宜、省略及び簡略化がなされている。本発明は、他の種々の形態や各形態の一部又は全部を組合せた形態でも実施することが可能である。特に限定しない限り、各構成要素は単数でも複数でもよい。
【0013】
同一あるいは同様の機能を有する構成要素が複数ある場合には、同一の符号に異なる添字を付して説明する場合がある。また、これらの複数の構成要素を区別する必要がない場合には、添字を省略して説明する場合がある。
【0014】
実施形態では、テーブル形式で情報を例示するが、情報はテーブル形式に限らずその他の形式であってもよい。
【0015】
<実施形態に関する数学的背景>
例えば疑似アニーリングにおけるノードの全結合問題を行列で表現すると、行列の全要素が必要となる。問題によっては、ほとんどの行列要素が0である疎行列となり、疎行列の演算ライブラリを用いて行列を圧縮することができる。一方、密行列の場合は、疎行列と同様の手法では行列を圧縮できない。ここで行列の圧縮とは、行列をその全要素を用いて表すのではなく、行列の特徴に着目して、全要素を用いる場合と比較して少ない情報量で行列を表すことをいう。
【0016】
そこで本願が開示する実施形態では、ハミルトニアンを、所定の圧縮形式へ変換してから擬似アニーリング計算機へ入力する方法を採用する。所定の圧縮形式へ変換する方法は、ハミルトニアンの設計と密接に関係している。ゆえにハミルトニアンの設計に応じて所定の圧縮形式が定まるため、ハミルトニアンの制約式から、所定の圧縮形式を直接計算することも、行列を経て所定の圧縮形式へ変換することもできる。
【0017】
また擬似アニーリング計算機は、所定の圧縮形式の入力に対する計算を実行する機能部を備える。
【0018】
通常、ハミルトニアンHは、複数の制約式の加算で記述される。各制約式はハミルトニアンHの行列(Jij)の部分行列に対応して記述される場合が多い。また制約式には、複数種類の「特定の問題」が用いられることが多い。また「特定の問題」を記述するパラメータは、行列(Jij)の行列要素数よりも少ないことが多い。
【0019】
これらのことから、制約式を行列へ展開するのではなく、制約式を「特定の問題」のパラメータ(あるいは制約の圧縮表現パラメータ)に置き換えてメモリに保持することで、メモリの使用量を削減することができる。また各「特定の問題」に対応する計算プログラムを予め用意しておくことで、問題の種類によっては演算処理の高速化も図ることができる。
【0020】
以下、疑似アニーリング計算機の入力情報である所定の圧縮形式の生成方法の例を説明する。上述の「特定の問題」の具体例を挙げると、「N個中M個選択問題」、「N飛車問題」、「巡回セールスマン問題」等がある。
【0021】
(N個中M個選択問題)
図1は、N個中M個選択問題を説明するための図である。例えば「4個のスピンのうちの1個のスピンだけ1を選択する」という制約式を考える。この制約式は、図1に示すハミルトニアンH1で表される。なおハミルトニアンH1の式変形では、S∈{-1,-1}(i=1,2,3,4)とし、S =1になることを用いている。
【0022】
従来技術では、ハミルトニアンH1を、符号を反転させた各項を要素に持つ行列M1(図1)へ変換し、行列M1をメモリに保持する。行列M1は、スピン変数の数がNの場合、N次(正方)行列となる。図1の例ではN=4のため、行列は4次行列となり、要素数(データ数)は16となる。
【0023】
一方「N個のスピンのうちのM個のスピンだけ1を選択する」という「N個中M個選択問題」を表す行列の対角成分は全て同一値(-N/2+M)になる。また非対角成分は全て同一値(-0.5)になる。なおスピン変数がS∈{0,-1}(i=1,2,3,4)であっても同様である。よって「N個中M個選択問題」であるならば、M及びNの要素数2の圧縮形式F1は、行列M1と等価の情報であると言える。なお対角成分=-N/2+M、非対角成分=-0.5を圧縮形式F1としてもよい。
【0024】
本実施形態では、「N個中M個選択問題」の場合、「N個中M個選択問題」に対応する計算プログラムを用いて、圧縮形式F1を入力とし、ハミルトニアンの各状態における値を計算する。
【0025】
このように、従来技術ではN次行列を基に行列計算を実行する一方で、本実施形態では、要素数2の圧縮形式F1を基に行列計算を実行する。つまり従来技術と比較して、より情報量が少ない圧縮形式F1を基に最適値の計算を実行することができるため、ハミルトニアンを記憶するメモリの必要容量を削減できる。
【0026】
なお問題によっては行列の成分の99%以上が0となる場合もある。従来技術の計算方法では行列の成分の値に関わらず計算時間は同一であるが、実施形態の場合、そのような問題では大部分の計算を省略することで処理の高速化を図ることができる。
【0027】
<N飛車問題>
図2は、N飛車問題を説明するための図である。
【0028】
問題が「N飛車問題」であることは、問題が「N飛車問題」として設定されたことによって判別される、又は、所定の判別アルゴリズムによって判別される。
【0029】
問題が「N飛車問題」であることが所定の判別アルゴリズムによって判別される例を説明する。「N飛車問題」は、「N飛車問題」に対応する計算プログラムを用いて、N×Nのマス目上の各スピンの座標S=(x,y)(i=1,2,・・・,N)を入力として解くことができる。
【0030】
問題を表すハミルトニアンの2次の制約式の各項の係数を所定ルールに従って並べたn次行列のN次(N<n)の「特定パターンの部分行列」が「N個中1個選択問題」に該当すると判別される例について説明する。
【0031】
ここで「特定パターンの部分行列」とは、n次行列の行及び列をそれぞれ(n-N)本ずつ除外した特定の部分行列である。図2に示す行列M2は、n=4、N=2の例であり、「行列M2から第3行、第4行、第3列、及び第4列を除外した2次行列」、「行列M2から第1行、第2行、第1列、及び第2列を除外した2次行列」、「行列M2から第2行、第4行、第2列、及び第4列を除外した2次行列」、「行列M2から第1行、第3行、第1列、及び第3列を除外した2次行列」の何れの「特定パターンの部分行列」も、対角成分が0、非対角成分が-0.5の「2個中1個選択問題」を表す行列となっている。
【0032】
一般的に「N飛車問題」では、N個の飛車を、互いに利きがない状態でN×Nのマス目に配置する。N×Nの各マス目に対してスピンS,S,・・・,S,SN+1,・・・,SN×Nを割当てる。この場合、{S,S,・・・,S}、{SN+1,SN+2,・・・,S2N}、・・・、{S(N-1)×N+1,S(N-1)×N+2,・・・,SN×N}、{S,SN+1,・・・,S(N-1)×N+1}、{S,SN+2,・・・,S(N-1)×N+2}、・・・、{S,S2N,・・・,SN×N}のスピンのN×N個の各組合せがそれぞれ「N個中1個選択問題」を表す。図2の下方図に示す例は、N=2であり、2×2のマス目に対してスピンS,S,S,Sを割当て、{S,S}、{S,S}、{S,S}、{S,S}のスピンの2×2個の各組合せがそれぞれ「2個中1個選択問題」となっている。
【0033】
逆に、問題のハミルトニアンの2次の制約式を表すn次行列のN次の部分行列の集合が、{S,S,・・・,S}、{SN+1,SN+2,・・・,S2N}、・・・、{S(N-1)×N+1,S(N-1)×N+2,・・・,SN×N}、{S,SN+1,・・・,S(N-1)×N+1}、{S,SN+2,・・・,S(N-1)×N+2}、・・・、{S,S2N,・・・,SN×N}のスピンの各組合せによる「N個中1個選択問題」を表す行列を全て含む、と所定の判別プログラムによって判別されるならば、このn次行列で表される問題は「N飛車問題」として解くことができると判定できる。
【0034】
このように「N飛車問題」は、「N個中N個選択問題」と同様に、ハミルトニアンの2次の制約式の2次項の係数に着目することで「N飛車問題」であると判別できるし、ハミルトニアンの行列の要素に着目することでも「N飛車問題」であると判別できる。
【0035】
よって問題が「N飛車問題」であるならば、「各スピンのN×Nのマス目上の座標S=(x,y)」の要素数3Nの圧縮形式は、行列M2と等価の情報であると言える。
【0036】
実施形態では、「N飛車問題」の場合、「N飛車問題」に対応する計算プログラムを用いて、「各スピンのN×Nのマス目上の座標S=(x,y)」を入力として解く。
【0037】
このように、「N飛車問題」も、行列よりも情報量が少ない圧縮形式を基に最適値の計算を実行することができ、問題のハミルトニアンを格納するメモリの必要容量を削減できる。
【0038】
<N都市巡回セールスマン問題>
図3は、N都市巡回セールスマン問題を説明するための図である。
【0039】
問題が「N都市巡回セールスマン問題」であることは、問題が「N都市巡回セールスマン問題」として設定されたことによって判別される、又は、所定の判別アルゴリズムによって判別される。
【0040】
「N都市巡回セールスマン問題」は、「N個の各都市は1度しか訪問できない」、「同時に複数都市を訪問できない」、「各都市間の距離を考慮する」の制約条件を考慮して、N個の各都市の巡回順序を最適化する問題である。図3はN=4の場合の「4都市巡回セールスマン問題」のグラフを表し、ノード1~4が都市に該当し、ノード間のエッジに付されているd~dが各ノード間の距離である。
【0041】
「N都市巡回セールスマン問題」の制約のうち、「N個の各都市は1度しか訪問できない」及び「同時に複数都市を訪問できない」の2つは、「N飛車問題」で記述可能である。
【0042】
さらに「N飛車問題」に「各都市間の距離を考慮する」という制約条件を追加することで、「N都市巡回セールスマン問題」を表現できる。各都市間の距離は、一般的に規則性が無いため、制約式や行列での圧縮は困難であるが、各都市を座標表現することで都市間の距離情報を圧縮可能である。
【0043】
よって「N都市巡回セールスマン問題」も、「N個中N個選択問題」及び「N飛車問題」と同様に、ハミルトニアンの2次の制約式の2次項の係数に着目して「N都市巡回セールスマン問題」であると判別できるし、ハミルトニアンの行列の要素に着目しても「N都市巡回セールスマン問題」であると判別できる。
【0044】
ただし「N飛車問題」に都市間の距離情報を追加して「N都市巡回セールスマン問題」を圧縮する際、情報の圧縮効果があるのは、N≧6の場合である。
【0045】
実施形態では、「N都市巡回セールスマン問題」の場合、図3の下方の図に示すように変数qijを定め、「N都市巡回セールスマン問題」に対応する計算プログラムを用いて、N個の各都市の各座標Z=(x,y)」(i=1,2,・・・,N)(データ数は2N)を入力とし、変数qijの値を計算する。変数qijは、例えば都市iをj番目に巡回する場合に1、それ例外は0の値をとる。「N都市巡回セールスマン問題」は手動で設定されるとするが、計算機によって機械的に設定されてもよい。
【0046】
実施形態では、「N都市巡回セールスマン問題」の場合、「N都市巡回セールスマン問題」に対応する計算プログラムを用いて、「N個の全ての都市の座標Z=(x,y)」(i=1,2,・・・,N)を入力として解く。
【0047】
このように、「N都市巡回セールスマン問題」も、行列よりも情報量が少ない圧縮形式を基に最適値の計算を実行することができ、問題のハミルトニアンを格納する際のメモリの必要容量を削減できる。
【0048】
一般的に、実問題を直接行列化すると、実問題と既知の特定の問題(「N個中M個選択問題」、「N飛車問題」、「N都市巡回セールスマン問題」等)との関係が見えづらくなる。実施形態では、実問題と既知の「特定の問題」との関係を考察し、実問題を「既知の問題」の組合せとして捉えることで、実問題を表すハミルトニアンの制約式又は行列の特徴を容易に見い出し、その情報量を圧縮するようにした。
【0049】
図4は、ハミルトニアンの圧縮を説明するための図である。
【0050】
実際に疑似アニーリングに与えられる問題は、N個中M個選択問題のように単純ではなく、様々な要素がハミルトニアンに含まれる。そこで図4に例示するように、ハミルトニアンを表す入力行列(あるいはハミルトニアンの2次の制約式の係数を要素に持つ行列)を行列分割によって複数の領域に区切り、各領域が何れの「特定の問題」(「N個中M個選択問題」、「N飛車問題」、「N都市巡回セールスマン問題」等)、又は「特定の領域」(「零行列」、「定数行列」、「疎行列」、「転置行列」等)に該当するかを判定する。
【0051】
行列の複数の領域への分割パターンは、スピンの割当て方法(例えば複数のスピンから1つのスピンを選ぶ等)に依存するため、制約式の作成時に決まる。行列の複数の領域への分割は、プログラム処理によって実行できる。つまりプログラム処理によって、ハミルトニアンから行列の複数の領域へ直接分割することができる。そして行列の複数の領域が「特定の問題」又は「特定の領域」に該当する場合には対応する圧縮形式でデータを圧縮できる。
【0052】
圧縮方法(既知の特定の問題)が数パターンもあれば、実用上は8割以上の実問題に適用できることが分かっている。よって実施形態の圧縮方法を採用することで、メモリの必要容量の削減と、実問題の種別によっては計算処理時間の短縮を図ることができる。
【0053】
なお実施形態では、分かりやすさのために、ハミルトニアンの制約式を行列に準えて圧縮形式へ変換するように説明している。しかし実際は、ハミルトニアンの制約式を行列へ変換することなく制約式の各項の係数に着目して圧縮形式へ直接変換する場合と、ハミルトニアンの制約式の行列を圧縮形式へ直接変換する場合の両ケースがある。
【0054】
<実施形態1>
以下、入力されたハミルトニアンの制約式を圧縮形式へ変換することで、行列よりも少ない情報量でハミルトニアンを表現し、記憶するメモリ容量を削減する実施形態1を説明する。
【0055】
(実施形態1の全体システム1の構成)
図5は、実施形態1の全体システム1の構成例を示す図である。全体システム1は、公衆網又は閉域網のネットワーク3を介して通信可能に接続された情報処理システム2、入力装置4、及び出力装置5を含んで構成される。入力装置4は、ユーザ入力を受付けるキーボード等の入力部41と、ディスプレイ等の出力部(不図示)と、を有する。出力装置5は、ディスプレイ等の出力部51を有する。入力装置4と出力装置5は、同一装置及び別装置の何れでもよい。
【0056】
情報処理システム2は、入力情報を基に疑似アニーリングを実行するクラウド又はオンプレミスの計算機である。情報処理システム2は、ハミルトニアン圧縮形式変換部21と、圧縮形式計算部22と、を有する。また情報処理システム2は、第1の圧縮方法判定テーブル2T1(図6)、第2の圧縮方法判定テーブル2T2(図7)、変数グループテーブル2T3(図8)、及び分割情報テーブル2T4(図9)を所定の記憶領域(不図示)に保持している。
【0057】
ハミルトニアン圧縮形式変換部21は、入力装置4の入力部41を介して入力されたハミルトニアンを圧縮する際、第1の圧縮方法判定テーブル2T1及び第2の圧縮方法判定テーブル2T2を参照して圧縮方法を判定する。そしてハミルトニアン圧縮形式変換部21は、判定された圧縮方法に従って、ハミルトニアンを圧縮形式(圧縮データ)へ変換する。ハミルトニアン圧縮形式変換部21の処理の詳細は、後述する。
【0058】
圧縮形式計算部22は、ハミルトニアン圧縮形式変換部21によって変換された圧縮形式を基に演算を行う。圧縮形式計算部22は、演算の結果を、出力部51から出力すべく出力装置5へ送信する。圧縮形式計算部22の処理の詳細は、後述する。
【0059】
(実施形態1の情報処理システム2が有する各種テーブル)
図6図9は、実施形態1の情報処理システム2が有する各種テーブルを示す図である。情報処理システム2は、第1の圧縮方法判定テーブル2T1(図6)、第2の圧縮方法判定テーブル2T2(図7)、変数グループテーブル2T3(図8)、及び分割情報テーブル2T4(図9)を所定の記憶領域(不図示)に保持している。
【0060】
第1の圧縮方法判定テーブル2T1(図6)は、入力されたハミルトニアンの圧縮方法を判別するためのテーブルであり、圧縮方法名、圧縮可能条件、及びパラメータの列を有する。ハミルトニアン圧縮形式変換部21(図5)は、後述する圧縮処理の前半処理(図11)を実行する際に第1の圧縮方法判定テーブル2T1を参照し、入力されたハミルトニアンから特徴量を抽出し、特徴量を基に、該当する圧縮可能条件に対応する圧縮方法のパラメータ(圧縮データ)へ圧縮する。
【0061】
例えばハミルトニアン圧縮形式変換部21は、入力されたハミルトニアンが(S+S+…-M)(Sは0又は1のスピン)の形式で記述されている領域を含むと判定した場合には、第1の圧縮方法判定テーブル2T1の#1のエントリから、この領域が圧縮方法名「N個中M個選択問題」に該当すると認識する。Sが-1又は1のスピンである場合には、入力されたハミルトニアンが(S+S+…+M)の形式で記述されている領域を含むかを判定する。ここでの領域とは、入力されたハミルトニアンの少なくとも一部の2次項を含む多項式をいう。そしてハミルトニアン圧縮形式変換部21は、入力されたハミルトニアンの該当領域を「N及びM」のパラメータへ圧縮する。なお圧縮パラメータを、対角成分=-N/2+M、非対角成分=-0.5としてもよい。
【0062】
また例えばハミルトニアン圧縮形式変換部21は、入力されたハミルトニアンが「N飛車問題」に該当する領域を含むと判定した場合に、入力されたハミルトニアンの該当領域を、N×Nのマス目上の各スピンS=(x,y)(i=1,2,・・・,N×N)の座標へ圧縮する。入力されたハミルトニアンが「N飛車問題」として設定されている領域を含む場合、または判定プログラムによって判別式のパターン及び値が「N飛車問題」に該当すると判別された場合に、該当領域が「N飛車問題」のパラメータへ圧縮される。
【0063】
また例えばハミルトニアン圧縮形式変換部21は、入力されたハミルトニアンが「N都市巡回セールスマン問題」に該当する領域を含むと判定した場合に、入力されたハミルトニアンの該当領域を、N個の全ての都市の座標Z=(X,Y)(i=1,2,・・・,N)へ圧縮する。入力されたハミルトニアンが「N都市巡回セールスマン問題」として設定されている領域を含む場合、または判定プログラムによって判別式のパターン及び値が「N都市巡回セールスマン問題」に該当すると判別された場合に、該当領域が「N都市巡回セールスマン問題」のパラメータへ圧縮される。
【0064】
第2の圧縮方法判定テーブル2T2(図7)は、入力されたハミルトニアンのうち、第1の圧縮方法判定テーブル2T1(図6)によって圧縮された領域以外を対象として、その領域の圧縮方法を判別するためのテーブルである。第2の圧縮方法判定テーブル2T2は、圧縮方法名、圧縮可能条件、及びパラメータの列を有する。ハミルトニアン圧縮形式変換部21は、後述する圧縮処理の後半処理(図13)を実行する際に第2の圧縮方法判定テーブル2T2を参照し、入力されたハミルトニアンから特徴量を抽出し、特徴量を基に、該当する圧縮可能条件に対応する圧縮方法のパラメータ(圧縮データ)へ圧縮する。
【0065】
例えばハミルトニアン圧縮形式変換部21は、入力されたハミルトニアンの該当領域に項が全くないと判定した場合には、第2の圧縮方法判定テーブル2T2の#1のエントリから、この領域が圧縮方法名「零行列」に該当すると認識する。そしてハミルトニアン圧縮形式変換部21は、入力されたハミルトニアンの該当領域を「パラメータなし(N/A)」へ圧縮する。
【0066】
また例えばハミルトニアン圧縮形式変換部21は、入力されたハミルトニアンの該当領域の項の係数が非零の同一値であると判定した場合には、第2の圧縮方法判定テーブル2T2の#2のエントリから、この領域が圧縮方法名「定数行列」に該当すると認識する。そしてハミルトニアン圧縮形式変換部21は、入力されたハミルトニアンの該当領域をその領域に含まれる「定数」へ圧縮する。
【0067】
また例えばハミルトニアン圧縮形式変換部21は、入力されたハミルトニアンの該当領域の非零の項の数が所定比率(例えば1/3)未満であると判定した場合には、第2の圧縮方法判定テーブル2T2の#3のエントリから、この領域が圧縮方法名「疎行列」に該当すると認識する。そしてハミルトニアン圧縮形式変換部21は、入力されたハミルトニアンの該当領域をその領域に含まれる「非零の要素」へ圧縮する。
【0068】
また例えばハミルトニアン圧縮形式変換部21は、入力されたハミルトニアンの該当領域が他の領域の転置行列であると判定した場合には、第2の圧縮方法判定テーブル2T2の#4のエントリから、その領域が圧縮方法名「転置行列」に該当すると認識する。そしてハミルトニアン圧縮形式変換部21は、入力されたハミルトニアンの該当領域を転置の元となる領域を特定可能な情報R(x,y)へ圧縮する。
【0069】
変数グループテーブル2T3(図8)は、入力されたハミルトニアンを表す行列をブロックに分割した際に各ブロックに含まれる変数(スピン)を記録するテーブルである。
【0070】
分割情報テーブル2T4(図9)は、入力されたハミルトニアンを表現する行列をブロックに分割し、ブロック毎の圧縮方法及びパラメータを記録するテーブルである。例えば入力されたハミルトニアンを含んだ行列を分割したブロックのうち行方向のグループ#1及び列方向のグループ#1で特定されるブロックは、圧縮方法が「Nα個中Mα個選択問題」であり、パラメータが「Nα:2、Mα:1」である。
【0071】
(実施形態1の全体処理)
図10は、実施形態1の全体処理を示すフローチャートである。図10に示すように、情報処理システム2は、ハミルトニアン(制約式)21inを入力として、結果(N×1行列)21outを出力する。情報処理システム2のハミルトニアン圧縮形式変換部21(図5)は、ステップS1の圧縮処理の前半処理(ステップS11)において、ハミルトニアン(制約式)21inの少なくとも一部の領域を、「N個中M個選択問題」、「N飛車問題」、「N都市巡回セールスマン問題」等の圧縮形式(圧縮データ)へ変換する。前半処理の詳細は後述する。
【0072】
またステップS11に続く後半処理(ステップS12)において、ハミルトニアン圧縮形式変換部21は、前半処理で「N個中M個選択問題」、「N飛車問題」、「N都市巡回セールスマン問題」等の圧縮形式へ変換された領域以外を、「零行列」、「定数行列」、「疎行列」、「転置行列」等の圧縮形式へ変換する。後半処理の詳細は後述する。
【0073】
ステップS13では、圧縮形式計算部22(図5)は、ステップS11及びS12で変換された圧縮形式を用いた行列計算処理を実行する。圧縮形式を用いた行列計算処理の詳細は後述する。
【0074】
(実施形態1の圧縮処理の前半処理)
図11は、実施形態1の圧縮処理の前半処理を示すフローチャートである。本フローチャートは、制約式を「特定の問題」に対応する圧縮形式へ変換する手順を示す。圧縮処理の前半処理は、ユーザによるハミルトニアンの入力を契機として情報処理システム2によって実行される。
【0075】
前提条件として、ハミルトニアンは2次式で記述されているものとする。3次以上の制約式の場合は、周知の手法によりスピンを追加することで2次式に次数を下げた次数下げ後制約式を処理対象とする。制約式が1次式以下の場合は、アニーリングを実行するまでもなく解が求まるので対象外とする。
【0076】
先ずステップS111では、ハミルトニアン圧縮形式変換部21は、ハミルトニアン(制約式)21inの入力を受付ける。次にステップS112では、ハミルトニアン圧縮形式変換部21は、ハミルトニアン(制約式)21inのうちの圧縮候補の一つを選択する。圧縮候補は、ハミルトニアンの少なくとも一部の項からなる多項式である。例えば圧縮候補としてハミルトニアンの先頭の項から、項単位で順次選択していってもよい。
【0077】
次にステップS113では、ハミルトニアン圧縮形式変換部21は、第1の圧縮方法判定テーブル2T1を参照し、ステップS112で選択した圧縮候補が圧縮可能か、すなわち第1の圧縮方法判定テーブル2T1の圧縮可能条件の何れかに該当するか否かを判定する。ハミルトニアン圧縮形式変換部21は、圧縮候補が圧縮可能である場合(ステップS113YES)にステップS114へ処理を移し、圧縮候補が圧縮不可能である場合(ステップS113NO)にステップS116へ処理を移す。ステップS112で選択した圧縮候補が第1の圧縮方法判定テーブル2T1の複数の圧縮可能条件に合致する場合は、第1の圧縮方法判定テーブル2T1の先頭に近いエントリを優先する等の所定の選択ルールを設けておき、1つの圧縮方法が選択されるようにする。
【0078】
ステップS114では、ハミルトニアン圧縮形式変換部21は、ステップS113で圧縮可能と判定した圧縮候補に含まれる変数(スピン)を変数グループテーブル2T3へ格納する。なおステップS113で圧縮可能と判定された複数の圧縮候補に含まれる変数は、独立した変数グループに属するとする。
【0079】
次にステップS115では、ハミルトニアン圧縮形式変換部21は、第1の圧縮方法判定テーブル2T1において、ステップS113で圧縮可能と判定した圧縮候補の圧縮可能条件に該当する圧縮方法及びパラメータを、分割情報テーブル2T4へ格納する。
【0080】
次にステップS116では、ハミルトニアン圧縮形式変換部21は、全ての圧縮候補をチェックしたか否かを判定する。ハミルトニアン圧縮形式変換部21は、全ての圧縮候補をチェックした場合(ステップS116YES)に本前半処理を終了し、チェックしていない圧縮候補が存在する場合(ステップS116NO)にステップS112へ処理を戻す。
【0081】
(実施形態1の圧縮処理の前半処理の入出力)
図12は、実施形態1の圧縮処理の前半処理の入出力を示す図である。例えばハミルトニアン(制約式)21inが、図12の(a)に示すような多項式であるとする。図12の(a)に示すハミルトニアンHの先頭から第1項目は、(S+S-1)の形式の圧縮候補であり、第1の圧縮方法判定テーブル2T1によれは、圧縮方法が「2個中1個選択問題」であり圧縮可能であることが分かる。また変数S及びSが同一グループに属する変数であり、図12の(b)に示すように、変数S及びSへ同一の変数グループ#1が付与されて変数グループテーブル2T3へ格納される。
【0082】
同様に図12の(a)に示すハミルトニアンHの先頭から第2項目は、(S+S-1)の形式の圧縮候補であり、第1の圧縮方法判定テーブル2T1によれは、圧縮方法が「2個中1個選択問題」であり圧縮可能であることが分かる。また変数S及びSが同一グループに属する変数であり、図12の(b)に示すように、変数S及びSへ同一の変数グループ#2が付与されて変数グループテーブル2T3へ格納される。
【0083】
すなわち図12の(c)に示すように、ハミルトニアンHは、変数S~Sを行及び列にもつ行列M3で表すと、行方向の変数グループ#1及び列方向の変数グループ#1で特定されるブロックB1に該当する領域と、行方向の変数グループ#2及び列方向の変数グループ#2で特定されるブロックB2に該当する領域と、に分割されることが分かる。
【0084】
そしてブロックB1及びB2は「N=2及びM=1」のパラメータへ圧縮されるので、それぞれに対応付けて「圧縮方法」及び「パラメータ」が分割情報テーブル2T4へ記録される。
【0085】
以上の処理が圧縮処理の前半処理における全ての圧縮候補について実行されると、圧縮処理の前半処理が終了する。
【0086】
この例では、複数の変数グループ情報に属するスピン変数は存在しない。すなわち領域(ブロック)の重複部分がない。しかし、複数の領域が重なってもよく、重なる領域に属するスピン変数は別の変数グループとする。例えば、S、S、Sが属する領域が作成され、S、Sが属する領域が作成された場合には、複数の変数グループに属する変数Sは独立グループに属するとし、変数グループ#1:S、S、変数グループ#2:S、変数グループ#3:S、のように変数をグループ分けし、行列を分割する。
【0087】
(実施形態1の圧縮処理の後半処理)
図13は、実施形態1の圧縮処理の後半処理を示すフローチャートである。本フローチャートは、制約式を「特定の領域」に対応する圧縮形式へ変換する手順を示す。圧縮処理の後半処理は、圧縮処理の前半処理に引き続いて情報処理システム2によって実行される。
【0088】
本後半処理では、圧縮処理の後半処理(図11)において圧縮されていない領域を対象とする。
【0089】
先ずステップS121では、ハミルトニアン圧縮形式変換部21は、圧縮処理の前半処理(図11)において圧縮されていない領域から圧縮候補を一つ選択する。圧縮候補は、ハミルトニアンの少なくとも一部の項からなる多項式である。例えば圧縮候補としてハミルトニアンの先頭の項から、項単位で未圧縮の項を順次選択していってもよい。
【0090】
次にステップS122では、ハミルトニアン圧縮形式変換部21は、第2の圧縮方法判定テーブル2T2を参照し、ステップS121で選択した圧縮候補が圧縮可能か、すなわち第2の圧縮方法判定テーブル2T2の圧縮可能条件の何れかに該当するか否かを判定する。ハミルトニアン圧縮形式変換部21は、圧縮候補が圧縮可能である場合(ステップS122YES)にステップS123へ処理を移し、圧縮候補が圧縮不可能である場合(ステップS122NO)にステップS125へ処理を移す。ステップS121で選択した圧縮候補が第2の圧縮方法判定テーブル2T2の複数の圧縮可能条件に合致する場合は、第2の圧縮方法判定テーブル2T2の先頭に近いエントリを優先する等の所定の選択ルールを設けておき、1つの圧縮方法が選択されるようにする。
【0091】
ステップS123では、ハミルトニアン圧縮形式変換部21は、ステップS122で圧縮可能と判定した圧縮候補に含まれる変数(スピン)のうち未格納の変数を変数グループテーブル2T3へ格納する。なおステップS122で圧縮可能と判定された複数の圧縮候補に含まれる変数は、独立した変数グループに属するとする。
【0092】
次にステップS124では、ハミルトニアン圧縮形式変換部21は、ステップS122で圧縮可能と判定した圧縮候補の圧縮可能条件に該当する圧縮方法及びパラメータを、分割情報テーブル2T4へ格納する。
【0093】
次にステップS125では、ハミルトニアン圧縮形式変換部21は、全ての圧縮候補をチェックしたか否かを判定する。ハミルトニアン圧縮形式変換部21は、全ての圧縮候補をチェックした場合(ステップS125YES)に本後半処理を終了し、チェックしていない圧縮候補が存在する場合(ステップS125NO)にステップS121へ処理を戻す。
【0094】
(実施形態1の圧縮処理の後半処理の入出力)
図14は、実施形態1の圧縮処理の後半処理の入出力を示す図である。例えば圧縮処理の前半処理(図11)において圧縮されていない領域が、図14の(a)のハミルトニアン(制約式)21inのうち、圧縮処理の前半処理で圧縮されていない項は、Sである。変数グループテーブル2T3を参照すると、Sは、行列M3において、Sがグループ(行)#1=1かつSがグループ(列)#1=2(図14の(c)中の(1,2))、又は、Sがグループ(列)#1=1かつSがグループ(行)#1=4である(図14の(c)中の(2,1))。また(グループ(行),グループ(列))=(1,2)及び(2,1)において非零の要素数は全要素数4中の1で1/3未満であるので、(グループ(行),グループ(列))=(1,2)及び(2,1)の行列は要素の値=-1の「疎行列」となる。
【0095】
よって図14の(d)に示すように、(グループ(行),グループ(列))=(1,2)及び(2,1)の行列の圧縮方法が「疎行列」、パラメータが「-1」の情報が、分割情報テーブル2T4に記録される。なお(グループ(行),グループ(列))=(1,2)の行列を、(グループ(行),グループ(列))=(2,1)の対象行列として記録されてもよい。あるいは(グループ(行),グループ(列))=(2,1)の行列を、(グループ(行),グループ(列))=(1,2)の対象行列として記録されてもよい。
【0096】
以上の処理が圧縮処理の後半処理における全ての圧縮候補について実行されると、圧縮処理の後半処理が終了する。
【0097】
本実施形態では、n(n≧3)次のハミルトニアンH(S,・・・,S)を、スピン追加により次数を落とした変数S,・・・,Sの2次式であるH´(S,・・・,S)を考える。S =1(i=1,2,・・・,N)であることに注意してS(i≠j)の係数で、図12及び図14に示す行列M3の形式のマトリックスを作成する。この行列M3、又は、行列M3を分割したブロックが、上述の「特定の問題」又は「特定の領域」に該当する場合に、対応する圧縮形式へブロックを圧縮する。
【0098】
上述したように、実問題のハミルトニアンのほとんどが、「N個中M個選択問題」、「N飛車問題」、「巡回セールスマン問題」、「零行列」、「定数行列」、「疎行列」、「転置行列」の何れか又はこれらの組合せで表される。よってハミルトニアンを表す行列を分割したブロックを、「特定の問題」又は「特定の領域」対応する圧縮形式で圧縮することで、実問題をメモリに格納する際のメモリ容量を削減し、効率的なメモリ消費を実現できる。
【0099】
(実施形態1の圧縮形式を用いた行列計算処理)
図15は、実施形態1の圧縮形式を用いた行列計算処理を示すフローチャートである。圧縮形式を用いた行列計算処理は、圧縮処理の後半処理に引き続いて情報処理システム2によって実行される。
【0100】
先ずステップS131では、圧縮形式計算部22(図5)は、分割情報テーブル2T4から1レコードを取得する。次にステップS132では、圧縮形式計算部22は、ステップS131で選択したレコードが「N個中M個選択問題」であるか否かを判定する。圧縮形式計算部22は、ステップS131で選択したレコードが「N個中M個選択問題」である場合(ステップS132YES)にステップS133へ処理を移し、「N個中M個選択問題」以外である場合(ステップS132NO)にステップS134へ処理を移す。ステップS133では、圧縮形式計算部22は、「N個中M個選択問題」の専用アルゴリズムで行列計算を実行する。
【0101】
ステップS134では、圧縮形式計算部22は、ステップS131で選択したレコードが「N飛車問題」であるか否かを判定する。圧縮形式計算部22は、ステップS131で選択したレコードが「N飛車問題」である場合(ステップS134YES)にステップS135へ処理を移し、「N飛車問題」以外である場合(ステップS134NO)にステップS136へ処理を移す。ステップS135では、圧縮形式計算部22は、「N飛車問題」の専用アルゴリズムで行列計算を実行する。
【0102】
ステップS136では、圧縮形式計算部22は、ステップS131で選択したレコードが「N都市巡回セールスマン問題」であるか否かを判定する。圧縮形式計算部22は、ステップS131で選択したレコードが「N都市巡回セールスマン問題」である場合(ステップS136YES)にステップS137へ処理を移し、「N都市巡回セールスマン問題」以外である場合(ステップS136NO)にステップS138へ処理を移す。ステップS137では、圧縮形式計算部22は、「N都市巡回セールスマン問題」の専用アルゴリズムで行列計算を実行する。
【0103】
ステップS138では、圧縮形式計算部22は、ステップS131で選択したレコードが「零行列」、「定数行列」、「疎行列」、「転置行列」等の「特定の領域」であるので、圧縮形式を用いない非圧縮の行列で行列計算を実行する。
【0104】
最後にステップS139では、圧縮形式計算部22は、分割情報テーブル2T4の全てのレコードを処理したか否かを判定する。圧縮形式計算部22は、分割情報テーブル2T4の全てのレコードを処理した場合(ステップS139YES)に本行列計算処理を終了し、処理していない場合(ステップS139NO)にステップS131へ処理を戻す。
【0105】
なおハミルトニアンの制約式は、本実施形態の例示に限らず、圧縮表現可能な他の記述方法でもよい。
【0106】
実施形態1では、情報処理システム2がハミルトニアン圧縮形式変換部21を備え、入力されたハミルトニアンの制約式がハミルトニアン圧縮形式変換部21によって圧縮された圧縮形式で、圧縮形式計算部22が疑似アニーリングを実行する。しかしこれに限らず、情報処理システム2がハミルトニアン圧縮形式変換部21を備えず、予めハミルトニアン圧縮形式変換部21と同様に圧縮された圧縮形式を入力として、圧縮形式計算部22が疑似アニーリングを実行してもよい。
【0107】
<実施形態2>
以下、入力されたハミルトニアンの行列を圧縮形式へ変換することで、行列よりも少ない情報量でハミルトニアンを表現し、記憶するメモリ容量を削減する実施形態2を説明する。実施形態2では、実施形態1との差分を中心に説明し、同一又は類似の事項については説明を適宜省略する。
【0108】
図16は、実施形態2の全体システム1Bの構成を示す図である。全体システム1Bは、実施形態1の全体システム1と比較して、情報処理システム2に代えて情報処理システム2Bを有する。情報処理システム2Bは、実施形態1の情報処理システム2と比較して、ハミルトニアン圧縮形式変換部21に代えて行列圧縮形式変換部21Bを有する。
【0109】
また情報処理システム2Bは、実施形態1の第1の圧縮方法判定テーブル2T1(図6)に代えて第1の圧縮方法判定テーブル2BT1(図17)を所定の記憶領域(不図示)に保持している。
【0110】
行列圧縮形式変換部21Bは、入力装置4の入力部41を介して入力されたハミルトニアンの行列を圧縮する際、第1の圧縮方法判定テーブル2BT1及び第2の圧縮方法判定テーブル2T2を参照して圧縮方法を判定する。そして行列圧縮形式変換部21Bは、判定された圧縮方法に従って、ハミルトニアンを圧縮形式(圧縮データ)へ変換する。行列圧縮形式変換部21Bの処理の詳細は、後述する。
【0111】
(実施形態2の第1の圧縮方法判定テーブル2BT1)
図17は、実施形態2の第1の圧縮方法判定テーブル2BT1を示す図である。
【0112】
実施形態2の第1の圧縮方法判定テーブル2BT1は、入力されたハミルトニアンの行列の圧縮方法を判別するためのテーブルであり、圧縮方法名、圧縮可能条件、及びパラメータの列を有する。行列圧縮形式変換部21B(図16)は、後述する実施形態2の圧縮処理の前半処理(図19)を実行する際に第1の圧縮方法判定テーブル2BT1を参照し、入力されたハミルトニアンの行列又はこの行列を分割したブロックを、該当する圧縮可能条件に対応する圧縮方法のパラメータ(圧縮データ)へ圧縮する。
【0113】
例えば行列圧縮形式変換部21Bは、入力されたハミルトニアンの行列又はこの行列を分割したブロックが、対角成分が同一値(=-N/2+M)、非対角成分が同一値(=-0.5)のパターン及び値であると判定した場合には、第1の圧縮方法判定テーブル2BT1の#1のエントリから、この領域が圧縮方法名「N個中M個選択問題」に該当すると認識する。ここでの領域とは、入力されたハミルトニアンの行列又はこの行列を分割したブロックをいう。そして行列圧縮形式変換部21Bは、入力されたハミルトニアンの行列の該当領域を「N及びM」のパラメータへ圧縮する。なお圧縮パラメータを、対角成分=-N/2+M、非対角成分=-0.5としてもよい。
【0114】
また例えば行列圧縮形式変換部21Bは、入力されたハミルトニアンの行列又はこの行列を分割したブロックが「N飛車問題」に該当すると所定の判定プログラムによって判別された場合に、入力されたハミルトニアンの該当領域を、対角成分=-N/2+M、非零の非対角成分=-0.5へ圧縮する。
【0115】
また例えば行列圧縮形式変換部21Bは、入力されたハミルトニアンの行列又はこの行列を分割したブロックが「N都市巡回セールスマン問題」に該当すると所定の判定プログラムによって判定された場合に、入力されたハミルトニアンの該当領域を、N個の全ての都市の座標Z=(X,Y)(i=1,2,・・・,N)へ圧縮する。
【0116】
(実施形態2の全体処理)
図18は、実施形態2の全体処理を示すフローチャートである。図16に示すように、実施形態2の全体処理は、ハミルトニアン(行列)21Binを入力として、結果(N×1行列)21outを出力する。実施形態2の全体処理は、実施形態1の全体処理(図10)と比較して、圧縮処理S1に代えて圧縮処理S1Bを有する。
【0117】
(実施形態2の圧縮処理の前半処理)
図19は、実施形態1の圧縮処理S1Bを示すフローチャートである。本フローチャートは、ハミルトニアンの行列の対角成分を含んだブロックを「特定の問題」に対応する圧縮形式へ変換する手順を示す。
【0118】
先ずステップS1B1では、行列圧縮形式変換部21B1は、ハミルトニアンの行列の入力を受付ける。次にステップS1B2では、行列圧縮形式変換部21B1は、ステップS1B1で入力を受付けた行列を、圧縮に適した箇所で分割し、各ブロックを圧縮する(行列分割圧縮処理)。ステップS1B2では、ステップS1B1で入力を受付けた行列の対角成分を含んだブロックが圧縮される。行列分割圧縮処理の詳細は図20を参照して後述する。
【0119】
次にステップS1B3では、行列圧縮形式変換部21B1は、第2の圧縮方法判定テーブル2T2(図7)を参照し、ステップS11B2で分割された行列の対角成分を含むブロック以外を圧縮する。すなわち行列圧縮形式変換部21B1は、対角成分を含むブロック以外のブロックが、第2の圧縮方法判定テーブル2T2の圧縮可能条件の何れかに該当するか否かを判定し、対応するパラメータへ圧縮する。
【0120】
次にステップS1B4では、行列圧縮形式変換部21B1は、ステップS1B3で圧縮した全てのブロックに含まれるスピンのうち未格納のスピンを変数グループテーブル2T3へ格納する。なおステップS1B3で圧縮可能と判定された複数のブロックに含まれる変数は、独立した変数グループに属するとする。
【0121】
次にステップS124では、行列圧縮形式変換部21B1は、ステップS1B3で圧縮可能したブロックの圧縮可能条件に該当する圧縮方法及び圧縮データ(パラメータ)を、分割情報テーブル2T4へ格納する。
【0122】
(実施形態2の圧縮処理における分割箇所決定処理)
図20は、実施形態2の圧縮処理における分割箇所決定処理(ステップS1B2)を示すフローチャートである。本分割箇所決定処理が処理対象とする行列は、行方向及び列方向のそれぞれにスピンをインデックスの昇順で並べた正方行列である。
【0123】
先ずステップS211では、行列圧縮形式変換部21B1は、変数である開始スピン及び終了スピンをそれぞれ1及び2へ、圧縮可能フラグを0へ初期化する。開始スピンは、行方向及び列方向の開始の行列要素の位置を示し、終了スピンは、行方向及び列方向の終了の行列要素の位置を示す。
【0124】
次にステップS212では、行列圧縮形式変換部21B1は、第1の圧縮方法判定テーブル2BT1を参照し、現在設定されている開始スピン及び終了スピンで定まる、分割箇所決定処理が処理対象とする行列を分割したブロック対角行列(部分正方行列)が、圧縮可能条件に該当する(圧縮可能)か否かを判定する。ブロック対角行列とは、分割前の行列の対角成分を含んだブロックである。行列圧縮形式変換部21B1は、現在設定されている開始スピン及び終了スピンで定まるブロック対角行列が圧縮可能である場合(ステップS212YES)にステップS213へ処理を移し、圧縮可能でない場合(ステップS212NO)にステップS220へ処理を移す。
【0125】
ステップS213では、行列圧縮形式変換部21B1は、上述の終了スピンが、処理対象とする行列の最後のスピンか否かを判定する。行列圧縮形式変換部21B1は、終了スピンが最後のスピンである場合(ステップS213YES)にステップS214へ処理を移し、終了スピンが最後のスピンでない場合(ステップS213NO)にステップS216へ処理を移す。
【0126】
ステップS214では、行列圧縮形式変換部21B1は、現在の開始スピン及び終了スピンで定まる行列のブロック対角行列に含まれるスピンを変数グループテーブル2T3へ格納する。
【0127】
次にステップS215では、行列圧縮形式変換部21B1は、第1の圧縮方法判定テーブル2T1において、現在の開始スピン及び終了スピンで定まるブロック対角行列が該当する圧縮可能条件に対応する圧縮方法及びパラメータを、分割情報テーブル2T4へ格納する。
【0128】
ステップS216では、行列圧縮形式変換部21B1は、終了スピンを増やしてもメモリは足りる(すなわち本処理を継続できるメモリ容量が確保できる)か否かを判定する。行列圧縮形式変換部21B1は、終了スピンを増やしてもメモリが足りる場合(ステップS216YES)にステップS217へ処理を移し、終了スピンを増やすとメモリは不足する場合(ステップS216NO)にステップS218へ処理を移す。
【0129】
ステップS217では、行列圧縮形式変換部21B1は、変数である終了スピンに1を加算し、圧縮可能フラグに1をセットする。行列圧縮形式変換部21B1は、ステップS217が終了するとステップS212へ処理を戻す。
【0130】
ステップS218では、行列圧縮形式変換部21B1は、現在の開始スピン及び終了スピンで定まるブロック対角行列に含まれるスピンを変数グループテーブル2T3へ格納する。
【0131】
次にステップS219では、行列圧縮形式変換部21B1は、終了スピンに1を加算したものを開始スピンにセットし、終了スピンに2を加算し、圧縮可能フラグに0をセットする。行列圧縮形式変換部21B1は、ステップS219が終了するとステップS212へ処理を戻す。
【0132】
他方ステップS220では、行列圧縮形式変換部21B1は、圧縮可能フラグ=1であるか否かを判定する。行列圧縮形式変換部21B1は、圧縮可能フラグ=1である場合(ステップS220YES)にステップS221へ処理を移し、圧縮可能フラグ≠1である場合(ステップS220NO)にステップS225へ処理を移す。
【0133】
ステップS221では、行列圧縮形式変換部21B1は、現在の開始スピン及び終了スピンで定まるブロック対角行列に含まれるスピンを変数グループテーブル2T3へ格納する。次にステップS222では、行列圧縮形式変換部21B1は、第1の圧縮方法判定テーブル2T1において、現在の開始スピン及び(終了スピン-1)で定まるブロック対角行列が該当する圧縮可能条件に対応する圧縮方法及びパラメータを、分割情報テーブル2T4へ格納する。
【0134】
次にステップS223では、行列圧縮形式変換部21B1は、開始スピンに終了スピンをセットし、終了スピンに1を加算し、圧縮可能フラグに0をセットする。この処理では、前回の処理対象のブロックに隣接するブロック対角行列を選択している。次にステップS224では、行列圧縮形式変換部21B1は、終了スピン>最後のスピンが成り立つか否かを判定する。行列圧縮形式変換部21B1は、終了スピン>最後のスピンが成り立つ場合(ステップS224YES)に本行列分割圧縮処理を終了し、終了スピン≦最後のスピンが成り立つ場合(ステップS224NO)にステップS212へ処理を移す。
【0135】
ステップS225では、行列圧縮形式変換部21B1は、開始スピンに1を加算し、終了スピンに2を加算する。次にステップS226では、行列圧縮形式変換部21B1は、終了スピン>最後のスピンが成り立つか否かを判定する。行列圧縮形式変換部21B1は、終了スピン>最後のスピンが成り立つ場合(ステップS226YES)に本行列分割圧縮処理を終了し、終了スピン≦最後のスピンが成り立つ場合(ステップS226NO)にステップS212へ処理を移す。
【0136】
本分割箇所決定処理では、処理対象とする行列を、この行列の連続して並んだ対角成分を最大限含んで第1の圧縮方法判定テーブル2BT1(図17)の圧縮可能条件を充足する1以上のブロック対角行列と、この行列をブロック対角行列へ分割した際の分割線で分割される行列のブロック対角行列以外のブロック行列と、に分割する。そして、分割したブロック対角行列を圧縮可能条件に対応する圧縮方式による圧縮形式へ圧縮する。
【0137】
本分割箇所決定処理では、0及び1の値を取る圧縮フラグのみで圧縮領域の制御をしているが、圧縮形式を用いて計算する処理速度を考慮した処理にしてもよい。具体的には、前回の圧縮領域を圧縮した圧縮形式を圧縮可能フラグに記憶させておき、現在の圧縮領域を圧縮可能な圧縮形式と前回の圧縮領域を圧縮可能な圧縮形式とが異なった場合に、前回の圧縮領域で区切って圧縮を実行する。
【0138】
(実施形態2における行列分割の説明)
図21は、実施形態2における行列分割を説明するための図である。図21では、5次行列を分割する例を示し、最後のスピンは5である。
【0139】
図21の(a)は、図20のステップS211で開始スピン=1、終了スピン=2と設定されたブロックを示している。図21の(b)は、図20のステップS213で終了スピン≠最後のスピンと判定され、ステップS216で終了スピンを増やしても可と判定されたので、ステップS217で終了スピンを1だけ増やし、圧縮可能フラグ=1とした状況を示している。
【0140】
しかし図21の(b)の開始スピン=1、終了スピン=3のブロックは、圧縮可能ではなく(ステップS212NO)、圧縮可能フラグ=1である(すなわち前回判定対象としたブロックが圧縮可能であった)。よって図21の(c)に示すように、ステップS221~S222によって開始スピン=1及び終了スピン=2のブロックが圧縮される。そして図21の(c)に示すように、ステップS223によって、開始スピンに終了スピンがセットされ、終了スピンに1加算されることで、次の圧縮判定対象のブロックが開始スピン=3及び終了スピン=4となる。
【0141】
上述の実施形態1及び2では、情報処理システム2、2Bに、ハミルトニアン制約式あるいはハミルトニアンの行列を入力し、制約式の特徴量を抽出した情報を圧縮形式としてメモリに格納する。この圧縮形式に対する専用のアルゴリズムを用意しておき、アニーリング処理を行うことで、ハミルトニアンを行列としてメモリに展開する場合と比較して、入力情報量および計算時のメモリ量を削減できる。
【0142】
(情報処理システム2を実現するコンピュータ500の構成)
図22は、情報処理システム2を実現するコンピュータ500の構成例を示す図である。コンピュータ500では、プロセッサ510、RAM(Random Access Memory)などのメモリ520、SSD(Solid State Drive)やHDD(Hard Disk Drive)などのストレージ530、及びネットワークI/F(Inter/Face)540が、バスを介して接続されている。
【0143】
コンピュータ500において、情報処理システム2を実現するためのプログラムがストレージ530から読み出されプロセッサ510及びメモリ520の協働により実行されることで情報処理システム2が実現される。または、情報処理システム2を実現するためのプログラムは、ネットワークI/F540を介した通信により非一時的な記憶装置を備えた外部のコンピュータから取得されてもよい。あるいは情報処理システム2を実現するためのプログラムは、非一時的記録媒体に記録され、媒体読み取り装置によって読み出されることで取得されてもよい。
【0144】
プロセッサ510は、メモリと協働して各種処理を実行する情報処理システム2の処理部の一例である。またハミルトニアン圧縮形式変換部21及び圧縮形式計算部22(図5)は、1つの処理部として統合されてもよいし、異なる処理部として分散されてもよい。またハミルトニアン圧縮形式変換部21及び圧縮形式計算部22は、1つの情報処理システム2上に実装されてもよいし、異なる情報処理システム上に実装されてもよい。
【0145】
同様に行列圧縮形式変換部21B及び圧縮形式計算部22(図16)は、1つの処理部として統合されてもよいし、異なる処理部として分散されてもよい。また行列圧縮形式変換部21B及び圧縮形式計算部22は、1つの情報処理システム2B上に実装されてもよいし、異なる情報処理システム上に実装されてもよい。
【0146】
本発明は上述の実施形態に限定されるものではなく、様々な変形例を含む。例えば、上記した実施形態は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、矛盾しない限りにおいて、ある実施形態の構成の一部を他の実施形態の構成で置き換え、ある実施形態の構成に他の実施形態の構成を加えることも可能である。また、各実施形態の構成の一部について、構成の追加、削除、置換、統合、又は分散をすることが可能である。また、実施形態で示した構成及び処理は、処理効率又は実装効率に基づいて適宜分散、統合、または入れ替えることが可能である。
【符号の説明】
【0147】
2,2B:情報処理システム、21:ハミルトニアン圧縮形式変換部、21B:行列圧縮形式変換部、22:圧縮形式計算部、2T1,2BT1:第1の圧縮方法判定テーブル、2T2:第2の圧縮方法判定テーブル。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20
図21
図22