以下、図面を参照しながら、本発明の実施形態について説明する。また、図面において同一の構成要素は、同じ番号を付し、説明は、適宜省略する。
(第1の実施形態)
以下に説明される第1の実施形態に係る情報処理システムは、量子関連コンピュータを使って、例えば組合せ最適化問題として記述可能な現実問題を解くことを支援する。しかし、この用途は説明のための例示にすぎず、情報処理システムの適用範囲を、組合せ最適化問題として記述可能な現実問題を解く場合に限定する趣旨ではない。
量子関連コンピュータを使って現実問題を解くためには、量子関連コンピュータが処理可能な所定の形式の問題モデルまたはデータに、現実問題を変換しなくてはならない。ここでは、専門的な知識と経験に基づく、問題の大幅な変形や単純化が必要となる場合がある。例えば、量子関連コンピュータにデータがイジングモデルの形式で入力される場合、問題はパラメータが二値変数である二次式に変換される。特許文献1はユーザが指定した問題をイジングモデルに変換し、演算装置にイジングモデルの探索を行わせる情報処理システムを開示している。
しかし、現実問題の多くは現実世界の複雑さを内包している。現実問題を的確に定義し、記述するためには、その問題の存する現実世界の分野の専門知識または実務経験が必要である。例えば、ある金融ポートフォリオの最適化という現実問題を定義し記述するためには、その金融ポートフォリオおよびそれに関連する専門知識またはポートフォリオ設計の実務経験が求められる。他方、量子関連コンピュータが解ける形式の問題モデルまたはデータを作成するには、その量子関連コンピュータおよびそれに関連する数学の分野(例えば、組合せ最適化問題)に関する専門知識または実務経験が必要である。したがって、現実問題を量子関連コンピュータが解ける形式の問題モデルまたはデータに変換するコンピュータプログラム、あるいは、その変換を自動的に行うコンピュータプログラムを開発するためには、関連する複数分野の専門知識または経験を統合する必要がある。これは当事者にとって困難であり多大な工数がかかる作業となる。
また、量子関連コンピュータの種類によって異なるデータの入出力形式を使うことが求められる場合がある。例えば、量子アニーリング現象を使ったコンピュータと、ゲート式の量子コンピュータでは、別の形式のデータが入力される可能性がある。量子関連コンピュータの種類ごとに、変換プログラムを開発すると工数が大きくなってしまう。
現実問題の形式と、量子関連コンピュータに入力可能な問題モデルまたはデータの形式は、大きく乖離していることが多い。量子関連コンピュータを利用するために、現実問題は、量子関連コンピュータに入力可能な問題モデルまたはデータに変換される必要がある。本実施形態に係るシステムは、ユーザが、一連の複数の異なるレベルの問題モデルを記述することを通じて、段階的に現実問題を量子関連コンピュータ用の問題モデルまたはデータへと変換することを可能にする。
以下では、問題のモデリングにおける複数の段階の例を示す。第一段階でユーザは、システムから支援されて、例えば、現実問題を人間に理解しやすい表現形式(例えば、テキスト、グラフ、数式など)で表現した、上位(レベル1)の問題モデルを記述する。第二段階で、ユーザは、システムの支援をうけ、上位の問題モデルに基づき、例えば、組合せ最適化問題として数学的に厳密に記述した中位(レベル2)の問題モデルを記述する。そして、第三段階で、ユーザは、システムの支援をうけ、組合せ最適化問題として記述された中位の問題モデルに基づき、量子関連コンピュータへ入力可能な形式の下位(レベル3)の問題モデルまたはデータを記述する。
そして、システムは、下位の問題モデルから得られるデータを量子関連コンピュータに入力し、量子関連コンピュータが所定形式の解を計算する。この後、ユーザは、システムの支援をうけ、量子関連コンピュータから出力された下位の解を段階的に現実問題の解に逆変換する。例えば、下位の解を、例えば上述の組合せ最適化問題の解のなどの中位の解に逆変換し、さらに中位の解を現実問題の解(上位の解)に逆変換することができる。このように、ユーザは問題の上位から下位への変換と、その問題の解の下位から上位への逆変換という、二つの方向の変換を段階的に行うことができる。
問題の変換および解の逆変換には、現実問題の背景、組合せ最適化問題、量子関連コンピュータなど複数の関連分野における知見を有する複数の専門家の参加が必要であり、多くの工数が必要となる。現実問題の関連する現実世界の分野は、金融、物流、交通、ライフサイエンスなど多岐にわたる可能性がある。また、複数のユーザが様々な形で量子関連コンピュータを利用する可能性がある。本実施形態に係るシステムは、問題の変換(すなわち、問題のモデリング)と解の逆変換を段階的に行う機能を提供する。また、複数の専門家や複数のユーザによる変換作業の分担や協力などをより容易にし、開発の成果物を部品として再利用できるようにする。これにより、本実施形態に係るシステムは、量子関連コンピュータの活用促進に貢献する。
量子関連コンピュータの活用を一層促進するためには、問題の変換と解の逆変換を、自動的に実行するプログラム(変換プログラムおよび逆変換プログラム)の開発が望まれる。変換プログラムおよび逆変換プログラムがあれば、ユーザは手動で問題の変換と解の逆変換を行う手間から解放される。本実施形態に係るシステムは、ユーザによる変換プログラムおよび逆変換プログラムの開発を支援する。例えば、本実施形態に係るシステムは、ユーザが異なるレベルの問題モデルを参照することを可能にする。これにより、ユーザにとり、所望の現実問題から量子関連コンピュータへの入力データを作成するための変換プログラム、および量子関連コンピュータの出力解を所望の現実問題の解へと変換するための逆変換プログラムをより容易に開発することができる。また、本実施形態に係るシステムは、既に開発された変換プログラムおよび逆変換プログラム、ならびに開発プロセスで得られた関連知識(例えば、各レベルの問題モデル)やノウハウを、ユーザ間で共有することを可能にする。例えば、ある現実問題に関して既に開発された変換/逆変換プログラムを、同一または類似の現実問題用の変換/逆変換プログラムを開発しようとするユーザに利用させることができる。以降では、変換/逆変換プログラムの開発と実行の機能を備えた本実施形態に係るシステムについて、より詳細に説明する。
本実施形態に係るシステムでは、量子関連コンピュータを使った求解処理を行うことができる。量子関連コンピュータとは、発生する物理現象、エミュレーション、シミュレーションなど何らかの方法で量子力学的な現象(以下、量子現象という)を利用するコンピュータである。量子関連コンピュータには複数の種類がある。一例としては、イジングモデルの最低エネルギー状態(基底状態)を求めるコンピュータ(イジングマシンとよぶ)が挙げられる。イジングマシンは、さらに超伝導量子ビットを使った量子アニーリングマシン、光パラメトリック発振器を使ったコンピュータおよび量子アニーリング現象をエミュレートするコンピュータなどに分類される。
また、量子関連コンピュータは、ゲート式の量子コンピュータ、FPGAまたはGPU(Graphics Processing Unit)などのハードウェア回路を使ったコンピュータであってもよい。また、量子関連コンピュータは、量子現象を利用する複数のコンピュータの組み合わせであってよい。また、量子関連コンピュータは、量子現象を利用するコンピュータと量子現象を利用しないコンピュータ(非量子コンピュータ)の組み合わせであってよい。例えば、量子現象を利用するコンピュータとメタヒューリスティクスアルゴリズムを実行するコンピュータとを組みわせて、前者の機能が補完・強化されたシステムも、量子関連コンピュータに包含される。メタヒューリスティクスアルゴリズムの例としては、Simulated Annealing法、タブーサーチなどの局所探索法、粒子群最適化(PSO)、遺伝的アルゴリズムなどがある。メタヒューリスティクスアルゴリズムはプログラムによって実装されていてもよいし、ハードウェア回路によって実装されていてもよい。すなわち、量子関連コンピュータの方式、実装、アーキテクチャについては特に限定しない。
なお、本実施形態に係るシステムでは、制約なし多項式2値変数最適化(PUBO:Polynomial Unconstrained Binary Optimization)を解くことが可能なコンピュータ(PUBOソルバ)を使った求解処理を行ってもよい。上述の量子関連コンピュータの一部(例えば、一部のイジングマシン)は、制約なし多項式2値変数最適化を解くことが可能であるため、PUBOソルバであるともいえる。ただし、PUBOソルバは、上述の量子関連コンピュータに相当しないコンピュータであってもよい。PUBOソルバは、ノイマン型コンピュータ上でプログラムを実行することによって2値変数の値を計算するものであってもよい。また、PUBOソルバは、イマン型コンピュータとFPGA、ASIC、GPUなどのハードウェア回路を組み合わせることによって実装されるものであってもよい。すなわち、PUBOソルバの構成については特に問わない。
本実施形態に係るシステムでは複数の種類の現実問題を取り扱うことが可能である。一例としては、組合せ最適化問題に変換可能な現実問題が挙げられる。組合せ最適化問題にも複数の種類がある。その例としては、最短経路問題、巡回セールスマン問題、ハミルトン路問題などが挙げられる。最短経路問題では、重み付きグラフにおいて、2つのノード間の経路のうち、合計の重みが最小となる経路を求める。巡回セールスマン問題(TSP)では、重み付きの無向グラフにおいて、すべてのノードを一度だけ通り、始点ノードに戻る経路のうち、合計の重みが最小となる経路を求める。ハミルトン路問題では、任意のグラフについて、すべてのノードを一度だけ通る経路を求める。また、ハミルトン路問題のうち、経路の始点のノードと経路の終点のノードが同一ノードであるものを、ハミルトン閉路問題とよぶ。上述の問題は例にしかすぎない。したがって、現実問題はその他の種類の組合せ最適化問題に変換されてもよい。
次に、上述のイジングモデルについて説明する。イジングモデルでは、エネルギーの関数が+1または−1のいずれかの2値をとる複数の変数si(i=1、2、・・・)の二次多項式によって表現される。下記の式(1)はエネルギーの関数であるハミルトニアンHを示している。
ここで、Jijは、スピン間の相互作用係数の行列である。si、sjは二値変数(スピン)であり、+1または−1のいずれかの値をとる。hiは各スピンにおける局所磁場のベクトルである。上述の式(1)は、si、sjについての2次式となっている。ただし、スピンの3次以上の項を含むイジングモデルを使ってもよい。スピンの3次以上の項を含むイジングモデルは、物理的には多体相互作用を含むといえる。
式(1)のハミルトニアンHは組合せ最適化問題における目的関数に相当する。イジングモデルの最適解は、エネルギーが最小となる二値変数の組み合わせ(ベクトル)となる。イジングモデルは、主に強磁性体や相転移現象のモデルとして使われてきた。イジングモデルのパラメータは二値変数であり、組合せ最適化問題で使われる離散変数との変換が容易である。このため、近年はイジングモデルによって組合せ最適化問題を解く事例が増えている。イジングモデルは、量子関連コンピュータへ入力可能なデータ形式に相当する。イジングマシン以外の種類の量子関連コンピュータが使われた場合、入力可能なデータ形式はイジングモデルとは異なった形式であってもよい。
以下では、本実施形態に係るシステムの構成例について説明する。
図1は、本実施形態に係るシステムの構成例を示した図である。図1のシステムは情報処理システム10と、クライアントマシン22と、外部情報処理システム23とを備えている。情報処理システム10、クライアントマシン22、外部情報処理システム23は、ネットワーク21を介して接続されている。
情報処理システム10は、情報処理装置1と、一以上の量子関連コンピュータ(図示の例では、同種または異なる種類の複数の量子関連コンピュータ11a、11bおよび11c)とを備えている。また、情報処理システム10は、PUBOソルバ11dを備えていてもよい。情報処理装置1、量子関連コンピュータ11a〜11c、およびPUBOソルバ11dはネットワーク20を介して接続されている。量子関連コンピュータ11a〜11cまたは、PUBOソルバ11dの少なくともいずれかが、情報処理システム10の外部に設置されていてもよい。この場合、量子関連コンピュータまたは、PUBOソルバはネットワーク21を介して情報処理装置1に接続される。図1には、3つの量子関連コンピュータと、ひとつのPUBOソルバが示されている。ただし、量子関連コンピュータおよびPUBOソルバの数については、特に問わない。第1の実施形態に係る説明では、量子関連コンピュータを使って問題の解を求める場合を例に説明する。ただし、PUBOソルバを使った求解が行われる場合、以下の説明における量子関連コンピュータをPUBOソルバに置き換えることができる。
情報処理装置1は、処理回路2と、通信回路7と、記憶部8とを備えている。処理回路2の例としては、プログラムや各種の命令を実行するプロセッサが挙げられる。ただし、処理回路2は、FPGA、ASICなどその他の種類のハードウェア回路であってもよい。また、処理回路2は、複数の種類のハードウェア回路の組み合わせであってもよい。処理回路2は内部の構成要素として、開発部3と、変換部4と、制御部5と、管理部6とを備えている。
情報処理装置1は、量子関連コンピュータを使って問題の解を求めることを支援する。そのために、情報処理装置1は、ユーザによる問題の変換のためのプログラム(変換プログラム)と解の逆変換のためのプログラム(逆変換プログラム)の開発とを支援する。現実問題に対応する変換プログラムと逆変換プログラムが既に開発されている場合、情報処理装置1が実行する処理の概要は下記のようになる。
まず、ユーザはクライアントマシン22を使って情報処理装置1に現実問題のデータを入力する。情報処理装置1は現実問題のデータを入力として、開発された変換プログラムを実行する。変換プログラムからは量子関連コンピュータに入力可能な形式のデータが出力され、量子関連コンピュータは当該データに基づく解を求める。そして、量子関連コンピュータが求めた解を入力とし、逆変換プログラムが実行される。逆変換プログラムはユーザが入力した現実問題の解を生成し、ユーザのクライアントマシン22に返す。
ユーザは、情報処理装置1の管理部6が提供するインタフェース(例えば、GUI、CLI、API)を使って量子関連コンピュータを操作することができる。また、情報処理装置1はユーザに外部情報処理システム23と、情報処理システム10間でデータ共有、データの送受信などを行うためのインタフェースを提供してもよい。
次に、現実問題に対応する変換プログラムと逆変換プログラムの開発が必要な場合において、情報処理装置1が実行する処理の概要について説明する。
まず、情報処理装置1は、所望の現実問題について、ユーザが複数レベルの問題モデルを段階的に作成することを支援する。そして、情報処理装置1は作成された複数レベルの問題モデルに基づいてユーザが変換プログラムと逆変換プログラムを開発することを支援する。そこで、情報処理装置1の開発部3は、上述の段階的な問題モデルの作成(問題モデリング)と、変換プログラムおよび逆変換プログラムの開発(プログラミング)を支援する。
開発部3は、複数レベルの問題モデルを作成するための複数のモデリングツールと、それらの問題モデルに基づいて変換プログラムと逆変換プログラムを作成するためのプログラミングツールとを含んでいる。開発部3は、過去の開発過程で得られた問題モデル、変換プログラム、逆変換プログラム、それらに付帯する知識およびノウハウに係るデータを記憶部8に保存する。また、開発部3はユーザにライブラリを提供し、後の開発過程で上述のデータを利用できるようにしてもよい。ユーザは管理部6が提供するインタフェースを操作し、上記のモデリングツールとプログラミングツールとライブラリを使うことができる。
すなわち、開発部3は、モデリングツールと、プログラミングツールとを実行することができる。モデリングツールは、ユーザが問題について、少なくとも1つの問題モデルを記述することを可能にする。プログラミングツールは、少なくとも1つの問題モデルを用いて、問題を量子関連コンピュータに入力可能なデータ形式に変換する変換プログラムを、ユーザが設計することを可能にする。また、プログラミングツールは、問題について計算された量子関連コンピュータの解を、当該問題の解に逆変換する逆変換プログラムをユーザが作成することを可能する。
ユーザが開発した、特定の現実問題に対応する変換プログラムと逆変換プログラムは、記憶部8に保存される。記憶部8に保存された変換プログラムおよび逆変換プログラムは、変換部4にデプロイされ、実行可能な状態となる。この状態において、クライアントマシン22から上述の現実問題と同じタイプの現実問題のデータが入力された場合、変換部4は、現実問題のデータを入力とし、変換プログラムを実行する、変換プログラムは現実問題のデータを少なくともいずれかの量子関連コンピュータが処理可能なデータに変換する。制御部5は、少なくともいずれかの量子関連コンピュータに解の計算を行わせる。例えば、ユーザが入力した現実問題が、既に記憶部8に保存されている変換プログラムと逆変換プログラムを適用可能である場合、ユーザが入力した現実問題と、変換プログラムと逆変換プログラムに対応する現実問題は同じタイプの現実問題であるといえる。すなわち、制御部5は、量子関連コンピュータに入力可能なデータ形式に変換された問題を量子関連コンピュータに入力し、量子関連コンピュータの解を取得する。制御部5によって、記憶部8に保存された量子関連コンピュータの解は変換部4から参照可能となる。
そして変換部4は、その少なくとも一つの量子関連コンピュータから出力される解を入力として、逆変換プログラムを実行し、量子関連コンピュータの解をユーザが入力した現実問題の解に逆変換する。変換部4は逆変換された解をクライアントマシン22に返してもよい。クライアントマシン22は、通信回路7を介して変換部4にアクセスし、現実問題の解を情報処理装置1からダウンロードすることができる。なお、開発された変換プログラムおよび逆変換プログラムは、情報処理装置1とは別のシステムに転送され、当該システムにおいて実行されてもよい。
すなわち、変換部4は、ユーザが入力した問題について変換プログラムを実行し、当該問題を量子関連コンピュータにデータ形式に変換する。また、変換部4は、問題について計算された量子関連コンピュータの解を入力として逆変換プログラムを実行し、逆変換プログラムが変換した解を、当該問題の解として出力する。
次に、図2を参照しながら開発部3の構成と機能について説明する。とくに、図2に示された複数レベルのモデリングツール31〜32、プログラミングツール34、および変換プログラム41と逆変換プログラム42について述べる。
図2では、上位から下位に向かってレベル1(上位)モデリングツール31と、レベル2(中位)モデリングツール32と、レベル3(下位)モデリングツール33とが示されている。ここで、現実問題80に最も近いレベルを上位とよび、量子関連コンピュータが実行可能な形式に最も近いレベルを下位とよぶ。また、上位と下位の間にあるレベルを中位とよぶものとする。したがって、図2の例では、レベルに係る番号が大きくなるほど、量子関連コンピュータに入力可能な形式に近くなっている。なお、図2に示された3つのレベルは例示であり、2つのレベル(例えば、図2におけるレベル1とレベル3)のモデリングツールがあってもよいし、3より多い数のレベル(例えば、図2におけるレベル2をさらに細かい段階に分けした複数の中間的なレベルと、レベル1とレベル3)のモデリングツールがあってもよい。
各レベルに係るモデリングツールは、対応するレベルの問題モデルの記述が行えるよう、ユーザを支援する。各レベルに係るモデリングツールは、例えば、そのレベルに該当する可能性がある問題のタイプごとに、問題モデルを記述するためにユーザに使用されうるテンプレートまたはひな形を備える。そして、各レベルに係るモデリングツールはそれらのテンプレートまたはひな形をユーザに提示できる。問題の各タイプのテンプレートまたはひな形には、例えば、問題モデルを構成する複数の項目と、それぞれの項目に記述されるべき事項の説明とその記述例(手本)などが含まれる。テンプレートまたはひな形には、さらに過去に同じタイプの問題について作成された問題モデルの例が付属していてもよい。これにより、ユーザは、自分の問題に適合したタイプのテンプレートまたはひな形、および/または過去に作られた問題モデルを用いて、自分の問題について各レベルの問題モデルを記述することができる。
また、各モデリングツールは、例えば、類似した形式または特性を持つ複数タイプの問題群に対して、共通的に使用されうるものであってよい。各モデリングツールは、モデリング作業の少なくとも一部を自動的に行うプログラムを含んでいてもよい。各レベルにおける問題のタイプは、適用分野に基づいて規定されたものであってもよいし、使われる数学的な手法に基づいて規定されるものであってもよい。すなわち、各レベルにおける問題のタイプの定義方法については特に問わない。
ユーザは、レベル1モデリングツール31を使ってレベル1(最上位)の問題モデル31cを記述することができる。また、ユーザは、レベル2モデリングツール32を使ってレベル2(中位)の問題モデル32cを記述することができる。同様に、ユーザは、レベル3モデリングツール33を使ってレベル3(最下位)の問題モデル33cを記述することができる。レベル1(最上位)の問題モデル31cの一例は、ユーザにとって比較的理解しやすい表現形式(例えば、自然言語、グラフ、数式、またはそれらの組み合わせ)を用いて、現実問題を記述したモデルである。レベル3(最下位)の問題モデル33cの一例は、量子関連コンピュータに入力可能なデータを生成するのに適した表現形式(例えば、イジングモデルつまりハミルトニアンを記述した数式または係数列)を用いて問題を記述したモデルである。したがって、レベル1をソースレベルと呼び、レベル3をオブジェクトレベルと呼んでもよい。レベル2(中位)の問題モデル32cの一例は、レベル1の問題モデリングとレベル3の問題モデリングの間の中間段階で使うと便利な表現形式(例えば、組合せ最適化問題を数学的に表現するための数式、数列、テーブル、グラフ、またはそれらの組み合わせ)を用いて問題を記述したモデルである。
たいていのユーザにとっては、より上位のモデリングを先に行い、その結果を用いてより下位のモデリングを行う手順を採用すると、作業が容易になる。図2の例の場合、ユーザは最初にレベル1問題モデル31cを作成する。次に、ユーザはレベル1問題モデル31cをレベル2問題モデル32cへ変換する。そして、ユーザはレベル2問題モデル32cをレベル3問題モデル33cに変換する。このモデリングの手順に基づく作業を支援するために、モデリングツール31〜33の中のより下位のモデリングツールは、より上位のモデリングツールで先に作成された問題モデルをユーザに提示してもよい。
図2に示されたプログラミングツール34は、ユーザが複数レベルの問題モデル31c〜33cに基づき、変換プログラム41と逆変換プログラム42の開発を行うのを支援する。プログラミングツール34は、複数レベルの問題モデル31c〜33cの情報をユーザに提示する機能を備える。また、プログラミングツール34は、ユーザが変換プログラム41と逆変換プログラム42を設計(コーディング)するための設計ツール35も備える。このため、ユーザは、複数レベルの問題モデル31c〜33cの情報を参照しながら、設計ツール35を使って変換プログラム41と逆変換プログラム42を開発することができる。
ここでは、ユーザに提供される開発環境の一例について説明する。例えば、プログラミングツール34は、レベル1の問題モデル31cとレベル2の問題モデル32cの情報をユーザに提示する。このため、ユーザは、設計ツール35を使って、問題モデル31cと32cを参照しながら、サブ変換プログラム(L1変換プログラム)31aと、サブ逆変換プログラム(L1逆変換プログラム)31bとを作成することができる。サブ変換プログラム(L1変換プログラム)31aは、現実問題を表すデータをレベル2の問題(例えば、数学的な組合せ最適化問題)を表すデータに変換する。サブ逆変換プログラム(L1逆変換プログラム)31bは、レベル2の問題の解を表すデータを現実問題の解を表すデータに逆変換する。
また、プログラミングツール34は、レベル2の問題モデル32cとレベル3の問題モデル33cの情報をユーザに提示する。このため、ユーザは、問題モデル32cと33cを参照しながら、設計ツール35を使って、サブ変換プログラム(L2変換プログラム)32aと、サブ逆変換プログラム(L2逆変換プログラム)32bを作成することができる。サブ変換プログラム(L2変換プログラム)32aは、レベル2の問題(例えば、数学的な組合せ最適化問題)を表したデータをレベル3の問題(例えば、イジングモデルつまりハミルトニアン)を表したデータに変換する。サブ逆変換プログラム(L2逆変換プログラム)32bは、レベル3の問題の解を表したデータをレベル2の問題の解を表したデータに逆変換する。
また、プログラミングツール34は、レベル3の問題モデル33cと量子関連コンピュータ11a〜11cの入出力可能なデータ形式の情報をユーザに提示する。それにより、ユーザは、問題モデル33cと量子関連コンピュータ11a〜11cに入出力可能なデータ形式とを参照しながら、設計ツール35を使って、サブ変換プログラム(L3変換プログラム)33aと、サブ逆変換プログラム(L3逆変換プログラム)33bとを作成することができる。サブ変換プログラム(L3変換プログラム)33aは、レベル3の問題(例えば、イジングモデルのハミルトニアン)を表したデータを量子関連コンピュータ11a〜11cに入力可能なデータに変換する。サブ逆変換プログラム(L3逆変換プログラム)33bは、量子関連コンピュータ11a〜11cからの解を表したデータをレベル3の問題の解を表したデータに逆変換する。
ユーザによって作成された複数レベルのサブ変換プログラム31a〜33aとサブ逆変換プログラム31b〜33bは、記憶部8に格納される。プログラミングツール34は、複数レベルのサブ変換プログラム31a〜33aを統合し、現実問題のデータを量子関連コンピュータ11a〜11cに入力可能なデータ形式に変換する変換プログラム41を生成する。また、プログラミングツール34は、複数レベルのサブ逆変換プログラム31b〜33bを統合し、量子関連コンピュータ11a〜11cから出力された解のデータを現実問題の解のデータに変換する逆変換プログラム42を生成する。
入力可能なデータ形式は量子関連コンピュータの種類によって異なる可能性がある。このため、ユーザは、複数種類の量子関連コンピュータ11a〜11cが使われている場合、量子関連コンピュータの種類ごとにL3変換プログラム33aとL3逆変換プログラム33bを用意することができる。
プログラミングツール34は、量子関連コンピュータの種類ごとに、入力可能なデータ形式に関する情報をユーザに提示してもよい。また、プログラミングツール34は、量子関連コンピュータの種類ごとに、出力されるデータ形式(解のデータ形式)に関する情報をユーザに提示してもよい。例えば、特定の量子関連コンピュータによる計算実行のために特定のAPIを使う必要がある場合、プログラミングツール34は当該APIの仕様を表示する。これにより、ユーザは入力可能なデータ形式に関する情報を確認しながら、L3変換プログラム33aのコーディングを行うことができる。例えば、ユーザはプログラミングツール34を使ってより上位のレベルのモデルのデータを入力とし、レベル3問題モデル33cを出力とする関数を作成することができる。同様に、ユーザは出力されるデータ形式に関する情報を確認しながら、L3逆変換プログラム33bのコーディングを行うことができる。
なお、後述するようにユーザは変換プログラム41(または、各レベルのサブ変換プログラム31a〜33a)と逆変換プログラム42(または、各レベルのサブ逆変換プログラム31b〜33b)の作成をすべて一から行わなくてもよい。例えば、記憶部8に生成済みの変換プログラム41(または、各レベルのサブ変換プログラム31a〜33a)や逆変換プログラム42(または、各レベルのサブ逆変換プログラム31b〜33b)が保存されている場合、ユーザは、それら作成済みのプログラムをそのまま流用したり、それらの一部を変更したり、それらを組み合わせたりして、必要なプログラムを生成してもよい。
変換プログラム41は、現実問題のデータを量子関連コンピュータに入力可能なデータ形式に変換することができればよい。変換プログラム41は、必ず上述の例のように複数レベルのサブ変換プログラム31a〜33aを含んでいなくてもよい。同様に、逆変換プログラム42も必ず上述の例のように複数レベルのサブ逆変換プログラム31b〜33bを含んでいなくてもよい。したがって、ユーザは、プログラミングツール34を使い、中間的なレベルを経由せず、現実問題のデータを量子関連コンピュータに入力可能なデータ形式に直接変換する変換プログラム41を開発してもよい。また、ユーザは、プログラミングツール34を使用し、中間的なレベルを経由せず、量子関連コンピュータから出力された解のデータを現実問題の解のデータに直接変換する逆変換プログラム42を開発してもよい。また、ユーザは、プログラミングツール34を使って、上述の例より多い数(例えば、4以上)のレベルのサブ変換プログラムを開発し、それらを統合して変換プログラム41としてもよい。また、上述の例より多い数(例えば、4以上)のレベルのサブ逆変換プログラムを開発し、それらを統合して逆変換プログラム42としてもよい。
このように、ユーザは、それぞれの現実問題について、任意のレベル数の問題モデルを記述し、任意の数のサブ変換プログラムとサブ逆変換プログラムを生成することができる。そして、サブ変換プログラムとサブ逆変換プログラムのそれぞれを変換プログラム41と逆変換プログラム42に統合することができる。例えば、ユーザが現実問題を直接1回で量子関連コンピュータが実行可能なデータ形式に変換できる場合、ユーザは、サブ変換プログラムとサブ逆変換プログラムとを作らず、ただちに変換プログラム41と逆変換プログラム42を作成してよい。また、ユーザにとって、現実問題から2段階の変換を行って量子関連コンピュータが実行可能なデータ形式を生成することに利点がある場合、ユーザは、2つのレベルのサブ変換プログラムとサブ逆変換プログラムを生成し、それぞれを変換プログラム41と逆変換プログラム42に統合してよい。後述するように、必要な変換の段階数は現実問題の種類、内容、および複雑さなどの事情に応じて、ユーザが決めることができる。
図2では、現実問題から3段階の変換を行うと、量子関連コンピュータが実行可能なデータ形式が生成される場合(モデルケース)が例示されている。以下では、このモデルケースを例として、ユーザによる各レベルの問題モデリングとプログラミングの作業について説明する。ただし、モデルケースのレベル数(3)と、以下の説明される各レベルで行う処理は一例にしかすぎない。上述のように、レベル数はモデルケースより少ない場合もあれば、多い場合もありうる。
ユーザは、レベル1モデリングツール31を使って、レベル1(上位)の問題モデル31cを記述することができる。例えば、現実問題80について、一般的に使われる理論式があるのであれば、当該理論式をレベル1(上位)の問題モデル31cとして使ってもよい。現実問題80を2次計画問題にモデル化したものを、レベル1(上位)の問題モデル31cとしてもよい。
ユーザは、レベル2モデリングツール32を使って、レベル2(中位)の問題モデル32cを記述することができる。レベル2問題モデル32cとして、例えば、ある種の組合せ最適化問題を数学的に記述したモデルを使うことができる。組合せ最適化問題の例として、最短経路問題、巡回セールスマン問題、およびハミルトン路問題などが挙げられる。もちろん、レベル2問題モデル32cとして、その他の種類の問題モデルを使ってもよい。また、レベル2モデリングツール32は、一つの組合せ最適化問題を、複数のサブモデルに分割して記述する機能を備えていてもよい。
レベル2問題モデル32cが組合せ最適化問題である場合、レベル2問題モデル32cはノード、エッジを含むグラフのデータ(グラフデータ)を含んでいてもよい。グラフは有向グラフであってもよいし、無向グラフであってもよい。ユーザはグラフデータの定義と、グラフデータへのアクセスのために、グラフライブラリ(量子関連のライブラリ)を使ってもよい。グラフライブラリは、例えば、ノードの一覧、ノードの数、エッジの一覧、エッジの数、エッジが連結するノードに関する情報を出力する関数を含んでいてもよい。また、グラフライブラリは、グラフへのノードの追加、グラフからのノードの削除、ノード間へのエッジの追加、ノード間からのエッジの削除、経路となるエッジの選択、エッジの経路からの除外を行う関数を含んでいてもよい。なお、グラフライブラリは、レベル2(中位)以外のレベルのモデリングツールによって利用されてもよい。
ユーザは、プログラミングツール34を使って、レベル1(上位)問題モデル31cとレベル2(中位)問題モデル32cに基づき、L1(レベル1)変換プログラム31aのプログラミングを行うことができる。L1変換プログラム31aの処理内容については、特に限定しない。例えば、L1変換プログラム31aは、現実問題80(レベル1の問題モデル31c)のデータ(例えば、クライアントマシン22から入力される入力データ81)をレベル2の問題モデル32cのデータに変換するものであってよい。例えば、L1変換プログラム31aは、入力データ81をある目的関数に変換するものであってもよい。例えば、L1変換プログラム31aは、入力データ81に対して回帰を行い、ある回帰式を生成するものであってもよい。この場合、回帰式が目的関数に相当する。回帰手法の例としては、線形回帰、ロジスティック回帰、正則化項付き回帰が挙げられる。
現実問題80に制約条件がある場合、ユーザは、レベル1モデリングツール31を使って、レベル1(上位)問題モデル31cの中にその制約条件を組み込んでもよい。そして、ユーザは、プログラミングツール34を使って、L1変換プログラム31a内に、当該制約条件の判定処理を組み込むことができる。
ユーザは、プログラミングツール34を使い、レベル1(上位)問題モデル31cとレベル2(中位)問題モデル32cに基づき、L1(レベル1)逆変換プログラム31bをコーディングすることができる。また、ユーザは、L1(レベル1)変換プログラム31aに基づいて、L1(レベル1)逆変換プログラム31bをプログラミングしてもよい。L1逆変換プログラム31bの処理内容については、特に限定しない。例えば、L1逆変換プログラム31bは、レベル2(中位)モデル32cの解を現実問題の解82(レベル1問題モデル31cの解)に変換するものであってよい。再構築されたDNA配列、リスクを最小化する金融ポートフォリオは、現実問題の解82の例である。
L1逆変換プログラム31bが実行する変換処理の少なくとも一部が、L1変換プログラム31aが実行する変換処理の少なくとも一部の逆の処理となっていてよい。このため、プログラミングツール34は、L1変換プログラム31aのコーディング中に、当該プログラムの逆の処理を実行するコードを自動的に生成する機能を備えていてもよい。その場合、ユーザは、自動的に生成されたコードを利用することで、L1逆変換プログラム31bをコーディングする手間を減らすことができる。
後述するように、各ユーザは新規にL1変換プログラム31aと、L1逆変換プログラム31bの生成をすべて一から行わなくてもよい。例えば、記憶部8に生成済みの変換プログラムや逆変換プログラムが保存されている場合、ユーザは作成済みの変換プログラムや逆変換プログラムの一部を編集したり、作成済みの変換プログラムや逆変換プログラムを組み合わせたりして、必要なプログラムを作成してもよい。また、ユーザは既存の変換プログラムや逆変換プログラムの一部を流用してもよい。なお、これらの場合にユーザが利用する既存の変換プログラムおよび逆変換プログラムのレベルについては特に問わない。
また、ユーザは、レベル3モデリングツール33を使って、レベル3(下位)の問題モデル33cを記述することができる。
ユーザは、プログラミングツール34を使い、レベル2問題モデル32cとレベル3問題モデル33cに基づき、L2(レベル2)変換プログラム32aをコーディングすることができる。L2変換プログラム32aの処理内容については、特に限定しない。例えば、L2変換プログラム32aは、レベル2問題モデル(中位モデル)32cのデータを、レベル3問題モデル33cのデータに変換するものであってよい。
プログラミングツール34は、ユーザによるL2変換プログラム32aの開発を支援するライブラリ(支援ライブラリ)を提供してもよい。支援ライブラリの例として、変数を離散化するライブラリが挙げられる。これにより、各ユーザは連続変数の最適化問題を離散変数の組合せ最適化問題に変換するプログラムを作成することができる。また、支援ライブラリは、組合せ最適化問題の規模を抑制する機能を提供してもよい。例えば、支援ライブラリは主成分分析(PCA)や、多次元尺度構成法(MDS)などの手法を使って次元削減を行う機能を提供してもよい。支援ライブラリに実装される次元削減の手法については特に問わない。
支援ライブラリは、ひとつの組合せ最適化問題を複数の問題に分割する機能を提供してもよい。例えば、一部の変数を固定化し、組合せ最適化問題を分割することができるが、分割の手法については特に問わない。さらに、支援ライブラリは、組合せ最適化問題の制約条件の一部を削除し、問題を緩和する機能を提供してもよい。支援ライブラリは上述のグラフライブラリと共通のライブラリであってもよいし、関数呼び出しなどによって上述のグラフライブラリの機能を利用するライブラリであってもよい。なお、支援ライブラリは、レベル2(中位)以外のレベルのモデリングツールによって利用されてもよい。
ユーザは、プログラミングツール34を使い、レベル2問題モデル32cとレベル3問題モデル33cに基づき、L2(レベル2)逆変換プログラム32bをコーディングすることができる。また、ユーザはL2(レベル2)変換プログラム32aに基づき、L2(レベル2)逆変換プログラム32bをプログラミングしてもよい。L2逆変換プログラム32bの処理内容については、特に限定しない。例えば、L2逆変換プログラム32bは、レベル3問題モデル33cの解のデータをレベル2問題モデル32cの解のデータに変換するものであってよい。
L2逆変換プログラム32bが実行する変換処理の少なくとも一部は、L2変換プログラム32aが実行する変換処理の少なくとも一部の逆の処理となっていてよい。このため、プログラミングツール34は、L2変換プログラム32aのコーディング中に、当該プログラムの逆の処理を実行するコードを自動的に生成する機能を備えていてもよい。自動的に生成されたコードを利用することにより、ユーザは、L2逆変換プログラム32bをコーディングする手間を減らすことができる。
後述するように各ユーザは新規にL2変換プログラム32aと、L2逆変換プログラム32bの生成を一から行わなくてもよい。例えば、記憶部8に生成済みの変換プログラムや逆変換プログラムが保存されている場合、ユーザは生成済みの変換プログラムや逆変換プログラムの一部を編集したり、生成済みの変換プログラムや逆変換プログラムを組み合わせたりして、必要なプログラムを生成してもよい。また、ユーザは既存の変換プログラムや逆変換プログラムの一部を流用してもよい。なお、これらの場合にユーザが利用する既存の変換プログラムおよび逆変換プログラムのレベルについては特に問わない。
ユーザは、また、プログラミングツール34を用いて、レベル3問題モデル33cと量子関連コンピュータに入力可能なデータ形式の情報とに基づいて、L3(レベル3)変換プログラム33aをコーディングすることができる。L3変換プログラム33aの処理内容については、特に限定しない。例えば、L3変換プログラム33aは、レベル3問題モデル(下位モデル)33cのデータを、量子関連コンピュータに入力可能な形式のデータに変換するものであってよい。
ユーザは、プログラミングツール34を使い、レベル3問題モデル33cと量子関連コンピュータから出力されるデータ形式の情報とに基づき、L3(レベル3)逆変換プログラム33bをコーディングすることができる。また、ユーザは、L3(レベル3)変換プログラム33aに基づいて、L3(レベル3)逆変換プログラム33bをコーディングしてもよい。L3逆変換プログラム33bの処理内容については、特に限定しない。例えば、L3逆変換プログラム33bは、量子コンピュータから出力された解のデータをレベル3問題モデル33cの解のデータに変換するものであってよい。
L3逆変換プログラム33bが実行する変換処理の少なくとも一部は、L3変換プログラム33aが実行する変換処理の少なくとも一部の逆の処理となっていてよい。このため、プログラミングツール34は、L3変換プログラム33aのコーディング中に、当該プログラムの逆の処理を実行するコードを自動的に生成する機能を備えていてもよい。自動生成されたコードを利用することにより、ユーザは、L3逆変換プログラム33bをコーディングする手間を減らすことができる。
レベル1モデリングツール31、レベル2モデリングツール32、レベル3モデリングツール33は、作成された問題モデルを記憶部8に保存する。プログラミングツール34は、作成された変換プログラムおよび逆変換プログラムを記憶部8に保存する。変換プログラムおよび逆変換プログラムの形式については特に限定はない。例えば、プログラミングツール34がコンパイラの機能を備えている場合、プログラミングツール34は、プロセッサが実行可能なバイナリ形式のプログラムを生成してもよい。あるいは、プログラミングツール34はバイナリとなる前の中間形式のファイルを生成してもよい。プログラミングツール34はスクリプト言語のソースコードを生成してもよい。それぞれのレベルにおける変換および逆変換プログラムの形式は同一であってもよいし、異なっていてもよい。プログラミングツール34で使われるプログラミング言語については特に問わない。
各レベルに係る変換プログラムを組み合わせることによって、現実問題80のデータ(入力データ81)を量子関連コンピュータに入力可能な形式のデータに変換するプログラム(変換プログラム41)を生成することができる。同様に、各レベルに係る逆変換プログラムを組み合わせることによって、量子関連コンピュータから出力される解を現実問題の解82に変換するプログラム(逆変換プログラム42)を生成することができる。
なお、図2の例では、2つのレベルの問題モデルに基づき、変換プログラム(逆変換プログラム)を作成する場合について説明した。例えば、変換プログラムの場合、より上位の問題モデルは変換プログラムの入力データに対応し、より下位の問題モデルは変換プログラムの出力データに対応する。ただし、必ず上述の対応関係が満たされていなくてもよい。例えば、変換プログラム(逆変換プログラム)が3つ以上のレベルの問題モデルに跨る変換処理を含んでいてもよい。例えば、ユーザはレベル1(上位)モデル31cに相当するデータを入力とし、レベル3(下位)モデル33cに相当する変換プログラムを作成してもよい。
ここまでは、現実問題から3回の変換を行うと、量子関連コンピュータに入力可能なデータ形式がえられると仮定し、図2のモデルケースを説明した。次に、各分野への適用時において行われる問題の変換の例について述べる。
図3は、金融ポートフォリオの最適化のために、本実施形態に係るシステムを適用した場合における、問題のレベル構造の一例を示す。
例えば、ユーザが所定の制約条件を満たしたパッシブファンドの最適なポートフォリオを決めたいと考えているものとする。制約条件の例としては、保有すべき銘柄数の下限、保有できる銘柄数の上限、各銘柄の保有可能な株式数の上限、各銘柄の保有すべき株式数の下限などが挙げられる。また、複数の銘柄をグループ分けし、複数のグループから所定の比率でポートフォリオの銘柄を選択する制約条件が設定されてもよい。ここで、グループ分けの方法については特に問わない。また、ユーザはポートフォリオを東証株価指数(TOPIX)に連動させ、投資のリスクを最小化させることを希望している。
上述の目的を達成するため、ユーザはTOPIXをベンチマークとし、ファンドのトラッキングエラーが最小化されるよう、ファンドに組み入れられる銘柄と銘柄ごとの株式数を決めたい(問題60)。問題60は、図2における現実問題80に相当する。この場合、トラッキングエラーの計算式を目的関数f1(xi)として、トラッキングエラーを最小化する銘柄iと、銘柄ごとの株式数xiとを決める必要がある。この問題60は、はじめから組合せ最適化問題としてモデリングできる。このように、現実問題80がはじめから組合せ最適化問題(例えば、レベル2問題モデル)としてモデリング可能な場合、現実問題80を組合せ最適化問題に変換するプログラム(例えば、L1変換プログラム31a)は不要となる。同様に、対応する逆変換を行うプログラム(L1逆変換プログラム31b)も不要となる。
なお、問題60において、複数株式に係る過去N年間の株価データを入力データ81とし、トラッキングエラーを計算することができる。図4のグラフ52は、複数株式に係る過去N年間の株価データの例を示している。
ユーザは、量子関連コンピュータを用いて上述の問題60を解くために、問題60を量子関連コンピュータに入力可能なデータ形式に変換しなくてはならない。例えば、量子関連コンピュータがイジングマシンである場合、ユーザは問題60(例えば、レベル2問題モデル32c)の入力データ(図2における参照番号81)を、二値変数をパラメータとするイジングモデルを表す式(1)(例えば、レベル3問題モデル33c)に変換するプログラムを開発してよい。この変換プログラムは、図2のL2変換プログラム32aに相当する。このL2変換プログラム32aを開発するために、ユーザは、レベル3モデリングツール33を使って問題60に対応したイジングモデルの式(1)(レベル3問題モデル33c)を記述する。そして、ユーザはプログラミングツール34を使い、組み合せ最適化問題(レベル2問題モデル32c)とイジングモデルの式(1)(レベル3問題モデル33c)を参照しながら、L2変換プログラム32aの開発を行うことができる。L2変換プログラム32aによって、式(1)における相互作用係数Jijおよび局所磁場hiが求められる。相互作用係数Jijおよび局所磁場hiは図2のレベル3問題モデル33cに相当する。さらに、ユーザは、そのレベル3問題モデル33cを量子関連コンピュータに入力可能な形式のデータに変換するプログラムを開発してよい。この変換プログラムは、図2のL3変換プログラム33aに相当する。
ユーザは、問題60のモデル化において制約条件を反映させることができる。例えば、目的関数f1(xi)であるトラッキングエラーの計算式に補正項を加えることによって制約条件を反映させてもよい。また、相互作用係数Jijおよび局所磁場hiの計算時に、制約条件に合わせた補正が行われるようにしてもよい。
さらに、ユーザは、イジングマシンから出力される所定形式のデータをイジングモデルの式(1)(例えば、レベル3問題モデル33c)の基底状態を表す解(s1、s2、・・・、sm)に逆変換するプログラムを開発してよい。この逆変換プログラムは、図2に示されたL3逆変換プログラム33bに相当する。さらに、ユーザは、上記解(s1、s2、・・・、sm)を組合せ最適化問題の解に逆変換するプログラムを開発してよい。この逆変換プログラムは、図2に示されたL2逆変換プログラム32bに相当する。ここで、問題60の解とは、例えば、トラッキングエラーの最小化が期待できるポートフォリオ構成を示したベクトルxi={x1,x2,x3,...,xn}である。ここで、添え字iはポートフォリオに組み入れられる銘柄を示し、ベクトルxiの値は各銘柄の数量を示している。銘柄の数量は、株式数であってもよいし、合計が1となる比率で示されていてもよい。また、その他の単位で示されていてもよい。ベクトルxiは図2に示された現実問題の解82に相当する。
以上のようにして、金融ポートフォリオの最適化問題のためのL2変換プログラムグラム32a、L3変換プログラム33a、L2逆変換プログラム32bおよびL3逆変換往路グラム33bが開発されると、これらのプログラムによって、金融ポートフォリオの最適化問題の入力データ81をイジングマシンの入力データに自動的に変換することができる。また、これらのプログラムによって、イジングマシンの出力データを現実問題の解82に自動的に変換することができるようになる。
図3の問題60は、金融ポートフォリオの最適化問題の一例にしかすぎない。例えば、図4の中段に示したように、リターンを最大化させるポートフォリオを求めたい場合もありうる。ポートフォリオのリターンを最大化させたい場合、リターンを目的関数f2(xi)とすることができる。この問題を解きたい場合にも、図4に示されるように、ユーザは、図3の問題60の場合と同様の手順で、問題モデリングと、変換プログラムと逆変換プイログラムの開発を行うことができる。
図3の問題60の説明では、使用される量子関連コンピュータはイジングマシンであると想定していた。図5は、使用される量子関連コンピュータがイジングマシンである場合に、使われる下位モデル(レベル3問題モデル33c)の例を示している。図5の下位モデルはイジングモデルである。テーブル27は、局所磁場hiの例を示している。また、テーブル28は、相互作用係数Jijの例を示している。
図6は、ゲノム解析の分野(DNA鎖の塩基配列の決定)で、本実施形態に係るシステムを適用した場合における、問題のレベル構造の一例を示している。
図6の例では、DNA鎖を構成するDNA断片の配列を決定することが現実問題80に相当する。ユーザは、ラボなどで対象のDNA鎖を多数のDNA断片に切断する。DNA鎖の切断は、例えば制限酵素を使うことによって行うことができる。そして、ユーザは、各DNA断片を抽出し、各DNA断片の塩基配列を特定する。抽出されたDNA断片の塩基配列のデータは入力データ81に相当する。
ユーザは、例えば、自然言語を使って現実問題80の記述を行うことができる。記述された現実問題80はレベル1問題モデル31cに相当する。このとき、ユーザは、レベル1モデリングツール31を利用することができる。レベル1モデリングツール31は、例えば、DNA鎖の塩基配列を決定するために、必要な項目と、各項目に入力すべき内容を示したテンプレート、ひな形、または過去の問題記述例などを示す。このため、ユーザは現実問題80の記述を正確かつ漏れなく行うことができる。
各DNA断片がグラフのノードであると仮定すると、各DNA断片間の接続関係を推定する問題は、ハミルトン閉路問題として記述することができる。ユーザはレベル2モデリングツール32を使い、問題モデルとして複数のDNA断片に係る塩基配列データに基づくハミルトン閉路問題を記述することができる。ここで、ハミルトン閉路問題は、レベル2問題モデル32cに相当する。ただし、ユーザは、レベル1問題モデル31cの記述を省略することが可能なのであれば、レベル1問題モデル31cの記述を行わず、直接ハミルトン閉路問題(レベル2問題モデル32c)の記述を行ってもいい。
ユーザは、問題モデルを記述したら、プログラミングツール34を用いて、現実問題80の入力データ81(複数のDNA断片の塩基配列のデータ)を、レベル2のハミルトン閉路問題に変換するプログラム(変換プログラム)を開発することができる。この変換プログラムは、L1変換プログラム31aに相当する。
図7は、ハミルトン閉路問題の例を示している。図7の上側には有向グラフ25が示されている。また、図7の下側には、有向グラフ25を数値表現化したテーブル26が示されている。他のノードに向かうエッジが連結されているノードは、テーブル26の値が+1となっているフィールドを参照することによって確認することができる。例えば、有向グラフ25では、ノードn1からはノードn2に向かうエッジと、ノードn4に向かうエッジとが存在している。テーブル26の“n1”に係る行を確認すると、列“n2”および列“n4”のフィールドの値が+1となっている。
同様に、自ノードに向かっているエッジが連結されているノードは、テーブル26の値が−1となっているフィールドを参照することによって確認することができる。例えば、有向グラフ25には、ノードn2からノードn3に向かうエッジと、ノードn4からノードn3に向かうエッジがある。テーブル26の“n3”に係る行を確認すると、列“n2”および列“n4”のフィールドの値が−1となっている。図7では、有向グラフが示されているが、これは一例にしかすぎない。例えば、図6のハミルトン閉路問題では、有向グラフの代わりに無向グラフを使ってもよい。
以下では、再び図6の説明に戻る。ユーザは、量子関連コンピュータを用いてハミルトン閉路問題を解くために、ハミルトン閉路問題を量子関連コンピュータに入力可能なデータ形式に変換しなくてはならない。例えば、量子関連コンピュータがイジングマシンである場合、ユーザはハミルトン閉路問題を、二値変数をパラメータとするイジングモデルに変換する必要がある。そこで、ユーザは、レベル3モデリングツール33を使い、ハミルトン閉路問題に対応するイジングモデルの式(1)を記述する。ここで、イジングモデルの式(1)は、レベル3問題モデル33cに相当する。そして、ユーザは、プログラミングツール34を使い、ハミルトン閉路問題(レベル2問題モデル32c)とイジングモデルの式(1)(レベル3問題モデル33c)とを参照して、ハミルトン閉路問題を式(1)に変換するプログラムを開発することができる。この変換プログラムは、図2のL2変換プログラム32aに相当する。
L2変換プログラム32aによって、任意のハミルトン閉路問題に対応したイジングモデルの式(1)における相互作用係数Jijおよび局所磁場hiを自動的に計算することができるようになる。ここで、相互作用係数Jijおよび局所磁場hiは図2のレベル3問題モデル33cに相当する。ユーザは、さらにレベル3問題モデル33cに対応するデータを量子関連コンピュータ(例えばイジングマシン)に入力可能なデータ形式に変換するためのL3変換プログラム33aを開発することができる。ユーザは、L3変換プログラム33aの開発を、上述の図3の説明と同様の方法で行うことができる。
ユーザは、プログラミングツール34を使い、L1〜L3逆変換プログラム31b〜33bを開発することもできる。逆変換プログラムの開発も、上述の図3の説明と同様の方法で行うことができる。L3逆変換ププログラム33bが、量子関連コンピュータ(例えばイジングマシン)から出力された解のデータをイジングモデルの式(1)の解(s1、s2、・・・、sm)に変換する。L2逆変換プログラム32bは、イジングモデルの解(s1、s2、・・・、sm)をハミルトン閉路問題の解に変換する。そして、L1逆変換プログラム31bは、ハミルトン閉路問題の解を、現実問題80の解である、複数のDNA断片間の接続関係に変換する。これにより、ユーザはDNA鎖の塩基配列を決定することができる。
上述のように、現実問題80に対応するL1〜L3変換プログラム31a〜33aとL1〜L3逆変換プログラム31b〜33bが開発されると、ユーザが量子関連コンピュータの利用時に必要な変換処理が自動的に行われるようになる。ここで、変換処理は、現実問題80の入力データ81を量子関連コンピュータに入力可能なデータ形式に変換する処理と、量子関連コンピュータから出力された解を現実問題の解82に変換する処理とを含む。
図6の例に示したように、3段階または2段階の変換処理を行い、現実問題80を量子関連コンピュータに入力可能なデータ形式に変換してもよい。
図8は、問題モデルの一般的な構造例を示す。各問題モデル(例えば、図2の問題モデル31c〜33c)は図8と同様の構造を備えていてもよい。
図8の問題モデル90は、表現91と、機能92と、変数93と、結果94と、条件95のそれぞれの記述を含んでいる。表現91は、問題モデル90が適用される1または複数の対象を特定する。機能92は、表現91によって特定された対象が提供する機能、作用または動作を示す。変数93は、機能92に入力される可能性のある1または複数の変数(例えば、情報、物質、エネルギー、または値など)である。結果94とは、変数93の入力により、機能92によって行われる1または複数の結果、または機能92から出力される1または複数の結果を示す。ここで、結果は例えば、情報、物質、エネルギー、または値などを含む。条件95は、結果94の適用可否を判定するために結果94へ適用される条件を示す。問題モデル90において、条件95を満たす結果94が得られたときの変数93が、問題の解96となりうる。
図8では、問題モデルの構造の説明の都合上、表現91、機能92、変数93、結果94、および条件95がそれぞれ別のブロックで示されている。ただし、実際の問題モデルでは、例えば、機能92の記述の中に、表現91と変数93と結果94の記述が含まれている場合がある。また、実際の問題モデルでは、条件は暗黙のうちに決まっており、明示されてない場合もある。このように、実際の問題モデルは図8の構造との相違点を有することがある。本実施形態に係る問題モデルは、このような図8の構造との相違点を有するモデルをも包含する。
例えば、イジングモデル(図2のレベル3問題モデル33c)の式(1)では、2次元の格子点上に配置されたスピンが適用対象である。式(1)の左辺のハミルトニアンHは結果94の記述に相当し、右辺の多項式が機能92の記述に相当するといえる。そして、右辺における係数行列Jijとベクトルhiが、表現91の記述に相当し、スピン(二値変数)si、sjが変数93の記述に相当するといえる。そして、式(1)に明示されていないものの、結果94(ハミルトニアンH)が最小値になることがイジングモデルの最適条件である。この最適条件は、条件95に相当している。このため、ハミルトニアンHが最小値になった時の変数93(スピンsi、sj)の値が、イジングモデルの解96に相当する。このように、レベル3問題モデル33cは、表現91、機能92、変数93、結果94、および条件95のすべての記述が含まれていてもよい。
図6のように、DNA鎖の塩基配列を決定することが現実問題80である場合、レベル1問題モデル31cは、例えば、自然言語で現実問題80を記述してもよい。この場合、レベル1問題モデル31cが適用される対象は、複数のDNA断片のすべてを接続することによって形成される1本のDNA鎖である。レベル1問題モデル31cには、現実問題80の入力データ81である、複数のDNA断片の塩基配列の記述が含まれる。複数のDNA断片の塩基配列の記述は表現91に相当するといえる。また、レベル1問題モデル31cに“すべてのDNA断片が他のいずれかのDNA断片と接続される”というDNA鎖の構造の記述が含まれている場合、当該記述は機能92に相当するといえる。また、レベル1問題モデル31cには、相互に接続される可能性のある2つのDNA断片の相互関係、例えば、“一つの断片の一端の塩基配列と他の一つの断片の一端の塩基配列とが同じならば、その2つの断片は同じ塩基配列を有する端部にて相互に接続されうる”という記述が含まれていてもよい。当該記述は、“DNA断片間のありうる接続の組み合わせ”を(間接的ではあるが)定義したものであるため、変数93の記述に相当しているといえる。また、“DNA断片間のありうる接続の組み合わせ”(変数93の記述)が、“すべてのDNA断片が他のいずれかのDNA断片と接続される”(機能92の記述)ことによって、1本以上のDNA断片の連鎖が生成される。これは、結果94に相当する。結果94の記述は、機能92の記述に包含されているといえる。また、レベル1問題モデル31cには、“すべてのDNA断片が接続された結果は1本の鎖でなければならない”という条件の記述が含まれていてもよい。当該記述は条件95に相当するといえる。このように、レベル1問題モデル31cには、表現91、機能92、変数93、結果94、および条件95のすべての記述が含まれていてもよい。
図7のDNA鎖の塩基配列を決定で使われるハミルトン閉路問題(レベル2問題モデル32c)の記述には、表現91、機能92、変数93、結果94、および条件95のすべての記述が含まれていてもよい。また、一部の記述は黙示的な事項として、明示されていないものであってもよい。図7のテーブル26では、ノードn1、n2、・・・が表現91に相当しているといえる。また、テーブル26中の値(−1/0/+1)は、あるノードとその他のノードとの接続関係を示しており、問題モデル90の変数93に相当する。
テーブル26のいずれかの行を参照し、値が+1となっているいずれかの列を選択する。テーブル26の行はノードn1〜n6のいずれかに対応しているため、これはあるノードから別のノードに向かうエッジを特定する処理に相当する。例えば、ノードn1の行を参照し、値が+1である、ノードn2(エッジe1)またはノードn4(エッジe3)を選択することができる。次に、特定された列に対応するノードの行を参照する。例えば、ノードn2を選択した場合、ノードn2に対応する行を参照し、値が+1となっているいずれかの列を選択する。そして、選択された列に対応するノードの行を参照する。上述の処理を、テーブル26のすべての行について実行すれば、有向グラフ25のすべてのノードを通る経路を求めることができる。これは、問題モデル90の機能92に相当する。
また、上述の処理によって選択された、値が+1であるフィールドの集合は、有向グラフ25のすべてのノードを通る経路に対応する。したがって、上述の処理によって選択された、値が+1であるフィールドの集合は、問題モデル90の結果94に相当するといえる。また、結果94において、ひとつの経路が求められることは、問題モデル90の条件95に相当する。このように、レベル2問題モデル32cは、表現91、機能92、変数93、結果94、および条件95のすべての記述を含んでいてもよい。
上述のように、どのレベルの問題モデルも、図8に示した問題モデル90の要素(表現91、機能92、変数93、結果94、および条件95)を含む構造によって記述することができる。図2に示した各レベルのモデリングツール31〜33は、ユーザが各レベルの問題モデルを図8の問題モデルの要素を使って記述できるよう、ユーザを支援する。例えば、各レベルのモデリングツール31〜33がユーザに提示する問題モデルのテンプレートまたはひな形中に、表現91、機能92、変数93、結果94、および条件95を特定するのに必要な項目と各項目に入力すべき内容の説明とが含まれていてもよい。ユーザがそのテンプレートまたはひな形に基づいて問題モデルを記述すれば、表現91、機能92、変数93、結果94、および条件95の各要素を含む問題モデルを作成することができる。
以下では、再び図1を参照しながら、システムの各要素を説明する。
制御部5は、量子関連コンピュータ11a〜11cを制御する。例えば、制御部5は、量子関連コンピュータ11a〜11cに計算処理の開始を求める指令、計算処理の停止を求める指令を送信することができる。また、制御部5は、量子関連コンピュータ11a〜11cとのデータの送受信を行う。例えば、制御部5は変換部4によって量子関連コンピュータへ入力可能な形式に変換された、問題のデータを送信してもよい。また、制御部5は量子関連コンピュータから計算された解のデータを取得してもよい。ダウンロードされた解のデータは記憶部8に保存されてもよいし、変換部4に転送されてもよい。制御部5から送信された指令またはデータは、通信回路7およびネットワーク20を介して量子関連コンピュータ11a〜11cに送信される。同様に、制御部5は、通信回路7およびネットワーク20を介して量子関連コンピュータからデータを取得することができる。
ユーザは管理部6が提供するインタフェースを操作し、計算に使用する量子関連コンピュータを指定してもよいし、量子関連コンピュータの使用条件を指定してもよい。制御スクリプト51を使うことにより、計算に使用する量子関連コンピュータの指定や、量子関連コンピュータの使用条件の指定を行うことができる。例えば、ユーザが量子関連コンピュータの使用条件の指定をしたら、制御部5は、図2の制御スクリプト生成ツール50を使って、制御スクリプト51の生成または更新を行ってもよい。ユーザが計算に使用する量子関連コンピュータの指定を行った場合、制御部5は、制御スクリプト生成ツール50を使って、制御スクリプト51を更新してもよい。
なお、ユーザが直接、制御スクリプト生成ツール50を操作し、制御スクリプト51の作成または更新を行ってもよい。例えば、制御スクリプト生成ツール50は、制御スクリプト51に記述すべき内容を含むテンプレートをユーザに提示し、ユーザが制御スクリプトを記述することを支援してもよい。また、制御スクリプト生成ツール50は、ユーザが入力したパラメータ、ユーザが選択したオプションの少なくともいずれかに基づいて自動的にスクリプトを生成する機能を提供してもよい。これにより、ユーザの負担を軽減することができる。
上述のように、ユーザは問題(例えば、組合せ最適化問題)を複数の問題に分割することがある。この場合、ユーザは制御部5を使って分割後の組合せ最適化問題の求解を行う量子関連コンピュータを選択することができる。また、ユーザが問題分割の有無に関わらず、複数の量子関連コンピュータを使って並列的に問題の解を求める場合、ユーザは制御部5を使って使用する量子関連コンピュータを選択してもよい。複数の量子関連コンピュータが計算を行う場合、ユーザは制御部5を使って量子関連コンピュータが求解を行う順序を指定してもよい。また、情報処理システム10に量子関連コンピュータが追加された場合、ユーザは制御部5を介して当該量子関連コンピュータを使用可能なマシンとして登録することができる。
また、ユーザは制御部5を使って消費電力の上限、使用するメモリ領域の上限、計算時間の上限などを指定してもよい。また、量子関連コンピュータの種類によっては、初期解、計算が完了したと判定する条件、時間発展のスケジュールの指定を行ってもよい。
管理部6は、各ユーザに対して情報処理システム10を操作するインタフェースを提供する。インタフェースはWebサーバによって提供されるWebブラウザインタフェースであってもよい。また、インタフェースはAPIやCLIであってもよく、実装については特に問わない。各ユーザのクライアントマシン22で使われるクライアントアプリケーションの種類については特に問わない。例えば、各ユーザはWebブラウザ上でコーディングを行ってもよいし、統合開発環境(IDE)を提供するアプリケーション上でコーディングを行ってもよい。この場合、ユーザは管理部6の提供するインタフェースを介して開発部3を操作する。ユーザは管理部6の提供するインタフェースを介して制御スクリプト生成ツール50を含む制御部5を操作してもよい。また、ユーザは、管理部6のインタフェースを介し、変換部4を操作してもよい。
通信回路7は、ネットワーク20およびネットワーク21と接続されている。通信回路7の例として、イーサネットによる通信を行うNICが挙げられる。ネットワーク20およびネットワーク21の例として、TCP/IPネットワークが挙げられる。通信回路7はネットワーク20を介して量子関連コンピュータ11a〜11cと接続されている。また、通信回路7はネットワーク21を介してクライアントマシン22および外部情報処理システム23と接続されている。図1のネットワーク構成は一例であり、これとは異なる構成を用いてもよい。また、ネットワークで使われる通信規格および通信媒体の種類については特に限定しない。
記憶部8は、各レベルに係る問題モデルのデータ、変換プログラム41(各レベルに係るサブ変換プログラム)のデータ、逆変換プログラム42(各レベルに係るサブ逆変換プログラム)のデータ、制御スクリプト51のデータ、処理用の中間データ、情報処理装置1で動作するプログラム(例えば、プログラミングツール34、各レベルのモデリングツール、制御スクリプト生成ツール50)のデータなど、各種のデータを保存可能な記憶領域を提供する。記憶部8は、例えばSRAM、DRAMなどの揮発性メモリであってもよいし、NAND、MRAM、FRAMなどの不揮発性メモリでもよい。またハードディスク、SSDなどのストレージ装置や、外部の記憶装置であってもよい。すなわち、記憶部8の種類については特に限定しない。また、記憶部8は複数の種類のメモリやストレージの組み合わせであってもよい。
クライアントマシン22は、ユーザが使用する情報通信端末である。情報通信端末の例としては、パソコン、スマートフォン、タブレット、デジタルテレビなどが挙げられる。ただし、装置の種類については特に問わない。図1には、1台のクライアントマシン22しか示されていないが、クライアントマシン22の台数はこれより多くてもよい。
情報処理システム10を利用する複数のユーザは、各レベルに係る問題モデル、サブ変換プログラム、およびサブ逆変換プログラムの作成作業を分担して行うことができる。すなわち、一ユーザがすべてのレベルに係る問題モデル、サブ変換プログラム、およびサブ逆変換プログラムを作成しなくてもよい。
例えば、各ユーザは、自らが専門的な知識と経験を有するレベルの問題モデルの作成を担当し、その他のレベルの問題モデルは別のユーザが作成を担当してもよい。例えば、金融ポートフォリオおよびそれに関連する専門知識を有するユーザや、ポートフォリオ設計の実務経験を有するユーザは、金融ポートフォリオの現実問題80を記述する問題モデル(例えば、レベル1(上位)モデル31c)の作成に集中してもよい。金融、物流、交通、ライフサイエンスなど、現実問題80の関係する分野によって、異なるユーザが現実問題80を記述する問題モデルの作成を行ってもよい。
また、応用数学の専門知識または実務経験を有するユーザは、組合せ最適化問題を記述する問題モデル(例えば、レベル2(中位)モデル32c)の作成に集中してもよい。量子関連コンピュータの専門知識を有するユーザは、量子関連コンピュータに入力可能なデータ形式を記述する問題モデル(例えば、レベル3(中位)モデル33c)の作成に集中してもよい。量子関連コンピュータの種類ごとに異なるユーザが、量子関連コンピュータに入力可能なデータ形式を記述する問題モデルを担当してもよい。これにより、量子関連コンピュータの特性を考慮した問題モデルを用意することができる。なお、一ユーザが複数レベルの問題モデルの作成を行ってもよい。例えば、一ユーザが複数の専門分野における知識と経験を有する場合や、一ユーザが複数名のチームである場合では、一ユーザが複数レベルの問題モデルの作成を行うことが効率的なこともある。
専門的な知識と経験に基づいて、問題モデルの作成を行うユーザを決めることによって、問題解決に必要な情報を失わないよう、適切に問題の変形や単純化を行うことができる。また、現実問題80の的確な定義と記述を行うことが可能となる。各ユーザが担当する作業は管理者などによって割り当てられてもよいし、各ユーザが自主的に参加する形で作成する問題モデルが決められてもよい。また、管理者などが特定の専門的な知識と経験を有するユーザに問題モデルの作成を依頼してもよい。
ユーザがあるレベルの問題モデルを行った場合、ユーザは当該レベルに対応するサブ変換プログラムおよびサブ逆変換プログラムの作成を行ってもよい。これにより、ユーザは自らの専門的な知識と、問題モデルの理解とに基づき、コーディングを行うことができる。また、あるレベルの問題モデルを行ったユーザは、別のユーザに当該レベルに対応するサブ変換プログラムおよびサブ逆変換プログラムの作成を行わせてもよい。例えば、特定のプログラミング言語によるコーディングの経験が豊富なユーザがいるのであれば、当該ユーザはコーディング作業に特化してもよい。
上述の支援ライブラリ、グラフライブラリなどのライブラリの設計、コーディング、テストを行うユーザがいてもよい。また、ユーザが問題モデルを記述するテンプレートまたはひな形を用意し、情報処理装置1にアップロードしてもよい。
ユーザは、各レベルに係る問題モデル、サブ変換プログラム、およびサブ逆変換プログラムなどの成果物を、情報処理システム10を利用する他のユーザに共有することができる。これにより、問題モデル、変換プログラム41、逆変換プログラム42の作成に要する工数を削減することが可能となる。また、ユーザは作成したライブラリ、テンプレート、ひな形を他ユーザに共有してもよい。これにより、当該ユーザが有する専門的な知識と経験を他のユーザに共有し、他ユーザの作業負担を軽減することができる。
また、本実施形態に係る情報処理システムを用いることにより、計算に使われる量子関連コンピュータの種類が変わった場合にも、変換プログラム、逆変換プログラム、および各レベルの問題モデルを一から作成し直す必要がなくなる。例えば、以前使われていた量子関連コンピュータとは異なる種類の量子関連コンピュータが実用化された場合、計算に使われる量子関連コンピュータの種類が変わる可能性がある。そのような場合には、異なる種類の量子関連コンピュータに対応した、問題モデルと、下位のサブ変換プログラムと、下位のサブ逆変換プログラムとを作成すればよい。
一方、ユーザは計算に使われる量子関連コンピュータの種類が変わっても、その他のレベルに係るサブ変換プログラムおよびサブ逆変換プログラムはそのまま使い続けることができる。変換プログラム41および逆変換プログラム42は、複数レベルに分けられており、レベルごとの組み換えが可能となっている。このため、計算に使われる量子関連コンピュータの種類が変わったとしても、開発したソフトウェアの互換性を確保でき、既存のソフトウェア資産を継承することができる。
外部情報処理システム23は、情報処理システム10とデータの送受信を行う。例えば、外部情報処理システム23は、情報処理システム10に入力データ81を含む現実問題80のデータを送信する。また、外部情報処理システム23は、情報処理システム10から現実問題の解82をダウンロードしてもよい。外部情報処理システム23は、ダウンロードした現実問題の解82に基づき、別の処理を実行することができる。外部情報処理システム23が実行する処理の内容については特に問わない。なお、図1にはひとつの外部情報処理システム23のみが示されているが、外部情報処理システム23の数はこれより多くてもよい。
図9は、量子関連コンピュータの構成例を示したブロック図である。図9の量子関連コンピュータ11aは、制御回路12と、通信回路13と、演算回路14と、記憶部15とを備えている。制御回路12は、量子関連コンピュータ11aの全体を制御する。例えば、制御回路12は、通信回路13を介して、外部から各種の制御信号を受信し、演算回路14に計算を開始させてもよい。また、制御回路12は、各構成要素の電源管理、冷却などの制御を行ってもよい。通信回路13は、量子関連コンピュータの外部の情報処理機器(例えば、情報処理装置1)とのデータ通信を行う。演算回路14は、入力された形式のデータに基づき、計算を実行する。演算回路14が実行する計算の内容は量子関連コンピュータの種類に依存する。また、演算回路14の構成も量子関連コンピュータの種類によって異なる。記憶部15は、必要なプログラム、計算に必要なデータを保存可能な記憶領域を提供する。情報処理装置1の記憶部8と同様、使用する記憶素子または記憶装置の種類および構成については特に問わない。
ここまでは、本実施形態に係るシステムの構成について説明した。次に、本実施形態に係るシステムで使われるデータ構造について説明する。
図10は、問題のタイプの定義例を示している。問題タイプデータ54では、ユーザが解く問題の定義と分類を行っている。問題タイプデータ54は現実問題80をルートノードとするツリー構造となっている。深さ1では、“金融”ノードと、“物流”ノードと、“交通”ノードと、“ライフサイエンス”ノードが定義されている。深さ1では、業界ごとにノードが定義されている。深さ2では、“金融”ノードの子ノードとして、“ポートフォリオ最適化”ノードと、“リスクマネジメント”ノードとが定義されている。さらに、同じ深さ2に、“ライフサイエンス”ノードの子ノードとして、“DNAシーケンシング”ノードが定義されている。
深さ3では、“ポートフォリオ最適化”ノードの子ノードとして、“トラッキングエラー最小化”ノードと、“リターン最大化”ノードとが定義されている。さらに、同じ深さ3に、“DNAシーケンシング”ノードの子ノードとして、“シーケンサA用”と、“シーケンサB用”とが定義されている。このように、問題タイプデータ54は、業界、内容、適用対象などの観点に基づき、現実問題80を分類している。また、問題タイプデータ54の各ノードは現実問題80の種類を定義しているともいえる。
問題タイプデータ54のノードを参照することによって、対応する種類に係る現実問題80で使用する変換プログラム41と逆変換プログラム42を特定できるようにしてもよい。例えば、ノードに対応する変換プログラム41と逆変換プログラム42へのポインタを格納してもよい。また、ノードに対応する変換プログラム41と逆変換プログラム42のファイル名を格納してもよい。なお、各ノードからサブ変換プログラムとサブ逆変換プログラムとを参照できるようにしてもよい。
図10の問題タイプデータ54は一例にしかすぎない。したがって、図10とは異なる観点に基づき、現実問題80の種類を分類してもよい。例えば、量子関連コンピュータに入力可能なデータ形式に至るまでに必要な変換回数に基づき、現実問題を分類してもよい。また、現実問題80がはじめから組合せ最適化問題としてモデリングできるか否かを基準に現実問題80を分類してもよい。また、図10のツリー構造は一例にしかすぎない。したがって、ツリー構造の深さ、子ノードの数は図10と異なっていてもよい。また、ツリー以外のデータ構造によって現実問題80の種類を定義してもよい。
図10のパターンセット55aは、SAT(boolean satisfiability testing)、TSP(巡回セールスマン問題)、ハミルトン路問題、オイラー路問題など組合せ最適化問題の種類を定義している。また、パターンセット55aは、組合せ最適化問題に容易に変換できる最適化問題を含んでいてもよい。例えば、パターンセット55aには、2次計画問題も含まれている。2次計画問題は、従属変数と目的変数を離散化させることにより、組合せ最適化問題に変換することができる。
ユーザは、現実問題80がはじめから特定の組合せ最適化問題にモデリングできる場合、当該組合せ最適化問題の種類をパターンセット55aに追加してもよい。また、ユーザは現実問題80を特定の組合せ最適化問題に変換する場合、当該組合せ最適化問題の種類をパターンセット55aに追加してもよい。パターンセット55aから他のデータを参照できるようにしてもよい。例えば、パターンセット55aに各種類の組合せ最適化問題への変換を行う変換プログラム41へのポインタやファイル名を格納してもよい。
図11のマシンタイプデータ55bは、量子関連コンピュータの種類を定義する。マシンタイプデータ55bは、“量子関連コンピュータ”ノードをルートノードとするツリー構造となっている。深さ1では、“イジングマシン”ノードと、“メタヒューリスティックス”ノードと、“ゲート式量子コンピュータ”ノードとが定義されている。深さ2では、“イジングマシン”ノードの子ノードとして、“エミュレータ”ノードと、“量子アニーリングマシン”ノードとが定義されている。さらに、同じ深さ2に、“ゲート式量子コンピュータ”ノードの子ノードとして、“マシンA”ノードと、“マシンB”ノードとが定義されている。
深さ3では、“エミュレータ”ノードの子ノードとして、“FPGA実装”ノードと、“ソフトウェア実装”ノードが定義されている。このように、マシンタイプデータ55bでは、量子関連コンピュータを原理に基づく上位の分類をしてから、実装方式の違いなどの下位の分類に基づき、個々の量子関連コンピュータを定義している。
マシンタイプデータ55bから他のデータを参照できるようにしてもよい。例えば、各ノードから、対応する種類に係る量子関連コンピュータに入力可能なデータ形式への変換を行うL3変換プログラム33aを参照できるようにしてもよい。例えば、各ノードにL3変換プログラム33aへのポインタを格納してもよいし、各ノードにL3変換プログラム33aのファイル名を格納してもよい。また、ユーザは、その他の量子関連コンピュータとは異なる種類の量子関連コンピュータが情報処理システム10に追加された場合、マシンタイプデータ55bを更新することができる。
図12のテーブル56は、L1プログラムテーブルの一例である。テーブル56のそれぞれの行は、各L1変換プログラム31a(L1逆変換プログラム31b)に対応している。例えば、ID=“L1001”の行は、リターンを最大化させる金融ポートフォリオを求めたいときに、使用する各L1変換プログラム31a(L1逆変換プログラム31b)のファイル名を格納している。また、テーブル56の各行は、問題タイプデータ54に基づく現実問題80の分類と、各L1変換プログラム31a(L1逆変換プログラム31b)が適用する手法に関する情報も含む。
図13のテーブル57は、L2プログラムテーブルの一例である。テーブル57のそれぞれの行は、各L2変換プログラム32a(L2逆変換プログラム32b)に対応している。例えば、ID=“L2002”の行は、トラッキングエラーを最小化させる金融ポートフォリオを求めたいときに、使用する各L2変換プログラム32a(L2逆変換プログラム32b)のファイル名を格納している。また、テーブル57の各行は、問題タイプデータ54に基づく現実問題80の分類と、各L2変換プログラム32aによる変換後に生成される最適化問題の種類に関する情報も含む。
図14のテーブル58は、L3プログラムテーブルの一例である。テーブル58のそれぞれの行は、各L3変換プログラム33a(L3逆変換プログラム33b)に対応している。例えば、ID=“L3001”の行は、ハミルトン路問題を量子アニーリングマシンで実行可能な形式に変換するL3変換プログラム33aと、その逆の変換を行うL3逆変換プログラム33bのファイル名を格納している。
図12〜図14のプログラムテーブルは、図2に示したモデルケースのレベル構造にしたがっている。このため、問題のレベル構造が図2と異なっている場合、図12〜図14とは異なる形式でプログラムテーブルを定義してもよい。また、図10〜図14のデータ構造は記憶部8に保存することができる。ただし、少なくとも一部のデータ構造を外部の記憶装置に保存してもよく、上述のデータ構造の保存先については特に限定しない。
次に、本実施形態に係る情報システムによって行われるプログラムの開発フローについて説明する。図15は、情報処理システムによるプログラムの開発の例を示したフローチャートである。以下では、図15を参照しながら、処理を説明する。
まず、ユーザは解きたい問題(第2問題)の種類を情報処理装置1に入力する。そして、情報処理装置1は記憶部8を参照し、当該種類の問題を解くためのプログラムを探索する(ステップS101)。ここで、解きたい問題とは、図2の現実問題80のことをいう。また、問題を解くためのプログラムとは、図2に示された変換プログラム41と、逆変換プログラム42のことをいう。図2に示されたように、変換プログラム41は、少なくとも下位レベルのサブ変換プログラム(L3変換プログラム33a)を含む。また、逆変換プログラム42は、少なくとも下位レベルのサブ逆変換プログラム(L3逆変換プログラム33b)を含む。
情報処理装置1による探索の結果、該当する種類の問題を解くプログラムが見つかった場合(ステップS102のYES)、情報処理システム10は、該当する種類の問題を解くプログラムの識別子(ID)をユーザに返す(ステップS105)。また、情報処理装置1による探索の結果、該当する種類の問題を解くプログラムが見つからない場合(ステップS102のNO)、ユーザは該当する種類の問題を解くプログラムを作成する(ステップS103)。とくに、変換プログラム41および逆変換プログラム42が作成対象となる現実問題80を第1問題とよぶ。
そして、ユーザは該当する種類の問題を解くプログラムを情報処理装置1に登録する(ステップS104)。ステップS104では、プログラムの識別子が決定される。また、作成されたプログラムは、当該プログラムの識別子とともに情報処理装置1の記憶部8に保存される。このとき、L1プログラムテーブル、L2プログラムテーブル、L3プログラムテーブルの少なくともいずれかのテーブルが更新されてもよい。テーブルが更新される場合、IDが新規登録される。その後、当該プログラムの識別子がユーザに返される(ステップS105)。
変換プログラム41(いずれかのレベルに係るサブ変換プログラムを含む)、逆変換プログラム42(いずれかのレベルに係るサブ逆変換プログラムを含む)は、情報処理システム10以外の情報処理システム上で実行されてもよい。したがって、ステップS104でプログラムは、情報処理システム10以外の情報処理システムに登録されてもよい。ステップS103で実行される処理と、ステップS104で実行される処理の詳細については後述する。
はじめに、図15のステップS103で実行される処理の詳細について説明する。上述のように、現実問題80の種類によって、量子関連コンピュータが実行可能な形式に至るまでに必要な変換の回数が異なる。したがって、プログラムの開発を行う際には、生成が必要なプログラムのレベルを特定する必要がある。
図16は、生成が必要なプログラムのレベルを特定する処理の例を示したフローチャートである。以下では、図16を参照しながら、処理を説明する。なお、図17の処理の詳細については後述する。
はじめに、現実問題80がはじめから組合せ最適化問題にモデリング可能であるか否かを判定する(ステップS201)。現実問題80がはじめから組合せ最適化問題にモデリング可能である場合(ステップS201のYES)、下位レベル(図2のレベル3)について、図17の処理を実行する(ステップS202)。現実問題80がはじめから組合せ最適化問題にモデリング可能でない場合(ステップS201のNO)、現実問題80を1回の変換で組合せ最適化問題にできるか否かを判定する(ステップS203)。
現実問題80を1回の変換で組合せ最適化問題にできる場合(ステップS203のYES)、中位レベル(図2のレベル2)と下位レベル(図2のレベル3)のそれぞれについて、図17の処理を実行する(ステップS204)。現実問題80を1回の変換で組合せ最適化問題にできない場合(ステップS203のNO)、上位レベル(図2のレベル1)、中位レベル(図2のレベル2)、下位レベル(図2のレベル3)のそれぞれについて、図17の処理を実行する(ステップS205)。
次に、図16のステップS202、ステップS204、ステップS205で実行される処理について説明する。図17は。あるレベルのプログラムを生成する処理の例を示したフローチャートである。以下では、図17を参照しながら、処理を説明する。
まず、対象レベルについて類似した問題に係るサブ変換プログラムまたはサブ逆変換プログラムが記憶部8に保存されているか否かを判定する(ステップS301)。対象レベルの例として、上位レベル(図2のレベル1)、中位レベル(図2のレベル2)、下位レベル(図2のレベル3)が挙げられる。例えば、ステップS301では、問題タイプデータ54のツリー構造を参照し、問題の類似度を計算してもよい。類似度がしきい値より大きい場合、現実問題80とサブ変換プログラムまたはサブ逆変換プログラムを作成済みの問題が類似していると判定することができる。ツリー構造を走査したときにおけるノード間の距離が所定の値より小さいとき、問題が互いに類似していると判定することができる。また、現実問題80に係るノードとサブ変換プログラムまたはサブ逆変換プログラムを作成済みの問題に係るノードがいずれもあるノードの子ノードである場合に、問題が互いに類似していると判定してもよい。
また、その他の基準に基づいて、問題の類否を判定してもよい。例えば、変換後に生成される組合せ最適化問題の種類が同一であるとき、2つの問題は互いに類似していると判定してもよい。また、下位レベルの問題の場合、量子関連コンピュータの種類が同一であるとき、2つの問題は互いに類似していると判定してもよい。また、上述とは異なる手法で問題の類似度を計算し、問題の類否判定を行ってもよい。例えば、ユーザが入力した、問題の特徴を示すキーワードもしくは自然文に基づき、ツリー構造の各ノードに関連付けられたデータを対象とした全文検索を行い、類似した問題を抽出してもよい。ここで、全文検索では同義語を利用した曖昧検索を行ってもよい。開発部3は、ユーザの入力に基づき、検索を実行し、少なくとも1つの問題モデルをユーザに提示してもよい。
対象レベルについて類似した問題に係るサブ変換プログラムまたはサブ逆変換プログラムが記憶部8に保存されている場合(ステップS301のYES)、ユーザは対象レベルのプログラミングツール34を使って既存のサブ変換プログラムまたはサブ逆変換プログラムの少なくともいずれかを編集し、問題に係るサブ変換プログラムとサブ逆変換プログラムを作成する(ステップS302)。例えば、情報処理装置1の開発部3は、管理部6が提供するインタフェースを介してユーザに類似した問題に係るサブ変換プログラムとサブ逆変換プログラムの情報を提示してもよい。対象レベルについて、複数の類似しているサブ変換プログラムが記憶部8に保存されている場合、ユーザはいずれかのサブ変換プログラムを編集し、サブ変換プログラムまたはサブ逆変換プログラムを作成してもよい。また、ユーザは、複数のサブ変換プログラムを編集し、サブ変換プログラムまたはサブ逆変換プログラムを作成してもよい。対象レベルについて、複数の類似しているサブ変換プログラムが記憶部8に保存されている場合についても、上述と同様である。
対象レベルについて類似した問題に係るサブ変換プログラムまたはサブ逆変換プログラムが記憶部8に保存されていない場合(ステップS301のNO)、ユーザはプログラミングツール34を用いて、新規にサブ変換プログラムとサブ逆変換プログラムを作成する(ステップS303)。なお、問題の類否に関わらず、既存のサブ変換プログラムまたはサブ逆変換プログラムと共通した処理がある場合、ユーザは既存のサブ変換プログラムまたはサブ逆変換プログラムの一部を流用し、サブ変換プログラムとサブ逆変換プログラムを作成してもよい。
なお、対象レベルについて類似した問題に係るサブ変換プログラムまたはサブ逆変換プログラムが記憶部8に保存されていない場合(ステップS301のNO)、記憶部8を参照し、対象レベルについて類似した問題に係る問題モデルを探索してもよい。ここで、問題の類否判定に使われる基準をステップS301より緩和し、問題モデルが抽出される確率または、抽出される問題モデルの数を増やしてもよい。類否判定の基準を緩和する方法の例としては、類似度のしきい値を小さくする方法があるが、その他の方法を使ってもよい。これにより、“類似する”問題に係るサブ変換プログラムまたはサブ逆変換プログラムが見つからない場合であっても、ユーザがサブ変換プログラムとサブ逆変換プログラムの開発時に参考とすることができる問題モデルが見つかる可能性を高めることができる。類似した問題に係る問題モデルまたは参考にできる問題モデルが見つかった場合、ユーザは、問題モデルに係る情報を参照しながら、サブ変換プログラムとサブ逆変換プログラムを作成することができるため、開発にかかる負担が軽減される。すなわち、開発部3は、第2問題(ユーザが解きたい現実問題80)と第1問題(サブ変換プログラムまたはサブ逆変換プログラムを作成済みの現実問題80)との間の類否に基づき、少なくとも1つの問題モデルをユーザに提示してもよい。
なお、ユーザが上述の見つかった問題モデルを参照したところ、そのままではサブ変換プログラムとサブ逆変換プログラムの作成が難しいと判断される場合もある。この場合、ユーザはモデリングツールを用いて、見つかった問題モデルを第2問題により適合した問題モデルに編集することができる。さらに、類似した問題に係る問題モデルまたは参考にできる問題モデルのいずれも見つからない場合、ユーザは、モデリングツールを用いて新しい問題モデルを作成することができる。
なお、プログラミングツール34には、プログラムの検証機能が含まれていてもよい。プログラムの検証機能によって、ユーザは変換プログラム41と、逆変換プログラム42の開発の各ステップで、開発中のプログラムを実行し、期待される(正解の)出力と得られた出力とを比較し、プログラムをテストすることができる。
すべての必要なレベルについてサブ変換プログラムとサブ逆変換プログラムの作成ができたら、ある現実問題80について、変換プログラム41と、逆変換プログラム42の開発が完了したといえる。ユーザは、作成した変換プログラム41と、逆変換プログラム42とを記憶部8に保存する。なお、各ユーザが作成した変換プログラム41/逆変換プログラム42(以下、プログラムという)に対してアクセスレベルが設定されていてもよい。アクセスレベルは、第三者の属性に応じたものであってもよい。
例えば、あるユーザが他のユーザに対してプログラムの利用を許可した場合には、当該ユーザが作成したプログラムを他のユーザからアクセス可能に設定する。すなわち、ユーザは、第三者によるプログラムの再利用の可否を設定してもよい。また、各ユーザは他のユーザ(第三者)に対してプログラムの再利用を許可する場合、使用の対価を設定してもよい。アクセルレベルは、ユーザの契約内容や、ユーザが支払った対価に基づいて定められてもよい。
図18は、情報処理システムにおけるプログラム実行処理の例を示したフローチャートである。以下では、図18を参照しながら、実施形態に係る情報処理システムにおいて、プログラムを実行する処理を説明する。
まず、ユーザは、所望の現実問題80を解くためのプログラムの識別子を入力する(ステップS111)。なお、ユーザは、プログラムの識別子の代わりにプログラムの名称や用途などを入力してもよい。この場合、プログラムの名称や用途などはプログラムの識別子に関連付けられているものとする。次に、情報処理システムは、入力された識別子に対応するプログラムを呼び出す(ステップS112)。そして、情報処理システムは、該当するプログラムを実行し、解を求める(ステップS113)。
図19は、情報処理システムを用いて問題の解を求める処理の例を示している。以下では、図19を参照しながら、処理を説明する。
変換プログラム41は、現実問題の入力データ81を、量子関連コンピュータに入力可能なデータ形式に変換する。例えば、量子関連コンピュータがイジングマシンである場合、相互作用係数Jijおよび局所磁場hiが量子関連コンピュータに入力される。そして、情報処理装置1の制御部5は、量子関連コンピュータに計算を開始させる。このとき、制御部5は、所定の制御条件で量子関連コンピュータを制御してもよい。ユーザは、例えば、量子関連コンピュータの計算時間、電力使用量、メモリ使用量、使用コストの上限を設定してもよい。この場合、制御部5は、計算時間の上限に達したら、量子関連コンピュータによる計算処理を停止させる。また、ユーザは、量子関連コンピュータの計算が完了したと判定する条件を設定してもよい。この場合、制御部5は、量子関連コンピュータが所定の条件を満たしたら、量子関連コンピュータによる計算処理を停止させる。なお、ユーザは、特に条件を設定せず、量子関連コンピュータによる計算が終了するまで待機していてもよい。
なお、変換プログラム41に含まれる各レベルのサブ変換プログラム、逆変換プログラム42に含まれる各レベルのサブ逆変換プログラムは実行時オプションやパラメータの指定機能を備えていてもよい。この場合、ユーザは現実問題80の解を求める際に、少なくとも一部のレベルのサブ変換プログラムまたはサブ逆変換プログラムの実行時オプションまたはパラメータの設定を指定してもよい。これにより、計算に使用される量子関連コンピュータの種類が変更された場合でも、変換プログラム41または逆変換プログラム42の最適化を行うことができる。ユーザは、上位レベルの問題モデルの情報を参照し、下位レベルに係るサブ変換プログラムまたはサブ逆変換プログラムの実行時オプションやパラメータの指定を行うことができる。すなわち、変換部4は、少なくとも一部のレベルにおける変換プログラム41または逆変換プログラム42の実行時オプションまたはパラメータの設定の指定が可能であってもよい。
上述の条件設定は、制御スクリプト51によって行われてもよい。制御スクリプト51は、計算を実行する量子関連コンピュータを指定する情報を含んでいてもよい。ユーザは計算を実行する量子関連コンピュータを指定してもよい。制御スクリプト51は、計算の実行状況に応じ、実行順序、処理の分岐、並列度などの実行条件を動的に変更してもよい。また、制御スクリプト51は、計算の実行のあたり、現実問題80以外のデータが必要である場合、必要なデータを取得する機能を備えていてもよい。計算の実行に必要なデータが揃っていない場合、制御スクリプト51は、量子関連コンピュータを待機させてもよい。すなわち、制御部5は、ユーザが設定した条件を満たすまで、量子関連コンピュータを待機させてもよい。
また、制御部5は利用可能な量子関連コンピュータを自動的に選択してもよい。制御スクリプト51は、複数の量子関連コンピュータを、計算を実行する量子関連コンピュータとして指定してもよい。このとき、指定される複数の量子関連コンピュータは必ず同じ種類のものでなくてもよい。制御部5は、複数の量子関連コンピュータによる計算処理の並列度、実行順序、条件分岐の少なくともいずれかを制御してもよい。複数の量子関連コンピュータは、共通の第2問題について、求解の処理の少なくとも一部を実行する。複数の量子関連コンピュータが計算を実行する場合、制御スクリプト51は、ユーザが指定した基準に基づいて、いずれかの量子関連コンピュータによって計算された解を選択する処理を行ってもよい。情報処理装置1は、複数の量子関連コンピュータによって計算された解の少なくともいずれかから選択された解に基づき、第2問題の解を求めてもよい。
量子関連コンピュータによる計算が終了するか、停止した場合、制御部5は量子関連コンピュータから計算結果を取得する。そして、制御部5は、計算結果が設定された条件を満たしているか確認する。例えば、制御部5は所定の時間内に量子関連コンピュータの解が得られているか否かを判定してもよい。また、制御部5は、計算結果に基づき、量子関連コンピュータに入力された問題の規模が大きすぎないか否かを判定してもよい。制御部5は、量子関連コンピュータの解の妥当性を検証してもよい。制御部5は、量子関連コンピュータの計算結果が制御スクリプトで規定された条件を満たしていたら、当該計算結果を利用可能な解であると判定することができる(判定70)。
量子関連コンピュータの計算結果が制御部5によって利用可能な解であると判定された場合(判定70のYES)、逆変換プログラム42は、量子関連コンピュータの計算結果を現実問題の解82に変換してもよい。量子関連コンピュータの計算結果が制御部5によって利用可能な解ではないと判定された場合(判定70のNO)、制御部5は、次回の計算実行時における制御条件を変更する。
例えば、制御部5は、量子関連コンピュータの計算時間の上限を延長してもよい。また、制御部5は、量子関連コンピュータの計算が完了したと判定する条件を変更してもよい。また、制御部5は、次回計算を実行する量子関連コンピュータを変更してもよい。次回計算を実行する量子関連コンピュータの種類が変更される場合、変換プログラム41に含まれる下位レベルのサブ変換プログラム(L3変換プログラム33a)と、逆変換プログラム42に含まれる下位レベルのサブ逆変換プログラム(L3逆変換プログラム33b)とが置き換えられる。また、並列的に同じ計算を実行する量子関連コンピュータの数を増やしてもよい。問題を分割することによって、計算を実行する量子関連コンピュータの数を増やしてもよい。なお、ユーザが手動で次回の計算実行時における制御条件を変更してもよい。
そして、制御部5は、変更された制御条件に基づき、量子関連コンピュータに計算を再実行させる。制御部5は、条件を充足する解が得られるまで(判定70のYES)、量子関連コンピュータに計算を繰り返し実行させる。すなわち、制御部5は、ユーザが設定した条件を満たす解が得られるまで、量子関連コンピュータに求解の動作を行わせてもよい。
以下では、コンピュータのハードウェア構成について説明する。コンピュータの例としては、サーバ、クライアント端末、組み込み機器のマイコン、タブレット、スマートフォン、フィーチャーフォン、パソコンなどが挙げられる。ただし、コンピュータの機能は、仮想コンピュータ(VM:Virtual Machine)やコンテナなどによって実現されていてもよい。
図20は、コンピュータ100の一例を示す図である。図20のコンピュータ100は、プロセッサ101と、入力装置102と、表示装置103と、通信装置104と、記憶装置105とを備える。プロセッサ101、入力装置102、表示装置103、通信装置104、記憶装置105は、バス106により相互に接続されている。
プロセッサ101は、コンピュータ100の制御装置と演算装置を含む電子回路である。プロセッサ101として、例えば、汎用目的プロセッサ、中央処理装置(CPU)、マイクロプロセッサ、デジタル信号プロセッサ(DSP)、コントローラ、マイクロコントローラ、状態マシン、特定用途向け集積回路、フィールドプログラマブルゲートアレイ(FPGA)、プログラム可能論理回路(PLD)またはこれらの組合せを用いることができる。
プロセッサ101は、バス106を介して接続された各装置(例えば、入力装置102、通信装置104、記憶装置105)から入力されたデータやプログラムに基づいて演算処理を行い、演算結果や制御信号を、バス106を介して接続された各装置(例えば、表示装置103、通信装置104、記憶装置105)に出力する。具体的には、プロセッサ101は、コンピュータ100のOS(オペレーティングシステム)や、プログラムなどを実行し、コンピュータ100に含まれるそれぞれの装置を制御する。
プログラムを使うことによって、コンピュータ100に、情報処理装置1または一部の種類の量子関連コンピュータの機能を実装することができる。プログラムは、一時的でない有形のコンピュータ読み取り可能な記憶媒体に記憶される。上記の記憶媒体は、例えば、光ディスク、光磁気ディスク、磁気ディスク、磁気テープ、フラッシュメモリ、半導体メモリであるが、これに限られない。プロセッサ101がプログラムを実行することによって、コンピュータ100は情報処理装置1または一部の種類の量子関連コンピュータの機能を提供することができる。
入力装置102は、コンピュータ100に情報を入力するための装置である。入力装置102は、例えば、キーボード、マウス、タッチパネルなどであるが、これに限られない。ユーザは、入力装置102を用いることによって、情報処理システム10に対する各種の操作を行うことができる。
表示装置103は、画像や映像を表示するための装置である。表示装置103は、例えば、LCD(液晶ディスプレイ)、CRT(ブラウン管)、有機EL(有機エレクトロルミネッセンス)ディスプレイ、プロジェクタ、LEDディスプレイなどであるが、これに限られない。表示装置103に、情報処理装置1の操作画面、量子関連コンピュータによる計算の実行結果などを表示してもよい。
通信装置104は、コンピュータ100が外部装置と無線または有線で通信するために使用する装置である。通信装置104は、例えば、NIC(Network Interface Card)、通信モジュール、モデム、ハブ、ルータなどであるが、これに限られない。例えば、コンピュータ100は、通信装置104を介して、量子関連コンピュータの計算結果を取得してもよい。また、コンピュータ100(情報処理装置1)がデータセンターやマシン室に設置されたサーバなどである場合、コンピュータ100は通信装置104を介して、リモートの情報通信端末から送信された指令を受け付けたり、画面表示の内容をリモートの情報通信端末に表示させたりしてもよい。
記憶装置105は、コンピュータ100のOSや、プログラム、プログラムの実行に必要なデータ、プログラムの実行により生成されたデータなどを記憶する記憶媒体である。記憶装置105には、主記憶装置と外部記憶装置が含まれる。主記憶装置は、例えば、RAM、DRAM、SRAMであるが、これに限られない。また、外部記憶装置は、例えば、ハードディスク、光ディスク、フラッシュメモリ、磁気テープなどであるが、これに限られない。問題タイプデータ54、パターンセット55a、マシンタイプデータ55b、各レベルのプログラムテーブル、各レベルに係るサブ変換プログラムのデータ、各レベルに係るサブ逆変換プログラムのデータ、各レベルに係るモデリングツールのデータ、各レベルに係る問題モデルのデータ、プログラミングツール34のデータは、記憶装置105に保存されてもよいし、外部のサーバやストレージ上に保存されてもよい。
なお、コンピュータ100は、プロセッサ101、入力装置102、表示装置103、通信装置104、記憶装置105を、それぞれ1つずつまたは複数備えてもよい。また、コンピュータ100にプリンタやスキャナなどの周辺機器が接続されていてもよい。
情報処理装置1および一部の種類の量子関連コンピュータは、単一のコンピュータ100により構成されてもよいし、複数のコンピュータ100が相互に接続された情報システムによって構成されていてもよい。
さらに、プログラムは、コンピュータ100の記憶装置105にあらかじめ記憶されていてもよいし、コンピュータ100の外部の記憶媒体に記憶されていてもよいし、インターネット上にアップロードされていてもよい。いずれの場合にも、プログラムをコンピュータ100にインストールして実行することにより、上述の各実施形態に係る情報処理装置またはイジングマシンの機能を実現することができる。
(第2の実施形態)
第1の実施形態に係る情報処理システムは、量子関連コンピュータを使って、組合せ最適化問題として記述可能な現実問題を解くことを支援した。第2の実施形態では、実世界の複雑性への適用力を高めた情報処理システムについて述べる。以下では、第1の実施形態と共通の構成要素(例えば、図1、図2、図9)に対し、追加される構成要素および機能を中心に、第2の実施形態に係る情報処理システムについて説明する。QUBOソルバを使った求解を行ってもよいのは、第1の実施形態に係る情報処理システムと同様である。QUBOソルバによる求解を行う場合、以降の説明における量子関連コンピュータをQUBOソルバに置き換えることができる。
組合せ最適化問題として記述されうる現実問題は、例えば、金融、物流、交通、ライフサイエンス、化学、設計、製造など実世界における多岐の分野にわたる。各分野への量子関連コンピュータの適用は、各種の社会問題を解決し、科学技術の進歩を促進することが期待される。実世界の複雑性を反映し、膨大な数の分野における問題解決に量子関連コンピュータが適用されうる。したがって、各分野における複数パターンの問題のそれぞれを量子関連コンピュータに入力可能なデータ形式に変換することが必要である。また、ユーザ(とりわけ各分野用のアプリケーションプログラム(定義は後述)の開発者)は、いずれの種類の組合せ最適化問題(例えば、ハミルトン経路問題、最小経路問題、充足可能性問題、ナップサック問題など)を使って問題のモデル化をするのかを判断しなくてはならない。問題をモデル化する方法および問題を変換する方法を決めるのには、量子関連コンピュータおよび組合せ最適化に関する知識だけでなく、各分野特有の経験・ノウハウが必要である。量子関連コンピュータの活用促進のため、各分野に対応したプログラムの設計を容易にすることが求められている。
実世界の生物(人を含む)、物、組織(例えば、チーム、プロジェクト、企業)、コミュニティ(例えば、村落、都市、地方、国)、装置(例えば、電子回路、機械)、スキーム(例えば、事業上の計画)、商品、サービスは、それぞれ単体でシステムであると解釈することが可能である。実世界のそれぞれのシステムは、相互に依存しており、影響し合っている。したがって、実世界は、相互に結合された個々のシステムを含むひとつの複雑なシステムを形成しているともいえる。例えば、任意の時刻または位置における、あるシステムの動作/状態は、その他のシステムの動作/状態に影響を与えることがある。また、任意の時刻または位置における、あるシステムの動作/状態は、別の時刻または位置における、同一のシステムまたはその他のシステムの動作/状態に依存していることがある。
このため、量子関連コンピュータを利用したサービスの品質/性能向上、ユーザの利便性向上のためには、実世界におけるシステム間の依存関係および影響関係を反映したプログラムの開発、サービスの構築およびサービスの運用を行うことが好ましいといえる。
ここで、サービスとは、その少なくとも一部が情報通信技術(例えば、コンピュータ上で実行されるプログラム)によって実現され、その利用者の生活またはビジネスを支援するもののことをいう。サービスは、量子関連コンピュータを含む情報処理システム10によって提供されるものであってもよいし、その他の情報処理システムまたはコンピュータによって提供されるものであってもよい。すなわち、以下で「サービス」について言及された場合、それは量子関連コンピュータを使って提供されるものと、量子関連コンピュータを使わずに提供されるものの両方を含むものとする。また、サービスの提供に使われるプログラムをアプリケーションプログラムとよぶものとする。量子関連コンピュータを使うサービスを提供するアプリケーションプログラムは、例えば、図2の変換プログラム41を使い、当該サービスで解かれる対象としている問題を量子関連コンピュータに入力可能なデータ形式に変換する処理と、量子関連コンピュータに解の計算をさせる処理と、逆変換プログラム42を使い、量子関連コンピュータが計算した解を問題の解に変換する処理とを含む。
サービスは、ひとつのプログラムによって提供されてもよい。また、サービスは、複数のプログラムの組合せによって実現されるものであってもよい。例えば、複数のコンピュータのそれぞれで動作するプログラムの組合せによってサービスが実現されてもよい。例えば、情報処理装置1上で動作するプログラム、量子コンピュータ上で動作するプログラム、およびサーバ上で動作するプログラムの組合せによってサービスが提供されてもよい。ただし、アプリケーションプログラムが実行されるコンピュータおよびコンピュータの組合せについては、特に問わない。
図21、図22は、複数の分野に対応した情報処理システムの構成例を示したブロック図である。情報処理システム10は、情報処理装置1を含む。情報処理装置1は、開発部3と、変換部4とを備え、量子関連コンピュータを使ったサービスの開発を支援する。開発部3は、それぞれ少なくともいずれかのサービスを提供するアプリケーションプログラムの開発を支援するアプリケーション開発ツールを実行する。変換部4は、少なくともひとつのアプリケーションプログラムを実行する。アプリケーションプログラムは、ひとつのサービスを提供するものであってもよい。また、ひとつのアプリケーションプログラムが複数のサービスを提供してもよい。
アプリケーション開発ツールは、少なくともひとつのモデリングツールと、少なくともひとつのプログラミングツールとを含む。モデリングツールは、ユーザがサービスに対応した少なくともひとつの問題モデルを作成することを支援する。プログラミングツールは、ユーザが問題モデルに基づいてアプリケーションプログラムを設計することを支援する。第1の実施形態と同様に、開発部3が実行するモデリングツールは、(サービスで解かれる対象としている)問題について異なるレベルに対応する複数の問題モデルをユーザが段階的に記述することを可能にするものであってもよい。また、開発部3が実行するプログラミングツールは、異なるレベルに対応する複数の問題モデルに基づき、ユーザが変換プログラムを設計することを可能にするものであってもよい。さらに、開発部3が実行するモデリングツールは、上位モデリングツールと、下位モデリングツールとを含んでいてもよい。上位モデリングツールは、上位の表現形式で上位の問題モデルをユーザが記述することを可能にする。下位モデリングツールは、下位の表現形式で下位の問題モデルをユーザが記述することを可能にする。
アプリケーションプログラムは、少なくともひとつの変換プログラムと、少なくともひとつの逆変換プログラムとを含む。変換プログラムは、提供するサービスで解かれる対象としている問題を量子関連コンピュータへ入力可能なデータ形式に変換する。逆変換プログラムは、問題について計算された量子関連コンピュータの解を、当該問題の解に変換する。ひとつのサービスでは、複数種類の問題を解かれる対象とする場合がある。また、アプリケーションプログラムが複数のサービスを提供し、それぞれのサービスで少なくともひとつの問題を解かれる対象としている場合もある。これらの場合、アプリケーションプログラムは、複数種類の問題にそれぞれ対応する変換プログラム41と逆変換プログラム42との組合せを、複数含んでいてもよい。
情報処理システム10は、それぞれ実社会のある分野に適合した1以上のプラットフォームを備えている。実社会の分野は、例えば、金融事業(例えば、Fintech)、ゲノム関連事業、物流事業、交通事業のように、量子関連コンピュータが適用される広範な事業領域ごとに分けることができる。図21、図22には、分野A用のプラットフォーム1Aと、分野B用のプラットフォーム1Bとが示されている。分野Aは、金融事業であり、分野Bは、ゲノム関連事業であるものとする。ただし、この分野の分類方法は一例にしかすぎず、これとは異なる分類を使うことを妨げるものではない。また、図21、図22にはふたつのプラットフォームが示されているが、プラットフォームの数はこれより多くてもよい。
プラットフォーム1A、1Bは、それぞれ情報処理装置1の開発部3および変換部4の該当する分野に対応する機能を使うことによって実現される。各分野に係るプラットフォームは、それぞれ少なくともひとつのサービスを含むものとする。図21では、構成要素を示すブロックの上部に記号A1、A2が示されている。記号A1、A2は、該当する構成要素に対応するサービスを示している。例えば、サービスA1は、上場投資信託(ETF)サービスであり、サービスA2は、高頻度取引(HFT)サービスであるものとする。ただし、サービスA1、A2は、これらとは異なるサービスであってもよい。
同様に、図22には、構成要素を示すブロックの上部に記号B1、B2が示されている。記号B1、B2も、該当する構成要素に対応するサービスを示している。例えば、サービスB1は、ゲノム解析サービスであり、サービスB2は、ゲノム医療保険サービスであるものとする。ただし、サービスB1、B2は、これらとは異なるサービスであってもよい。なお、図21、図22には、それぞれ2つのサービスが示されているが、各プラットフォームはこれとは異なる数のサービスを含んでいてもよい。
外部の情報処理装置(例えば、クライアントマシン22などの情報端末または、外部情報処理システム23のサーバ)は、プラットフォーム1A、1Bにアクセスし、各分野に係るサービスの開発および各サービスの提供を行うことができる。図21には、開発用端末22A11、22A21、サービスサーバ22A12、22A22が示されている。一方、図22には、開発用端末22B11、22B21、サービスサーバ22B12、22B22が示されている。
開発用端末22A11およびサービスサーバ22A12は、サービスA1を運用する事業者によって使われるものであってもよい。同様に、開発用端末22A21およびサービスサーバ22A22は、サービスA2を運用する事業者によって使われるものであってもよい。開発用端末22B11およびサービスサーバ22B12は、サービスB1を運用する事業者によって使われるものであってもよい。同様に、開発用端末22B21およびサービスサーバ22B22は、サービスB2の運用をする事業者によって使われるものであってもよい。ただし、サービスの開発と運用を行う事業者が異なっている場合、同一サービスに対応する開発用端末とサービスサーバは、異なる事業者によって使われていてもよい。
ユーザ(例えば、サービスA1、A2、B1、B2に係るアプリケーションプログラムそれぞれの開発者)は、開発用端末22A11、22A21、22B11、22B21を使うことによって、それぞれのサービスが使う変換プログラム41および逆変換プログラム42を開発する。第1の実施形態で述べたように、ユーザは各レベルに係るモデリングツールによって問題モデルを作成し、対応する変換プログラムおよび逆変換プログラムを設計(コーディング)することができる。サービスサーバ22A12、22A22、22B12、22B22は、例えば、対応するサービスのフロントエンドの処理を実行する。ただし、サービスサーバによって実行される処理の内容については特に問わない。なお、それぞれのサービスの提供のために必ずしもサービスサーバが設置されていなくてもよい。
情報処理装置1の開発部3は、分野Aおよび分野Bに属するサービスまたは、サービスA1、A2、B1、B2に必要なツール群を提供する。ツール群は、図2のプログラミングツール34および各レベルに係るモデリングツールを含む。また、情報処理システム10の変換部4は、分野Aおよび分野Bに属するサービスまたは、サービスA1、A2、B1、B2が使う変換プログラム41および逆変換プログラム42を実行する。
プラットフォーム1Aに含まれる開発ツール3Aは、分野A(金融事業)に対応した開発環境(例えば、図2のモデリングツールおよびプログラミングツール)を提供する。また、プラットフォーム1Bに含まれる開発ツール3Bは、分野B(ゲノム関連事業)に対応した開発環境(例えば、図2のモデリングツールおよびプログラミングツール)を提供する。開発ツール3A、3Bの一部(例えば、ライブラリ、モジュール、プログラム、データ)は共通していてもよい。ただし、開発ツール3A、3Bの少なくとも一部は相違している。開発ツールの相違する部分は、各分野特有の処理を実行するアプリケーションプログラム(例えば、各レベルに係る変換プログラムおよび逆変換プログラム)の設計を可能とする。
例えば、対応する分野によって、開発ツールに含まれるモデリングツールのレベル数、プログラミングツールのレベル数、モデリングツールが生成する(問題モデルの)組合せ最適化問題の種類、モデリングツールより参照可能な問題モデルのひな形またはテンプレートの種類、モデリングツールの機能、プログラミングツールの機能、プログラミングツールで使用可能なプログラミング言語の種類、プログラミングツールより参照可能な変換プログラムまたは逆変換プログラムのうち、少なくともいずれかが異なっていてもよい。
ユーザは、上述の開発用端末を介して開発ツール3A、3Bにアクセスし、それぞれの分野のサービス、当該サービスを提供するアプリケーションプログラムに含まれる変換プログラムおよび逆変換プログラム、ならびに問題モデルを作成することができる。
情報処理装置1は、各分野に係る開発ツールのサブセットまたはオプション構成として、より具体的なサービスに対応するアプリケーションプログラム開発ツール(AP開発ツールとよぶ)を備えていてもよい。例えば、図21のAP開発ツール3A1は、サービスA1(ETFサービス)に対応した開発環境を提供する。また、AP開発ツール3A2は、サービスA2(HFTサービス)に対応した開発環境を提供する。図22のAP開発ツール3B1は、サービスB1(ゲノム解析サービス)に対応した開発環境を提供する。また、AP開発ツール3B2は、サービスB2(ゲノム医療保険サービス)に対応した開発環境を提供する。ここで、それぞれの開発環境(AP開発ツール)は、図2のモデリングツールおよびプログラミングツールを含むものとする。AP開発ツールは、いずれかのサービスを提供するアプリケーションプログラムの開発に対応している。
複数のAP開発ツールは、共通する部分を有していてもよい。また、各サービス(アプリケーションプログラム)に特有の処理の実装を実現するため、複数のAP開発ツールの少なくとも一部は相違しているものとする。AP開発ツールの相違する部分の例として、モデリングツールのレベル数、プログラミングツールのレベル数、モデリングツールが生成する(問題モデルの)組合せ最適化問題の種類、モデリングツールより参照可能な問題モデルのひな形またはテンプレートの種類、モデリングツールの機能、プログラミングツールの機能、プログラミングツールで使用可能なプログラミング言語の種類、プログラミングツールより参照可能な変換プログラムまたは逆変換プログラムが挙げられる。
ユーザは、開発用端末を介してAP開発ツール3A1、3A2、3B1、3B2にアクセスし、各サービス、当該サービスが使う変換プログラムおよび逆変換プログラム、ならびに問題モデルを作成することができる。
情報処理システム10の変換部4は、サービスA1、A2、B1、B2用のアプリケーションプログラム(以降では、必要に応じ、APプログラムと略す)43A1、43A2、43B1、43B2を含む。APプログラム43A1、43A2、43B1、43B2は、それぞれサービスA1、A2、B1、B2に対応する変換プログラム41および逆変換プログラム42を含む。すなわち、APプログラムは、いずれかのサービスの提供に使われるプログラムである。各サービスが使う変換プログラム41および逆変換プログラム42は、対応するAP開発ツールを使って作成される。
各APプログラムは、サービスで解かれる対象としている問題(第1の実施形態における現実問題に相当する)を量子関連コンピュータに入力可能なデータ形式に変換し、量子関連コンピュータに問題の解を計算させる。また、各APプログラムは、量子関連コンピュータが計算した解をサービスで解かれる対象としている問題の解に変換する。例えば、図21、図22において、計算エンジン部11は、量子関連コンピュータ11a、11b、11c、およびPUBOソルバ11dを含む。サービスサーバ22A12、22A22、22B12、22B22は、それぞれAPプログラム43A1、43A2、43B1、43B2にアクセスし、対応するサービスで解かれる対象としている問題の解を取得することができる。これにより、各サービスサーバは、提供するサービスにおいて問題の解を使うことができる。なお、サービスサーバではなく、変換部4で実行するアプリケーションプログラムが、提供するサービスにおいて問題の解を使ってもよい。
情報処理装置1のサービス連携部200は、APプログラムの開発時およびサービスの稼働時(APプログラムの実行時)に、複数のサービス間の連携を実現する。ここで、サービス間の連携とは、複数のサービス間でデータの受け渡しが行われることを意味する。受け渡しされるデータは、あるサービスから供給されたデータを加工したものも含む。サービス連携部200は、例えば、情報処理装置1の構成要素であり、プロセッサ上で実行されるプログラムによって実現される。ただし、サービス連携部200の少なくとも一部の機能は、ハードウェア回路によって実装されていてもよい。また、情報処理装置1とは別個に、サービス連携部200の処理を実行するコンピュータが用意されていてもよい。この場合、当該コンピュータがサービス連携部200に相当している。
図23は、選択メニューおよびツールデータベースの構成例を示している。図23の選択メニュー22Mは、例えば、開発用端末22A11、22A21、22B11、22B21のディスプレイに表示される。選択メニュー22Mは、階層構造によって複数のボックスを示している。階層構造の第1のレベルには、分野A、B、Cに対応するボックスが配置されている。分野を示すボックスより下のレベルには、各分野に属するサービスのボックスが配置されている。第2のレベルには、サービスA1、A2、B1、B2、C1、C2のボックスが配置されている。第3のレベルには、サービスA21、A22、C11のボックスが配置されている。開発用端末のユーザは、分野名またはサービス名を表示しているいずれかのボックスをクリックすることによって、APプログラムの開発に使用するツールおよびデータを選択することができる。選択メニュー22Mの構造は一例にしかすぎない。したがって、これとはインタフェースを使って、開発ツールの選択をできるようにしてもよい。
選択メニュー22Mのいずれかのボックスがクリックされると、当該ボックスに関連付けられたツールアセンブラがツールデータベース8Dを参照し、使用するツールおよびデータの組合せを抽出する。ツールアセンブラの機能は、例えば、開発部3で実行されるプログラムに実装されている。
ツールデータベース8Dは、例えば、モデリングツール、プログラミングツール、問題モデルひな形、既存問題モデル、変換プログラムひな形、逆変換プログラムひな型、既存変換プログラム、既存逆変換プログラムなどのツールおよびデータを含む。ツールデータベース8Dは、例えば、情報処理装置1の記憶部8に保存される。ただし、ツールデータベース8Dは、外部ストレージなどその他の場所に保存されていてもよい。
例えば、レベル、分野、機能、対応するサービス、対応する組合せ最適化問題の異なる複数のモデリングツールがツールデータベース8Dに含まれていてもよい。また、レベル、分野、機能、対応するサービス、使用可能なプログラミング言語が異なる複数のプログラミングツールがツールデータベース8Dに含まれていてもよい。同様に、ツールデータベース8Dには、複数の種類の問題モデルひな形、既存問題モデル、変換プログラムひな形、逆変換プログラムひな型、既存変換プログラム、既存逆変換プログラムが含まれていてもよい。
サービスの属する分野およびサービスの種類によって最適なツールおよびデータの組合せが異なるため、クリックされたボックスによって異なる組合せのツールおよびデータがツールアセンブラによって抽出される。なお、ツールアセンブラの機能は、開発部3によって実行されるモデリングツールおよびプログラミングツールに含まれていてもよい。
図24は、開発されるサービスに応じたツールおよびデータの選択の例を示したフローチャートである。以下では、図24を参照しながら、処理を説明する。
はじめに、ユーザは開発を行うサービスを選択する(ステップS201)。ステップS201では、サービスの属する分野を選択してもよいし、サービスの種類を選択してもよい。図23の選択メニュー22Mを使ってサービスの選択を行うことができるが、その他のインタフェースを使って選択を行ってもよい。そして、ツールアセンブラは、ユーザが選択したサービスに基づき、ツールデータベース8Dより、対応するツールおよびデータを抽出する(ステップS202)。
次に、開発部3は、抽出されたツールおよびデータをユーザに提示する(ステップS203)。例えば、ユーザが使用するクライアントマシン22のディスプレイに抽出されたツールおよびデータを、開発において使用可能なツールおよびデータとして表示することができる。ただし、その他の方法によって抽出されたツールおよびデータを提示してもよい。そして、ユーザは、提示されたツールおよびデータを使い、アプリケーションプログラムを設計する(ステップS204)。
すなわち、開発部3が実行するモデリングツールは、複数の問題モデルひな形または複数の既存問題モデルのうちから、ユーザが開発するサービスに応じて、少なくともひとつの問題モデルひな形または少なくともひとつの既存問題モデルを選択し、ユーザに提示してもよい。また、開発部3が実行するプログラミングツールは、複数の変換プログラムひな型、複数の逆変換プログラムひな型、複数の既存変換プログラムまたは複数の既存逆変換プログラムのうちから、ユーザが開発するサービスに応じて、少なくともひとつの変換プログラムひな型、少なくともひとつの逆変換プログラムひな型、少なくともひとつの既存変換プログラムまたは少なくともひとつの既存逆変換プログラムを選択し、ユーザに提示してもよい。
図25は、サービス連携部の構成例を示している。図25には、開発部3と、変換部4と、サービス連携部200とを含む情報処理装置1の構成例が示されている。サービス連携部200は、サービス登録部210と、マッチング部201と、加工ルール生成部202と、連携実行部220と、実績計算部230とを備えている。例えば、ユーザは、管理端末22ADを使ってサービス連携部200にアクセスし、各種の設定を行うことができる。管理端末22ADの例としては、図1のクライアントマシン22などの情報端末が挙げられる。
ユーザは、サービス連携部200のサービス登録部210にアクセスし、データの受け渡しを行うサービスの情報(サービスエントリとよぶ)を登録することができる。サービスエントリは、例えば、情報処理装置1の記憶部8に保存される。ただし、サービスエントリは、外部ストレージに保存されてもよく、サービスエントリが保存される場所については特に限定しない。
サービスエントリは、例えば、下記のようなフィールドを含んでいる。
(a)サービスID
(b)データ受入フラグ
(c)データ供給フラグ
(d)受入データ情報
(e)供給データ情報
上述の(a)のサービスIDは、サービスを識別する情報を含む。サービスIDとして、例えば、当該サービスを提供するAPプログラムの名称、当該APプログラムの少なくとも一部を実行するサーバのホスト名などを使うことができる。ただし、その他の形式のサービスIDを使うことができる。上述の(b)のフラグは、該当するサービスが他サービスから提供されたデータまたは、それを加工したデータを使用するか否かを示す。サービスが、外部から受け入れるデータを受入データとよぶものとする。
上述の(c)のフラグは、該当するサービスが他のサービスにデータを供給するか否かを示す。上述の(d)の受入データ情報は、該当するサービスが受け入れることが可能なデータの内容、形式(データ項目の組合せ)または条件の少なくともいずれかを示す。また、上述の(e)の供給データ情報は、該当するサービスが他サービスに供給することが可能なデータ(供給データ)の内容、形式(データ項目の組合せ)または条件の少なくともいずれかを示す。(d)および(e)のフィールドにおける条件は、データの受け渡しの対価に関する情報を含んでいてもよい。対価に関する情報は、対価の上限額、対価の下限額、または対価の範囲の少なくともいずれかを含んでいてもよい。また、(d)および(e)のフィールドにおける条件は、データの受け渡しを行う期間に関する情報を含んでいてもよい。データの受け渡しを行う期間として、例えば、特定の時間帯、曜日、月、季節が指定されていてもよい。これにより、あるサービスが時刻によって異なるサービスとの間でデータの受け渡しを行うことが可能となる。
他のサービスからデータを受け入れるサービスは、受入データを使って問題の条件を特定することができる。サービスは、例えば、受入データを使って問題の目的関数の係数を決定してもよい。また、サービスは、受入データを使って、問題の制約条件を特定してもよい。ここで述べた受入データの使用方法は例にしかすぎない。したがって、サービスはこれとは異なる用途に受入データを使ってもよい。
あるサービスは、求めた問題の最適解を供給データとして、他のサービスに渡すことができる。例えば、第1のポートフォリオ最適化サービスと、第2のポートフォリオ最適化サービスが存在する場合を考える。後者のサービスで、複数の金融商品を組み合わせることにより、前者のサービスより大規模なポートフォリオが提案される場合、前者のサービスの求めた最適解を後者のサービスにおける問題の条件として使うことができる。
サービスエントリは、さらに下記のようなフィールドを含んでいてもよい。
(f)業界情報
(g)地域情報
(h)優先マッチング情報
(i)マッチング回避情報
(j)プライシング情報
上述の(f)のフィールドは、該当するサービスの属する分野または、提供するサービスの内容を含む。また、上述の(g)のフィールドは、該当するサービスの対象となっている国、地方、市町村、地域の情報を含む。上述の(h)のフィールドは、該当するサービスへデータを優先的に供給するサービスまたは、該当するサービスから供給されるデータを優先的に受け入れるサービスを特定する。また、上述の(i)のフィールドは、該当するサービスとの間でデータの受け渡しを避けるべきサービスを特定する。例えば、法令もしくは契約により、特定のサービスとの間でデータの受け渡しを行うことができない場合、(i)のフィールドを使うことができる。(h)および(i)のフィールドでは、サービスが(f)または、(g)のフィールドの形式で特定されていてもよい。また、(h)および(i)のフィールドは、(a)のサービスIDを含んでいてもよい。
(j)のフィールドは、データの受け渡しが有償で行われる場合に、データ受け渡しの対価を特定する情報を含む。対価は、例えば、時間単価で指定されていてもよいし、対価は、データのサイズまたは、データの件数によって指定されてもよい。また、対価は、従量課金制に限らず、その他の方法によって指定されてもよい。なお、サービス間におけるデータの受け渡しは無償で行われてもよく、データの受け渡しに係る対価の内容および対価の有無については、特に限定しない。
上述のサービスエントリのフィールドは、一例にしかすぎない。したがって、サービスエントリは、必ず上述のフィールドのすべてを含んでいなくてもよい。また、サービスエントリは、その他のフィールドを含んでいてもよい。例えば、サービスエントリは、サービスの規模に関する情報を含むフィールドを有していてもよい。サービスの規模は、例えば、データ件数、サービスの加入者数、契約数、アクセス数、サーバの台数によって特定される。ただし、これとは異なる方法でサービスの規模が特定されてもよい。例えば、サービス間の連携において、連携先のサービスが一定の規模より大きいことを要件とすることができる。
サービスエントリが登録されたサービスについては、他のサービスとの間でデータの受け渡しが可能となる。なお、サービスエントリの登録後も、ユーザは、管理端末22ADを介して、サービスエントリのフィールドの内容を更新することができる。
図25の例では、サービス登録部210によって、サービスエントリ211~216が登録されている。サービスエントリ211~216は、それぞれサービスX1、X2、Y1、Z1、Z2、Y2に対応している。なお、図25では、各構成要素に対応するサービスの記号が記載されている。例えば、サービスX1は、サービスサーバ22X12が実行するプログラムおよびAPプログラム43X1によって提供される。また、サービスX2は、サービスサーバ22X22が実行するプログラムおよびAPプログラム43X2によって提供される。サービスY1は、サービスサーバ22Y12が実行するプログラムおよびAPプログラム43Y1によって提供される。ただし、サービスサーバで実行されるプログラムを使わずにサービスを提供してもよい。
変換部4のAPプログラム43X1、43X2、43Y1によって変換された問題の解は、(図25に示されていない)量子関連コンピュータによって計算される。また、変換部4のAPプログラム43X1、43X2、43Y1は、量子関連コンピュータによって計算された解を、サービスで解かれる対象としている問題(第1の実施形態における現実問題80)の解に変換する。
開発部3の開発ツール43Y2は、サービスY2の開発に使われており、データ受け渡しの機能を含む。データ受け渡しの機能は、モデリングツールまたは、プログラミングツールの少なくともいずれかに実装されていてもよい。また、別にデータ受け渡しを行うツールが用意されていてもよい。サービスの開発者は、現在提供されている他のサービスの開発時における成果物または、現在提供されている他のサービスによって供給されるデータを使い、自分のサービスの開発を進めてもよい。このように、データ受け渡し機能によってマッチングされる対象は、稼働中のサービスに限らず、開発中のサービスを含んでいてもよい。
サービスZ1は、外部サービスサーバ23Z1が実行するプログラムによって提供される。また、サービスZ2は、外部サービスサーバ23Z2が実行するプログラムによって提供される。サービスZ1、Z2は、サービスX1、X2、Y1とは異なり、変換部4のAPプログラムによる問題および解の変換機能を利用しなくても提供が可能なサービスである。すなわち、サービスZ1、Z2は、量子関連コンピュータを使わずに提供されるサービスであるといえる。このように、データの受け渡しを行うサービスは、量子関連コンピュータを使って提供されるサービスに限られない。
マッチング部201は、登録されたサービスエントリを参照し、データの受け渡しを行うことが可能なサービスの組合せを探索する。マッチング部201は、サービスエントリのフィールドの内容に基づき、サービス間におけるデータ受け渡しの可否を判定する。例えば、データ受け渡しのための条件が適合(マッチ)するサービスの組合せをデータ受け渡しが可能であると判定してもよい。例えば、マッチング部201は、あるサービスの(b)データ受入フラグが“TRUE”である場合、(d)受入データ情報に基づき、必要なデータを供給可能な他のサービスを探索する。また、マッチング部201は、あるサービスの(c)データ供給フラグが“TRUE” である場合、(e)供給データ情報に基づき、生成するデータを必要とする他のサービスを探索する。
サービスエントリが(i)マッチング回避情報を含む場合、当該フィールドで指定された条件を満たすサービスの組合せをマッチさせないようにしてもよい。また、サービスエントリの(d)受入データ情報および(e)供給データ情報に、対価の条件が含まれている場合、対価の条件がマッチしたときにサービス間の連携を成立させてもよい。
加工ルール生成部202は、各サービスから供給されるデータを加工するルール(データ加工ルールとよぶ)を生成する。データ加工ルールは、供給されるデータの内容および形式、ならびにデータの受け入れ先のサービスが求めるデータの内容および形式に基づいて生成される。例えば、データの受け渡し時において、他のサービスからデータを受け入れるサービスにとって不要なデータ項目がある場合、不要なデータ項目を削除するルールを生成する。また、あるサービスが必要とするデータ項目のすべてを含むデータを供給することが可能なサービスが見つからない場合がある。このような場合、加工ルール生成部202は、複数のサービスから供給されるデータのデータ項目を組み合わせるルールを生成する。データ加工ルールは、例えば、情報処理装置1の記憶部8に保存される。ただし、データ加工ルールは、その他の場所に保存されてもよい。
なお、データの受け渡し時においてサービスから供給されるデータを加工せずに他のサービスに渡すことが可能である場合、加工ルール生成部202は、データ加工ルールを生成しなくてもよい。また、情報処理装置1は、必ず加工ルール生成部202を備えていなくてもよい。例えば、情報処理装置1がデータ加工ルールを生成せず、ユーザまたは外部の情報処理システムから指定されたデータ加工ルールに基づくデータの変換が行われてもよい。
なお、複数のサービスがデータ項目の同一の組合せを必要としている場合、それら複数のサービスは、同一のサービスが生成するデータまたは、サービスの同一の組合せから生成されたデータの供給を受けてもよい。すなわち、サービス間の連携において、1対1のサービスに限らず、1対多または多対多のサービスでデータ受け渡しの経路(データ経路とよぶ)が形成されてもよい。マッチング部201は、連携が可能なサービスの組合せに基づき、サービスグループを生成する。サービスグループは少なくともふたつのサービスを含む。サービスグループが生成されることにより、サービス間のデータ受け渡しのデータ経路が決まる。サービスグループは、データを供給するサービスおよびデータを受け入れるサービスを特定する情報、ならびにデータ加工ルールを含んでいてもよい。サービスグループのデータは、例えば、情報処理装置1の記憶部8に保存される。ただし、サービスグループが保存される場所については特に問わない。
なお、ユーザは、管理端末22ADを操作し、サービスグループを定義してもよい。この場合、ユーザは、サービスエントリのフィールドの内容に関わらず、サービスグループの作成を行ってもよい。
連携実行部220は、それぞれのサービスグループによって特定されるデータ経路およびデータ加工ルールにしたがい、それぞれのサービスグループに含まれるサービス間におけるデータの受け渡しを実現する。図25の連携実行部220には、例えば3つのサービスグループ221、222、223が設定されている。サービスグループは、例えば、データを供給する少なくともひとつのサービス(データ供給サービス)と、データを受け入れる少なくともひとつのサービス(データ受入サービス)とを含む。サービスグループは、さらにデータ加工ルール、すなわちデータ供給サービスの供給データをデータ受入サービスの受入データに変換するための手順を含んでいてもよい。
例えば、サービスグループ221は、データ供給サービスX1、X2とデータ受入サービスY1を含む。サービスグループ221の情報にしたがい、連携実行部220は、例えば、下記のように動作する。まず、連携実行部220は、APプログラム43X1を介し、サービスX1から供給されるデータを取得する。また、連携実行部220は、APプログラム43X2を介し、サービスX2から供給されるデータを取得する。次に、連携実行部220において、サービスX1から供給されるデータおよびサービスX2から供給されるデータは、サービスグループ221のデータ加工ルールにしたがって変換される。そして、変換されたデータは、APプログラム43Y1を介し、サービスY1に提供される。
例えば、サービスX1が地域Aを対象とするカーナビゲーションサービスであり、サービスX2が地域Bを対象とするカーナビゲーションサービスであり、サービスY1が地域Aおよび地域Bで提供されるデジタルサイネージサービスである場合を想定する。この場合、上述のサービスグループ221によって特定されるデータ経路にしたがったデータの受け渡しは有用な可能性がある。
例えば、サービスグループ222は、データ供給サービスY1とデータ受入サービスZ1を含む。サービスグループ222の情報にしたがい、例えば、連携実行部220は、APプログラム43Y1を介し、サービスY1から供給されるデータを取得する。連携実行部220において、サービスY1から供給されるデータは、サービスグループ222のデータ加工ルールにしたがって変換される。変換されたデータは、外部サービスサーバ23Z1で実行されているサービスZ1に提供される。
例えば、サービスY1が、ゲノム解析サービスであり、サービスZ1が疾病診断サービスまたは、医薬品開発支援サービスである場合、上述のサービスグループ222によって特定されるデータ経路にしたがったデータの受け渡しは有用な可能性がある。
例えば、サービスグループ223は、データ供給サービスZ2とデータ受入サービスY2を含む。サービスグループ223の情報にしたがい、例えば、連携実行部220は、外部サービスサーバ23Z2で実行されているサービスZ2から供給されるデータを取得する。連携実行部220において、サービスZ2から供給されるデータは、サービスグループ223のデータ加工ルールにしたがって変換される。変換されたデータは、サービスY2の開発に使われている開発ツール43Y2に渡される。
例えば、サービスZ2が稼働中の株価データ配信サービスであり、サービスY2が開発中のポートフォリオ最適化サービスである場合、開発ツール43Y2に提供されるデータを使って、試作中のプログラムのテストや検証を行うことができる。既にサービスY2と類似するサービスが提供されている場合、成果物を流用し、開発工数を削減することができる。なお、サービスZ2は、金融資産の価格データ提供サービス、または、金融ポートフォリオを構成するより小規模なサブ金融ポートフォリオの最適化サービスであってもよい。
上述のサービスグループ221、222、223は説明のための例にしかすぎない。したがって、データ受け渡しの対象となるサービスや、データ経路はこれとは異なっていてもよい。サービスやデータ受け渡しの具体例については、後述する。また、上述とは異なる方法によってサービス間のデータ経路およびデータ加工ルールを決定してもよい。
実績計算部230は、サービス間におけるデータの受け渡しの実績値を求める。実績計算部230は、時間に基づく実績値を求めてもよい。例えば、サービス間におけるデータの受け渡しを開始してから経過した期間を計測してもよい。また、実績計算部230は、データ量に基づく実績値を求めてもよい。例えば、あるサービスが他のサービスへ供給したデータのサイズまたは、データの件数の計測を行ってもよい。また、あるサービスが他のサービスから受け入れたサイズまたは、データの件数の計測を行ってもよい。なお、情報処理装置1は、必ず実績計算部230を備えていなくてもよい。
なお、サービスエントリに(j)プライシング情報が含まれている場合、実績計算部230で求められた実績値に基づく対価の計算を行うことができる。対価の計算は、情報処理システム10の実績計算部230が行ってもよい。また、インターネットバンキングシステム、金融機関のシステムなど、外部のシステムで、対価の請求または/および決済とともにデータの受け渡しに係る対価の計算が行われてもよい。
図26は、サービス間の連携において実行される処理の例を示したフローチャートである。以下では、図26のフローチャートを参照しながら、処理を説明する。
はじめに、サービス登録部210は、サービスエントリを登録する(ステップS211)。次に、マッチング部201は、マッチングするサービスエントリを探索する(ステップS212)。そして、マッチング部201は、マッチングしたサービスエントリの組合せに基づき、サービスグループを生成する(ステップS213)。次に、サービスグループによって特定されるデータ経路およびデータ加工ルールにしたがいサービス間におけるデータの受け渡しが行われる(ステップS214)。
以下では、図25を参照して、情報処理装置1の構成例をまとめる。情報処理装置1は、量子関連コンピュータを使った少なくともひとつのサービスを含む複数のサービス間の連携を実現する。連携を行う複数のサービスは、量子関連コンピュータを使わないサービスを少なくともひとつ含んでいてもよい。情報処理装置1は、変換部4と、サービス連携部200とを含む。変換部4は、それぞれ少なくともいずれかのサービスを提供する少なくともひとつのアプリケーションプログラムを実行する。サービス連携部200は、複数のサービス間におけるデータの受け渡しを行う。
それぞれのアプリケーションプログラムは、少なくともひとつの変換プログラムと、少なくともひとつの逆変換プログラムとを含む。変換プログラムは、上述のサービスで解かれる対象としている問題を量子関連コンピュータへ入力可能なデータ形式に変換する。逆変換プログラムは、当該問題について計算された量子関連コンピュータの解を、問題の解に変換する。サービス連携部200は、データを供給する少なくともひとつのデータ供給サービスと、データを受け入れる少なくともひとつのデータ受入サービスとを含むデータ経路を設定し、データ経路にしたがい、データ供給サービスとデータ受入サービスとの間におけるデータの受け渡しを行ってもよい。
情報処理装置1は、開発部3(例えば、図21または図22)を備えていてもよい。開発部3は、それぞれ少なくともいずれかのサービスの開発を支援する、開発ツールを少なくともひとつ実行する。サービス連携部200は、少なくともひとつのデータ供給サービスと、開発ツールを使って開発されている少なくともひとつサービスとを含むデータ経路を設定することにより、少なくともひとつのデータ供給サービスと、少なくともひとつの開発ツールとの間におけるデータの受け渡しを行ってもよい。
サービス連携部200は、サービスが供給することが可能なデータの内容または形式、サービスが受け入れることが可能なデータの内容または形式、サービスの業界、サービスの地域、サービスの規模、データの受け渡しの対価の少なくともいずれかに基づき、データ経路を設定してもよい。また、サービス連携部200は、少なくともひとつのデータ供給サービスから供給されるデータを所定のルールにしたがって加工してから少なくともひとつのデータ受入サービスに渡してもよい。
情報処理装置1は、複数のサービス間におけるデータの受け渡しの実績値を求める実績計算部230を備えていてもよい。実績値は、少なくともデータの受け渡しを開始してから経過した期間、データのサイズまたは、データの件数の少なくともいずれかを含んでいてもよい。また、実績計算部230は、実績値に基づき複数のサービス間におけるデータの受け渡しの対価を計算してもよい。
以下では、本実施形態に係る情報処理システムの適用例について説明する。はじめに、サービス間連携の一つの具体例を示す。
図27は、カーナビゲーションサービスの例を示している。例えば、自動車で横浜市(出発地の一例)を出発し、さいたま市(目的地の一例)に向かう経路を探索する場合を考える。横浜市−さいたま市は、走行距離が約60km~80kmある。このため、ドライバーは、1時間以上の長いドライブをしなくてはならない。また、横浜市−さいたま市間は大規模な市街地が広がっており、非常に多くの走行経路の選択が存在しうる。さらに、道路状況はリアルタイムで変動するため、最適経路は、日時および条件によって大きく異なる。このような場合、一度コンピュータによって所要時間が最小となる経路が探索されたとしても、ドライバーの走行中に道路状況が変化し、探索された経路の所要時間が大きくなってしまうことがある。また、図27の例のように、出発地と目的地間の距離が長く、なおかつ出発地と目的地間に市街地が広がっている場合、最適経路の探索に必要な計算量は非常に大きくなる。
そこで、図27のカーナビゲーションサービスでは、出発地−目的地間の全走行経路を一度の探索で確定させない。すなわち、全走行経路の一部の区間を進むごとに次の区間について最適な走行経路の探索が行う処理が繰り返し実行される。また、同じサービスを利用する複数車両の経路探索処理が特定のコンピュータ(例えば、サービスサーバ)に集中するのを避けるため、カーナビゲーションサービスを利用する複数の車両30のそれぞれに搭載されたコンピュータの計算資源を使った経路探索を行う。
すなわち、図27のカーナビゲーションサービスを利用するそれぞれの車両30には、図21、図22または図25に示した変換部4(アプリケーションプログラムを実行する構成要素)および量子関連コンピュータまたはPUBOソルバが搭載されている。このように、サービスに対応するアプリケーションプログラムを実行する変換部4および量子関連コンピュータまたはPUBOソルバは、複数の箇所に分散されて配置されていてもよい。
また、後述するように、複数の車両30は、互いにデータ(例えば、位置、速度、経路の情報)の送受信を行い、他の車両から受信したデータを経路計算に利用することができる。(例えば、後述する無線通信装置30Wが提供する)データ送受信機能は、図21、図22または図25に示したサービス連携部200に相当しているといえる。複数の車両30は、互いに直接データ通信を行ってもよい。また、複数の車両30は、サービスサーバ22C12を介したデータ通信を行ってもよい。サービスサーバ22C12を介して複数の車両30間のデータ通信が行われる場合、サービスサーバ22C12がサービス連携部200に相当しているともいえる。このように、サービス間連携は、異なる種類のサービスに限らず、同じ種類のサービス間(図27の例では、それぞれの車両30が利用しているカーナビゲーションサービス間)で行われてもよい。
上述のように、図21、図22または図25に示した情報処理装置1は、離れて配置された複数のコンピュータによって実現されていてもよい。この場合、複数のコンピュータは、サービスを提供する事業者によって管理されるコンピュータに限らず、図27の車両30のようなサービス利用者が使用するコンピュータを含んでいてもよい。
例えば、車両30のドライバーは、所要時間の短い経路を使って横浜市とさいたま市の間を走行することを希望しているものとする。このため、図27の例では、所要時間の最小の経路が最適経路となる。ただし、所要時間の最小の経路は最適経路の一例にしかすぎない。例えば、走行距離が最小となる経路、ランニングコストが最小となる経路、または複数の条件を満たす経路が最適経路であってもよい。
図28には、カーナビゲーションサービスに加入している車両30の構成例が示されている。車両30には、車載コンピュータ30Cと、無線通信装置30Wと、センサ30Sと、測位装置30Pが搭載されている。車載コンピュータ30Cは、制約なし多項式2値変数最適化(PUBO:Polynomial Unconstrained Binary Optimization)を解くことが可能なコンピュータ(PUBOソルバ)である。車載コンピュータ30Cは、例えば、プログラムを実行するノイマン型コンピュータであってもよいし、ノイマン型コンピュータとFPGA、ASIC、GPUなどのハードウェア回路の組み合わせであってもよい。また、車載コンピュータ30Cは、他の種類のコンピュータであってもよい。例えば、車載コンピュータ30Cは、量子関連コンピュータであってもよい。
無線通信装置30Wは、車載コンピュータ30Cと電気的に接続されている。無線通信装置30Wは、その他の無線通信装置とのデータ通信を実現する。無線通信装置30Wは、各種の移動体通信規格を用いることができるが、使用される規格の種類については、特に問わない。車載コンピュータ30Cは、無線通信装置30Wを介してその他の車両に搭載された車載コンピュータや、サービスサーバ22C12とデータ通信を行うことができる。
センサ30Sは、車両30の走行状況に関するデータ(走行データ)を計測する。走行データの例としては、時系列の速度データ、一定期間内における平均速度、ブレーキ操作の回数、アクセルの踏み込み回数、車両30の周囲の画像またはこれらの組合せが挙げられる。ただし、走行データの内容については、特に限定しない。測位装置30Pは、車両30が走行している位置を計測する。測位装置30Pは、衛星測位システム(例えば、GPS)の受信機であってもよい。ただし、測位装置30Pは、その他の測位システムによって車両30が走行している位置の計測を行ってもよい。センサ30Sが計測した走行データおよび測位装置30Pが計測した位置情報は、無線通信装置30Wを介してその他の車両に搭載された車載コンピュータに送信される。測位装置30Pが計測した車両30の位置情報を、サービスサーバ22C12に送信してもよい。これにより、サービスサーバ22C12は、カーナビゲーションサービスに加入する各車両の位置に関する情報を得ることができる。
まず、車載コンピュータ30Cは、車両30の半径rの範囲内にある他の車両から走行データおよび位置情報を収集する。半径rとして、例えば5km、10kmなどの値を使うことができる。ただし、半径rとして、どのような値を使ってもよい。そして、車載コンピュータ30Cは、収集した走行データおよび位置情報に基づき、半径rの範囲内における経路を計算する。例えば、車載コンピュータ30Cは、位置情報と道路データを組み合わせることによって、各車両が走行している道路を特定することができる。次に、車載コンピュータ30Cは、他の車両が走行している道路の情報および走行データに基づいて、重み付きグラフを生成する。そして、車載コンピュータ30Cは、重み付きグラフにおける最短経路問題を解くことによって、経路を求めることができる。ただし、この計算方法は一例にしかすぎない。したがって、これとは異なる方法を使って経路の計算を行ってもよい。
なお、車載コンピュータ30Cは、計算した経路をサービスサーバ22C12に送信してもよい。この場合、車載コンピュータ30Cは、車両30が前回計算した経路の終端付近まで走行したら、サービスサーバ22C12に現在の位置情報とともに、次の経路の計算が実行される旨を通知する。当該通知を受信したサービスサーバ22C12は、車両30の半径rの範囲内にある他の車両に対し、位置情報および走行データの送信を求める指令を送信する。各車両から位置情報および走行データを受信した車載コンピュータ30Cは、改めて半径rの範囲内における経路を計算することができる。
上述の処理を繰り返し実行することにより、車両30は、出発地から目的地までの経路を求めることができる。図27のサービスでは、それぞれのイタレーションで出発地から目的地までの経路の一部を計算している。各イタレーションでは、半径rの範囲内における経路の計算が行われる直前に、他の車両の位置情報および走行データが収集されるため、道路状況の変化に伴う経路探索結果の品質低下を最小限に抑えることができる。また、図27のサービスでは、当該サービスに加入する車両が増えるほど、経路探索の精度を高めることができる。
ここでは、ドライバーによって運転される車両が加入するカーナビゲーションサービスの例について説明した。ただし、カーナビゲーションサービスに加入する車両は、ドライバーによって運転される車両でなくてもよい。例えば、自動運転を行う車両がカーナビゲーションサービスに加入してもよい。なお、図27には、サービスサーバ22C12だけでなく、別のサービスサーバ22D22も示されている。サービスサーバ22D22は、図27のカーナビゲーションサービスと連携するサービスに関する処理を実行する。
図29は、カーナビゲーションサービスにおいて実行される処理の例を示したフローチャートである。以下では、図29のフローチャートを参照しながら、処理を説明する。
はじめに、カーナビゲーションサービスに車両の出発地および目的地が入力される(ステップS211)。例えば、車両のドライバーは、車載コンピュータ30Cのインタフェースを介して出発地および目的地を入力する。出発地および目的地の入力は、例えば、タッチパネルや音声認識装置を介して行うことができる。ただし、出発地と目的地の入力方法については、特に問わない。そして、車両の車載コンピュータ30Cは、周辺を走行している他の車両から位置情報および走行データを収集する(ステップS212)。図27の例では、経路探索をしている車両の半径rの範囲内を走行している車両から位置情報および走行データを収集した。ただし、車両から半径rの範囲の範囲は、当該車両の周辺を走行する他の車両を特定する方法の一例にしかすぎない。例えば、送信されるビーコン信号の強度がしきい値以上の車両から位置情報および走行データを収集してもよい。
次に、車両の車載コンピュータ30Cは、出発地から目的地までの経路の一部を計算する(ステップS213)。図27の例では、半径rの範囲内における経路の計算が行われていたが、経路計算の対象となる範囲はこれとは異なっていてもよい。そして、車両は、計算された経路の終端付近まで走行する(ステップS214)。車両が、計算された経路の終端付近まで走行したら、車載コンピュータ30Cは、目的地までの経路が計算済みであるか否かを判定する(ステップS215)。目的地までの経路が計算済みである場合(ステップS215のYES)、フローチャートの処理は終了する。目的地までの経路が計算済みでない場合(ステップS215のNO)、ステップS212の処理に戻り、車両の車載コンピュータ30Cは、周辺を走行している他の車両から位置情報および走行データを収集する。
すなわち、カーナビゲーションサービスでは、車両に搭載された量子関連コンピュータが、車両の周辺を走行している他の車両から収集した位置情報および走行データに基づき、出発地から目的地までの経路の一部が計算してもよい。
以下では、サービス間連携の別の具体例について述べる。
上述の図27では、主に同じ種類のサービス間(カーナビゲーションサービスを利用する車両30間)の連携の例を示した。図30では、異なる地域で提供されるサービス間で行われる連携の例を示す。図30には、サービス40NA、40NB、40RA、40SBが示されている。サービス40NAは、例えば、地方Aを対象としたカーナビゲーションサービスである。サービス40NBは、例えば、地方Bを対象としたカーナビゲーションサービスである。サービス40RAは、例えば、地方Aを含む地域案内サービスである。サービス40SBは、例えば、地方Bを含むデジタルサイネージサービスである。各サービス間の太い矢印は、データ経路の例を示している。一方、細い矢印は、対価の支払いの例を示している。
サービス40NBは、対象となる地域が異なっているものの、サービス40NAと同じカーナビゲーションサービスである。したがって、サービス40NBの実装を行う事業者は、サービス40NAの開発の成果物を流用し(太い矢印)、効率的な開発作業を行うことができる。開発の成果物の例としては、ソースコード、仕様書、変換プログラム、逆変換プログラム、問題モデル、制御スクリプトが挙げられるが、その他のデータが流用されてもよい。サービス40NBの実装を行う事業者は、サービス40NAを運用する事業者に開発の成果物の提供の対価を支払ってもよい(細い矢印)。このようなデータの受け渡しを行うことにより、サービス40NBの開発に要する工数を削減することが可能となる。
サービス40RAは、サービス40NAから、各車両の経路データ、位置情報および走行データの提供を受けることができる(太い矢印)。サービス40RAを運用する事業者は、サービス40NAを運用する事業者にデータ提供の対価を支払ってもよい(細い矢印)。サービス40RAを運用する事業者は、データの提供を受けることにより、地域案内サービスの品質を向上させることができる。例えば、周辺の道路が混雑していないエリアにある飲食店、ショッピングセンターなどを優先的に案内することができる。これにより、地域案内サービスに加入するドライバーは、過度の渋滞に巻き込まれずに、食事や買い物などの用件を済ますことができる。
サービス40SBは、サービス40NBから、各車両の経路データ、位置情報および走行データの提供を受けることができる(太い矢印)。サービス40SBを運用する事業者は、サービス40NBを提供する事業者にデータ提供の対価を支払ってもよい(細い矢印)。サービス40SBを運用する事業者は、地方Bの各道路を走行する車両の密度および車両のドライバーの属性(例えば、年齢)に基づき、地方Bに点在するデジタルサイネージに表示する内容を決定することができる。例えば、走行する車両の密度が高いエリアにあるデジタルサイネージには、複数の広告を表示し、走行する車両の密度が低いエリアにあるデジタルサイネージには、表示する広告の件数を減らすことができる。
以下では、複数の分野に属する複数のサービスが連携している例について説明する。
図31は、連携するサービスの例を示している。図31には、連携するサービスの例として、ゲノム解析サービス、疾病診断サービス、医薬品開発支援サービス、カーナビゲーションサービス、乗り換え案内サービス、地域案内サービス、デジタルサイネージサービス、ドローン配送サービス、トラック配送サービス、市場情報サービス、高頻度取引サービス、上場投資信託サービスが示されている。図31に示された各サービスは、図示された矢印に限られず、任意のデータ経路を形成することができる。すなわち、図31の情報処理システム10では、任意のサービスの組合せを含むサービスグループを作成することができる。例えば、あるサービスが、同時に複数のサービスグループに含まれていてもよい。
このうち、ゲノム解析サービス、疾病診断サービス、医薬品開発支援サービスは、医療分野に属する。また、カーナビゲーションサービス、乗り換え案内サービスは、交通分野に属する。地域案内サービス、デジタルサイネージサービスは、広告分野に属する。ドローン配送サービス、トラック配送サービスは、物流分野に属する。市場情報サービス、高頻度取引サービス、上場投資信託サービスは、金融分野に属する。このように、複数の分野に属する各種のサービスが連携してもよい。
なお、図31に示されたサービスは、連携可能なサービスの例にしかすぎない。必ず図31のサービスのすべてが連携しなくてもよいし、図31とは異なるサービスが連携していてもよい。また、図31に示されたサービスの分類方法は一例にしかすぎない。したがって、これとは異なる方法によってサービスを分類してもよい。例えば、ひとつのサービスが同時に複数のサービスに分類されてもよい。
本実施形態に係る情報処理システムを使うことにより、各分野に対応したプログラムの開発が容易になり、量子関連コンピュータの活用が促進される。また、本実施形態に係る情報処理システムを使うことにより、実世界におけるシステム間の依存関係および影響関係を反映したプログラムの開発、サービスの構築およびサービスの運用を行うことができる。これは、量子関連コンピュータを利用したサービスの品質および性能の向上、ならびに、ユーザの利便性を向上に寄与する。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。