(57)【要約】      （修正有）【課題】量子関連コンピュータまたはＰＵＢＯソルバを用いて問題を解くことを支援する情報処理装置および情報処理システムを提供する。【解決手段】情報処理システムにおいて、量子関連コンピュータを使って問題の解を求めることを支援する情報処理装置であって、ユーザが第１問題について、少なくとも１つの問題モデルを記述することを可能にするモデリングツールと、少なくとも１つの前記問題モデルを用いて、第１問題を量子関連コンピュータに入力可能なデータ形式に変換する変換プログラムを、ユーザが設計することを可能にするプログラミングツールとを実行する開発部と、入力された第２問題について前記変換プログラムを実行し、第２問題を前記データ形式に変換する変換部とを備える。【選択図】図１
2020166802.tif 000002
【特許請求の範囲】
【請求項１】
量子関連コンピュータを使って問題の解を求めることを支援する情報処理装置であって、
ユーザが第１問題について、少なくとも１つの問題モデルを記述することを可能にするモデリングツールと、少なくとも１つの前記問題モデルを用いて、前記第１問題を前記量子関連コンピュータに入力可能なデータ形式に変換する変換プログラムを、前記ユーザが設計することを可能にするプログラミングツールとを実行する開発部と、
入力された第２問題について前記変換プログラムを実行し、前記第２問題を前記データ形式に変換する変換部とを備える、
情報処理装置。
【請求項２】
前記開発部が実行する前記プログラミングツールは、前記第１問題について計算された前記量子関連コンピュータの解を、前記第１問題の解に逆変換する逆変換プログラムを前記ユーザが作成することを可能にし、前記変換部は、前記第２問題について計算された前記量子関連コンピュータの解を入力として前記逆変換プログラムを実行し、前記逆変換プログラムが変換した解を、前記第２問題の解として出力する、
請求項１に記載の情報処理装置。
【請求項３】
前記データ形式に変換された前記第２問題を前記量子関連コンピュータに入力し、前記量子関連コンピュータの解を取得する制御部を備える、
請求項１または２の情報処理装置。
【請求項４】
前記開発部が実行する前記モデリングツールは、前記第１問題について異なるレベルに対応する複数の前記問題モデルを前記ユーザが段階的に記述することを可能にし、前記開発部が実行する前記プログラミングツールは、異なるレベルに対応する複数の前記問題モデルに基づき、前記ユーザが前記変換プログラムを設計することを可能にする、
請求項１ないし３のいずれか一項に記載の情報処理装置。
【請求項５】
前記開発部が実行する前記モデリングツールは、上位の表現形式で上位の前記問題モデルを前記ユーザが記述することを可能にする上位モデリングツールと、下位の表現形式で下位の前記問題モデルを前記ユーザが記述することを可能にする下位モデリングツールとを含む、
請求項４に記載の情報処理装置。
【請求項６】
前記上位の表現形式は、自然言語、グラフ、数式、またはそれらの組み合わせを含む、
請求項５に記載の情報処理装置。
【請求項７】
前記下位の表現形式は、イジングモデルまたはハミルトニアンを含む、
請求項５に記載の情報処理装置。
【請求項８】
前記開発部が実行する前記モデリングツールは、中位の表現形式で中位の前記問題モデルを前記ユーザが記述することを可能にする中位モデリングツールを含む、
請求項５に記載の情報処理装置。
【請求項９】
前記中位の表現形式は、１以上の種類の組合せ最適化問題を数学的に表現した数式、グラフ、表、またはそれらの組み合わせを含む、
請求項８に記載の情報処理装置。
【請求項１０】
前記中位のモデリングツールは、中位の前記問題モデルをユーザが複数のサブ問題モデルに分割して記述することを可能にする、
請求項８に記載の情報処理装置。
【請求項１１】
前記開発部は、前記量子関連コンピュータの種類ごとに、前記変換プログラムと前記逆変換プログラムをユーザが作成することを可能にする、
請求項２に記載の情報処理装置。
【請求項１２】
前記変換部は、計算に使用される前記量子関連コンピュータの種類に基づいて、実行する前記変換プログラムと前記逆変換プログラムとを選択する、
請求項１１に記載の情報処理装置。
【請求項１３】
前記開発部は、前記第１問題を、目的関数を含む上位モデルに変換する上位のサブ変換プログラムと、前記上位モデルの解を前記第１問題の解に変換する上位のサブ逆変換プログラムとをユーザが作成することを可能にする、
請求項２に記載の情報処理装置。
【請求項１４】
１以上の前記変換プログラムまたは１以上の前記逆変換プログラムを保存する記憶部を備え、
前記開発部は、前記記憶部から読み出される少なくとも１つの前記変換プログラムまたは少なくとも１つの前逆変換プログラムを前記ユーザに提示することにより、前記ユーザが前記第１問題のための前記変換プログラムまたは前記逆変換プログラムを開発することを支援する、
請求項２に記載の情報処理装置。
【請求項１５】
１以上の前記変換プログラムまたは１以上の前記逆変換プログラムを保存する記憶部を備え、
前記開発部は、前記変換プログラムまたは前記逆変換プログラムの第三者による再利用の可否を設定できる、
請求項２に記載の情報処理装置。
【請求項１６】
１以上の前記変換プログラムまたは１以上の前記逆変換プログラムを保存する記憶部を備え、
前記開発部は、前記変換プログラムまたは前記逆変換プログラムの第三者の属性に応じたアクセスレベルを設定する、
請求項２に記載の情報処理装置。
【請求項１７】
１以上の前記変換プログラムまたは１以上の前記逆変換プログラムを保存する記憶部を備え、
前記開発部が、前記変換プログラムまたは前記逆変換プログラムの第三者による使用の対価を設定する、
請求項２に記載の情報処理装置。
【請求項１８】
前記開発部は、少なくとも１つの前記問題モデルを前記ユーザに提示することによって、前記ユーザが前記第１問題のための前記問題モデルを記述することを支援する、
請求項１ないし１７のいずれか一項に記載の情報処理装置。
【請求項１９】
前記開発部は、前記第２問題と前記第１問題との間の類否に基づき、少なくとも１つの前記問題モデルを前記ユーザに提示する、
請求項１ないし１８のいずれか一項に記載の情報処理装置。
【請求項２０】
前記開発部は、前記ユーザの入力に基づき、検索を実行し、少なくとも１つの前記問題モデルを前記ユーザに提示する、
請求項１ないし１９のいずれか一項に記載の情報処理装置。
【請求項２１】
前記開発部は、前記問題モデルのテンプレートまたはひな形を前記ユーザに提示することにより、前記ユーザが前記第１問題のための前記問題モデルを記述することを支援する、
請求項１ないし２０のいずれか一項に記載の情報処理装置。
【請求項２２】
前記開発部は、前記問題モデルのモデリング作業の少なくとも一部を自動的に行うプログラムを実行し、前記ユーザが前記第１問題のための前記問題モデルを記述することを支援する、
請求項１ないし２１のいずれか一項に記載の情報処理装置。
【請求項２３】
前記問題モデルは、前記問題モデルの対象を示す表現と、前記対象の機能と、前記機能に入力される変数と、前記変数の入力により前記機能から出力される結果と、前記結果に適用される条件とを含む、
請求項１ないし２２のいずれか一項に記載の情報処理装置。
【請求項２４】
前記開発部は、前記制御部による前記量子関連コンピュータの制御条件を含むスクリプトのテンプレートを前記ユーザに提示することにより、前記ユーザが前記スクリプトを記述することを支援する、
請求項３に記載の情報処理装置。
【請求項２５】
前記制御部による前記量子関連コンピュータの制御条件を含むスクリプトと、前記スクリプトを生成するプログラムとを保存する記憶部を備え、
前記開発部は、前記プログラムを実行し、前記ユーザが入力したパラメータまたはユーザが選択したオプションの少なくともいずれかに基づいて自動的に前記スクリプトを生成する、
請求項３に記載の情報処理装置。
【請求項２６】
前記量子関連コンピュータは、量子アニーリング現象を使ったコンピュータ、前記量子アニーリング現象をエミュレートするコンピュータ、ゲート方式の量子コンピュータ、メタヒューリスティクスアルゴリズムを実行するコンピュータのうち、少なくともいずれかのコンピュータである、
請求項１ないし２５のいずれか一項に記載の情報処理装置。
【請求項２７】
前記第１問題および第２問題は、金融ポートフォリオの最適化である、
請求項１ないし２６のいずれか一項に記載の情報処理装置。
【請求項２８】
前記第１問題および第２問題は、ＤＮＡ鎖から切断された複数のＤＮＡ断片の塩基配列に基づく、前記ＤＮＡ鎖の塩基配列の決定である、
請求項１ないし２７のいずれか一項に記載の情報処理装置。
【請求項２９】
前記制御部は、前記ユーザが設定した条件を満たす解が得られるまで、前記量子関連コンピュータに求解の動作を行わせる、
請求項３に記載の情報処理装置。
【請求項３０】
前記制御部は、ユーザが設定した条件を満たすまで、前記量子関連コンピュータを待機させる、
請求項３に記載の情報処理装置。
【請求項３１】
前記変換部は、少なくとも一部のレベルにおける前記変換プログラムまたは前記逆変換プログラムの実行時オプションまたはパラメータの設定の指定が可能である、
請求項２に記載の情報処理装置。
【請求項３２】
請求項１ないし３１のいずれか一項に記載の情報処理装置と、
前記情報処理装置に接続された、量子アニーリング現象を使ったコンピュータ、前記量子アニーリング現象をエミュレートするコンピュータ、ゲート方式の量子コンピュータ、およびメタヒューリスティクスアルゴリズムを実行するコンピュータのうち、少なくともいずれかの量子関連コンピュータとを備える、
情報処理システム。
【請求項３３】
複数の前記量子関連コンピュータを含み、
複数の前記量子関連コンピュータは、共通の前記第２問題について、求解の処理の少なくとも一部を実行する、
請求項３２に記載の情報処理システム。
【請求項３４】
前記情報処理装置は、複数の前記量子関連コンピュータによって計算された解の少なくともいずれかから選択された前記解に基づき、前記第２問題の解を求める、
請求項３３に記載の情報処理システム。
【請求項３５】
前記情報処理装置は、複数の前記量子関連コンピュータによる計算処理の並列度、実行順序、条件分岐の少なくともいずれかを制御する、
請求項３３に記載の情報処理システム。
【請求項３６】
量子関連コンピュータを使った複数のサービスの開発を支援する情報処理装置であって、
それぞれ少なくともいずれかの前記サービスを提供する、アプリケーションプログラムの開発を支援するアプリケーション開発ツールを少なくともひとつ実行する開発部と、
少なくともひとつの前記アプリケーションプログラムを実行する変換部とを備え、
前記アプリケーション開発ツールは、ユーザが前記サービスに対応した少なくともひとつの問題モデルを作成することを支援する、少なくともひとつのモデリングツールと、前記ユーザが少なくともひとつの前記問題モデルに基づいて前記アプリケーションプログラムを設計することを支援する、少なくともひとつのプログラミングツールとを含み、
それぞれの前記アプリケーションプログラムは、提供する前記サービスで解かれる対象としている問題を前記量子関連コンピュータへ入力可能なデータ形式に変換する少なくともひとつの変換プログラムと、前記問題について計算された前記量子関連コンピュータの解を、前記問題の解に変換する少なくともひとつの逆変換プログラムとを含む、
情報処理装置。
【請求項３７】
前記開発部が実行する前記モデリングツールは、前記問題について異なるレベルに対応する複数の前記問題モデルを前記ユーザが段階的に記述することを可能にし、前記プログラミングツールは、異なるレベルに対応する複数の前記問題モデルに基づき、前記ユーザが前記変換プログラムを設計することを可能にする、
請求項３６に記載の情報処理装置。
【請求項３８】
前記開発部が実行する前記モデリングツールは、上位の表現形式で上位の前記問題モデルを前記ユーザが記述することを可能にする上位モデリングツールと、下位の表現形式で下位の前記問題モデルを前記ユーザが記述することを可能にする下位モデリングツールとを含む、
請求項３７に記載の情報処理装置。
【請求項３９】
前記開発部が実行する前記モデリングツールは、複数の問題モデルひな形または複数の既存問題モデルのうちから、前記ユーザが開発する前記サービスに応じて、少なくともひとつの前記問題モデルひな形または少なくともひとつの前記既存問題モデルを選択し、前記ユーザに提示する、
請求項３６ないし３８のいずれか一項に記載の情報処理装置。
【請求項４０】
前記開発部が実行する前記プログラミングツールは、複数の変換プログラムひな型、複数の逆変換プログラムひな型、複数の既存変換プログラムまたは複数の既存逆変換プログラムのうちから、前記ユーザが開発する前記サービスに応じて、少なくともひとつの前記変換プログラムひな型、少なくともひとつの前記逆変換プログラムひな型、少なくともひとつの前記既存変換プログラムまたは少なくともひとつの前記既存逆変換プログラムを選択し、前記ユーザに提示する、
請求項３６ないし３９のいずれか一項に記載の情報処理装置。
【請求項４１】
量子関連コンピュータを使った少なくともひとつの第１サービスを含む複数のサービス間の連携を実現する情報処理装置であって、
それぞれ少なくともいずれかの前記第１サービスを提供する、少なくともひとつのアプリケーションプログラムを実行する変換部と、
前記複数のサービス間におけるデータの受け渡しを行うサービス連携部とを備え、
それぞれの前記アプリケーションプログラムは、提供する前記第１サービスで解かれる対象としている問題を前記量子関連コンピュータへ入力可能なデータ形式に変換する少なくともひとつの変換プログラムと、前記問題について計算された前記量子関連コンピュータの解を、前記問題の解に変換する少なくともひとつの逆変換プログラムとを含み、
前記サービス連携部は、前記データを供給する少なくともひとつのデータ供給サービスと、前記データを受け入れる少なくともひとつのデータ受入サービスとを含むデータ経路を設定し、前記データ経路にしたがい、前記データ供給サービスと前記データ受入サービスとの間における前記データの受け渡しを行う、
情報処理装置。
【請求項４２】
前記複数のサービスは、前記量子関連コンピュータを使わない第２サービスを少なくともひとつ含む、
請求項４１に記載の情報処理装置。
【請求項４３】
それぞれ少なくともいずれかの前記第１サービスの開発を支援する、開発ツールを少なくともひとつ実行する開発部を備え、
前記サービス連携部は、少なくともひとつの前記データ供給サービスと、前記開発ツールを使って開発されている少なくともひとつ前記第１サービスとを含むデータ経路を設定することにより、少なくともひとつの前記データ供給サービスと、少なくともひとつの前記開発ツールとの間における前記データの受け渡しを行う、
請求項４１または４２に記載の情報処理装置。
【請求項４４】
前記サービス連携部は、前記サービスが供給することが可能な前記データの内容または形式、前記サービスが受け入れることが可能な前記データの内容または形式、前記サービスの業界、前記サービスの地域、前記サービスの規模、前記データの受け渡しの対価に関する情報の少なくともいずれかに基づき、前記データ経路を設定する、
請求項４１ないし４３のいずれか一項に記載の情報処理装置。
【請求項４５】
前記対価に関する情報は、対価の上限額、対価の下限額、または対価の範囲の少なくともいずれかを含んでいる、
請求項４４に記載の情報処理装置。
【請求項４６】
前記サービス連携部は、少なくともひとつの前記データ供給サービスから供給される前記データを所定のルールにしたがって加工してから少なくともひとつの前記データ受入サービスに渡す、
請求項４１ないし４５のいずれか一項に記載の情報処理装置。
【請求項４７】
前記複数のサービス間における前記データの受け渡しの実績値を求める実績計算部を備え、
前記実績値は、少なくとも前記データの受け渡しを開始してから経過した期間、前記データのサイズまたは、前記データの件数の少なくともいずれかを含む、
請求項４１ないし４６のいずれか一項に記載の情報処理装置。
【請求項４８】
前記実績計算部は、前記実績値に基づき前記複数のサービス間におけるデータの受け渡しの対価を計算する、
請求項４７に記載の情報処理装置。
【請求項４９】
複数の前記第１サービスのうち、少なくともひとつは、カーナビゲーションサービスである、
請求項４１ないし４８のいずれか一項に記載の情報処理装置。
【請求項５０】
記量子関連コンピュータは、前記カーナビゲーションサービスを利用する複数の車両のそれぞれに搭載されている、
請求項４９に記載の情報処理装置。
【請求項５１】
前記量子関連コンピュータは、制約なし多項式２値変数最適化を解くことが可能である、
請求項４１ないし５０のいずれか一項に記載の情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、情報処理装置および情報処理システムに関する。
【背景技術】
【０００２】
近年、量子力学的な現象を使った各種のコンピュータの開発が進められている。このようなコンピュータの例としては、ゲート式の量子コンピュータ、イジングマシンなどが挙げられる。イジングマシンには、例えば、量子アニーリング現象を使ったコンピュータや、光パラメトリック発振器を使ったコンピュータなどが知られている。また、ノイマン式のコンピュータ、ＦＰＧＡなどのハードウェア回路、プログラムまたはこれらの組み合わせによって、量子力学的な現象をエミュレートするコンピュータ（量子現象エミュレータとよぶ）の開発も行われている。今後は、新しい種類の量子コンピュータ、または新しい種類の量子現象エミュレータが実現する可能性がある。量子コンピュータ、量子現象エミュレータはいずれも量子力学的な現象を何らかの方法で利用するコンピュータという特徴を有する。本明細書では、この特徴を有するコンピュータ、この特徴を有するコンピュータの組み合わせ、またはこの特徴を有するコンピュータとこの特徴を有しないコンピュータ（非量子コンピュータ）との組み合わせを“量子関連コンピュータ”とよぶ。
【０００３】
また、制約なし多項式２値変数最適化を解くコンピュータ（ＰＵＢＯソルバ）の開発も進められている。ＰＵＢＯソルバには、量子関連コンピュータであるものと、非量子コンピュータであるものの双方が提案されている。
【０００４】
社会、産業、政治およびビジネスなど現実世界の問題には、古典的なコンピュータでは実用的な時間内には解くことが難しいものがある。例えば、組合せ最適化問題として記述されうるタイプの現実問題の中に、そのような問題が存在することが知られている。そこで、量子関連コンピュータまたはＰＵＢＯソルバを用いて、これまでは取り扱いが難しかった現実問題を実用的な時間内に解くための研究と開発が進められている。
【０００５】
しかし、実世界の複雑性は、現実問題の求解への量子関連コンピュータまたはＰＵＢＯソルバの適用の妨げとなっている。例えば、問題の定義および記述を的確に行うためには、専門的な知識または経験が必要である。また、実世界の各システムは、相互に依存しており、影響し合っている。プログラムの開発およびサービスの提供ではシステム相互間の依存関係および影響関係を反映することが求められている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開第２０１６−１０３２８２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
本発明の実施形態は、量子関連コンピュータまたはＰＵＢＯソルバを用いて問題を解くことを支援する情報処理装置および情報処理システムを提供する。
【課題を解決するための手段】
【０００８】
本発明の実施形態としての情報処理装置は、量子関連コンピュータを使って問題の解を求めることを支援する情報処理装置であって、ユーザが第１問題について、少なくとも１つの問題モデルを記述することを可能にするモデリングツールと、少なくとも１つの前記問題モデルを用いて、前記第１問題を前記量子関連コンピュータに入力可能なデータ形式に変換する変換プログラムを、前記ユーザが設計することを可能にするプログラミングツールとを実行する開発部と、入力された第２問題について前記変換プログラムを実行し、前記第２問題を前記データ形式に変換する変換部とを備える。
【図面の簡単な説明】
【０００９】
【図１】第１の実施形態に係るシステムの構成例を示したブロック図。
【図２】モデリングツールと各レベルのプログラムの例を示した図。
【図３】問題のレベル構造の第１の例を示した図。
【図４】現実問題の例を示した図。
【図５】下位モデルの例を示した図。
【図６】問題のレベル構造の第２の例を示した図。
【図７】ハミルトン閉路問題の例を示した図。
【図８】問題モデルの一般的な構成例を示した図。
【図９】量子関連コンピュータの構成例を示したブロック図。
【図１０】問題のタイプの定義例を示した図。
【図１１】マシンタイプデータの例を示した図。
【図１２】Ｌ１プログラムテーブルの例を示した図。
【図１３】Ｌ２プログラムテーブルの例を示した図。
【図１４】Ｌ３プログラムテーブルの例を示した図。
【図１５】情報処理システムによるプログラムの開発の例を示したフローチャート。
【図１６】生成が必要なプログラムのレベルを特定する処理の例を示したフローチャート。
【図１７】あるレベルに係るプログラムを作成する手順の例を示したフローチャート。
【図１８】情報処理システムにおけるプログラム実行処理の例を示したフローチャート
【図１９】情報処理システムを用いて問題の解を求める処理の例を示した図。
【図２０】コンピュータの構成例を示したブロック図。
【図２１】複数の分野に対応した情報処理システムの構成例を示したブロック図。
【図２２】複数の分野に対応した情報処理システムの構成例を示したブロック図。
【図２３】選択メニューおよびツールデータベースの構成例を示した図。
【図２４】開発されるサービスに応じたツールおよびデータの選択の例を示したフローチャート。
【図２５】サービス連携部の構成例を示したブロック図。
【図２６】サービス間の連携において実行される処理の例を示したフローチャート。
【図２７】カーナビゲーションサービスの例を示した図。
【図２８】カーナビゲーションサービスに加入している車両の構成例が示す図。
【図２９】カーナビゲーションサービスにおいて実行される処理の例を示したフローチャート。
【図３０】カーナビゲーションサービスを含むサービス間連携の例を示した図。
【図３１】連携するサービスの例を示した図。
【発明を実施するための形態】
【００１０】
以下、図面を参照しながら、本発明の実施形態について説明する。また、図面において同一の構成要素は、同じ番号を付し、説明は、適宜省略する。
【００１１】
（第１の実施形態）
以下に説明される第１の実施形態に係る情報処理システムは、量子関連コンピュータを使って、例えば組合せ最適化問題として記述可能な現実問題を解くことを支援する。しかし、この用途は説明のための例示にすぎず、情報処理システムの適用範囲を、組合せ最適化問題として記述可能な現実問題を解く場合に限定する趣旨ではない。
【００１２】
量子関連コンピュータを使って現実問題を解くためには、量子関連コンピュータが処理可能な所定の形式の問題モデルまたはデータに、現実問題を変換しなくてはならない。ここでは、専門的な知識と経験に基づく、問題の大幅な変形や単純化が必要となる場合がある。例えば、量子関連コンピュータにデータがイジングモデルの形式で入力される場合、問題はパラメータが二値変数である二次式に変換される。特許文献１はユーザが指定した問題をイジングモデルに変換し、演算装置にイジングモデルの探索を行わせる情報処理システムを開示している。
【００１３】
しかし、現実問題の多くは現実世界の複雑さを内包している。現実問題を的確に定義し、記述するためには、その問題の存する現実世界の分野の専門知識または実務経験が必要である。例えば、ある金融ポートフォリオの最適化という現実問題を定義し記述するためには、その金融ポートフォリオおよびそれに関連する専門知識またはポートフォリオ設計の実務経験が求められる。他方、量子関連コンピュータが解ける形式の問題モデルまたはデータを作成するには、その量子関連コンピュータおよびそれに関連する数学の分野（例えば、組合せ最適化問題）に関する専門知識または実務経験が必要である。したがって、現実問題を量子関連コンピュータが解ける形式の問題モデルまたはデータに変換するコンピュータプログラム、あるいは、その変換を自動的に行うコンピュータプログラムを開発するためには、関連する複数分野の専門知識または経験を統合する必要がある。これは当事者にとって困難であり多大な工数がかかる作業となる。
【００１４】
また、量子関連コンピュータの種類によって異なるデータの入出力形式を使うことが求められる場合がある。例えば、量子アニーリング現象を使ったコンピュータと、ゲート式の量子コンピュータでは、別の形式のデータが入力される可能性がある。量子関連コンピュータの種類ごとに、変換プログラムを開発すると工数が大きくなってしまう。
【００１５】
現実問題の形式と、量子関連コンピュータに入力可能な問題モデルまたはデータの形式は、大きく乖離していることが多い。量子関連コンピュータを利用するために、現実問題は、量子関連コンピュータに入力可能な問題モデルまたはデータに変換される必要がある。本実施形態に係るシステムは、ユーザが、一連の複数の異なるレベルの問題モデルを記述することを通じて、段階的に現実問題を量子関連コンピュータ用の問題モデルまたはデータへと変換することを可能にする。
【００１６】
以下では、問題のモデリングにおける複数の段階の例を示す。第一段階でユーザは、システムから支援されて、例えば、現実問題を人間に理解しやすい表現形式（例えば、テキスト、グラフ、数式など）で表現した、上位（レベル１）の問題モデルを記述する。第二段階で、ユーザは、システムの支援をうけ、上位の問題モデルに基づき、例えば、組合せ最適化問題として数学的に厳密に記述した中位（レベル２）の問題モデルを記述する。そして、第三段階で、ユーザは、システムの支援をうけ、組合せ最適化問題として記述された中位の問題モデルに基づき、量子関連コンピュータへ入力可能な形式の下位（レベル３）の問題モデルまたはデータを記述する。
【００１７】
そして、システムは、下位の問題モデルから得られるデータを量子関連コンピュータに入力し、量子関連コンピュータが所定形式の解を計算する。この後、ユーザは、システムの支援をうけ、量子関連コンピュータから出力された下位の解を段階的に現実問題の解に逆変換する。例えば、下位の解を、例えば上述の組合せ最適化問題の解のなどの中位の解に逆変換し、さらに中位の解を現実問題の解（上位の解）に逆変換することができる。このように、ユーザは問題の上位から下位への変換と、その問題の解の下位から上位への逆変換という、二つの方向の変換を段階的に行うことができる。
【００１８】
問題の変換および解の逆変換には、現実問題の背景、組合せ最適化問題、量子関連コンピュータなど複数の関連分野における知見を有する複数の専門家の参加が必要であり、多くの工数が必要となる。現実問題の関連する現実世界の分野は、金融、物流、交通、ライフサイエンスなど多岐にわたる可能性がある。また、複数のユーザが様々な形で量子関連コンピュータを利用する可能性がある。本実施形態に係るシステムは、問題の変換（すなわち、問題のモデリング）と解の逆変換を段階的に行う機能を提供する。また、複数の専門家や複数のユーザによる変換作業の分担や協力などをより容易にし、開発の成果物を部品として再利用できるようにする。これにより、本実施形態に係るシステムは、量子関連コンピュータの活用促進に貢献する。
【００１９】
量子関連コンピュータの活用を一層促進するためには、問題の変換と解の逆変換を、自動的に実行するプログラム（変換プログラムおよび逆変換プログラム）の開発が望まれる。変換プログラムおよび逆変換プログラムがあれば、ユーザは手動で問題の変換と解の逆変換を行う手間から解放される。本実施形態に係るシステムは、ユーザによる変換プログラムおよび逆変換プログラムの開発を支援する。例えば、本実施形態に係るシステムは、ユーザが異なるレベルの問題モデルを参照することを可能にする。これにより、ユーザにとり、所望の現実問題から量子関連コンピュータへの入力データを作成するための変換プログラム、および量子関連コンピュータの出力解を所望の現実問題の解へと変換するための逆変換プログラムをより容易に開発することができる。また、本実施形態に係るシステムは、既に開発された変換プログラムおよび逆変換プログラム、ならびに開発プロセスで得られた関連知識（例えば、各レベルの問題モデル）やノウハウを、ユーザ間で共有することを可能にする。例えば、ある現実問題に関して既に開発された変換／逆変換プログラムを、同一または類似の現実問題用の変換／逆変換プログラムを開発しようとするユーザに利用させることができる。以降では、変換／逆変換プログラムの開発と実行の機能を備えた本実施形態に係るシステムについて、より詳細に説明する。
【００２０】
本実施形態に係るシステムでは、量子関連コンピュータを使った求解処理を行うことができる。量子関連コンピュータとは、発生する物理現象、エミュレーション、シミュレーションなど何らかの方法で量子力学的な現象（以下、量子現象という）を利用するコンピュータである。量子関連コンピュータには複数の種類がある。一例としては、イジングモデルの最低エネルギー状態（基底状態）を求めるコンピュータ（イジングマシンとよぶ）が挙げられる。イジングマシンは、さらに超伝導量子ビットを使った量子アニーリングマシン、光パラメトリック発振器を使ったコンピュータおよび量子アニーリング現象をエミュレートするコンピュータなどに分類される。
【００２１】
また、量子関連コンピュータは、ゲート式の量子コンピュータ、ＦＰＧＡまたはＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）などのハードウェア回路を使ったコンピュータであってもよい。また、量子関連コンピュータは、量子現象を利用する複数のコンピュータの組み合わせであってよい。また、量子関連コンピュータは、量子現象を利用するコンピュータと量子現象を利用しないコンピュータ（非量子コンピュータ）の組み合わせであってよい。例えば、量子現象を利用するコンピュータとメタヒューリスティクスアルゴリズムを実行するコンピュータとを組みわせて、前者の機能が補完・強化されたシステムも、量子関連コンピュータに包含される。メタヒューリスティクスアルゴリズムの例としては、Ｓｉｍｕｌａｔｅｄ  Ａｎｎｅａｌｉｎｇ法、タブーサーチなどの局所探索法、粒子群最適化（ＰＳＯ）、遺伝的アルゴリズムなどがある。メタヒューリスティクスアルゴリズムはプログラムによって実装されていてもよいし、ハードウェア回路によって実装されていてもよい。すなわち、量子関連コンピュータの方式、実装、アーキテクチャについては特に限定しない。
【００２２】
なお、本実施形態に係るシステムでは、制約なし多項式２値変数最適化（ＰＵＢＯ：Ｐｏｌｙｎｏｍｉａｌ  Ｕｎｃｏｎｓｔｒａｉｎｅｄ  Ｂｉｎａｒｙ  Ｏｐｔｉｍｉｚａｔｉｏｎ）を解くことが可能なコンピュータ（ＰＵＢＯソルバ）を使った求解処理を行ってもよい。上述の量子関連コンピュータの一部（例えば、一部のイジングマシン）は、制約なし多項式２値変数最適化を解くことが可能であるため、ＰＵＢＯソルバであるともいえる。ただし、ＰＵＢＯソルバは、上述の量子関連コンピュータに相当しないコンピュータであってもよい。ＰＵＢＯソルバは、ノイマン型コンピュータ上でプログラムを実行することによって２値変数の値を計算するものであってもよい。また、ＰＵＢＯソルバは、イマン型コンピュータとＦＰＧＡ、ＡＳＩＣ、ＧＰＵなどのハードウェア回路を組み合わせることによって実装されるものであってもよい。すなわち、ＰＵＢＯソルバの構成については特に問わない。
【００２３】
本実施形態に係るシステムでは複数の種類の現実問題を取り扱うことが可能である。一例としては、組合せ最適化問題に変換可能な現実問題が挙げられる。組合せ最適化問題にも複数の種類がある。その例としては、最短経路問題、巡回セールスマン問題、ハミルトン路問題などが挙げられる。最短経路問題では、重み付きグラフにおいて、２つのノード間の経路のうち、合計の重みが最小となる経路を求める。巡回セールスマン問題（ＴＳＰ）では、重み付きの無向グラフにおいて、すべてのノードを一度だけ通り、始点ノードに戻る経路のうち、合計の重みが最小となる経路を求める。ハミルトン路問題では、任意のグラフについて、すべてのノードを一度だけ通る経路を求める。また、ハミルトン路問題のうち、経路の始点のノードと経路の終点のノードが同一ノードであるものを、ハミルトン閉路問題とよぶ。上述の問題は例にしかすぎない。したがって、現実問題はその他の種類の組合せ最適化問題に変換されてもよい。
【００２４】
次に、上述のイジングモデルについて説明する。イジングモデルでは、エネルギーの関数が＋１または−１のいずれかの２値をとる複数の変数ｓｉ（ｉ＝１、２、・・・）の二次多項式によって表現される。下記の式（１）はエネルギーの関数であるハミルトニアンＨを示している。
【数１】
2020166802.tif 000003
ここで、Ｊｉｊは、スピン間の相互作用係数の行列である。ｓｉ、ｓｊは二値変数（スピン）であり、＋１または−１のいずれかの値をとる。ｈｉは各スピンにおける局所磁場のベクトルである。上述の式（１）は、ｓｉ、ｓｊについての２次式となっている。ただし、スピンの３次以上の項を含むイジングモデルを使ってもよい。スピンの３次以上の項を含むイジングモデルは、物理的には多体相互作用を含むといえる。
【００２５】
式（１）のハミルトニアンＨは組合せ最適化問題における目的関数に相当する。イジングモデルの最適解は、エネルギーが最小となる二値変数の組み合わせ（ベクトル）となる。イジングモデルは、主に強磁性体や相転移現象のモデルとして使われてきた。イジングモデルのパラメータは二値変数であり、組合せ最適化問題で使われる離散変数との変換が容易である。このため、近年はイジングモデルによって組合せ最適化問題を解く事例が増えている。イジングモデルは、量子関連コンピュータへ入力可能なデータ形式に相当する。イジングマシン以外の種類の量子関連コンピュータが使われた場合、入力可能なデータ形式はイジングモデルとは異なった形式であってもよい。
【００２６】
以下では、本実施形態に係るシステムの構成例について説明する。
【００２７】
図１は、本実施形態に係るシステムの構成例を示した図である。図１のシステムは情報処理システム１０と、クライアントマシン２２と、外部情報処理システム２３とを備えている。情報処理システム１０、クライアントマシン２２、外部情報処理システム２３は、ネットワーク２１を介して接続されている。
【００２８】
情報処理システム１０は、情報処理装置１と、一以上の量子関連コンピュータ（図示の例では、同種または異なる種類の複数の量子関連コンピュータ１１ａ、１１ｂおよび１１ｃ）とを備えている。また、情報処理システム１０は、ＰＵＢＯソルバ１１ｄを備えていてもよい。情報処理装置１、量子関連コンピュータ１１ａ〜１１ｃ、およびＰＵＢＯソルバ１１ｄはネットワーク２０を介して接続されている。量子関連コンピュータ１１ａ〜１１ｃまたは、ＰＵＢＯソルバ１１ｄの少なくともいずれかが、情報処理システム１０の外部に設置されていてもよい。この場合、量子関連コンピュータまたは、ＰＵＢＯソルバはネットワーク２１を介して情報処理装置１に接続される。図１には、３つの量子関連コンピュータと、ひとつのＰＵＢＯソルバが示されている。ただし、量子関連コンピュータおよびＰＵＢＯソルバの数については、特に問わない。第１の実施形態に係る説明では、量子関連コンピュータを使って問題の解を求める場合を例に説明する。ただし、ＰＵＢＯソルバを使った求解が行われる場合、以下の説明における量子関連コンピュータをＰＵＢＯソルバに置き換えることができる。
【００２９】
情報処理装置１は、処理回路２と、通信回路７と、記憶部８とを備えている。処理回路２の例としては、プログラムや各種の命令を実行するプロセッサが挙げられる。ただし、処理回路２は、ＦＰＧＡ、ＡＳＩＣなどその他の種類のハードウェア回路であってもよい。また、処理回路２は、複数の種類のハードウェア回路の組み合わせであってもよい。処理回路２は内部の構成要素として、開発部３と、変換部４と、制御部５と、管理部６とを備えている。
【００３０】
情報処理装置１は、量子関連コンピュータを使って問題の解を求めることを支援する。そのために、情報処理装置１は、ユーザによる問題の変換のためのプログラム（変換プログラム）と解の逆変換のためのプログラム（逆変換プログラム）の開発とを支援する。現実問題に対応する変換プログラムと逆変換プログラムが既に開発されている場合、情報処理装置１が実行する処理の概要は下記のようになる。
【００３１】
まず、ユーザはクライアントマシン２２を使って情報処理装置１に現実問題のデータを入力する。情報処理装置１は現実問題のデータを入力として、開発された変換プログラムを実行する。変換プログラムからは量子関連コンピュータに入力可能な形式のデータが出力され、量子関連コンピュータは当該データに基づく解を求める。そして、量子関連コンピュータが求めた解を入力とし、逆変換プログラムが実行される。逆変換プログラムはユーザが入力した現実問題の解を生成し、ユーザのクライアントマシン２２に返す。
【００３２】
ユーザは、情報処理装置１の管理部６が提供するインタフェース（例えば、ＧＵＩ、ＣＬＩ、ＡＰＩ）を使って量子関連コンピュータを操作することができる。また、情報処理装置１はユーザに外部情報処理システム２３と、情報処理システム１０間でデータ共有、データの送受信などを行うためのインタフェースを提供してもよい。
【００３３】
次に、現実問題に対応する変換プログラムと逆変換プログラムの開発が必要な場合において、情報処理装置１が実行する処理の概要について説明する。
【００３４】
まず、情報処理装置１は、所望の現実問題について、ユーザが複数レベルの問題モデルを段階的に作成することを支援する。そして、情報処理装置１は作成された複数レベルの問題モデルに基づいてユーザが変換プログラムと逆変換プログラムを開発することを支援する。そこで、情報処理装置１の開発部３は、上述の段階的な問題モデルの作成（問題モデリング）と、変換プログラムおよび逆変換プログラムの開発（プログラミング）を支援する。
【００３５】
開発部３は、複数レベルの問題モデルを作成するための複数のモデリングツールと、それらの問題モデルに基づいて変換プログラムと逆変換プログラムを作成するためのプログラミングツールとを含んでいる。開発部３は、過去の開発過程で得られた問題モデル、変換プログラム、逆変換プログラム、それらに付帯する知識およびノウハウに係るデータを記憶部８に保存する。また、開発部３はユーザにライブラリを提供し、後の開発過程で上述のデータを利用できるようにしてもよい。ユーザは管理部６が提供するインタフェースを操作し、上記のモデリングツールとプログラミングツールとライブラリを使うことができる。
【００３６】
すなわち、開発部３は、モデリングツールと、プログラミングツールとを実行することができる。モデリングツールは、ユーザが問題について、少なくとも１つの問題モデルを記述することを可能にする。プログラミングツールは、少なくとも１つの問題モデルを用いて、問題を量子関連コンピュータに入力可能なデータ形式に変換する変換プログラムを、ユーザが設計することを可能にする。また、プログラミングツールは、問題について計算された量子関連コンピュータの解を、当該問題の解に逆変換する逆変換プログラムをユーザが作成することを可能する。
【００３７】
ユーザが開発した、特定の現実問題に対応する変換プログラムと逆変換プログラムは、記憶部８に保存される。記憶部８に保存された変換プログラムおよび逆変換プログラムは、変換部４にデプロイされ、実行可能な状態となる。この状態において、クライアントマシン２２から上述の現実問題と同じタイプの現実問題のデータが入力された場合、変換部４は、現実問題のデータを入力とし、変換プログラムを実行する、変換プログラムは現実問題のデータを少なくともいずれかの量子関連コンピュータが処理可能なデータに変換する。制御部５は、少なくともいずれかの量子関連コンピュータに解の計算を行わせる。例えば、ユーザが入力した現実問題が、既に記憶部８に保存されている変換プログラムと逆変換プログラムを適用可能である場合、ユーザが入力した現実問題と、変換プログラムと逆変換プログラムに対応する現実問題は同じタイプの現実問題であるといえる。すなわち、制御部５は、量子関連コンピュータに入力可能なデータ形式に変換された問題を量子関連コンピュータに入力し、量子関連コンピュータの解を取得する。制御部５によって、記憶部８に保存された量子関連コンピュータの解は変換部４から参照可能となる。
【００３８】
そして変換部４は、その少なくとも一つの量子関連コンピュータから出力される解を入力として、逆変換プログラムを実行し、量子関連コンピュータの解をユーザが入力した現実問題の解に逆変換する。変換部４は逆変換された解をクライアントマシン２２に返してもよい。クライアントマシン２２は、通信回路７を介して変換部４にアクセスし、現実問題の解を情報処理装置１からダウンロードすることができる。なお、開発された変換プログラムおよび逆変換プログラムは、情報処理装置１とは別のシステムに転送され、当該システムにおいて実行されてもよい。
【００３９】
すなわち、変換部４は、ユーザが入力した問題について変換プログラムを実行し、当該問題を量子関連コンピュータにデータ形式に変換する。また、変換部４は、問題について計算された量子関連コンピュータの解を入力として逆変換プログラムを実行し、逆変換プログラムが変換した解を、当該問題の解として出力する。
【００４０】
次に、図２を参照しながら開発部３の構成と機能について説明する。とくに、図２に示された複数レベルのモデリングツール３１〜３２、プログラミングツール３４、および変換プログラム４１と逆変換プログラム４２について述べる。
【００４１】
図２では、上位から下位に向かってレベル１（上位）モデリングツール３１と、レベル２（中位）モデリングツール３２と、レベル３（下位）モデリングツール３３とが示されている。ここで、現実問題８０に最も近いレベルを上位とよび、量子関連コンピュータが実行可能な形式に最も近いレベルを下位とよぶ。また、上位と下位の間にあるレベルを中位とよぶものとする。したがって、図２の例では、レベルに係る番号が大きくなるほど、量子関連コンピュータに入力可能な形式に近くなっている。なお、図２に示された３つのレベルは例示であり、２つのレベル（例えば、図２におけるレベル１とレベル３）のモデリングツールがあってもよいし、３より多い数のレベル（例えば、図２におけるレベル２をさらに細かい段階に分けした複数の中間的なレベルと、レベル１とレベル３）のモデリングツールがあってもよい。
【００４２】
各レベルに係るモデリングツールは、対応するレベルの問題モデルの記述が行えるよう、ユーザを支援する。各レベルに係るモデリングツールは、例えば、そのレベルに該当する可能性がある問題のタイプごとに、問題モデルを記述するためにユーザに使用されうるテンプレートまたはひな形を備える。そして、各レベルに係るモデリングツールはそれらのテンプレートまたはひな形をユーザに提示できる。問題の各タイプのテンプレートまたはひな形には、例えば、問題モデルを構成する複数の項目と、それぞれの項目に記述されるべき事項の説明とその記述例（手本）などが含まれる。テンプレートまたはひな形には、さらに過去に同じタイプの問題について作成された問題モデルの例が付属していてもよい。これにより、ユーザは、自分の問題に適合したタイプのテンプレートまたはひな形、および／または過去に作られた問題モデルを用いて、自分の問題について各レベルの問題モデルを記述することができる。
【００４３】
また、各モデリングツールは、例えば、類似した形式または特性を持つ複数タイプの問題群に対して、共通的に使用されうるものであってよい。各モデリングツールは、モデリング作業の少なくとも一部を自動的に行うプログラムを含んでいてもよい。各レベルにおける問題のタイプは、適用分野に基づいて規定されたものであってもよいし、使われる数学的な手法に基づいて規定されるものであってもよい。すなわち、各レベルにおける問題のタイプの定義方法については特に問わない。
【００４４】
ユーザは、レベル１モデリングツール３１を使ってレベル１（最上位）の問題モデル３１ｃを記述することができる。また、ユーザは、レベル２モデリングツール３２を使ってレベル２（中位）の問題モデル３２ｃを記述することができる。同様に、ユーザは、レベル３モデリングツール３３を使ってレベル３（最下位）の問題モデル３３ｃを記述することができる。レベル１（最上位）の問題モデル３１ｃの一例は、ユーザにとって比較的理解しやすい表現形式（例えば、自然言語、グラフ、数式、またはそれらの組み合わせ）を用いて、現実問題を記述したモデルである。レベル３（最下位）の問題モデル３３ｃの一例は、量子関連コンピュータに入力可能なデータを生成するのに適した表現形式（例えば、イジングモデルつまりハミルトニアンを記述した数式または係数列）を用いて問題を記述したモデルである。したがって、レベル１をソースレベルと呼び、レベル３をオブジェクトレベルと呼んでもよい。レベル２（中位）の問題モデル３２ｃの一例は、レベル１の問題モデリングとレベル３の問題モデリングの間の中間段階で使うと便利な表現形式（例えば、組合せ最適化問題を数学的に表現するための数式、数列、テーブル、グラフ、またはそれらの組み合わせ）を用いて問題を記述したモデルである。
【００４５】
たいていのユーザにとっては、より上位のモデリングを先に行い、その結果を用いてより下位のモデリングを行う手順を採用すると、作業が容易になる。図２の例の場合、ユーザは最初にレベル１問題モデル３１ｃを作成する。次に、ユーザはレベル１問題モデル３１ｃをレベル２問題モデル３２ｃへ変換する。そして、ユーザはレベル２問題モデル３２ｃをレベル３問題モデル３３ｃに変換する。このモデリングの手順に基づく作業を支援するために、モデリングツール３１〜３３の中のより下位のモデリングツールは、より上位のモデリングツールで先に作成された問題モデルをユーザに提示してもよい。
【００４６】
図２に示されたプログラミングツール３４は、ユーザが複数レベルの問題モデル３１ｃ〜３３ｃに基づき、変換プログラム４１と逆変換プログラム４２の開発を行うのを支援する。プログラミングツール３４は、複数レベルの問題モデル３１ｃ〜３３ｃの情報をユーザに提示する機能を備える。また、プログラミングツール３４は、ユーザが変換プログラム４１と逆変換プログラム４２を設計（コーディング）するための設計ツール３５も備える。このため、ユーザは、複数レベルの問題モデル３１ｃ〜３３ｃの情報を参照しながら、設計ツール３５を使って変換プログラム４１と逆変換プログラム４２を開発することができる。
【００４７】
ここでは、ユーザに提供される開発環境の一例について説明する。例えば、プログラミングツール３４は、レベル１の問題モデル３１ｃとレベル２の問題モデル３２ｃの情報をユーザに提示する。このため、ユーザは、設計ツール３５を使って、問題モデル３１ｃと３２ｃを参照しながら、サブ変換プログラム（Ｌ１変換プログラム）３１ａと、サブ逆変換プログラム（Ｌ１逆変換プログラム）３１ｂとを作成することができる。サブ変換プログラム（Ｌ１変換プログラム）３１ａは、現実問題を表すデータをレベル２の問題（例えば、数学的な組合せ最適化問題）を表すデータに変換する。サブ逆変換プログラム（Ｌ１逆変換プログラム）３１ｂは、レベル２の問題の解を表すデータを現実問題の解を表すデータに逆変換する。
【００４８】
また、プログラミングツール３４は、レベル２の問題モデル３２ｃとレベル３の問題モデル３３ｃの情報をユーザに提示する。このため、ユーザは、問題モデル３２ｃと３３ｃを参照しながら、設計ツール３５を使って、サブ変換プログラム（Ｌ２変換プログラム）３２ａと、サブ逆変換プログラム（Ｌ２逆変換プログラム）３２ｂを作成することができる。サブ変換プログラム（Ｌ２変換プログラム）３２ａは、レベル２の問題（例えば、数学的な組合せ最適化問題）を表したデータをレベル３の問題（例えば、イジングモデルつまりハミルトニアン）を表したデータに変換する。サブ逆変換プログラム（Ｌ２逆変換プログラム）３２ｂは、レベル３の問題の解を表したデータをレベル２の問題の解を表したデータに逆変換する。
【００４９】
また、プログラミングツール３４は、レベル３の問題モデル３３ｃと量子関連コンピュータ１１ａ〜１１ｃの入出力可能なデータ形式の情報をユーザに提示する。それにより、ユーザは、問題モデル３３ｃと量子関連コンピュータ１１ａ〜１１ｃに入出力可能なデータ形式とを参照しながら、設計ツール３５を使って、サブ変換プログラム（Ｌ３変換プログラム）３３ａと、サブ逆変換プログラム（Ｌ３逆変換プログラム）３３ｂとを作成することができる。サブ変換プログラム（Ｌ３変換プログラム）３３ａは、レベル３の問題（例えば、イジングモデルのハミルトニアン）を表したデータを量子関連コンピュータ１１ａ〜１１ｃに入力可能なデータに変換する。サブ逆変換プログラム（Ｌ３逆変換プログラム）３３ｂは、量子関連コンピュータ１１ａ〜１１ｃからの解を表したデータをレベル３の問題の解を表したデータに逆変換する。
【００５０】
ユーザによって作成された複数レベルのサブ変換プログラム３１ａ〜３３ａとサブ逆変換プログラム３１ｂ〜３３ｂは、記憶部８に格納される。プログラミングツール３４は、複数レベルのサブ変換プログラム３１ａ〜３３ａを統合し、現実問題のデータを量子関連コンピュータ１１ａ〜１１ｃに入力可能なデータ形式に変換する変換プログラム４１を生成する。また、プログラミングツール３４は、複数レベルのサブ逆変換プログラム３１ｂ〜３３ｂを統合し、量子関連コンピュータ１１ａ〜１１ｃから出力された解のデータを現実問題の解のデータに変換する逆変換プログラム４２を生成する。
【００５１】
入力可能なデータ形式は量子関連コンピュータの種類によって異なる可能性がある。このため、ユーザは、複数種類の量子関連コンピュータ１１ａ〜１１ｃが使われている場合、量子関連コンピュータの種類ごとにＬ３変換プログラム３３ａとＬ３逆変換プログラム３３ｂを用意することができる。
【００５２】
プログラミングツール３４は、量子関連コンピュータの種類ごとに、入力可能なデータ形式に関する情報をユーザに提示してもよい。また、プログラミングツール３４は、量子関連コンピュータの種類ごとに、出力されるデータ形式（解のデータ形式）に関する情報をユーザに提示してもよい。例えば、特定の量子関連コンピュータによる計算実行のために特定のＡＰＩを使う必要がある場合、プログラミングツール３４は当該ＡＰＩの仕様を表示する。これにより、ユーザは入力可能なデータ形式に関する情報を確認しながら、Ｌ３変換プログラム３３ａのコーディングを行うことができる。例えば、ユーザはプログラミングツール３４を使ってより上位のレベルのモデルのデータを入力とし、レベル３問題モデル３３ｃを出力とする関数を作成することができる。同様に、ユーザは出力されるデータ形式に関する情報を確認しながら、Ｌ３逆変換プログラム３３ｂのコーディングを行うことができる。
【００５３】
なお、後述するようにユーザは変換プログラム４１（または、各レベルのサブ変換プログラム３１ａ〜３３ａ）と逆変換プログラム４２（または、各レベルのサブ逆変換プログラム３１ｂ〜３３ｂ）の作成をすべて一から行わなくてもよい。例えば、記憶部８に生成済みの変換プログラム４１（または、各レベルのサブ変換プログラム３１ａ〜３３ａ）や逆変換プログラム４２（または、各レベルのサブ逆変換プログラム３１ｂ〜３３ｂ）が保存されている場合、ユーザは、それら作成済みのプログラムをそのまま流用したり、それらの一部を変更したり、それらを組み合わせたりして、必要なプログラムを生成してもよい。
【００５４】
変換プログラム４１は、現実問題のデータを量子関連コンピュータに入力可能なデータ形式に変換することができればよい。変換プログラム４１は、必ず上述の例のように複数レベルのサブ変換プログラム３１ａ〜３３ａを含んでいなくてもよい。同様に、逆変換プログラム４２も必ず上述の例のように複数レベルのサブ逆変換プログラム３１ｂ〜３３ｂを含んでいなくてもよい。したがって、ユーザは、プログラミングツール３４を使い、中間的なレベルを経由せず、現実問題のデータを量子関連コンピュータに入力可能なデータ形式に直接変換する変換プログラム４１を開発してもよい。また、ユーザは、プログラミングツール３４を使用し、中間的なレベルを経由せず、量子関連コンピュータから出力された解のデータを現実問題の解のデータに直接変換する逆変換プログラム４２を開発してもよい。また、ユーザは、プログラミングツール３４を使って、上述の例より多い数（例えば、４以上）のレベルのサブ変換プログラムを開発し、それらを統合して変換プログラム４１としてもよい。また、上述の例より多い数（例えば、４以上）のレベルのサブ逆変換プログラムを開発し、それらを統合して逆変換プログラム４２としてもよい。
【００５５】
このように、ユーザは、それぞれの現実問題について、任意のレベル数の問題モデルを記述し、任意の数のサブ変換プログラムとサブ逆変換プログラムを生成することができる。そして、サブ変換プログラムとサブ逆変換プログラムのそれぞれを変換プログラム４１と逆変換プログラム４２に統合することができる。例えば、ユーザが現実問題を直接１回で量子関連コンピュータが実行可能なデータ形式に変換できる場合、ユーザは、サブ変換プログラムとサブ逆変換プログラムとを作らず、ただちに変換プログラム４１と逆変換プログラム４２を作成してよい。また、ユーザにとって、現実問題から２段階の変換を行って量子関連コンピュータが実行可能なデータ形式を生成することに利点がある場合、ユーザは、２つのレベルのサブ変換プログラムとサブ逆変換プログラムを生成し、それぞれを変換プログラム４１と逆変換プログラム４２に統合してよい。後述するように、必要な変換の段階数は現実問題の種類、内容、および複雑さなどの事情に応じて、ユーザが決めることができる。
【００５６】
図２では、現実問題から３段階の変換を行うと、量子関連コンピュータが実行可能なデータ形式が生成される場合（モデルケース）が例示されている。以下では、このモデルケースを例として、ユーザによる各レベルの問題モデリングとプログラミングの作業について説明する。ただし、モデルケースのレベル数（３）と、以下の説明される各レベルで行う処理は一例にしかすぎない。上述のように、レベル数はモデルケースより少ない場合もあれば、多い場合もありうる。
【００５７】
ユーザは、レベル１モデリングツール３１を使って、レベル１（上位）の問題モデル３１ｃを記述することができる。例えば、現実問題８０について、一般的に使われる理論式があるのであれば、当該理論式をレベル１（上位）の問題モデル３１ｃとして使ってもよい。現実問題８０を２次計画問題にモデル化したものを、レベル１（上位）の問題モデル３１ｃとしてもよい。
【００５８】
ユーザは、レベル２モデリングツール３２を使って、レベル２（中位）の問題モデル３２ｃを記述することができる。レベル２問題モデル３２ｃとして、例えば、ある種の組合せ最適化問題を数学的に記述したモデルを使うことができる。組合せ最適化問題の例として、最短経路問題、巡回セールスマン問題、およびハミルトン路問題などが挙げられる。もちろん、レベル２問題モデル３２ｃとして、その他の種類の問題モデルを使ってもよい。また、レベル２モデリングツール３２は、一つの組合せ最適化問題を、複数のサブモデルに分割して記述する機能を備えていてもよい。
【００５９】
レベル２問題モデル３２ｃが組合せ最適化問題である場合、レベル２問題モデル３２ｃはノード、エッジを含むグラフのデータ（グラフデータ）を含んでいてもよい。グラフは有向グラフであってもよいし、無向グラフであってもよい。ユーザはグラフデータの定義と、グラフデータへのアクセスのために、グラフライブラリ（量子関連のライブラリ）を使ってもよい。グラフライブラリは、例えば、ノードの一覧、ノードの数、エッジの一覧、エッジの数、エッジが連結するノードに関する情報を出力する関数を含んでいてもよい。また、グラフライブラリは、グラフへのノードの追加、グラフからのノードの削除、ノード間へのエッジの追加、ノード間からのエッジの削除、経路となるエッジの選択、エッジの経路からの除外を行う関数を含んでいてもよい。なお、グラフライブラリは、レベル２（中位）以外のレベルのモデリングツールによって利用されてもよい。
【００６０】
ユーザは、プログラミングツール３４を使って、レベル１（上位）問題モデル３１ｃとレベル２（中位）問題モデル３２ｃに基づき、Ｌ１（レベル１）変換プログラム３１ａのプログラミングを行うことができる。Ｌ１変換プログラム３１ａの処理内容については、特に限定しない。例えば、Ｌ１変換プログラム３１ａは、現実問題８０（レベル１の問題モデル３１ｃ）のデータ（例えば、クライアントマシン２２から入力される入力データ８１）をレベル２の問題モデル３２ｃのデータに変換するものであってよい。例えば、Ｌ１変換プログラム３１ａは、入力データ８１をある目的関数に変換するものであってもよい。例えば、Ｌ１変換プログラム３１ａは、入力データ８１に対して回帰を行い、ある回帰式を生成するものであってもよい。この場合、回帰式が目的関数に相当する。回帰手法の例としては、線形回帰、ロジスティック回帰、正則化項付き回帰が挙げられる。
【００６１】
現実問題８０に制約条件がある場合、ユーザは、レベル１モデリングツール３１を使って、レベル１（上位）問題モデル３１ｃの中にその制約条件を組み込んでもよい。そして、ユーザは、プログラミングツール３４を使って、Ｌ１変換プログラム３１ａ内に、当該制約条件の判定処理を組み込むことができる。
【００６２】
ユーザは、プログラミングツール３４を使い、レベル１（上位）問題モデル３１ｃとレベル２（中位）問題モデル３２ｃに基づき、Ｌ１（レベル１）逆変換プログラム３１ｂをコーディングすることができる。また、ユーザは、Ｌ１（レベル１）変換プログラム３１ａに基づいて、Ｌ１（レベル１）逆変換プログラム３１ｂをプログラミングしてもよい。Ｌ１逆変換プログラム３１ｂの処理内容については、特に限定しない。例えば、Ｌ１逆変換プログラム３１ｂは、レベル２（中位）モデル３２ｃの解を現実問題の解８２（レベル１問題モデル３１ｃの解）に変換するものであってよい。再構築されたＤＮＡ配列、リスクを最小化する金融ポートフォリオは、現実問題の解８２の例である。
【００６３】
Ｌ１逆変換プログラム３１ｂが実行する変換処理の少なくとも一部が、Ｌ１変換プログラム３１ａが実行する変換処理の少なくとも一部の逆の処理となっていてよい。このため、プログラミングツール３４は、Ｌ１変換プログラム３１ａのコーディング中に、当該プログラムの逆の処理を実行するコードを自動的に生成する機能を備えていてもよい。その場合、ユーザは、自動的に生成されたコードを利用することで、Ｌ１逆変換プログラム３１ｂをコーディングする手間を減らすことができる。
【００６４】
後述するように、各ユーザは新規にＬ１変換プログラム３１ａと、Ｌ１逆変換プログラム３１ｂの生成をすべて一から行わなくてもよい。例えば、記憶部８に生成済みの変換プログラムや逆変換プログラムが保存されている場合、ユーザは作成済みの変換プログラムや逆変換プログラムの一部を編集したり、作成済みの変換プログラムや逆変換プログラムを組み合わせたりして、必要なプログラムを作成してもよい。また、ユーザは既存の変換プログラムや逆変換プログラムの一部を流用してもよい。なお、これらの場合にユーザが利用する既存の変換プログラムおよび逆変換プログラムのレベルについては特に問わない。
【００６５】
また、ユーザは、レベル３モデリングツール３３を使って、レベル３（下位）の問題モデル３３ｃを記述することができる。
【００６６】
ユーザは、プログラミングツール３４を使い、レベル２問題モデル３２ｃとレベル３問題モデル３３ｃに基づき、Ｌ２（レベル２）変換プログラム３２ａをコーディングすることができる。Ｌ２変換プログラム３２ａの処理内容については、特に限定しない。例えば、Ｌ２変換プログラム３２ａは、レベル２問題モデル（中位モデル）３２ｃのデータを、レベル３問題モデル３３ｃのデータに変換するものであってよい。
【００６７】
プログラミングツール３４は、ユーザによるＬ２変換プログラム３２ａの開発を支援するライブラリ（支援ライブラリ）を提供してもよい。支援ライブラリの例として、変数を離散化するライブラリが挙げられる。これにより、各ユーザは連続変数の最適化問題を離散変数の組合せ最適化問題に変換するプログラムを作成することができる。また、支援ライブラリは、組合せ最適化問題の規模を抑制する機能を提供してもよい。例えば、支援ライブラリは主成分分析（ＰＣＡ）や、多次元尺度構成法（ＭＤＳ）などの手法を使って次元削減を行う機能を提供してもよい。支援ライブラリに実装される次元削減の手法については特に問わない。
【００６８】
支援ライブラリは、ひとつの組合せ最適化問題を複数の問題に分割する機能を提供してもよい。例えば、一部の変数を固定化し、組合せ最適化問題を分割することができるが、分割の手法については特に問わない。さらに、支援ライブラリは、組合せ最適化問題の制約条件の一部を削除し、問題を緩和する機能を提供してもよい。支援ライブラリは上述のグラフライブラリと共通のライブラリであってもよいし、関数呼び出しなどによって上述のグラフライブラリの機能を利用するライブラリであってもよい。なお、支援ライブラリは、レベル２（中位）以外のレベルのモデリングツールによって利用されてもよい。
【００６９】
ユーザは、プログラミングツール３４を使い、レベル２問題モデル３２ｃとレベル３問題モデル３３ｃに基づき、Ｌ２（レベル２）逆変換プログラム３２ｂをコーディングすることができる。また、ユーザはＬ２（レベル２）変換プログラム３２ａに基づき、Ｌ２（レベル２）逆変換プログラム３２ｂをプログラミングしてもよい。Ｌ２逆変換プログラム３２ｂの処理内容については、特に限定しない。例えば、Ｌ２逆変換プログラム３２ｂは、レベル３問題モデル３３ｃの解のデータをレベル２問題モデル３２ｃの解のデータに変換するものであってよい。
【００７０】
Ｌ２逆変換プログラム３２ｂが実行する変換処理の少なくとも一部は、Ｌ２変換プログラム３２ａが実行する変換処理の少なくとも一部の逆の処理となっていてよい。このため、プログラミングツール３４は、Ｌ２変換プログラム３２ａのコーディング中に、当該プログラムの逆の処理を実行するコードを自動的に生成する機能を備えていてもよい。自動的に生成されたコードを利用することにより、ユーザは、Ｌ２逆変換プログラム３２ｂをコーディングする手間を減らすことができる。
【００７１】
後述するように各ユーザは新規にＬ２変換プログラム３２ａと、Ｌ２逆変換プログラム３２ｂの生成を一から行わなくてもよい。例えば、記憶部８に生成済みの変換プログラムや逆変換プログラムが保存されている場合、ユーザは生成済みの変換プログラムや逆変換プログラムの一部を編集したり、生成済みの変換プログラムや逆変換プログラムを組み合わせたりして、必要なプログラムを生成してもよい。また、ユーザは既存の変換プログラムや逆変換プログラムの一部を流用してもよい。なお、これらの場合にユーザが利用する既存の変換プログラムおよび逆変換プログラムのレベルについては特に問わない。
【００７２】
ユーザは、また、プログラミングツール３４を用いて、レベル３問題モデル３３ｃと量子関連コンピュータに入力可能なデータ形式の情報とに基づいて、Ｌ３（レベル３）変換プログラム３３ａをコーディングすることができる。Ｌ３変換プログラム３３ａの処理内容については、特に限定しない。例えば、Ｌ３変換プログラム３３ａは、レベル３問題モデル（下位モデル）３３ｃのデータを、量子関連コンピュータに入力可能な形式のデータに変換するものであってよい。
【００７３】
ユーザは、プログラミングツール３４を使い、レベル３問題モデル３３ｃと量子関連コンピュータから出力されるデータ形式の情報とに基づき、Ｌ３（レベル３）逆変換プログラム３３ｂをコーディングすることができる。また、ユーザは、Ｌ３（レベル３）変換プログラム３３ａに基づいて、Ｌ３（レベル３）逆変換プログラム３３ｂをコーディングしてもよい。Ｌ３逆変換プログラム３３ｂの処理内容については、特に限定しない。例えば、Ｌ３逆変換プログラム３３ｂは、量子コンピュータから出力された解のデータをレベル３問題モデル３３ｃの解のデータに変換するものであってよい。
【００７４】
Ｌ３逆変換プログラム３３ｂが実行する変換処理の少なくとも一部は、Ｌ３変換プログラム３３ａが実行する変換処理の少なくとも一部の逆の処理となっていてよい。このため、プログラミングツール３４は、Ｌ３変換プログラム３３ａのコーディング中に、当該プログラムの逆の処理を実行するコードを自動的に生成する機能を備えていてもよい。自動生成されたコードを利用することにより、ユーザは、Ｌ３逆変換プログラム３３ｂをコーディングする手間を減らすことができる。
【００７５】
レベル１モデリングツール３１、レベル２モデリングツール３２、レベル３モデリングツール３３は、作成された問題モデルを記憶部８に保存する。プログラミングツール３４は、作成された変換プログラムおよび逆変換プログラムを記憶部８に保存する。変換プログラムおよび逆変換プログラムの形式については特に限定はない。例えば、プログラミングツール３４がコンパイラの機能を備えている場合、プログラミングツール３４は、プロセッサが実行可能なバイナリ形式のプログラムを生成してもよい。あるいは、プログラミングツール３４はバイナリとなる前の中間形式のファイルを生成してもよい。プログラミングツール３４はスクリプト言語のソースコードを生成してもよい。それぞれのレベルにおける変換および逆変換プログラムの形式は同一であってもよいし、異なっていてもよい。プログラミングツール３４で使われるプログラミング言語については特に問わない。
【００７６】
各レベルに係る変換プログラムを組み合わせることによって、現実問題８０のデータ（入力データ８１）を量子関連コンピュータに入力可能な形式のデータに変換するプログラム（変換プログラム４１）を生成することができる。同様に、各レベルに係る逆変換プログラムを組み合わせることによって、量子関連コンピュータから出力される解を現実問題の解８２に変換するプログラム（逆変換プログラム４２）を生成することができる。
【００７７】
なお、図２の例では、２つのレベルの問題モデルに基づき、変換プログラム（逆変換プログラム）を作成する場合について説明した。例えば、変換プログラムの場合、より上位の問題モデルは変換プログラムの入力データに対応し、より下位の問題モデルは変換プログラムの出力データに対応する。ただし、必ず上述の対応関係が満たされていなくてもよい。例えば、変換プログラム（逆変換プログラム）が３つ以上のレベルの問題モデルに跨る変換処理を含んでいてもよい。例えば、ユーザはレベル１（上位）モデル３１ｃに相当するデータを入力とし、レベル３（下位）モデル３３ｃに相当する変換プログラムを作成してもよい。
【００７８】
ここまでは、現実問題から３回の変換を行うと、量子関連コンピュータに入力可能なデータ形式がえられると仮定し、図２のモデルケースを説明した。次に、各分野への適用時において行われる問題の変換の例について述べる。
【００７９】
図３は、金融ポートフォリオの最適化のために、本実施形態に係るシステムを適用した場合における、問題のレベル構造の一例を示す。
【００８０】
例えば、ユーザが所定の制約条件を満たしたパッシブファンドの最適なポートフォリオを決めたいと考えているものとする。制約条件の例としては、保有すべき銘柄数の下限、保有できる銘柄数の上限、各銘柄の保有可能な株式数の上限、各銘柄の保有すべき株式数の下限などが挙げられる。また、複数の銘柄をグループ分けし、複数のグループから所定の比率でポートフォリオの銘柄を選択する制約条件が設定されてもよい。ここで、グループ分けの方法については特に問わない。また、ユーザはポートフォリオを東証株価指数（ＴＯＰＩＸ）に連動させ、投資のリスクを最小化させることを希望している。
【００８１】
上述の目的を達成するため、ユーザはＴＯＰＩＸをベンチマークとし、ファンドのトラッキングエラーが最小化されるよう、ファンドに組み入れられる銘柄と銘柄ごとの株式数を決めたい（問題６０）。問題６０は、図２における現実問題８０に相当する。この場合、トラッキングエラーの計算式を目的関数ｆ１（ｘｉ）として、トラッキングエラーを最小化する銘柄iと、銘柄ごとの株式数ｘｉとを決める必要がある。この問題６０は、はじめから組合せ最適化問題としてモデリングできる。このように、現実問題８０がはじめから組合せ最適化問題（例えば、レベル２問題モデル）としてモデリング可能な場合、現実問題８０を組合せ最適化問題に変換するプログラム（例えば、Ｌ１変換プログラム３１ａ）は不要となる。同様に、対応する逆変換を行うプログラム（Ｌ１逆変換プログラム３１ｂ）も不要となる。
【００８２】
なお、問題６０において、複数株式に係る過去Ｎ年間の株価データを入力データ８１とし、トラッキングエラーを計算することができる。図４のグラフ５２は、複数株式に係る過去Ｎ年間の株価データの例を示している。
【００８３】
ユーザは、量子関連コンピュータを用いて上述の問題６０を解くために、問題６０を量子関連コンピュータに入力可能なデータ形式に変換しなくてはならない。例えば、量子関連コンピュータがイジングマシンである場合、ユーザは問題６０（例えば、レベル２問題モデル３２ｃ）の入力データ（図２における参照番号８１）を、二値変数をパラメータとするイジングモデルを表す式（１）（例えば、レベル３問題モデル３３ｃ）に変換するプログラムを開発してよい。この変換プログラムは、図２のＬ２変換プログラム３２ａに相当する。このＬ２変換プログラム３２ａを開発するために、ユーザは、レベル３モデリングツール３３を使って問題６０に対応したイジングモデルの式（１）（レベル３問題モデル３３ｃ）を記述する。そして、ユーザはプログラミングツール３４を使い、組み合せ最適化問題（レベル２問題モデル３２ｃ）とイジングモデルの式（１）（レベル３問題モデル３３ｃ）を参照しながら、Ｌ２変換プログラム３２ａの開発を行うことができる。Ｌ２変換プログラム３２ａによって、式（１）における相互作用係数Ｊｉｊおよび局所磁場ｈｉが求められる。相互作用係数Ｊｉｊおよび局所磁場ｈｉは図２のレベル３問題モデル３３ｃに相当する。さらに、ユーザは、そのレベル３問題モデル３３ｃを量子関連コンピュータに入力可能な形式のデータに変換するプログラムを開発してよい。この変換プログラムは、図２のＬ３変換プログラム３３ａに相当する。
【００８４】
ユーザは、問題６０のモデル化において制約条件を反映させることができる。例えば、目的関数ｆ１（ｘｉ）であるトラッキングエラーの計算式に補正項を加えることによって制約条件を反映させてもよい。また、相互作用係数Ｊｉｊおよび局所磁場ｈｉの計算時に、制約条件に合わせた補正が行われるようにしてもよい。
【００８５】
さらに、ユーザは、イジングマシンから出力される所定形式のデータをイジングモデルの式（１）（例えば、レベル３問題モデル３３ｃ）の基底状態を表す解（ｓ１、ｓ２、・・・、ｓｍ）に逆変換するプログラムを開発してよい。この逆変換プログラムは、図２に示されたＬ３逆変換プログラム３３ｂに相当する。さらに、ユーザは、上記解（ｓ１、ｓ２、・・・、ｓｍ）を組合せ最適化問題の解に逆変換するプログラムを開発してよい。この逆変換プログラムは、図２に示されたＬ２逆変換プログラム３２ｂに相当する。ここで、問題６０の解とは、例えば、トラッキングエラーの最小化が期待できるポートフォリオ構成を示したベクトルｘｉ＝｛ｘ１，ｘ２,ｘ３,．．．,ｘｎ｝である。ここで、添え字ｉはポートフォリオに組み入れられる銘柄を示し、ベクトルｘｉの値は各銘柄の数量を示している。銘柄の数量は、株式数であってもよいし、合計が１となる比率で示されていてもよい。また、その他の単位で示されていてもよい。ベクトルｘｉは図２に示された現実問題の解８２に相当する。
【００８６】
以上のようにして、金融ポートフォリオの最適化問題のためのＬ２変換プログラムグラム３２ａ、Ｌ３変換プログラム３３ａ、Ｌ２逆変換プログラム３２ｂおよびＬ３逆変換往路グラム３３ｂが開発されると、これらのプログラムによって、金融ポートフォリオの最適化問題の入力データ８１をイジングマシンの入力データに自動的に変換することができる。また、これらのプログラムによって、イジングマシンの出力データを現実問題の解８２に自動的に変換することができるようになる。
【００８７】
図３の問題６０は、金融ポートフォリオの最適化問題の一例にしかすぎない。例えば、図４の中段に示したように、リターンを最大化させるポートフォリオを求めたい場合もありうる。ポートフォリオのリターンを最大化させたい場合、リターンを目的関数ｆ２（ｘｉ）とすることができる。この問題を解きたい場合にも、図４に示されるように、ユーザは、図３の問題６０の場合と同様の手順で、問題モデリングと、変換プログラムと逆変換プイログラムの開発を行うことができる。
【００８８】
図３の問題６０の説明では、使用される量子関連コンピュータはイジングマシンであると想定していた。図５は、使用される量子関連コンピュータがイジングマシンである場合に、使われる下位モデル（レベル３問題モデル３３ｃ）の例を示している。図５の下位モデルはイジングモデルである。テーブル２７は、局所磁場ｈｉの例を示している。また、テーブル２８は、相互作用係数Ｊｉｊの例を示している。
【００８９】
図６は、ゲノム解析の分野（ＤＮＡ鎖の塩基配列の決定）で、本実施形態に係るシステムを適用した場合における、問題のレベル構造の一例を示している。
【００９０】
図６の例では、ＤＮＡ鎖を構成するＤＮＡ断片の配列を決定することが現実問題８０に相当する。ユーザは、ラボなどで対象のＤＮＡ鎖を多数のＤＮＡ断片に切断する。ＤＮＡ鎖の切断は、例えば制限酵素を使うことによって行うことができる。そして、ユーザは、各ＤＮＡ断片を抽出し、各ＤＮＡ断片の塩基配列を特定する。抽出されたＤＮＡ断片の塩基配列のデータは入力データ８１に相当する。
【００９１】
ユーザは、例えば、自然言語を使って現実問題８０の記述を行うことができる。記述された現実問題８０はレベル１問題モデル３１ｃに相当する。このとき、ユーザは、レベル１モデリングツール３１を利用することができる。レベル１モデリングツール３１は、例えば、ＤＮＡ鎖の塩基配列を決定するために、必要な項目と、各項目に入力すべき内容を示したテンプレート、ひな形、または過去の問題記述例などを示す。このため、ユーザは現実問題８０の記述を正確かつ漏れなく行うことができる。
【００９２】
各ＤＮＡ断片がグラフのノードであると仮定すると、各ＤＮＡ断片間の接続関係を推定する問題は、ハミルトン閉路問題として記述することができる。ユーザはレベル２モデリングツール３２を使い、問題モデルとして複数のＤＮＡ断片に係る塩基配列データに基づくハミルトン閉路問題を記述することができる。ここで、ハミルトン閉路問題は、レベル２問題モデル３２ｃに相当する。ただし、ユーザは、レベル１問題モデル３１ｃの記述を省略することが可能なのであれば、レベル１問題モデル３１ｃの記述を行わず、直接ハミルトン閉路問題（レベル２問題モデル３２ｃ）の記述を行ってもいい。
【００９３】
ユーザは、問題モデルを記述したら、プログラミングツール３４を用いて、現実問題８０の入力データ８１（複数のＤＮＡ断片の塩基配列のデータ）を、レベル２のハミルトン閉路問題に変換するプログラム（変換プログラム）を開発することができる。この変換プログラムは、Ｌ１変換プログラム３１ａに相当する。
【００９４】
図７は、ハミルトン閉路問題の例を示している。図７の上側には有向グラフ２５が示されている。また、図７の下側には、有向グラフ２５を数値表現化したテーブル２６が示されている。他のノードに向かうエッジが連結されているノードは、テーブル２６の値が＋１となっているフィールドを参照することによって確認することができる。例えば、有向グラフ２５では、ノードｎ１からはノードｎ２に向かうエッジと、ノードｎ４に向かうエッジとが存在している。テーブル２６の“ｎ１”に係る行を確認すると、列“ｎ２”および列“ｎ４”のフィールドの値が＋１となっている。
【００９５】
同様に、自ノードに向かっているエッジが連結されているノードは、テーブル２６の値が−１となっているフィールドを参照することによって確認することができる。例えば、有向グラフ２５には、ノードｎ２からノードｎ３に向かうエッジと、ノードｎ４からノードｎ３に向かうエッジがある。テーブル２６の“ｎ３”に係る行を確認すると、列“ｎ２”および列“ｎ４”のフィールドの値が−１となっている。図７では、有向グラフが示されているが、これは一例にしかすぎない。例えば、図６のハミルトン閉路問題では、有向グラフの代わりに無向グラフを使ってもよい。
【００９６】
以下では、再び図６の説明に戻る。ユーザは、量子関連コンピュータを用いてハミルトン閉路問題を解くために、ハミルトン閉路問題を量子関連コンピュータに入力可能なデータ形式に変換しなくてはならない。例えば、量子関連コンピュータがイジングマシンである場合、ユーザはハミルトン閉路問題を、二値変数をパラメータとするイジングモデルに変換する必要がある。そこで、ユーザは、レベル３モデリングツール３３を使い、ハミルトン閉路問題に対応するイジングモデルの式（１）を記述する。ここで、イジングモデルの式（１）は、レベル３問題モデル３３ｃに相当する。そして、ユーザは、プログラミングツール３４を使い、ハミルトン閉路問題（レベル２問題モデル３２ｃ）とイジングモデルの式（１）（レベル３問題モデル３３ｃ）とを参照して、ハミルトン閉路問題を式（１）に変換するプログラムを開発することができる。この変換プログラムは、図２のＬ２変換プログラム３２ａに相当する。
【００９７】
Ｌ２変換プログラム３２ａによって、任意のハミルトン閉路問題に対応したイジングモデルの式（１）における相互作用係数Ｊｉｊおよび局所磁場ｈｉを自動的に計算することができるようになる。ここで、相互作用係数Ｊｉｊおよび局所磁場ｈｉは図２のレベル３問題モデル３３ｃに相当する。ユーザは、さらにレベル３問題モデル３３ｃに対応するデータを量子関連コンピュータ（例えばイジングマシン）に入力可能なデータ形式に変換するためのＬ３変換プログラム３３ａを開発することができる。ユーザは、Ｌ３変換プログラム３３ａの開発を、上述の図３の説明と同様の方法で行うことができる。
【００９８】
ユーザは、プログラミングツール３４を使い、Ｌ１〜Ｌ３逆変換プログラム３１ｂ〜３３ｂを開発することもできる。逆変換プログラムの開発も、上述の図３の説明と同様の方法で行うことができる。Ｌ３逆変換ププログラム３３ｂが、量子関連コンピュータ（例えばイジングマシン）から出力された解のデータをイジングモデルの式（１）の解（ｓ１、ｓ２、・・・、ｓｍ）に変換する。Ｌ２逆変換プログラム３２ｂは、イジングモデルの解（ｓ１、ｓ２、・・・、ｓｍ）をハミルトン閉路問題の解に変換する。そして、Ｌ１逆変換プログラム３１ｂは、ハミルトン閉路問題の解を、現実問題８０の解である、複数のＤＮＡ断片間の接続関係に変換する。これにより、ユーザはＤＮＡ鎖の塩基配列を決定することができる。
【００９９】
上述のように、現実問題８０に対応するＬ１〜Ｌ３変換プログラム３１ａ〜３３ａとＬ１〜Ｌ３逆変換プログラム３１ｂ〜３３ｂが開発されると、ユーザが量子関連コンピュータの利用時に必要な変換処理が自動的に行われるようになる。ここで、変換処理は、現実問題８０の入力データ８１を量子関連コンピュータに入力可能なデータ形式に変換する処理と、量子関連コンピュータから出力された解を現実問題の解８２に変換する処理とを含む。
【０１００】
図６の例に示したように、３段階または２段階の変換処理を行い、現実問題８０を量子関連コンピュータに入力可能なデータ形式に変換してもよい。
【０１０１】
図８は、問題モデルの一般的な構造例を示す。各問題モデル（例えば、図２の問題モデル３１ｃ〜３３ｃ）は図８と同様の構造を備えていてもよい。
【０１０２】
図８の問題モデル９０は、表現９１と、機能９２と、変数９３と、結果９４と、条件９５のそれぞれの記述を含んでいる。表現９１は、問題モデル９０が適用される１または複数の対象を特定する。機能９２は、表現９１によって特定された対象が提供する機能、作用または動作を示す。変数９３は、機能９２に入力される可能性のある１または複数の変数（例えば、情報、物質、エネルギー、または値など）である。結果９４とは、変数９３の入力により、機能９２によって行われる１または複数の結果、または機能９２から出力される１または複数の結果を示す。ここで、結果は例えば、情報、物質、エネルギー、または値などを含む。条件９５は、結果９４の適用可否を判定するために結果９４へ適用される条件を示す。問題モデル９０において、条件９５を満たす結果９４が得られたときの変数９３が、問題の解９６となりうる。
【０１０３】
図８では、問題モデルの構造の説明の都合上、表現９１、機能９２、変数９３、結果９４、および条件９５がそれぞれ別のブロックで示されている。ただし、実際の問題モデルでは、例えば、機能９２の記述の中に、表現９１と変数９３と結果９４の記述が含まれている場合がある。また、実際の問題モデルでは、条件は暗黙のうちに決まっており、明示されてない場合もある。このように、実際の問題モデルは図８の構造との相違点を有することがある。本実施形態に係る問題モデルは、このような図８の構造との相違点を有するモデルをも包含する。
【０１０４】
例えば、イジングモデル（図２のレベル３問題モデル３３ｃ）の式（１）では、２次元の格子点上に配置されたスピンが適用対象である。式（１）の左辺のハミルトニアンＨは結果９４の記述に相当し、右辺の多項式が機能９２の記述に相当するといえる。そして、右辺における係数行列Ｊｉｊとベクトルｈｉが、表現９１の記述に相当し、スピン（二値変数）ｓｉ、ｓｊが変数９３の記述に相当するといえる。そして、式（１）に明示されていないものの、結果９４（ハミルトニアンＨ）が最小値になることがイジングモデルの最適条件である。この最適条件は、条件９５に相当している。このため、ハミルトニアンＨが最小値になった時の変数９３（スピンｓｉ、ｓｊ）の値が、イジングモデルの解９６に相当する。このように、レベル３問題モデル３３ｃは、表現９１、機能９２、変数９３、結果９４、および条件９５のすべての記述が含まれていてもよい。
【０１０５】
図６のように、ＤＮＡ鎖の塩基配列を決定することが現実問題８０である場合、レベル１問題モデル３１ｃは、例えば、自然言語で現実問題８０を記述してもよい。この場合、レベル１問題モデル３１ｃが適用される対象は、複数のＤＮＡ断片のすべてを接続することによって形成される１本のＤＮＡ鎖である。レベル１問題モデル３１ｃには、現実問題８０の入力データ８１である、複数のＤＮＡ断片の塩基配列の記述が含まれる。複数のＤＮＡ断片の塩基配列の記述は表現９１に相当するといえる。また、レベル１問題モデル３１ｃに“すべてのＤＮＡ断片が他のいずれかのＤＮＡ断片と接続される”というＤＮＡ鎖の構造の記述が含まれている場合、当該記述は機能９２に相当するといえる。また、レベル１問題モデル３１ｃには、相互に接続される可能性のある２つのＤＮＡ断片の相互関係、例えば、“一つの断片の一端の塩基配列と他の一つの断片の一端の塩基配列とが同じならば、その２つの断片は同じ塩基配列を有する端部にて相互に接続されうる”という記述が含まれていてもよい。当該記述は、“ＤＮＡ断片間のありうる接続の組み合わせ”を（間接的ではあるが）定義したものであるため、変数９３の記述に相当しているといえる。また、“ＤＮＡ断片間のありうる接続の組み合わせ”（変数９３の記述）が、“すべてのＤＮＡ断片が他のいずれかのＤＮＡ断片と接続される”（機能９２の記述）ことによって、１本以上のＤＮＡ断片の連鎖が生成される。これは、結果９４に相当する。結果９４の記述は、機能９２の記述に包含されているといえる。また、レベル１問題モデル３１ｃには、“すべてのＤＮＡ断片が接続された結果は１本の鎖でなければならない”という条件の記述が含まれていてもよい。当該記述は条件９５に相当するといえる。このように、レベル１問題モデル３１ｃには、表現９１、機能９２、変数９３、結果９４、および条件９５のすべての記述が含まれていてもよい。
【０１０６】
図７のＤＮＡ鎖の塩基配列を決定で使われるハミルトン閉路問題（レベル２問題モデル３２ｃ）の記述には、表現９１、機能９２、変数９３、結果９４、および条件９５のすべての記述が含まれていてもよい。また、一部の記述は黙示的な事項として、明示されていないものであってもよい。図７のテーブル２６では、ノードｎ１、ｎ２、・・・が表現９１に相当しているといえる。また、テーブル２６中の値（−１／０／＋１）は、あるノードとその他のノードとの接続関係を示しており、問題モデル９０の変数９３に相当する。
【０１０７】
テーブル２６のいずれかの行を参照し、値が＋１となっているいずれかの列を選択する。テーブル２６の行はノードｎ１〜ｎ６のいずれかに対応しているため、これはあるノードから別のノードに向かうエッジを特定する処理に相当する。例えば、ノードｎ１の行を参照し、値が＋１である、ノードｎ２（エッジｅ１）またはノードｎ４（エッジｅ３）を選択することができる。次に、特定された列に対応するノードの行を参照する。例えば、ノードｎ２を選択した場合、ノードｎ２に対応する行を参照し、値が＋１となっているいずれかの列を選択する。そして、選択された列に対応するノードの行を参照する。上述の処理を、テーブル２６のすべての行について実行すれば、有向グラフ２５のすべてのノードを通る経路を求めることができる。これは、問題モデル９０の機能９２に相当する。
【０１０８】
また、上述の処理によって選択された、値が＋１であるフィールドの集合は、有向グラフ２５のすべてのノードを通る経路に対応する。したがって、上述の処理によって選択された、値が＋１であるフィールドの集合は、問題モデル９０の結果９４に相当するといえる。また、結果９４において、ひとつの経路が求められることは、問題モデル９０の条件９５に相当する。このように、レベル２問題モデル３２ｃは、表現９１、機能９２、変数９３、結果９４、および条件９５のすべての記述を含んでいてもよい。
【０１０９】
上述のように、どのレベルの問題モデルも、図８に示した問題モデル９０の要素（表現９１、機能９２、変数９３、結果９４、および条件９５）を含む構造によって記述することができる。図２に示した各レベルのモデリングツール３１〜３３は、ユーザが各レベルの問題モデルを図８の問題モデルの要素を使って記述できるよう、ユーザを支援する。例えば、各レベルのモデリングツール３１〜３３がユーザに提示する問題モデルのテンプレートまたはひな形中に、表現９１、機能９２、変数９３、結果９４、および条件９５を特定するのに必要な項目と各項目に入力すべき内容の説明とが含まれていてもよい。ユーザがそのテンプレートまたはひな形に基づいて問題モデルを記述すれば、表現９１、機能９２、変数９３、結果９４、および条件９５の各要素を含む問題モデルを作成することができる。
【０１１０】
以下では、再び図１を参照しながら、システムの各要素を説明する。
【０１１１】
制御部５は、量子関連コンピュータ１１ａ〜１１ｃを制御する。例えば、制御部５は、量子関連コンピュータ１１ａ〜１１ｃに計算処理の開始を求める指令、計算処理の停止を求める指令を送信することができる。また、制御部５は、量子関連コンピュータ１１ａ〜１１ｃとのデータの送受信を行う。例えば、制御部５は変換部４によって量子関連コンピュータへ入力可能な形式に変換された、問題のデータを送信してもよい。また、制御部５は量子関連コンピュータから計算された解のデータを取得してもよい。ダウンロードされた解のデータは記憶部８に保存されてもよいし、変換部４に転送されてもよい。制御部５から送信された指令またはデータは、通信回路７およびネットワーク２０を介して量子関連コンピュータ１１ａ〜１１ｃに送信される。同様に、制御部５は、通信回路７およびネットワーク２０を介して量子関連コンピュータからデータを取得することができる。
【０１１２】
ユーザは管理部６が提供するインタフェースを操作し、計算に使用する量子関連コンピュータを指定してもよいし、量子関連コンピュータの使用条件を指定してもよい。制御スクリプト５１を使うことにより、計算に使用する量子関連コンピュータの指定や、量子関連コンピュータの使用条件の指定を行うことができる。例えば、ユーザが量子関連コンピュータの使用条件の指定をしたら、制御部５は、図２の制御スクリプト生成ツール５０を使って、制御スクリプト５１の生成または更新を行ってもよい。ユーザが計算に使用する量子関連コンピュータの指定を行った場合、制御部５は、制御スクリプト生成ツール５０を使って、制御スクリプト５１を更新してもよい。
【０１１３】
なお、ユーザが直接、制御スクリプト生成ツール５０を操作し、制御スクリプト５１の作成または更新を行ってもよい。例えば、制御スクリプト生成ツール５０は、制御スクリプト５１に記述すべき内容を含むテンプレートをユーザに提示し、ユーザが制御スクリプトを記述することを支援してもよい。また、制御スクリプト生成ツール５０は、ユーザが入力したパラメータ、ユーザが選択したオプションの少なくともいずれかに基づいて自動的にスクリプトを生成する機能を提供してもよい。これにより、ユーザの負担を軽減することができる。
【０１１４】
上述のように、ユーザは問題（例えば、組合せ最適化問題）を複数の問題に分割することがある。この場合、ユーザは制御部５を使って分割後の組合せ最適化問題の求解を行う量子関連コンピュータを選択することができる。また、ユーザが問題分割の有無に関わらず、複数の量子関連コンピュータを使って並列的に問題の解を求める場合、ユーザは制御部５を使って使用する量子関連コンピュータを選択してもよい。複数の量子関連コンピュータが計算を行う場合、ユーザは制御部５を使って量子関連コンピュータが求解を行う順序を指定してもよい。また、情報処理システム１０に量子関連コンピュータが追加された場合、ユーザは制御部５を介して当該量子関連コンピュータを使用可能なマシンとして登録することができる。
【０１１５】
また、ユーザは制御部５を使って消費電力の上限、使用するメモリ領域の上限、計算時間の上限などを指定してもよい。また、量子関連コンピュータの種類によっては、初期解、計算が完了したと判定する条件、時間発展のスケジュールの指定を行ってもよい。
【０１１６】
管理部６は、各ユーザに対して情報処理システム１０を操作するインタフェースを提供する。インタフェースはＷｅｂサーバによって提供されるＷｅｂブラウザインタフェースであってもよい。また、インタフェースはＡＰＩやＣＬＩであってもよく、実装については特に問わない。各ユーザのクライアントマシン２２で使われるクライアントアプリケーションの種類については特に問わない。例えば、各ユーザはＷｅｂブラウザ上でコーディングを行ってもよいし、統合開発環境（ＩＤＥ）を提供するアプリケーション上でコーディングを行ってもよい。この場合、ユーザは管理部６の提供するインタフェースを介して開発部３を操作する。ユーザは管理部６の提供するインタフェースを介して制御スクリプト生成ツール５０を含む制御部５を操作してもよい。また、ユーザは、管理部６のインタフェースを介し、変換部４を操作してもよい。
【０１１７】
通信回路７は、ネットワーク２０およびネットワーク２１と接続されている。通信回路７の例として、イーサネットによる通信を行うＮＩＣが挙げられる。ネットワーク２０およびネットワーク２１の例として、ＴＣＰ／ＩＰネットワークが挙げられる。通信回路７はネットワーク２０を介して量子関連コンピュータ１１ａ〜１１ｃと接続されている。また、通信回路７はネットワーク２１を介してクライアントマシン２２および外部情報処理システム２３と接続されている。図１のネットワーク構成は一例であり、これとは異なる構成を用いてもよい。また、ネットワークで使われる通信規格および通信媒体の種類については特に限定しない。
【０１１８】
記憶部８は、各レベルに係る問題モデルのデータ、変換プログラム４１（各レベルに係るサブ変換プログラム）のデータ、逆変換プログラム４２（各レベルに係るサブ逆変換プログラム）のデータ、制御スクリプト５１のデータ、処理用の中間データ、情報処理装置１で動作するプログラム（例えば、プログラミングツール３４、各レベルのモデリングツール、制御スクリプト生成ツール５０）のデータなど、各種のデータを保存可能な記憶領域を提供する。記憶部８は、例えばＳＲＡＭ、ＤＲＡＭなどの揮発性メモリであってもよいし、ＮＡＮＤ、ＭＲＡＭ、ＦＲＡＭなどの不揮発性メモリでもよい。またハードディスク、ＳＳＤなどのストレージ装置や、外部の記憶装置であってもよい。すなわち、記憶部８の種類については特に限定しない。また、記憶部８は複数の種類のメモリやストレージの組み合わせであってもよい。
【０１１９】
クライアントマシン２２は、ユーザが使用する情報通信端末である。情報通信端末の例としては、パソコン、スマートフォン、タブレット、デジタルテレビなどが挙げられる。ただし、装置の種類については特に問わない。図１には、１台のクライアントマシン２２しか示されていないが、クライアントマシン２２の台数はこれより多くてもよい。
【０１２０】
情報処理システム１０を利用する複数のユーザは、各レベルに係る問題モデル、サブ変換プログラム、およびサブ逆変換プログラムの作成作業を分担して行うことができる。すなわち、一ユーザがすべてのレベルに係る問題モデル、サブ変換プログラム、およびサブ逆変換プログラムを作成しなくてもよい。
【０１２１】
例えば、各ユーザは、自らが専門的な知識と経験を有するレベルの問題モデルの作成を担当し、その他のレベルの問題モデルは別のユーザが作成を担当してもよい。例えば、金融ポートフォリオおよびそれに関連する専門知識を有するユーザや、ポートフォリオ設計の実務経験を有するユーザは、金融ポートフォリオの現実問題８０を記述する問題モデル（例えば、レベル１（上位）モデル３１ｃ）の作成に集中してもよい。金融、物流、交通、ライフサイエンスなど、現実問題８０の関係する分野によって、異なるユーザが現実問題８０を記述する問題モデルの作成を行ってもよい。
【０１２２】
また、応用数学の専門知識または実務経験を有するユーザは、組合せ最適化問題を記述する問題モデル（例えば、レベル２（中位）モデル３２ｃ）の作成に集中してもよい。量子関連コンピュータの専門知識を有するユーザは、量子関連コンピュータに入力可能なデータ形式を記述する問題モデル（例えば、レベル３（中位）モデル３３ｃ）の作成に集中してもよい。量子関連コンピュータの種類ごとに異なるユーザが、量子関連コンピュータに入力可能なデータ形式を記述する問題モデルを担当してもよい。これにより、量子関連コンピュータの特性を考慮した問題モデルを用意することができる。なお、一ユーザが複数レベルの問題モデルの作成を行ってもよい。例えば、一ユーザが複数の専門分野における知識と経験を有する場合や、一ユーザが複数名のチームである場合では、一ユーザが複数レベルの問題モデルの作成を行うことが効率的なこともある。
【０１２３】
専門的な知識と経験に基づいて、問題モデルの作成を行うユーザを決めることによって、問題解決に必要な情報を失わないよう、適切に問題の変形や単純化を行うことができる。また、現実問題８０の的確な定義と記述を行うことが可能となる。各ユーザが担当する作業は管理者などによって割り当てられてもよいし、各ユーザが自主的に参加する形で作成する問題モデルが決められてもよい。また、管理者などが特定の専門的な知識と経験を有するユーザに問題モデルの作成を依頼してもよい。
【０１２４】
ユーザがあるレベルの問題モデルを行った場合、ユーザは当該レベルに対応するサブ変換プログラムおよびサブ逆変換プログラムの作成を行ってもよい。これにより、ユーザは自らの専門的な知識と、問題モデルの理解とに基づき、コーディングを行うことができる。また、あるレベルの問題モデルを行ったユーザは、別のユーザに当該レベルに対応するサブ変換プログラムおよびサブ逆変換プログラムの作成を行わせてもよい。例えば、特定のプログラミング言語によるコーディングの経験が豊富なユーザがいるのであれば、当該ユーザはコーディング作業に特化してもよい。
【０１２５】
上述の支援ライブラリ、グラフライブラリなどのライブラリの設計、コーディング、テストを行うユーザがいてもよい。また、ユーザが問題モデルを記述するテンプレートまたはひな形を用意し、情報処理装置１にアップロードしてもよい。
【０１２６】
ユーザは、各レベルに係る問題モデル、サブ変換プログラム、およびサブ逆変換プログラムなどの成果物を、情報処理システム１０を利用する他のユーザに共有することができる。これにより、問題モデル、変換プログラム４１、逆変換プログラム４２の作成に要する工数を削減することが可能となる。また、ユーザは作成したライブラリ、テンプレート、ひな形を他ユーザに共有してもよい。これにより、当該ユーザが有する専門的な知識と経験を他のユーザに共有し、他ユーザの作業負担を軽減することができる。
【０１２７】
また、本実施形態に係る情報処理システムを用いることにより、計算に使われる量子関連コンピュータの種類が変わった場合にも、変換プログラム、逆変換プログラム、および各レベルの問題モデルを一から作成し直す必要がなくなる。例えば、以前使われていた量子関連コンピュータとは異なる種類の量子関連コンピュータが実用化された場合、計算に使われる量子関連コンピュータの種類が変わる可能性がある。そのような場合には、異なる種類の量子関連コンピュータに対応した、問題モデルと、下位のサブ変換プログラムと、下位のサブ逆変換プログラムとを作成すればよい。
【０１２８】
一方、ユーザは計算に使われる量子関連コンピュータの種類が変わっても、その他のレベルに係るサブ変換プログラムおよびサブ逆変換プログラムはそのまま使い続けることができる。変換プログラム４１および逆変換プログラム４２は、複数レベルに分けられており、レベルごとの組み換えが可能となっている。このため、計算に使われる量子関連コンピュータの種類が変わったとしても、開発したソフトウェアの互換性を確保でき、既存のソフトウェア資産を継承することができる。
【０１２９】
外部情報処理システム２３は、情報処理システム１０とデータの送受信を行う。例えば、外部情報処理システム２３は、情報処理システム１０に入力データ８１を含む現実問題８０のデータを送信する。また、外部情報処理システム２３は、情報処理システム１０から現実問題の解８２をダウンロードしてもよい。外部情報処理システム２３は、ダウンロードした現実問題の解８２に基づき、別の処理を実行することができる。外部情報処理システム２３が実行する処理の内容については特に問わない。なお、図１にはひとつの外部情報処理システム２３のみが示されているが、外部情報処理システム２３の数はこれより多くてもよい。
【０１３０】
図９は、量子関連コンピュータの構成例を示したブロック図である。図９の量子関連コンピュータ１１ａは、制御回路１２と、通信回路１３と、演算回路１４と、記憶部１５とを備えている。制御回路１２は、量子関連コンピュータ１１ａの全体を制御する。例えば、制御回路１２は、通信回路１３を介して、外部から各種の制御信号を受信し、演算回路１４に計算を開始させてもよい。また、制御回路１２は、各構成要素の電源管理、冷却などの制御を行ってもよい。通信回路１３は、量子関連コンピュータの外部の情報処理機器（例えば、情報処理装置１）とのデータ通信を行う。演算回路１４は、入力された形式のデータに基づき、計算を実行する。演算回路１４が実行する計算の内容は量子関連コンピュータの種類に依存する。また、演算回路１４の構成も量子関連コンピュータの種類によって異なる。記憶部１５は、必要なプログラム、計算に必要なデータを保存可能な記憶領域を提供する。情報処理装置１の記憶部８と同様、使用する記憶素子または記憶装置の種類および構成については特に問わない。
【０１３１】
ここまでは、本実施形態に係るシステムの構成について説明した。次に、本実施形態に係るシステムで使われるデータ構造について説明する。
【０１３２】
図１０は、問題のタイプの定義例を示している。問題タイプデータ５４では、ユーザが解く問題の定義と分類を行っている。問題タイプデータ５４は現実問題８０をルートノードとするツリー構造となっている。深さ１では、“金融”ノードと、“物流”ノードと、“交通”ノードと、“ライフサイエンス”ノードが定義されている。深さ１では、業界ごとにノードが定義されている。深さ２では、“金融”ノードの子ノードとして、“ポートフォリオ最適化”ノードと、“リスクマネジメント”ノードとが定義されている。さらに、同じ深さ２に、“ライフサイエンス”ノードの子ノードとして、“ＤＮＡシーケンシング”ノードが定義されている。
【０１３３】
深さ３では、“ポートフォリオ最適化”ノードの子ノードとして、“トラッキングエラー最小化”ノードと、“リターン最大化”ノードとが定義されている。さらに、同じ深さ３に、“ＤＮＡシーケンシング”ノードの子ノードとして、“シーケンサＡ用”と、“シーケンサＢ用”とが定義されている。このように、問題タイプデータ５４は、業界、内容、適用対象などの観点に基づき、現実問題８０を分類している。また、問題タイプデータ５４の各ノードは現実問題８０の種類を定義しているともいえる。
【０１３４】
問題タイプデータ５４のノードを参照することによって、対応する種類に係る現実問題８０で使用する変換プログラム４１と逆変換プログラム４２を特定できるようにしてもよい。例えば、ノードに対応する変換プログラム４１と逆変換プログラム４２へのポインタを格納してもよい。また、ノードに対応する変換プログラム４１と逆変換プログラム４２のファイル名を格納してもよい。なお、各ノードからサブ変換プログラムとサブ逆変換プログラムとを参照できるようにしてもよい。
【０１３５】
図１０の問題タイプデータ５４は一例にしかすぎない。したがって、図１０とは異なる観点に基づき、現実問題８０の種類を分類してもよい。例えば、量子関連コンピュータに入力可能なデータ形式に至るまでに必要な変換回数に基づき、現実問題を分類してもよい。また、現実問題８０がはじめから組合せ最適化問題としてモデリングできるか否かを基準に現実問題８０を分類してもよい。また、図１０のツリー構造は一例にしかすぎない。したがって、ツリー構造の深さ、子ノードの数は図１０と異なっていてもよい。また、ツリー以外のデータ構造によって現実問題８０の種類を定義してもよい。
【０１３６】
図１０のパターンセット５５ａは、ＳＡＴ（ｂｏｏｌｅａｎ  ｓａｔｉｓｆｉａｂｉｌｉｔｙ  ｔｅｓｔｉｎｇ）、ＴＳＰ（巡回セールスマン問題）、ハミルトン路問題、オイラー路問題など組合せ最適化問題の種類を定義している。また、パターンセット５５ａは、組合せ最適化問題に容易に変換できる最適化問題を含んでいてもよい。例えば、パターンセット５５ａには、２次計画問題も含まれている。２次計画問題は、従属変数と目的変数を離散化させることにより、組合せ最適化問題に変換することができる。
【０１３７】
ユーザは、現実問題８０がはじめから特定の組合せ最適化問題にモデリングできる場合、当該組合せ最適化問題の種類をパターンセット５５ａに追加してもよい。また、ユーザは現実問題８０を特定の組合せ最適化問題に変換する場合、当該組合せ最適化問題の種類をパターンセット５５ａに追加してもよい。パターンセット５５ａから他のデータを参照できるようにしてもよい。例えば、パターンセット５５ａに各種類の組合せ最適化問題への変換を行う変換プログラム４１へのポインタやファイル名を格納してもよい。
【０１３８】
図１１のマシンタイプデータ５５ｂは、量子関連コンピュータの種類を定義する。マシンタイプデータ５５ｂは、“量子関連コンピュータ”ノードをルートノードとするツリー構造となっている。深さ１では、“イジングマシン”ノードと、“メタヒューリスティックス”ノードと、“ゲート式量子コンピュータ”ノードとが定義されている。深さ２では、“イジングマシン”ノードの子ノードとして、“エミュレータ”ノードと、“量子アニーリングマシン”ノードとが定義されている。さらに、同じ深さ２に、“ゲート式量子コンピュータ”ノードの子ノードとして、“マシンＡ”ノードと、“マシンＢ”ノードとが定義されている。
【０１３９】
深さ３では、“エミュレータ”ノードの子ノードとして、“ＦＰＧＡ実装”ノードと、“ソフトウェア実装”ノードが定義されている。このように、マシンタイプデータ５５ｂでは、量子関連コンピュータを原理に基づく上位の分類をしてから、実装方式の違いなどの下位の分類に基づき、個々の量子関連コンピュータを定義している。
【０１４０】
マシンタイプデータ５５ｂから他のデータを参照できるようにしてもよい。例えば、各ノードから、対応する種類に係る量子関連コンピュータに入力可能なデータ形式への変換を行うＬ３変換プログラム３３ａを参照できるようにしてもよい。例えば、各ノードにＬ３変換プログラム３３ａへのポインタを格納してもよいし、各ノードにＬ３変換プログラム３３ａのファイル名を格納してもよい。また、ユーザは、その他の量子関連コンピュータとは異なる種類の量子関連コンピュータが情報処理システム１０に追加された場合、マシンタイプデータ５５ｂを更新することができる。
【０１４１】
図１２のテーブル５６は、Ｌ１プログラムテーブルの一例である。テーブル５６のそれぞれの行は、各Ｌ１変換プログラム３１ａ（Ｌ１逆変換プログラム３１ｂ）に対応している。例えば、ＩＤ＝“Ｌ１００１”の行は、リターンを最大化させる金融ポートフォリオを求めたいときに、使用する各Ｌ１変換プログラム３１ａ（Ｌ１逆変換プログラム３１ｂ）のファイル名を格納している。また、テーブル５６の各行は、問題タイプデータ５４に基づく現実問題８０の分類と、各Ｌ１変換プログラム３１ａ（Ｌ１逆変換プログラム３１ｂ）が適用する手法に関する情報も含む。
【０１４２】
図１３のテーブル５７は、Ｌ２プログラムテーブルの一例である。テーブル５７のそれぞれの行は、各Ｌ２変換プログラム３２ａ（Ｌ２逆変換プログラム３２ｂ）に対応している。例えば、ＩＤ＝“Ｌ２００２”の行は、トラッキングエラーを最小化させる金融ポートフォリオを求めたいときに、使用する各Ｌ２変換プログラム３２ａ（Ｌ２逆変換プログラム３２ｂ）のファイル名を格納している。また、テーブル５７の各行は、問題タイプデータ５４に基づく現実問題８０の分類と、各Ｌ２変換プログラム３２ａによる変換後に生成される最適化問題の種類に関する情報も含む。
【０１４３】
図１４のテーブル５８は、Ｌ３プログラムテーブルの一例である。テーブル５８のそれぞれの行は、各Ｌ３変換プログラム３３ａ（Ｌ３逆変換プログラム３３ｂ）に対応している。例えば、ＩＤ＝“Ｌ３００１”の行は、ハミルトン路問題を量子アニーリングマシンで実行可能な形式に変換するＬ３変換プログラム３３ａと、その逆の変換を行うＬ３逆変換プログラム３３ｂのファイル名を格納している。
【０１４４】
図１２〜図１４のプログラムテーブルは、図２に示したモデルケースのレベル構造にしたがっている。このため、問題のレベル構造が図２と異なっている場合、図１２〜図１４とは異なる形式でプログラムテーブルを定義してもよい。また、図１０〜図１４のデータ構造は記憶部８に保存することができる。ただし、少なくとも一部のデータ構造を外部の記憶装置に保存してもよく、上述のデータ構造の保存先については特に限定しない。
【０１４５】
次に、本実施形態に係る情報システムによって行われるプログラムの開発フローについて説明する。図１５は、情報処理システムによるプログラムの開発の例を示したフローチャートである。以下では、図１５を参照しながら、処理を説明する。
【０１４６】
まず、ユーザは解きたい問題（第２問題）の種類を情報処理装置１に入力する。そして、情報処理装置１は記憶部８を参照し、当該種類の問題を解くためのプログラムを探索する（ステップＳ１０１）。ここで、解きたい問題とは、図２の現実問題８０のことをいう。また、問題を解くためのプログラムとは、図２に示された変換プログラム４１と、逆変換プログラム４２のことをいう。図２に示されたように、変換プログラム４１は、少なくとも下位レベルのサブ変換プログラム（Ｌ３変換プログラム３３ａ）を含む。また、逆変換プログラム４２は、少なくとも下位レベルのサブ逆変換プログラム（Ｌ３逆変換プログラム３３ｂ）を含む。
【０１４７】
情報処理装置１による探索の結果、該当する種類の問題を解くプログラムが見つかった場合（ステップＳ１０２のＹＥＳ）、情報処理システム１０は、該当する種類の問題を解くプログラムの識別子（ＩＤ）をユーザに返す（ステップＳ１０５）。また、情報処理装置１による探索の結果、該当する種類の問題を解くプログラムが見つからない場合（ステップＳ１０２のＮＯ）、ユーザは該当する種類の問題を解くプログラムを作成する（ステップＳ１０３）。とくに、変換プログラム４１および逆変換プログラム４２が作成対象となる現実問題８０を第１問題とよぶ。
【０１４８】
そして、ユーザは該当する種類の問題を解くプログラムを情報処理装置１に登録する（ステップＳ１０４）。ステップＳ１０４では、プログラムの識別子が決定される。また、作成されたプログラムは、当該プログラムの識別子とともに情報処理装置１の記憶部８に保存される。このとき、Ｌ１プログラムテーブル、Ｌ２プログラムテーブル、Ｌ３プログラムテーブルの少なくともいずれかのテーブルが更新されてもよい。テーブルが更新される場合、ＩＤが新規登録される。その後、当該プログラムの識別子がユーザに返される（ステップＳ１０５）。
【０１４９】
変換プログラム４１（いずれかのレベルに係るサブ変換プログラムを含む）、逆変換プログラム４２（いずれかのレベルに係るサブ逆変換プログラムを含む）は、情報処理システム１０以外の情報処理システム上で実行されてもよい。したがって、ステップＳ１０４でプログラムは、情報処理システム１０以外の情報処理システムに登録されてもよい。ステップＳ１０３で実行される処理と、ステップＳ１０４で実行される処理の詳細については後述する。
【０１５０】
はじめに、図１５のステップＳ１０３で実行される処理の詳細について説明する。上述のように、現実問題８０の種類によって、量子関連コンピュータが実行可能な形式に至るまでに必要な変換の回数が異なる。したがって、プログラムの開発を行う際には、生成が必要なプログラムのレベルを特定する必要がある。
【０１５１】
図１６は、生成が必要なプログラムのレベルを特定する処理の例を示したフローチャートである。以下では、図１６を参照しながら、処理を説明する。なお、図１７の処理の詳細については後述する。
【０１５２】
はじめに、現実問題８０がはじめから組合せ最適化問題にモデリング可能であるか否かを判定する（ステップＳ２０１）。現実問題８０がはじめから組合せ最適化問題にモデリング可能である場合（ステップＳ２０１のＹＥＳ）、下位レベル（図２のレベル３）について、図１７の処理を実行する（ステップＳ２０２）。現実問題８０がはじめから組合せ最適化問題にモデリング可能でない場合（ステップＳ２０１のＮＯ）、現実問題８０を１回の変換で組合せ最適化問題にできるか否かを判定する（ステップＳ２０３）。
【０１５３】
現実問題８０を１回の変換で組合せ最適化問題にできる場合（ステップＳ２０３のＹＥＳ）、中位レベル（図２のレベル２）と下位レベル（図２のレベル３）のそれぞれについて、図１７の処理を実行する（ステップＳ２０４）。現実問題８０を１回の変換で組合せ最適化問題にできない場合（ステップＳ２０３のＮＯ）、上位レベル（図２のレベル１）、中位レベル（図２のレベル２）、下位レベル（図２のレベル３）のそれぞれについて、図１７の処理を実行する（ステップＳ２０５）。
【０１５４】
次に、図１６のステップＳ２０２、ステップＳ２０４、ステップＳ２０５で実行される処理について説明する。図１７は。あるレベルのプログラムを生成する処理の例を示したフローチャートである。以下では、図１７を参照しながら、処理を説明する。
【０１５５】
まず、対象レベルについて類似した問題に係るサブ変換プログラムまたはサブ逆変換プログラムが記憶部８に保存されているか否かを判定する（ステップＳ３０１）。対象レベルの例として、上位レベル（図２のレベル１）、中位レベル（図２のレベル２）、下位レベル（図２のレベル３）が挙げられる。例えば、ステップＳ３０１では、問題タイプデータ５４のツリー構造を参照し、問題の類似度を計算してもよい。類似度がしきい値より大きい場合、現実問題８０とサブ変換プログラムまたはサブ逆変換プログラムを作成済みの問題が類似していると判定することができる。ツリー構造を走査したときにおけるノード間の距離が所定の値より小さいとき、問題が互いに類似していると判定することができる。また、現実問題８０に係るノードとサブ変換プログラムまたはサブ逆変換プログラムを作成済みの問題に係るノードがいずれもあるノードの子ノードである場合に、問題が互いに類似していると判定してもよい。
【０１５６】
また、その他の基準に基づいて、問題の類否を判定してもよい。例えば、変換後に生成される組合せ最適化問題の種類が同一であるとき、２つの問題は互いに類似していると判定してもよい。また、下位レベルの問題の場合、量子関連コンピュータの種類が同一であるとき、２つの問題は互いに類似していると判定してもよい。また、上述とは異なる手法で問題の類似度を計算し、問題の類否判定を行ってもよい。例えば、ユーザが入力した、問題の特徴を示すキーワードもしくは自然文に基づき、ツリー構造の各ノードに関連付けられたデータを対象とした全文検索を行い、類似した問題を抽出してもよい。ここで、全文検索では同義語を利用した曖昧検索を行ってもよい。開発部３は、ユーザの入力に基づき、検索を実行し、少なくとも１つの問題モデルをユーザに提示してもよい。
【０１５７】
対象レベルについて類似した問題に係るサブ変換プログラムまたはサブ逆変換プログラムが記憶部８に保存されている場合（ステップＳ３０１のＹＥＳ）、ユーザは対象レベルのプログラミングツール３４を使って既存のサブ変換プログラムまたはサブ逆変換プログラムの少なくともいずれかを編集し、問題に係るサブ変換プログラムとサブ逆変換プログラムを作成する（ステップＳ３０２）。例えば、情報処理装置１の開発部３は、管理部６が提供するインタフェースを介してユーザに類似した問題に係るサブ変換プログラムとサブ逆変換プログラムの情報を提示してもよい。対象レベルについて、複数の類似しているサブ変換プログラムが記憶部８に保存されている場合、ユーザはいずれかのサブ変換プログラムを編集し、サブ変換プログラムまたはサブ逆変換プログラムを作成してもよい。また、ユーザは、複数のサブ変換プログラムを編集し、サブ変換プログラムまたはサブ逆変換プログラムを作成してもよい。対象レベルについて、複数の類似しているサブ変換プログラムが記憶部８に保存されている場合についても、上述と同様である。
【０１５８】
対象レベルについて類似した問題に係るサブ変換プログラムまたはサブ逆変換プログラムが記憶部８に保存されていない場合（ステップＳ３０１のＮＯ）、ユーザはプログラミングツール３４を用いて、新規にサブ変換プログラムとサブ逆変換プログラムを作成する（ステップＳ３０３）。なお、問題の類否に関わらず、既存のサブ変換プログラムまたはサブ逆変換プログラムと共通した処理がある場合、ユーザは既存のサブ変換プログラムまたはサブ逆変換プログラムの一部を流用し、サブ変換プログラムとサブ逆変換プログラムを作成してもよい。
【０１５９】
なお、対象レベルについて類似した問題に係るサブ変換プログラムまたはサブ逆変換プログラムが記憶部８に保存されていない場合（ステップＳ３０１のＮＯ）、記憶部８を参照し、対象レベルについて類似した問題に係る問題モデルを探索してもよい。ここで、問題の類否判定に使われる基準をステップＳ３０１より緩和し、問題モデルが抽出される確率または、抽出される問題モデルの数を増やしてもよい。類否判定の基準を緩和する方法の例としては、類似度のしきい値を小さくする方法があるが、その他の方法を使ってもよい。これにより、“類似する”問題に係るサブ変換プログラムまたはサブ逆変換プログラムが見つからない場合であっても、ユーザがサブ変換プログラムとサブ逆変換プログラムの開発時に参考とすることができる問題モデルが見つかる可能性を高めることができる。類似した問題に係る問題モデルまたは参考にできる問題モデルが見つかった場合、ユーザは、問題モデルに係る情報を参照しながら、サブ変換プログラムとサブ逆変換プログラムを作成することができるため、開発にかかる負担が軽減される。すなわち、開発部３は、第２問題（ユーザが解きたい現実問題８０）と第１問題（サブ変換プログラムまたはサブ逆変換プログラムを作成済みの現実問題８０）との間の類否に基づき、少なくとも１つの問題モデルをユーザに提示してもよい。
【０１６０】
なお、ユーザが上述の見つかった問題モデルを参照したところ、そのままではサブ変換プログラムとサブ逆変換プログラムの作成が難しいと判断される場合もある。この場合、ユーザはモデリングツールを用いて、見つかった問題モデルを第２問題により適合した問題モデルに編集することができる。さらに、類似した問題に係る問題モデルまたは参考にできる問題モデルのいずれも見つからない場合、ユーザは、モデリングツールを用いて新しい問題モデルを作成することができる。
【０１６１】
なお、プログラミングツール３４には、プログラムの検証機能が含まれていてもよい。プログラムの検証機能によって、ユーザは変換プログラム４１と、逆変換プログラム４２の開発の各ステップで、開発中のプログラムを実行し、期待される（正解の）出力と得られた出力とを比較し、プログラムをテストすることができる。
【０１６２】
すべての必要なレベルについてサブ変換プログラムとサブ逆変換プログラムの作成ができたら、ある現実問題８０について、変換プログラム４１と、逆変換プログラム４２の開発が完了したといえる。ユーザは、作成した変換プログラム４１と、逆変換プログラム４２とを記憶部８に保存する。なお、各ユーザが作成した変換プログラム４１／逆変換プログラム４２（以下、プログラムという）に対してアクセスレベルが設定されていてもよい。アクセスレベルは、第三者の属性に応じたものであってもよい。
【０１６３】
例えば、あるユーザが他のユーザに対してプログラムの利用を許可した場合には、当該ユーザが作成したプログラムを他のユーザからアクセス可能に設定する。すなわち、ユーザは、第三者によるプログラムの再利用の可否を設定してもよい。また、各ユーザは他のユーザ（第三者）に対してプログラムの再利用を許可する場合、使用の対価を設定してもよい。アクセルレベルは、ユーザの契約内容や、ユーザが支払った対価に基づいて定められてもよい。
【０１６４】
図１８は、情報処理システムにおけるプログラム実行処理の例を示したフローチャートである。以下では、図１８を参照しながら、実施形態に係る情報処理システムにおいて、プログラムを実行する処理を説明する。
【０１６５】
まず、ユーザは、所望の現実問題８０を解くためのプログラムの識別子を入力する（ステップＳ１１１）。なお、ユーザは、プログラムの識別子の代わりにプログラムの名称や用途などを入力してもよい。この場合、プログラムの名称や用途などはプログラムの識別子に関連付けられているものとする。次に、情報処理システムは、入力された識別子に対応するプログラムを呼び出す（ステップＳ１１２）。そして、情報処理システムは、該当するプログラムを実行し、解を求める（ステップＳ１１３）。
【０１６６】
図１９は、情報処理システムを用いて問題の解を求める処理の例を示している。以下では、図１９を参照しながら、処理を説明する。
【０１６７】
変換プログラム４１は、現実問題の入力データ８１を、量子関連コンピュータに入力可能なデータ形式に変換する。例えば、量子関連コンピュータがイジングマシンである場合、相互作用係数Ｊｉｊおよび局所磁場ｈｉが量子関連コンピュータに入力される。そして、情報処理装置1の制御部５は、量子関連コンピュータに計算を開始させる。このとき、制御部５は、所定の制御条件で量子関連コンピュータを制御してもよい。ユーザは、例えば、量子関連コンピュータの計算時間、電力使用量、メモリ使用量、使用コストの上限を設定してもよい。この場合、制御部５は、計算時間の上限に達したら、量子関連コンピュータによる計算処理を停止させる。また、ユーザは、量子関連コンピュータの計算が完了したと判定する条件を設定してもよい。この場合、制御部５は、量子関連コンピュータが所定の条件を満たしたら、量子関連コンピュータによる計算処理を停止させる。なお、ユーザは、特に条件を設定せず、量子関連コンピュータによる計算が終了するまで待機していてもよい。
【０１６８】
なお、変換プログラム４１に含まれる各レベルのサブ変換プログラム、逆変換プログラム４２に含まれる各レベルのサブ逆変換プログラムは実行時オプションやパラメータの指定機能を備えていてもよい。この場合、ユーザは現実問題８０の解を求める際に、少なくとも一部のレベルのサブ変換プログラムまたはサブ逆変換プログラムの実行時オプションまたはパラメータの設定を指定してもよい。これにより、計算に使用される量子関連コンピュータの種類が変更された場合でも、変換プログラム４１または逆変換プログラム４２の最適化を行うことができる。ユーザは、上位レベルの問題モデルの情報を参照し、下位レベルに係るサブ変換プログラムまたはサブ逆変換プログラムの実行時オプションやパラメータの指定を行うことができる。すなわち、変換部４は、少なくとも一部のレベルにおける変換プログラム４１または逆変換プログラム４２の実行時オプションまたはパラメータの設定の指定が可能であってもよい。
【０１６９】
上述の条件設定は、制御スクリプト５１によって行われてもよい。制御スクリプト５１は、計算を実行する量子関連コンピュータを指定する情報を含んでいてもよい。ユーザは計算を実行する量子関連コンピュータを指定してもよい。制御スクリプト５１は、計算の実行状況に応じ、実行順序、処理の分岐、並列度などの実行条件を動的に変更してもよい。また、制御スクリプト５１は、計算の実行のあたり、現実問題８０以外のデータが必要である場合、必要なデータを取得する機能を備えていてもよい。計算の実行に必要なデータが揃っていない場合、制御スクリプト５１は、量子関連コンピュータを待機させてもよい。すなわち、制御部５は、ユーザが設定した条件を満たすまで、量子関連コンピュータを待機させてもよい。
【０１７０】
また、制御部５は利用可能な量子関連コンピュータを自動的に選択してもよい。制御スクリプト５１は、複数の量子関連コンピュータを、計算を実行する量子関連コンピュータとして指定してもよい。このとき、指定される複数の量子関連コンピュータは必ず同じ種類のものでなくてもよい。制御部５は、複数の量子関連コンピュータによる計算処理の並列度、実行順序、条件分岐の少なくともいずれかを制御してもよい。複数の量子関連コンピュータは、共通の第２問題について、求解の処理の少なくとも一部を実行する。複数の量子関連コンピュータが計算を実行する場合、制御スクリプト５１は、ユーザが指定した基準に基づいて、いずれかの量子関連コンピュータによって計算された解を選択する処理を行ってもよい。情報処理装置１は、複数の量子関連コンピュータによって計算された解の少なくともいずれかから選択された解に基づき、第２問題の解を求めてもよい。
【０１７１】
量子関連コンピュータによる計算が終了するか、停止した場合、制御部５は量子関連コンピュータから計算結果を取得する。そして、制御部５は、計算結果が設定された条件を満たしているか確認する。例えば、制御部５は所定の時間内に量子関連コンピュータの解が得られているか否かを判定してもよい。また、制御部５は、計算結果に基づき、量子関連コンピュータに入力された問題の規模が大きすぎないか否かを判定してもよい。制御部５は、量子関連コンピュータの解の妥当性を検証してもよい。制御部５は、量子関連コンピュータの計算結果が制御スクリプトで規定された条件を満たしていたら、当該計算結果を利用可能な解であると判定することができる（判定７０）。
【０１７２】
量子関連コンピュータの計算結果が制御部５によって利用可能な解であると判定された場合（判定７０のＹＥＳ）、逆変換プログラム４２は、量子関連コンピュータの計算結果を現実問題の解８２に変換してもよい。量子関連コンピュータの計算結果が制御部５によって利用可能な解ではないと判定された場合（判定７０のＮＯ）、制御部５は、次回の計算実行時における制御条件を変更する。
【０１７３】
例えば、制御部５は、量子関連コンピュータの計算時間の上限を延長してもよい。また、制御部５は、量子関連コンピュータの計算が完了したと判定する条件を変更してもよい。また、制御部５は、次回計算を実行する量子関連コンピュータを変更してもよい。次回計算を実行する量子関連コンピュータの種類が変更される場合、変換プログラム４１に含まれる下位レベルのサブ変換プログラム（Ｌ３変換プログラム３３ａ）と、逆変換プログラム４２に含まれる下位レベルのサブ逆変換プログラム（Ｌ３逆変換プログラム３３ｂ）とが置き換えられる。また、並列的に同じ計算を実行する量子関連コンピュータの数を増やしてもよい。問題を分割することによって、計算を実行する量子関連コンピュータの数を増やしてもよい。なお、ユーザが手動で次回の計算実行時における制御条件を変更してもよい。
【０１７４】
そして、制御部５は、変更された制御条件に基づき、量子関連コンピュータに計算を再実行させる。制御部５は、条件を充足する解が得られるまで（判定７０のＹＥＳ）、量子関連コンピュータに計算を繰り返し実行させる。すなわち、制御部５は、ユーザが設定した条件を満たす解が得られるまで、量子関連コンピュータに求解の動作を行わせてもよい。
【０１７５】
以下では、コンピュータのハードウェア構成について説明する。コンピュータの例としては、サーバ、クライアント端末、組み込み機器のマイコン、タブレット、スマートフォン、フィーチャーフォン、パソコンなどが挙げられる。ただし、コンピュータの機能は、仮想コンピュータ（ＶＭ：Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ）やコンテナなどによって実現されていてもよい。
【０１７６】
図２０は、コンピュータ１００の一例を示す図である。図２０のコンピュータ１００は、プロセッサ１０１と、入力装置１０２と、表示装置１０３と、通信装置１０４と、記憶装置１０５とを備える。プロセッサ１０１、入力装置１０２、表示装置１０３、通信装置１０４、記憶装置１０５は、バス１０６により相互に接続されている。
【０１７７】
プロセッサ１０１は、コンピュータ１００の制御装置と演算装置を含む電子回路である。プロセッサ１０１として、例えば、汎用目的プロセッサ、中央処理装置（ＣＰＵ）、マイクロプロセッサ、デジタル信号プロセッサ（ＤＳＰ）、コントローラ、マイクロコントローラ、状態マシン、特定用途向け集積回路、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、プログラム可能論理回路（ＰＬＤ）またはこれらの組合せを用いることができる。
【０１７８】
プロセッサ１０１は、バス１０６を介して接続された各装置（例えば、入力装置１０２、通信装置１０４、記憶装置１０５）から入力されたデータやプログラムに基づいて演算処理を行い、演算結果や制御信号を、バス１０６を介して接続された各装置（例えば、表示装置１０３、通信装置１０４、記憶装置１０５）に出力する。具体的には、プロセッサ１０１は、コンピュータ１００のＯＳ（オペレーティングシステム）や、プログラムなどを実行し、コンピュータ１００に含まれるそれぞれの装置を制御する。
【０１７９】
プログラムを使うことによって、コンピュータ１００に、情報処理装置１または一部の種類の量子関連コンピュータの機能を実装することができる。プログラムは、一時的でない有形のコンピュータ読み取り可能な記憶媒体に記憶される。上記の記憶媒体は、例えば、光ディスク、光磁気ディスク、磁気ディスク、磁気テープ、フラッシュメモリ、半導体メモリであるが、これに限られない。プロセッサ１０１がプログラムを実行することによって、コンピュータ１００は情報処理装置１または一部の種類の量子関連コンピュータの機能を提供することができる。
【０１８０】
入力装置１０２は、コンピュータ１００に情報を入力するための装置である。入力装置１０２は、例えば、キーボード、マウス、タッチパネルなどであるが、これに限られない。ユーザは、入力装置１０２を用いることによって、情報処理システム１０に対する各種の操作を行うことができる。
【０１８１】
表示装置１０３は、画像や映像を表示するための装置である。表示装置１０３は、例えば、ＬＣＤ（液晶ディスプレイ）、ＣＲＴ（ブラウン管）、有機ＥＬ（有機エレクトロルミネッセンス）ディスプレイ、プロジェクタ、ＬＥＤディスプレイなどであるが、これに限られない。表示装置１０３に、情報処理装置１の操作画面、量子関連コンピュータによる計算の実行結果などを表示してもよい。
【０１８２】
通信装置１０４は、コンピュータ１００が外部装置と無線または有線で通信するために使用する装置である。通信装置１０４は、例えば、ＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）、通信モジュール、モデム、ハブ、ルータなどであるが、これに限られない。例えば、コンピュータ１００は、通信装置１０４を介して、量子関連コンピュータの計算結果を取得してもよい。また、コンピュータ１００（情報処理装置１）がデータセンターやマシン室に設置されたサーバなどである場合、コンピュータ１００は通信装置１０４を介して、リモートの情報通信端末から送信された指令を受け付けたり、画面表示の内容をリモートの情報通信端末に表示させたりしてもよい。
【０１８３】
記憶装置１０５は、コンピュータ１００のＯＳや、プログラム、プログラムの実行に必要なデータ、プログラムの実行により生成されたデータなどを記憶する記憶媒体である。記憶装置１０５には、主記憶装置と外部記憶装置が含まれる。主記憶装置は、例えば、ＲＡＭ、ＤＲＡＭ、ＳＲＡＭであるが、これに限られない。また、外部記憶装置は、例えば、ハードディスク、光ディスク、フラッシュメモリ、磁気テープなどであるが、これに限られない。問題タイプデータ５４、パターンセット５５ａ、マシンタイプデータ５５ｂ、各レベルのプログラムテーブル、各レベルに係るサブ変換プログラムのデータ、各レベルに係るサブ逆変換プログラムのデータ、各レベルに係るモデリングツールのデータ、各レベルに係る問題モデルのデータ、プログラミングツール３４のデータは、記憶装置１０５に保存されてもよいし、外部のサーバやストレージ上に保存されてもよい。
【０１８４】
なお、コンピュータ１００は、プロセッサ１０１、入力装置１０２、表示装置１０３、通信装置１０４、記憶装置１０５を、それぞれ１つずつまたは複数備えてもよい。また、コンピュータ１００にプリンタやスキャナなどの周辺機器が接続されていてもよい。
【０１８５】
情報処理装置１および一部の種類の量子関連コンピュータは、単一のコンピュータ１００により構成されてもよいし、複数のコンピュータ１００が相互に接続された情報システムによって構成されていてもよい。
【０１８６】
さらに、プログラムは、コンピュータ１００の記憶装置１０５にあらかじめ記憶されていてもよいし、コンピュータ１００の外部の記憶媒体に記憶されていてもよいし、インターネット上にアップロードされていてもよい。いずれの場合にも、プログラムをコンピュータ１００にインストールして実行することにより、上述の各実施形態に係る情報処理装置またはイジングマシンの機能を実現することができる。
【０１８７】
（第２の実施形態）
第１の実施形態に係る情報処理システムは、量子関連コンピュータを使って、組合せ最適化問題として記述可能な現実問題を解くことを支援した。第２の実施形態では、実世界の複雑性への適用力を高めた情報処理システムについて述べる。以下では、第１の実施形態と共通の構成要素（例えば、図１、図２、図９）に対し、追加される構成要素および機能を中心に、第２の実施形態に係る情報処理システムについて説明する。ＱＵＢＯソルバを使った求解を行ってもよいのは、第１の実施形態に係る情報処理システムと同様である。ＱＵＢＯソルバによる求解を行う場合、以降の説明における量子関連コンピュータをＱＵＢＯソルバに置き換えることができる。
【０１８８】
組合せ最適化問題として記述されうる現実問題は、例えば、金融、物流、交通、ライフサイエンス、化学、設計、製造など実世界における多岐の分野にわたる。各分野への量子関連コンピュータの適用は、各種の社会問題を解決し、科学技術の進歩を促進することが期待される。実世界の複雑性を反映し、膨大な数の分野における問題解決に量子関連コンピュータが適用されうる。したがって、各分野における複数パターンの問題のそれぞれを量子関連コンピュータに入力可能なデータ形式に変換することが必要である。また、ユーザ（とりわけ各分野用のアプリケーションプログラム（定義は後述）の開発者）は、いずれの種類の組合せ最適化問題（例えば、ハミルトン経路問題、最小経路問題、充足可能性問題、ナップサック問題など）を使って問題のモデル化をするのかを判断しなくてはならない。問題をモデル化する方法および問題を変換する方法を決めるのには、量子関連コンピュータおよび組合せ最適化に関する知識だけでなく、各分野特有の経験・ノウハウが必要である。量子関連コンピュータの活用促進のため、各分野に対応したプログラムの設計を容易にすることが求められている。
【０１８９】
実世界の生物（人を含む）、物、組織（例えば、チーム、プロジェクト、企業）、コミュニティ（例えば、村落、都市、地方、国）、装置（例えば、電子回路、機械）、スキーム（例えば、事業上の計画）、商品、サービスは、それぞれ単体でシステムであると解釈することが可能である。実世界のそれぞれのシステムは、相互に依存しており、影響し合っている。したがって、実世界は、相互に結合された個々のシステムを含むひとつの複雑なシステムを形成しているともいえる。例えば、任意の時刻または位置における、あるシステムの動作／状態は、その他のシステムの動作／状態に影響を与えることがある。また、任意の時刻または位置における、あるシステムの動作／状態は、別の時刻または位置における、同一のシステムまたはその他のシステムの動作／状態に依存していることがある。
【０１９０】
このため、量子関連コンピュータを利用したサービスの品質／性能向上、ユーザの利便性向上のためには、実世界におけるシステム間の依存関係および影響関係を反映したプログラムの開発、サービスの構築およびサービスの運用を行うことが好ましいといえる。
【０１９１】
ここで、サービスとは、その少なくとも一部が情報通信技術（例えば、コンピュータ上で実行されるプログラム）によって実現され、その利用者の生活またはビジネスを支援するもののことをいう。サービスは、量子関連コンピュータを含む情報処理システム１０によって提供されるものであってもよいし、その他の情報処理システムまたはコンピュータによって提供されるものであってもよい。すなわち、以下で「サービス」について言及された場合、それは量子関連コンピュータを使って提供されるものと、量子関連コンピュータを使わずに提供されるものの両方を含むものとする。また、サービスの提供に使われるプログラムをアプリケーションプログラムとよぶものとする。量子関連コンピュータを使うサービスを提供するアプリケーションプログラムは、例えば、図２の変換プログラム４１を使い、当該サービスで解かれる対象としている問題を量子関連コンピュータに入力可能なデータ形式に変換する処理と、量子関連コンピュータに解の計算をさせる処理と、逆変換プログラム４２を使い、量子関連コンピュータが計算した解を問題の解に変換する処理とを含む。
【０１９２】
サービスは、ひとつのプログラムによって提供されてもよい。また、サービスは、複数のプログラムの組合せによって実現されるものであってもよい。例えば、複数のコンピュータのそれぞれで動作するプログラムの組合せによってサービスが実現されてもよい。例えば、情報処理装置１上で動作するプログラム、量子コンピュータ上で動作するプログラム、およびサーバ上で動作するプログラムの組合せによってサービスが提供されてもよい。ただし、アプリケーションプログラムが実行されるコンピュータおよびコンピュータの組合せについては、特に問わない。
【０１９３】
図２１、図２２は、複数の分野に対応した情報処理システムの構成例を示したブロック図である。情報処理システム１０は、情報処理装置１を含む。情報処理装置１は、開発部３と、変換部４とを備え、量子関連コンピュータを使ったサービスの開発を支援する。開発部３は、それぞれ少なくともいずれかのサービスを提供するアプリケーションプログラムの開発を支援するアプリケーション開発ツールを実行する。変換部４は、少なくともひとつのアプリケーションプログラムを実行する。アプリケーションプログラムは、ひとつのサービスを提供するものであってもよい。また、ひとつのアプリケーションプログラムが複数のサービスを提供してもよい。
【０１９４】
アプリケーション開発ツールは、少なくともひとつのモデリングツールと、少なくともひとつのプログラミングツールとを含む。モデリングツールは、ユーザがサービスに対応した少なくともひとつの問題モデルを作成することを支援する。プログラミングツールは、ユーザが問題モデルに基づいてアプリケーションプログラムを設計することを支援する。第１の実施形態と同様に、開発部３が実行するモデリングツールは、（サービスで解かれる対象としている）問題について異なるレベルに対応する複数の問題モデルをユーザが段階的に記述することを可能にするものであってもよい。また、開発部３が実行するプログラミングツールは、異なるレベルに対応する複数の問題モデルに基づき、ユーザが変換プログラムを設計することを可能にするものであってもよい。さらに、開発部３が実行するモデリングツールは、上位モデリングツールと、下位モデリングツールとを含んでいてもよい。上位モデリングツールは、上位の表現形式で上位の問題モデルをユーザが記述することを可能にする。下位モデリングツールは、下位の表現形式で下位の問題モデルをユーザが記述することを可能にする。
【０１９５】
アプリケーションプログラムは、少なくともひとつの変換プログラムと、少なくともひとつの逆変換プログラムとを含む。変換プログラムは、提供するサービスで解かれる対象としている問題を量子関連コンピュータへ入力可能なデータ形式に変換する。逆変換プログラムは、問題について計算された量子関連コンピュータの解を、当該問題の解に変換する。ひとつのサービスでは、複数種類の問題を解かれる対象とする場合がある。また、アプリケーションプログラムが複数のサービスを提供し、それぞれのサービスで少なくともひとつの問題を解かれる対象としている場合もある。これらの場合、アプリケーションプログラムは、複数種類の問題にそれぞれ対応する変換プログラム４１と逆変換プログラム４２との組合せを、複数含んでいてもよい。
【０１９６】
情報処理システム１０は、それぞれ実社会のある分野に適合した１以上のプラットフォームを備えている。実社会の分野は、例えば、金融事業（例えば、Ｆｉｎｔｅｃｈ）、ゲノム関連事業、物流事業、交通事業のように、量子関連コンピュータが適用される広範な事業領域ごとに分けることができる。図２１、図２２には、分野Ａ用のプラットフォーム１Ａと、分野Ｂ用のプラットフォーム１Ｂとが示されている。分野Ａは、金融事業であり、分野Ｂは、ゲノム関連事業であるものとする。ただし、この分野の分類方法は一例にしかすぎず、これとは異なる分類を使うことを妨げるものではない。また、図２１、図２２にはふたつのプラットフォームが示されているが、プラットフォームの数はこれより多くてもよい。
【０１９７】
プラットフォーム１Ａ、１Ｂは、それぞれ情報処理装置１の開発部３および変換部４の該当する分野に対応する機能を使うことによって実現される。各分野に係るプラットフォームは、それぞれ少なくともひとつのサービスを含むものとする。図２１では、構成要素を示すブロックの上部に記号Ａ１、Ａ２が示されている。記号Ａ１、Ａ２は、該当する構成要素に対応するサービスを示している。例えば、サービスＡ１は、上場投資信託（ＥＴＦ）サービスであり、サービスＡ２は、高頻度取引（ＨＦＴ）サービスであるものとする。ただし、サービスＡ１、Ａ２は、これらとは異なるサービスであってもよい。
【０１９８】
同様に、図２２には、構成要素を示すブロックの上部に記号Ｂ１、Ｂ２が示されている。記号Ｂ１、Ｂ２も、該当する構成要素に対応するサービスを示している。例えば、サービスＢ１は、ゲノム解析サービスであり、サービスＢ２は、ゲノム医療保険サービスであるものとする。ただし、サービスＢ１、Ｂ２は、これらとは異なるサービスであってもよい。なお、図２１、図２２には、それぞれ２つのサービスが示されているが、各プラットフォームはこれとは異なる数のサービスを含んでいてもよい。
【０１９９】
外部の情報処理装置（例えば、クライアントマシン２２などの情報端末または、外部情報処理システム２３のサーバ）は、プラットフォーム１Ａ、１Ｂにアクセスし、各分野に係るサービスの開発および各サービスの提供を行うことができる。図２１には、開発用端末２２Ａ１１、２２Ａ２１、サービスサーバ２２Ａ１２、２２Ａ２２が示されている。一方、図２２には、開発用端末２２Ｂ１１、２２Ｂ２１、サービスサーバ２２Ｂ１２、２２Ｂ２２が示されている。
【０２００】
開発用端末２２Ａ１１およびサービスサーバ２２Ａ１２は、サービスＡ１を運用する事業者によって使われるものであってもよい。同様に、開発用端末２２Ａ２１およびサービスサーバ２２Ａ２２は、サービスＡ２を運用する事業者によって使われるものであってもよい。開発用端末２２Ｂ１１およびサービスサーバ２２Ｂ１２は、サービスＢ１を運用する事業者によって使われるものであってもよい。同様に、開発用端末２２Ｂ２１およびサービスサーバ２２Ｂ２２は、サービスＢ２の運用をする事業者によって使われるものであってもよい。ただし、サービスの開発と運用を行う事業者が異なっている場合、同一サービスに対応する開発用端末とサービスサーバは、異なる事業者によって使われていてもよい。
【０２０１】
ユーザ（例えば、サービスＡ１、Ａ２、Ｂ１、Ｂ２に係るアプリケーションプログラムそれぞれの開発者）は、開発用端末２２Ａ１１、２２Ａ２１、２２Ｂ１１、２２Ｂ２１を使うことによって、それぞれのサービスが使う変換プログラム４１および逆変換プログラム４２を開発する。第１の実施形態で述べたように、ユーザは各レベルに係るモデリングツールによって問題モデルを作成し、対応する変換プログラムおよび逆変換プログラムを設計（コーディング）することができる。サービスサーバ２２Ａ１２、２２Ａ２２、２２Ｂ１２、２２Ｂ２２は、例えば、対応するサービスのフロントエンドの処理を実行する。ただし、サービスサーバによって実行される処理の内容については特に問わない。なお、それぞれのサービスの提供のために必ずしもサービスサーバが設置されていなくてもよい。
【０２０２】
情報処理装置１の開発部３は、分野Ａおよび分野Ｂに属するサービスまたは、サービスＡ１、Ａ２、Ｂ１、Ｂ２に必要なツール群を提供する。ツール群は、図２のプログラミングツール３４および各レベルに係るモデリングツールを含む。また、情報処理システム１０の変換部４は、分野Ａおよび分野Ｂに属するサービスまたは、サービスＡ１、Ａ２、Ｂ１、Ｂ２が使う変換プログラム４１および逆変換プログラム４２を実行する。
【０２０３】
プラットフォーム１Ａに含まれる開発ツール３Ａは、分野Ａ（金融事業）に対応した開発環境（例えば、図２のモデリングツールおよびプログラミングツール）を提供する。また、プラットフォーム１Ｂに含まれる開発ツール３Ｂは、分野Ｂ（ゲノム関連事業）に対応した開発環境（例えば、図２のモデリングツールおよびプログラミングツール）を提供する。開発ツール３Ａ、３Ｂの一部（例えば、ライブラリ、モジュール、プログラム、データ）は共通していてもよい。ただし、開発ツール３Ａ、３Ｂの少なくとも一部は相違している。開発ツールの相違する部分は、各分野特有の処理を実行するアプリケーションプログラム（例えば、各レベルに係る変換プログラムおよび逆変換プログラム）の設計を可能とする。
【０２０４】
例えば、対応する分野によって、開発ツールに含まれるモデリングツールのレベル数、プログラミングツールのレベル数、モデリングツールが生成する（問題モデルの）組合せ最適化問題の種類、モデリングツールより参照可能な問題モデルのひな形またはテンプレートの種類、モデリングツールの機能、プログラミングツールの機能、プログラミングツールで使用可能なプログラミング言語の種類、プログラミングツールより参照可能な変換プログラムまたは逆変換プログラムのうち、少なくともいずれかが異なっていてもよい。
【０２０５】
ユーザは、上述の開発用端末を介して開発ツール３Ａ、３Ｂにアクセスし、それぞれの分野のサービス、当該サービスを提供するアプリケーションプログラムに含まれる変換プログラムおよび逆変換プログラム、ならびに問題モデルを作成することができる。
【０２０６】
情報処理装置１は、各分野に係る開発ツールのサブセットまたはオプション構成として、より具体的なサービスに対応するアプリケーションプログラム開発ツール（ＡＰ開発ツールとよぶ）を備えていてもよい。例えば、図２１のＡＰ開発ツール３Ａ１は、サービスＡ１（ＥＴＦサービス）に対応した開発環境を提供する。また、ＡＰ開発ツール３Ａ２は、サービスＡ２（ＨＦＴサービス）に対応した開発環境を提供する。図２２のＡＰ開発ツール３Ｂ１は、サービスＢ１（ゲノム解析サービス）に対応した開発環境を提供する。また、ＡＰ開発ツール３Ｂ２は、サービスＢ２（ゲノム医療保険サービス）に対応した開発環境を提供する。ここで、それぞれの開発環境（ＡＰ開発ツール）は、図２のモデリングツールおよびプログラミングツールを含むものとする。ＡＰ開発ツールは、いずれかのサービスを提供するアプリケーションプログラムの開発に対応している。
【０２０７】
複数のＡＰ開発ツールは、共通する部分を有していてもよい。また、各サービス（アプリケーションプログラム）に特有の処理の実装を実現するため、複数のＡＰ開発ツールの少なくとも一部は相違しているものとする。ＡＰ開発ツールの相違する部分の例として、モデリングツールのレベル数、プログラミングツールのレベル数、モデリングツールが生成する（問題モデルの）組合せ最適化問題の種類、モデリングツールより参照可能な問題モデルのひな形またはテンプレートの種類、モデリングツールの機能、プログラミングツールの機能、プログラミングツールで使用可能なプログラミング言語の種類、プログラミングツールより参照可能な変換プログラムまたは逆変換プログラムが挙げられる。
【０２０８】
ユーザは、開発用端末を介してＡＰ開発ツール３Ａ１、３Ａ２、３Ｂ１、３Ｂ２にアクセスし、各サービス、当該サービスが使う変換プログラムおよび逆変換プログラム、ならびに問題モデルを作成することができる。
【０２０９】
情報処理システム１０の変換部４は、サービスＡ１、Ａ２、Ｂ１、Ｂ２用のアプリケーションプログラム（以降では、必要に応じ、ＡＰプログラムと略す）４３Ａ１、４３Ａ２、４３Ｂ１、４３Ｂ２を含む。ＡＰプログラム４３Ａ１、４３Ａ２、４３Ｂ１、４３Ｂ２は、それぞれサービスＡ１、Ａ２、Ｂ１、Ｂ２に対応する変換プログラム４１および逆変換プログラム４２を含む。すなわち、ＡＰプログラムは、いずれかのサービスの提供に使われるプログラムである。各サービスが使う変換プログラム４１および逆変換プログラム４２は、対応するＡＰ開発ツールを使って作成される。
【０２１０】
各ＡＰプログラムは、サービスで解かれる対象としている問題（第１の実施形態における現実問題に相当する）を量子関連コンピュータに入力可能なデータ形式に変換し、量子関連コンピュータに問題の解を計算させる。また、各ＡＰプログラムは、量子関連コンピュータが計算した解をサービスで解かれる対象としている問題の解に変換する。例えば、図２１、図２２において、計算エンジン部１１は、量子関連コンピュータ１１ａ、１１ｂ、１１ｃ、およびＰＵＢＯソルバ１１ｄを含む。サービスサーバ２２Ａ１２、２２Ａ２２、２２Ｂ１２、２２Ｂ２２は、それぞれＡＰプログラム４３Ａ１、４３Ａ２、４３Ｂ１、４３Ｂ２にアクセスし、対応するサービスで解かれる対象としている問題の解を取得することができる。これにより、各サービスサーバは、提供するサービスにおいて問題の解を使うことができる。なお、サービスサーバではなく、変換部４で実行するアプリケーションプログラムが、提供するサービスにおいて問題の解を使ってもよい。
【０２１１】
情報処理装置１のサービス連携部２００は、ＡＰプログラムの開発時およびサービスの稼働時（ＡＰプログラムの実行時）に、複数のサービス間の連携を実現する。ここで、サービス間の連携とは、複数のサービス間でデータの受け渡しが行われることを意味する。受け渡しされるデータは、あるサービスから供給されたデータを加工したものも含む。サービス連携部２００は、例えば、情報処理装置１の構成要素であり、プロセッサ上で実行されるプログラムによって実現される。ただし、サービス連携部２００の少なくとも一部の機能は、ハードウェア回路によって実装されていてもよい。また、情報処理装置１とは別個に、サービス連携部２００の処理を実行するコンピュータが用意されていてもよい。この場合、当該コンピュータがサービス連携部２００に相当している。
【０２１２】
図２３は、選択メニューおよびツールデータベースの構成例を示している。図２３の選択メニュー２２Ｍは、例えば、開発用端末２２Ａ１１、２２Ａ２１、２２Ｂ１１、２２Ｂ２１のディスプレイに表示される。選択メニュー２２Ｍは、階層構造によって複数のボックスを示している。階層構造の第１のレベルには、分野Ａ、Ｂ、Ｃに対応するボックスが配置されている。分野を示すボックスより下のレベルには、各分野に属するサービスのボックスが配置されている。第２のレベルには、サービスＡ１、Ａ２、Ｂ１、Ｂ２、Ｃ１、Ｃ２のボックスが配置されている。第３のレベルには、サービスＡ２１、Ａ２２、Ｃ１１のボックスが配置されている。開発用端末のユーザは、分野名またはサービス名を表示しているいずれかのボックスをクリックすることによって、ＡＰプログラムの開発に使用するツールおよびデータを選択することができる。選択メニュー２２Ｍの構造は一例にしかすぎない。したがって、これとはインタフェースを使って、開発ツールの選択をできるようにしてもよい。
【０２１３】
選択メニュー２２Ｍのいずれかのボックスがクリックされると、当該ボックスに関連付けられたツールアセンブラがツールデータベース８Ｄを参照し、使用するツールおよびデータの組合せを抽出する。ツールアセンブラの機能は、例えば、開発部３で実行されるプログラムに実装されている。
【０２１４】
ツールデータベース８Ｄは、例えば、モデリングツール、プログラミングツール、問題モデルひな形、既存問題モデル、変換プログラムひな形、逆変換プログラムひな型、既存変換プログラム、既存逆変換プログラムなどのツールおよびデータを含む。ツールデータベース８Ｄは、例えば、情報処理装置１の記憶部８に保存される。ただし、ツールデータベース８Ｄは、外部ストレージなどその他の場所に保存されていてもよい。
【０２１５】
例えば、レベル、分野、機能、対応するサービス、対応する組合せ最適化問題の異なる複数のモデリングツールがツールデータベース８Ｄに含まれていてもよい。また、レベル、分野、機能、対応するサービス、使用可能なプログラミング言語が異なる複数のプログラミングツールがツールデータベース８Ｄに含まれていてもよい。同様に、ツールデータベース８Ｄには、複数の種類の問題モデルひな形、既存問題モデル、変換プログラムひな形、逆変換プログラムひな型、既存変換プログラム、既存逆変換プログラムが含まれていてもよい。
【０２１６】
サービスの属する分野およびサービスの種類によって最適なツールおよびデータの組合せが異なるため、クリックされたボックスによって異なる組合せのツールおよびデータがツールアセンブラによって抽出される。なお、ツールアセンブラの機能は、開発部３によって実行されるモデリングツールおよびプログラミングツールに含まれていてもよい。
【０２１７】
図２４は、開発されるサービスに応じたツールおよびデータの選択の例を示したフローチャートである。以下では、図２４を参照しながら、処理を説明する。
【０２１８】
はじめに、ユーザは開発を行うサービスを選択する（ステップＳ２０１）。ステップＳ２０１では、サービスの属する分野を選択してもよいし、サービスの種類を選択してもよい。図２３の選択メニュー２２Ｍを使ってサービスの選択を行うことができるが、その他のインタフェースを使って選択を行ってもよい。そして、ツールアセンブラは、ユーザが選択したサービスに基づき、ツールデータベース８Ｄより、対応するツールおよびデータを抽出する（ステップＳ２０２）。
【０２１９】
次に、開発部３は、抽出されたツールおよびデータをユーザに提示する（ステップＳ２０３）。例えば、ユーザが使用するクライアントマシン２２のディスプレイに抽出されたツールおよびデータを、開発において使用可能なツールおよびデータとして表示することができる。ただし、その他の方法によって抽出されたツールおよびデータを提示してもよい。そして、ユーザは、提示されたツールおよびデータを使い、アプリケーションプログラムを設計する（ステップＳ２０４）。
【０２２０】
すなわち、開発部３が実行するモデリングツールは、複数の問題モデルひな形または複数の既存問題モデルのうちから、ユーザが開発するサービスに応じて、少なくともひとつの問題モデルひな形または少なくともひとつの既存問題モデルを選択し、ユーザに提示してもよい。また、開発部３が実行するプログラミングツールは、複数の変換プログラムひな型、複数の逆変換プログラムひな型、複数の既存変換プログラムまたは複数の既存逆変換プログラムのうちから、ユーザが開発するサービスに応じて、少なくともひとつの変換プログラムひな型、少なくともひとつの逆変換プログラムひな型、少なくともひとつの既存変換プログラムまたは少なくともひとつの既存逆変換プログラムを選択し、ユーザに提示してもよい。
【０２２１】
図２５は、サービス連携部の構成例を示している。図２５には、開発部３と、変換部４と、サービス連携部２００とを含む情報処理装置１の構成例が示されている。サービス連携部２００は、サービス登録部２１０と、マッチング部２０１と、加工ルール生成部２０２と、連携実行部２２０と、実績計算部２３０とを備えている。例えば、ユーザは、管理端末２２ＡＤを使ってサービス連携部２００にアクセスし、各種の設定を行うことができる。管理端末２２ＡＤの例としては、図１のクライアントマシン２２などの情報端末が挙げられる。
【０２２２】
ユーザは、サービス連携部２００のサービス登録部２１０にアクセスし、データの受け渡しを行うサービスの情報（サービスエントリとよぶ）を登録することができる。サービスエントリは、例えば、情報処理装置１の記憶部８に保存される。ただし、サービスエントリは、外部ストレージに保存されてもよく、サービスエントリが保存される場所については特に限定しない。
【０２２３】
サービスエントリは、例えば、下記のようなフィールドを含んでいる。
（ａ）サービスＩＤ
（ｂ）データ受入フラグ
（ｃ）データ供給フラグ
（ｄ）受入データ情報
（ｅ）供給データ情報
【０２２４】
上述の（ａ）のサービスＩＤは、サービスを識別する情報を含む。サービスＩＤとして、例えば、当該サービスを提供するＡＰプログラムの名称、当該ＡＰプログラムの少なくとも一部を実行するサーバのホスト名などを使うことができる。ただし、その他の形式のサービスＩＤを使うことができる。上述の（ｂ）のフラグは、該当するサービスが他サービスから提供されたデータまたは、それを加工したデータを使用するか否かを示す。サービスが、外部から受け入れるデータを受入データとよぶものとする。
【０２２５】
上述の（ｃ）のフラグは、該当するサービスが他のサービスにデータを供給するか否かを示す。上述の（ｄ）の受入データ情報は、該当するサービスが受け入れることが可能なデータの内容、形式（データ項目の組合せ）または条件の少なくともいずれかを示す。また、上述の（ｅ）の供給データ情報は、該当するサービスが他サービスに供給することが可能なデータ（供給データ）の内容、形式（データ項目の組合せ）または条件の少なくともいずれかを示す。（ｄ）および（ｅ）のフィールドにおける条件は、データの受け渡しの対価に関する情報を含んでいてもよい。対価に関する情報は、対価の上限額、対価の下限額、または対価の範囲の少なくともいずれかを含んでいてもよい。また、（ｄ）および（ｅ）のフィールドにおける条件は、データの受け渡しを行う期間に関する情報を含んでいてもよい。データの受け渡しを行う期間として、例えば、特定の時間帯、曜日、月、季節が指定されていてもよい。これにより、あるサービスが時刻によって異なるサービスとの間でデータの受け渡しを行うことが可能となる。
【０２２６】
他のサービスからデータを受け入れるサービスは、受入データを使って問題の条件を特定することができる。サービスは、例えば、受入データを使って問題の目的関数の係数を決定してもよい。また、サービスは、受入データを使って、問題の制約条件を特定してもよい。ここで述べた受入データの使用方法は例にしかすぎない。したがって、サービスはこれとは異なる用途に受入データを使ってもよい。
【０２２７】
あるサービスは、求めた問題の最適解を供給データとして、他のサービスに渡すことができる。例えば、第１のポートフォリオ最適化サービスと、第２のポートフォリオ最適化サービスが存在する場合を考える。後者のサービスで、複数の金融商品を組み合わせることにより、前者のサービスより大規模なポートフォリオが提案される場合、前者のサービスの求めた最適解を後者のサービスにおける問題の条件として使うことができる。
【０２２８】
サービスエントリは、さらに下記のようなフィールドを含んでいてもよい。
（ｆ）業界情報
（ｇ）地域情報
（ｈ）優先マッチング情報
（ｉ）マッチング回避情報
（ｊ）プライシング情報
【０２２９】
上述の（ｆ）のフィールドは、該当するサービスの属する分野または、提供するサービスの内容を含む。また、上述の（ｇ）のフィールドは、該当するサービスの対象となっている国、地方、市町村、地域の情報を含む。上述の（ｈ）のフィールドは、該当するサービスへデータを優先的に供給するサービスまたは、該当するサービスから供給されるデータを優先的に受け入れるサービスを特定する。また、上述の（ｉ）のフィールドは、該当するサービスとの間でデータの受け渡しを避けるべきサービスを特定する。例えば、法令もしくは契約により、特定のサービスとの間でデータの受け渡しを行うことができない場合、（ｉ）のフィールドを使うことができる。（ｈ）および（ｉ）のフィールドでは、サービスが（ｆ）または、（ｇ）のフィールドの形式で特定されていてもよい。また、（ｈ）および（ｉ）のフィールドは、（ａ）のサービスＩＤを含んでいてもよい。
【０２３０】
（ｊ）のフィールドは、データの受け渡しが有償で行われる場合に、データ受け渡しの対価を特定する情報を含む。対価は、例えば、時間単価で指定されていてもよいし、対価は、データのサイズまたは、データの件数によって指定されてもよい。また、対価は、従量課金制に限らず、その他の方法によって指定されてもよい。なお、サービス間におけるデータの受け渡しは無償で行われてもよく、データの受け渡しに係る対価の内容および対価の有無については、特に限定しない。
【０２３１】
上述のサービスエントリのフィールドは、一例にしかすぎない。したがって、サービスエントリは、必ず上述のフィールドのすべてを含んでいなくてもよい。また、サービスエントリは、その他のフィールドを含んでいてもよい。例えば、サービスエントリは、サービスの規模に関する情報を含むフィールドを有していてもよい。サービスの規模は、例えば、データ件数、サービスの加入者数、契約数、アクセス数、サーバの台数によって特定される。ただし、これとは異なる方法でサービスの規模が特定されてもよい。例えば、サービス間の連携において、連携先のサービスが一定の規模より大きいことを要件とすることができる。
【０２３２】
サービスエントリが登録されたサービスについては、他のサービスとの間でデータの受け渡しが可能となる。なお、サービスエントリの登録後も、ユーザは、管理端末２２ＡＤを介して、サービスエントリのフィールドの内容を更新することができる。
【０２３３】
図２５の例では、サービス登録部２１０によって、サービスエントリ２１１~２１６が登録されている。サービスエントリ２１１~２１６は、それぞれサービスＸ１、Ｘ２、Ｙ１、Ｚ１、Ｚ２、Ｙ２に対応している。なお、図２５では、各構成要素に対応するサービスの記号が記載されている。例えば、サービスＸ１は、サービスサーバ２２Ｘ１２が実行するプログラムおよびＡＰプログラム４３Ｘ１によって提供される。また、サービスＸ２は、サービスサーバ２２Ｘ２２が実行するプログラムおよびＡＰプログラム４３Ｘ２によって提供される。サービスＹ１は、サービスサーバ２２Ｙ１２が実行するプログラムおよびＡＰプログラム４３Ｙ１によって提供される。ただし、サービスサーバで実行されるプログラムを使わずにサービスを提供してもよい。
【０２３４】
変換部４のＡＰプログラム４３Ｘ１、４３Ｘ２、４３Ｙ１によって変換された問題の解は、（図２５に示されていない）量子関連コンピュータによって計算される。また、変換部４のＡＰプログラム４３Ｘ１、４３Ｘ２、４３Ｙ１は、量子関連コンピュータによって計算された解を、サービスで解かれる対象としている問題（第１の実施形態における現実問題８０）の解に変換する。
【０２３５】
開発部３の開発ツール４３Ｙ２は、サービスＹ２の開発に使われており、データ受け渡しの機能を含む。データ受け渡しの機能は、モデリングツールまたは、プログラミングツールの少なくともいずれかに実装されていてもよい。また、別にデータ受け渡しを行うツールが用意されていてもよい。サービスの開発者は、現在提供されている他のサービスの開発時における成果物または、現在提供されている他のサービスによって供給されるデータを使い、自分のサービスの開発を進めてもよい。このように、データ受け渡し機能によってマッチングされる対象は、稼働中のサービスに限らず、開発中のサービスを含んでいてもよい。
【０２３６】
サービスＺ１は、外部サービスサーバ２３Ｚ１が実行するプログラムによって提供される。また、サービスＺ２は、外部サービスサーバ２３Ｚ２が実行するプログラムによって提供される。サービスＺ１、Ｚ２は、サービスＸ１、Ｘ２、Ｙ１とは異なり、変換部４のＡＰプログラムによる問題および解の変換機能を利用しなくても提供が可能なサービスである。すなわち、サービスＺ１、Ｚ２は、量子関連コンピュータを使わずに提供されるサービスであるといえる。このように、データの受け渡しを行うサービスは、量子関連コンピュータを使って提供されるサービスに限られない。
【０２３７】
マッチング部２０１は、登録されたサービスエントリを参照し、データの受け渡しを行うことが可能なサービスの組合せを探索する。マッチング部２０１は、サービスエントリのフィールドの内容に基づき、サービス間におけるデータ受け渡しの可否を判定する。例えば、データ受け渡しのための条件が適合（マッチ）するサービスの組合せをデータ受け渡しが可能であると判定してもよい。例えば、マッチング部２０１は、あるサービスの（ｂ）データ受入フラグが“ＴＲＵＥ”である場合、（ｄ）受入データ情報に基づき、必要なデータを供給可能な他のサービスを探索する。また、マッチング部２０１は、あるサービスの（ｃ）データ供給フラグが“ＴＲＵＥ” である場合、（ｅ）供給データ情報に基づき、生成するデータを必要とする他のサービスを探索する。
【０２３８】
サービスエントリが（ｉ）マッチング回避情報を含む場合、当該フィールドで指定された条件を満たすサービスの組合せをマッチさせないようにしてもよい。また、サービスエントリの（ｄ）受入データ情報および（ｅ）供給データ情報に、対価の条件が含まれている場合、対価の条件がマッチしたときにサービス間の連携を成立させてもよい。
【０２３９】
加工ルール生成部２０２は、各サービスから供給されるデータを加工するルール（データ加工ルールとよぶ）を生成する。データ加工ルールは、供給されるデータの内容および形式、ならびにデータの受け入れ先のサービスが求めるデータの内容および形式に基づいて生成される。例えば、データの受け渡し時において、他のサービスからデータを受け入れるサービスにとって不要なデータ項目がある場合、不要なデータ項目を削除するルールを生成する。また、あるサービスが必要とするデータ項目のすべてを含むデータを供給することが可能なサービスが見つからない場合がある。このような場合、加工ルール生成部２０２は、複数のサービスから供給されるデータのデータ項目を組み合わせるルールを生成する。データ加工ルールは、例えば、情報処理装置１の記憶部８に保存される。ただし、データ加工ルールは、その他の場所に保存されてもよい。
【０２４０】
なお、データの受け渡し時においてサービスから供給されるデータを加工せずに他のサービスに渡すことが可能である場合、加工ルール生成部２０２は、データ加工ルールを生成しなくてもよい。また、情報処理装置１は、必ず加工ルール生成部２０２を備えていなくてもよい。例えば、情報処理装置１がデータ加工ルールを生成せず、ユーザまたは外部の情報処理システムから指定されたデータ加工ルールに基づくデータの変換が行われてもよい。
【０２４１】
なお、複数のサービスがデータ項目の同一の組合せを必要としている場合、それら複数のサービスは、同一のサービスが生成するデータまたは、サービスの同一の組合せから生成されたデータの供給を受けてもよい。すなわち、サービス間の連携において、１対１のサービスに限らず、１対多または多対多のサービスでデータ受け渡しの経路（データ経路とよぶ）が形成されてもよい。マッチング部２０１は、連携が可能なサービスの組合せに基づき、サービスグループを生成する。サービスグループは少なくともふたつのサービスを含む。サービスグループが生成されることにより、サービス間のデータ受け渡しのデータ経路が決まる。サービスグループは、データを供給するサービスおよびデータを受け入れるサービスを特定する情報、ならびにデータ加工ルールを含んでいてもよい。サービスグループのデータは、例えば、情報処理装置１の記憶部８に保存される。ただし、サービスグループが保存される場所については特に問わない。
【０２４２】
なお、ユーザは、管理端末２２ＡＤを操作し、サービスグループを定義してもよい。この場合、ユーザは、サービスエントリのフィールドの内容に関わらず、サービスグループの作成を行ってもよい。
【０２４３】
連携実行部２２０は、それぞれのサービスグループによって特定されるデータ経路およびデータ加工ルールにしたがい、それぞれのサービスグループに含まれるサービス間におけるデータの受け渡しを実現する。図２５の連携実行部２２０には、例えば３つのサービスグループ２２１、２２２、２２３が設定されている。サービスグループは、例えば、データを供給する少なくともひとつのサービス（データ供給サービス）と、データを受け入れる少なくともひとつのサービス（データ受入サービス）とを含む。サービスグループは、さらにデータ加工ルール、すなわちデータ供給サービスの供給データをデータ受入サービスの受入データに変換するための手順を含んでいてもよい。
【０２４４】
例えば、サービスグループ２２１は、データ供給サービスＸ１、Ｘ２とデータ受入サービスＹ１を含む。サービスグループ２２１の情報にしたがい、連携実行部２２０は、例えば、下記のように動作する。まず、連携実行部２２０は、ＡＰプログラム４３Ｘ１を介し、サービスＸ１から供給されるデータを取得する。また、連携実行部２２０は、ＡＰプログラム４３Ｘ２を介し、サービスＸ２から供給されるデータを取得する。次に、連携実行部２２０において、サービスＸ１から供給されるデータおよびサービスＸ２から供給されるデータは、サービスグループ２２１のデータ加工ルールにしたがって変換される。そして、変換されたデータは、ＡＰプログラム４３Ｙ１を介し、サービスＹ１に提供される。
【０２４５】
例えば、サービスＸ１が地域Ａを対象とするカーナビゲーションサービスであり、サービスＸ２が地域Ｂを対象とするカーナビゲーションサービスであり、サービスＹ１が地域Ａおよび地域Ｂで提供されるデジタルサイネージサービスである場合を想定する。この場合、上述のサービスグループ２２１によって特定されるデータ経路にしたがったデータの受け渡しは有用な可能性がある。
【０２４６】
例えば、サービスグループ２２２は、データ供給サービスＹ１とデータ受入サービスＺ１を含む。サービスグループ２２２の情報にしたがい、例えば、連携実行部２２０は、ＡＰプログラム４３Ｙ１を介し、サービスＹ１から供給されるデータを取得する。連携実行部２２０において、サービスＹ１から供給されるデータは、サービスグループ２２２のデータ加工ルールにしたがって変換される。変換されたデータは、外部サービスサーバ２３Ｚ１で実行されているサービスＺ１に提供される。
【０２４７】
例えば、サービスＹ１が、ゲノム解析サービスであり、サービスＺ１が疾病診断サービスまたは、医薬品開発支援サービスである場合、上述のサービスグループ２２２によって特定されるデータ経路にしたがったデータの受け渡しは有用な可能性がある。
【０２４８】
例えば、サービスグループ２２３は、データ供給サービスＺ２とデータ受入サービスＹ２を含む。サービスグループ２２３の情報にしたがい、例えば、連携実行部２２０は、外部サービスサーバ２３Ｚ２で実行されているサービスＺ２から供給されるデータを取得する。連携実行部２２０において、サービスＺ２から供給されるデータは、サービスグループ２２３のデータ加工ルールにしたがって変換される。変換されたデータは、サービスＹ２の開発に使われている開発ツール４３Ｙ２に渡される。
【０２４９】
例えば、サービスＺ２が稼働中の株価データ配信サービスであり、サービスＹ２が開発中のポートフォリオ最適化サービスである場合、開発ツール４３Ｙ２に提供されるデータを使って、試作中のプログラムのテストや検証を行うことができる。既にサービスＹ２と類似するサービスが提供されている場合、成果物を流用し、開発工数を削減することができる。なお、サービスＺ２は、金融資産の価格データ提供サービス、または、金融ポートフォリオを構成するより小規模なサブ金融ポートフォリオの最適化サービスであってもよい。
【０２５０】
上述のサービスグループ２２１、２２２、２２３は説明のための例にしかすぎない。したがって、データ受け渡しの対象となるサービスや、データ経路はこれとは異なっていてもよい。サービスやデータ受け渡しの具体例については、後述する。また、上述とは異なる方法によってサービス間のデータ経路およびデータ加工ルールを決定してもよい。
【０２５１】
実績計算部２３０は、サービス間におけるデータの受け渡しの実績値を求める。実績計算部２３０は、時間に基づく実績値を求めてもよい。例えば、サービス間におけるデータの受け渡しを開始してから経過した期間を計測してもよい。また、実績計算部２３０は、データ量に基づく実績値を求めてもよい。例えば、あるサービスが他のサービスへ供給したデータのサイズまたは、データの件数の計測を行ってもよい。また、あるサービスが他のサービスから受け入れたサイズまたは、データの件数の計測を行ってもよい。なお、情報処理装置１は、必ず実績計算部２３０を備えていなくてもよい。
【０２５２】
なお、サービスエントリに（ｊ）プライシング情報が含まれている場合、実績計算部２３０で求められた実績値に基づく対価の計算を行うことができる。対価の計算は、情報処理システム１０の実績計算部２３０が行ってもよい。また、インターネットバンキングシステム、金融機関のシステムなど、外部のシステムで、対価の請求または／および決済とともにデータの受け渡しに係る対価の計算が行われてもよい。
【０２５３】
図２６は、サービス間の連携において実行される処理の例を示したフローチャートである。以下では、図２６のフローチャートを参照しながら、処理を説明する。
【０２５４】
はじめに、サービス登録部２１０は、サービスエントリを登録する（ステップＳ２１１）。次に、マッチング部２０１は、マッチングするサービスエントリを探索する（ステップＳ２１２）。そして、マッチング部２０１は、マッチングしたサービスエントリの組合せに基づき、サービスグループを生成する（ステップＳ２１３）。次に、サービスグループによって特定されるデータ経路およびデータ加工ルールにしたがいサービス間におけるデータの受け渡しが行われる（ステップＳ２１４）。
【０２５５】
以下では、図２５を参照して、情報処理装置１の構成例をまとめる。情報処理装置１は、量子関連コンピュータを使った少なくともひとつのサービスを含む複数のサービス間の連携を実現する。連携を行う複数のサービスは、量子関連コンピュータを使わないサービスを少なくともひとつ含んでいてもよい。情報処理装置１は、変換部４と、サービス連携部２００とを含む。変換部４は、それぞれ少なくともいずれかのサービスを提供する少なくともひとつのアプリケーションプログラムを実行する。サービス連携部２００は、複数のサービス間におけるデータの受け渡しを行う。
【０２５６】
それぞれのアプリケーションプログラムは、少なくともひとつの変換プログラムと、少なくともひとつの逆変換プログラムとを含む。変換プログラムは、上述のサービスで解かれる対象としている問題を量子関連コンピュータへ入力可能なデータ形式に変換する。逆変換プログラムは、当該問題について計算された量子関連コンピュータの解を、問題の解に変換する。サービス連携部２００は、データを供給する少なくともひとつのデータ供給サービスと、データを受け入れる少なくともひとつのデータ受入サービスとを含むデータ経路を設定し、データ経路にしたがい、データ供給サービスとデータ受入サービスとの間におけるデータの受け渡しを行ってもよい。
【０２５７】
情報処理装置１は、開発部３（例えば、図２１または図２２）を備えていてもよい。開発部３は、それぞれ少なくともいずれかのサービスの開発を支援する、開発ツールを少なくともひとつ実行する。サービス連携部２００は、少なくともひとつのデータ供給サービスと、開発ツールを使って開発されている少なくともひとつサービスとを含むデータ経路を設定することにより、少なくともひとつのデータ供給サービスと、少なくともひとつの開発ツールとの間におけるデータの受け渡しを行ってもよい。
【０２５８】
サービス連携部２００は、サービスが供給することが可能なデータの内容または形式、サービスが受け入れることが可能なデータの内容または形式、サービスの業界、サービスの地域、サービスの規模、データの受け渡しの対価の少なくともいずれかに基づき、データ経路を設定してもよい。また、サービス連携部２００は、少なくともひとつのデータ供給サービスから供給されるデータを所定のルールにしたがって加工してから少なくともひとつのデータ受入サービスに渡してもよい。
【０２５９】
情報処理装置１は、複数のサービス間におけるデータの受け渡しの実績値を求める実績計算部２３０を備えていてもよい。実績値は、少なくともデータの受け渡しを開始してから経過した期間、データのサイズまたは、データの件数の少なくともいずれかを含んでいてもよい。また、実績計算部２３０は、実績値に基づき複数のサービス間におけるデータの受け渡しの対価を計算してもよい。
【０２６０】
以下では、本実施形態に係る情報処理システムの適用例について説明する。はじめに、サービス間連携の一つの具体例を示す。
【０２６１】
図２７は、カーナビゲーションサービスの例を示している。例えば、自動車で横浜市（出発地の一例）を出発し、さいたま市（目的地の一例）に向かう経路を探索する場合を考える。横浜市−さいたま市は、走行距離が約６０ｋｍ~８０ｋｍある。このため、ドライバーは、１時間以上の長いドライブをしなくてはならない。また、横浜市−さいたま市間は大規模な市街地が広がっており、非常に多くの走行経路の選択が存在しうる。さらに、道路状況はリアルタイムで変動するため、最適経路は、日時および条件によって大きく異なる。このような場合、一度コンピュータによって所要時間が最小となる経路が探索されたとしても、ドライバーの走行中に道路状況が変化し、探索された経路の所要時間が大きくなってしまうことがある。また、図２７の例のように、出発地と目的地間の距離が長く、なおかつ出発地と目的地間に市街地が広がっている場合、最適経路の探索に必要な計算量は非常に大きくなる。
【０２６２】
そこで、図２７のカーナビゲーションサービスでは、出発地−目的地間の全走行経路を一度の探索で確定させない。すなわち、全走行経路の一部の区間を進むごとに次の区間について最適な走行経路の探索が行う処理が繰り返し実行される。また、同じサービスを利用する複数車両の経路探索処理が特定のコンピュータ（例えば、サービスサーバ）に集中するのを避けるため、カーナビゲーションサービスを利用する複数の車両３０のそれぞれに搭載されたコンピュータの計算資源を使った経路探索を行う。
【０２６３】
すなわち、図２７のカーナビゲーションサービスを利用するそれぞれの車両３０には、図２１、図２２または図２５に示した変換部４（アプリケーションプログラムを実行する構成要素）および量子関連コンピュータまたはＰＵＢＯソルバが搭載されている。このように、サービスに対応するアプリケーションプログラムを実行する変換部４および量子関連コンピュータまたはＰＵＢＯソルバは、複数の箇所に分散されて配置されていてもよい。
【０２６４】
また、後述するように、複数の車両３０は、互いにデータ（例えば、位置、速度、経路の情報）の送受信を行い、他の車両から受信したデータを経路計算に利用することができる。（例えば、後述する無線通信装置３０Ｗが提供する）データ送受信機能は、図２１、図２２または図２５に示したサービス連携部２００に相当しているといえる。複数の車両３０は、互いに直接データ通信を行ってもよい。また、複数の車両３０は、サービスサーバ２２Ｃ１２を介したデータ通信を行ってもよい。サービスサーバ２２Ｃ１２を介して複数の車両３０間のデータ通信が行われる場合、サービスサーバ２２Ｃ１２がサービス連携部２００に相当しているともいえる。このように、サービス間連携は、異なる種類のサービスに限らず、同じ種類のサービス間（図２７の例では、それぞれの車両３０が利用しているカーナビゲーションサービス間）で行われてもよい。
【０２６５】
上述のように、図２１、図２２または図２５に示した情報処理装置１は、離れて配置された複数のコンピュータによって実現されていてもよい。この場合、複数のコンピュータは、サービスを提供する事業者によって管理されるコンピュータに限らず、図２７の車両３０のようなサービス利用者が使用するコンピュータを含んでいてもよい。
【０２６６】
例えば、車両３０のドライバーは、所要時間の短い経路を使って横浜市とさいたま市の間を走行することを希望しているものとする。このため、図２７の例では、所要時間の最小の経路が最適経路となる。ただし、所要時間の最小の経路は最適経路の一例にしかすぎない。例えば、走行距離が最小となる経路、ランニングコストが最小となる経路、または複数の条件を満たす経路が最適経路であってもよい。
【０２６７】
図２８には、カーナビゲーションサービスに加入している車両３０の構成例が示されている。車両３０には、車載コンピュータ３０Ｃと、無線通信装置３０Ｗと、センサ３０Ｓと、測位装置３０Ｐが搭載されている。車載コンピュータ３０Ｃは、制約なし多項式２値変数最適化（ＰＵＢＯ：Ｐｏｌｙｎｏｍｉａｌ  Ｕｎｃｏｎｓｔｒａｉｎｅｄ  Ｂｉｎａｒｙ  Ｏｐｔｉｍｉｚａｔｉｏｎ）を解くことが可能なコンピュータ（ＰＵＢＯソルバ）である。車載コンピュータ３０Ｃは、例えば、プログラムを実行するノイマン型コンピュータであってもよいし、ノイマン型コンピュータとＦＰＧＡ、ＡＳＩＣ、ＧＰＵなどのハードウェア回路の組み合わせであってもよい。また、車載コンピュータ３０Ｃは、他の種類のコンピュータであってもよい。例えば、車載コンピュータ３０Ｃは、量子関連コンピュータであってもよい。
【０２６８】
無線通信装置３０Ｗは、車載コンピュータ３０Ｃと電気的に接続されている。無線通信装置３０Ｗは、その他の無線通信装置とのデータ通信を実現する。無線通信装置３０Ｗは、各種の移動体通信規格を用いることができるが、使用される規格の種類については、特に問わない。車載コンピュータ３０Ｃは、無線通信装置３０Ｗを介してその他の車両に搭載された車載コンピュータや、サービスサーバ２２Ｃ１２とデータ通信を行うことができる。
【０２６９】
センサ３０Ｓは、車両３０の走行状況に関するデータ（走行データ）を計測する。走行データの例としては、時系列の速度データ、一定期間内における平均速度、ブレーキ操作の回数、アクセルの踏み込み回数、車両３０の周囲の画像またはこれらの組合せが挙げられる。ただし、走行データの内容については、特に限定しない。測位装置３０Ｐは、車両３０が走行している位置を計測する。測位装置３０Ｐは、衛星測位システム（例えば、ＧＰＳ）の受信機であってもよい。ただし、測位装置３０Ｐは、その他の測位システムによって車両３０が走行している位置の計測を行ってもよい。センサ３０Ｓが計測した走行データおよび測位装置３０Ｐが計測した位置情報は、無線通信装置３０Ｗを介してその他の車両に搭載された車載コンピュータに送信される。測位装置３０Ｐが計測した車両３０の位置情報を、サービスサーバ２２Ｃ１２に送信してもよい。これにより、サービスサーバ２２Ｃ１２は、カーナビゲーションサービスに加入する各車両の位置に関する情報を得ることができる。
【０２７０】
まず、車載コンピュータ３０Ｃは、車両３０の半径ｒの範囲内にある他の車両から走行データおよび位置情報を収集する。半径ｒとして、例えば５ｋｍ、１０ｋｍなどの値を使うことができる。ただし、半径ｒとして、どのような値を使ってもよい。そして、車載コンピュータ３０Ｃは、収集した走行データおよび位置情報に基づき、半径ｒの範囲内における経路を計算する。例えば、車載コンピュータ３０Ｃは、位置情報と道路データを組み合わせることによって、各車両が走行している道路を特定することができる。次に、車載コンピュータ３０Ｃは、他の車両が走行している道路の情報および走行データに基づいて、重み付きグラフを生成する。そして、車載コンピュータ３０Ｃは、重み付きグラフにおける最短経路問題を解くことによって、経路を求めることができる。ただし、この計算方法は一例にしかすぎない。したがって、これとは異なる方法を使って経路の計算を行ってもよい。
【０２７１】
なお、車載コンピュータ３０Ｃは、計算した経路をサービスサーバ２２Ｃ１２に送信してもよい。この場合、車載コンピュータ３０Ｃは、車両３０が前回計算した経路の終端付近まで走行したら、サービスサーバ２２Ｃ１２に現在の位置情報とともに、次の経路の計算が実行される旨を通知する。当該通知を受信したサービスサーバ２２Ｃ１２は、車両３０の半径ｒの範囲内にある他の車両に対し、位置情報および走行データの送信を求める指令を送信する。各車両から位置情報および走行データを受信した車載コンピュータ３０Ｃは、改めて半径ｒの範囲内における経路を計算することができる。
【０２７２】
上述の処理を繰り返し実行することにより、車両３０は、出発地から目的地までの経路を求めることができる。図２７のサービスでは、それぞれのイタレーションで出発地から目的地までの経路の一部を計算している。各イタレーションでは、半径ｒの範囲内における経路の計算が行われる直前に、他の車両の位置情報および走行データが収集されるため、道路状況の変化に伴う経路探索結果の品質低下を最小限に抑えることができる。また、図２７のサービスでは、当該サービスに加入する車両が増えるほど、経路探索の精度を高めることができる。
【０２７３】
ここでは、ドライバーによって運転される車両が加入するカーナビゲーションサービスの例について説明した。ただし、カーナビゲーションサービスに加入する車両は、ドライバーによって運転される車両でなくてもよい。例えば、自動運転を行う車両がカーナビゲーションサービスに加入してもよい。なお、図２７には、サービスサーバ２２Ｃ１２だけでなく、別のサービスサーバ２２Ｄ２２も示されている。サービスサーバ２２Ｄ２２は、図２７のカーナビゲーションサービスと連携するサービスに関する処理を実行する。
【０２７４】
図２９は、カーナビゲーションサービスにおいて実行される処理の例を示したフローチャートである。以下では、図２９のフローチャートを参照しながら、処理を説明する。
【０２７５】
はじめに、カーナビゲーションサービスに車両の出発地および目的地が入力される（ステップＳ２１１）。例えば、車両のドライバーは、車載コンピュータ３０Ｃのインタフェースを介して出発地および目的地を入力する。出発地および目的地の入力は、例えば、タッチパネルや音声認識装置を介して行うことができる。ただし、出発地と目的地の入力方法については、特に問わない。そして、車両の車載コンピュータ３０Ｃは、周辺を走行している他の車両から位置情報および走行データを収集する（ステップＳ２１２）。図２７の例では、経路探索をしている車両の半径ｒの範囲内を走行している車両から位置情報および走行データを収集した。ただし、車両から半径ｒの範囲の範囲は、当該車両の周辺を走行する他の車両を特定する方法の一例にしかすぎない。例えば、送信されるビーコン信号の強度がしきい値以上の車両から位置情報および走行データを収集してもよい。
【０２７６】
次に、車両の車載コンピュータ３０Ｃは、出発地から目的地までの経路の一部を計算する（ステップＳ２１３）。図２７の例では、半径ｒの範囲内における経路の計算が行われていたが、経路計算の対象となる範囲はこれとは異なっていてもよい。そして、車両は、計算された経路の終端付近まで走行する（ステップＳ２１４）。車両が、計算された経路の終端付近まで走行したら、車載コンピュータ３０Ｃは、目的地までの経路が計算済みであるか否かを判定する（ステップＳ２１５）。目的地までの経路が計算済みである場合（ステップＳ２１５のＹＥＳ）、フローチャートの処理は終了する。目的地までの経路が計算済みでない場合（ステップＳ２１５のＮＯ）、ステップＳ２１２の処理に戻り、車両の車載コンピュータ３０Ｃは、周辺を走行している他の車両から位置情報および走行データを収集する。
【０２７７】
すなわち、カーナビゲーションサービスでは、車両に搭載された量子関連コンピュータが、車両の周辺を走行している他の車両から収集した位置情報および走行データに基づき、出発地から目的地までの経路の一部が計算してもよい。
【０２７８】
以下では、サービス間連携の別の具体例について述べる。
【０２７９】
上述の図２７では、主に同じ種類のサービス間（カーナビゲーションサービスを利用する車両３０間）の連携の例を示した。図３０では、異なる地域で提供されるサービス間で行われる連携の例を示す。図３０には、サービス４０ＮＡ、４０ＮＢ、４０ＲＡ、４０ＳＢが示されている。サービス４０ＮＡは、例えば、地方Ａを対象としたカーナビゲーションサービスである。サービス４０ＮＢは、例えば、地方Ｂを対象としたカーナビゲーションサービスである。サービス４０ＲＡは、例えば、地方Ａを含む地域案内サービスである。サービス４０ＳＢは、例えば、地方Ｂを含むデジタルサイネージサービスである。各サービス間の太い矢印は、データ経路の例を示している。一方、細い矢印は、対価の支払いの例を示している。
【０２８０】
サービス４０ＮＢは、対象となる地域が異なっているものの、サービス４０ＮＡと同じカーナビゲーションサービスである。したがって、サービス４０ＮＢの実装を行う事業者は、サービス４０ＮＡの開発の成果物を流用し（太い矢印）、効率的な開発作業を行うことができる。開発の成果物の例としては、ソースコード、仕様書、変換プログラム、逆変換プログラム、問題モデル、制御スクリプトが挙げられるが、その他のデータが流用されてもよい。サービス４０ＮＢの実装を行う事業者は、サービス４０ＮＡを運用する事業者に開発の成果物の提供の対価を支払ってもよい（細い矢印）。このようなデータの受け渡しを行うことにより、サービス４０ＮＢの開発に要する工数を削減することが可能となる。
【０２８１】
サービス４０ＲＡは、サービス４０ＮＡから、各車両の経路データ、位置情報および走行データの提供を受けることができる（太い矢印）。サービス４０ＲＡを運用する事業者は、サービス４０ＮＡを運用する事業者にデータ提供の対価を支払ってもよい（細い矢印）。サービス４０ＲＡを運用する事業者は、データの提供を受けることにより、地域案内サービスの品質を向上させることができる。例えば、周辺の道路が混雑していないエリアにある飲食店、ショッピングセンターなどを優先的に案内することができる。これにより、地域案内サービスに加入するドライバーは、過度の渋滞に巻き込まれずに、食事や買い物などの用件を済ますことができる。
【０２８２】
サービス４０ＳＢは、サービス４０ＮＢから、各車両の経路データ、位置情報および走行データの提供を受けることができる（太い矢印）。サービス４０ＳＢを運用する事業者は、サービス４０ＮＢを提供する事業者にデータ提供の対価を支払ってもよい（細い矢印）。サービス４０ＳＢを運用する事業者は、地方Ｂの各道路を走行する車両の密度および車両のドライバーの属性（例えば、年齢）に基づき、地方Ｂに点在するデジタルサイネージに表示する内容を決定することができる。例えば、走行する車両の密度が高いエリアにあるデジタルサイネージには、複数の広告を表示し、走行する車両の密度が低いエリアにあるデジタルサイネージには、表示する広告の件数を減らすことができる。
【０２８３】
以下では、複数の分野に属する複数のサービスが連携している例について説明する。
【０２８４】
図３１は、連携するサービスの例を示している。図３１には、連携するサービスの例として、ゲノム解析サービス、疾病診断サービス、医薬品開発支援サービス、カーナビゲーションサービス、乗り換え案内サービス、地域案内サービス、デジタルサイネージサービス、ドローン配送サービス、トラック配送サービス、市場情報サービス、高頻度取引サービス、上場投資信託サービスが示されている。図３１に示された各サービスは、図示された矢印に限られず、任意のデータ経路を形成することができる。すなわち、図３１の情報処理システム１０では、任意のサービスの組合せを含むサービスグループを作成することができる。例えば、あるサービスが、同時に複数のサービスグループに含まれていてもよい。
【０２８５】
このうち、ゲノム解析サービス、疾病診断サービス、医薬品開発支援サービスは、医療分野に属する。また、カーナビゲーションサービス、乗り換え案内サービスは、交通分野に属する。地域案内サービス、デジタルサイネージサービスは、広告分野に属する。ドローン配送サービス、トラック配送サービスは、物流分野に属する。市場情報サービス、高頻度取引サービス、上場投資信託サービスは、金融分野に属する。このように、複数の分野に属する各種のサービスが連携してもよい。
【０２８６】
なお、図３１に示されたサービスは、連携可能なサービスの例にしかすぎない。必ず図３１のサービスのすべてが連携しなくてもよいし、図３１とは異なるサービスが連携していてもよい。また、図３１に示されたサービスの分類方法は一例にしかすぎない。したがって、これとは異なる方法によってサービスを分類してもよい。例えば、ひとつのサービスが同時に複数のサービスに分類されてもよい。
【０２８７】
本実施形態に係る情報処理システムを使うことにより、各分野に対応したプログラムの開発が容易になり、量子関連コンピュータの活用が促進される。また、本実施形態に係る情報処理システムを使うことにより、実世界におけるシステム間の依存関係および影響関係を反映したプログラムの開発、サービスの構築およびサービスの運用を行うことができる。これは、量子関連コンピュータを利用したサービスの品質および性能の向上、ならびに、ユーザの利便性を向上に寄与する。
【０２８８】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。 
【符号の説明】
【０２８９】
１  情報処理装置
１Ａ、１Ｂ  プラットフォーム
２  処理回路
３  開発部
３Ａ、３Ｂ  開発ツール
３Ａ１、３Ａ２、３Ｂ１、３Ｂ２  ＡＰ開発ツール
４  変換部
５  制御部
６  管理部
７  通信回路
８、１５  記憶部
８Ｄ  ツールデータベース
１０  情報処理システム
１１  計算エンジン部
１１ａ、１１ｂ、１１ｃ  量子関連コンピュータ
１１ｄ  ＰＵＢＯソルバ
１２  制御回路
１３  通信回路
１４  演算回路
２０、２１  ネットワーク
２２  クライアントマシン
２２Ａ１１、２２Ａ２１、２２Ｂ１１、２２Ｂ２１、２２Ｙ２１  開発用端末
２２Ａ１２、２２Ａ２２、２２Ｂ１２、２２Ｂ２２、２２Ｃ１２、２２Ｄ２２、２２Ｘ１２、２２Ｘ２２、２２Ｙ１２  サービスサーバ
２２ＡＤ  管理端末
２２Ｍ  選択メニュー
２３  外部情報処理システム
２３Ｚ１、２３Ｚ２  外部サービスサーバ
２５  有向グラフ
２６、２７、２８、５３，５６、５７、５８  テーブル
３０  車両
３０Ｃ  車載コンピュータ
３０Ｐ  測位装置
３０Ｓ  センサ
３０Ｗ  無線通信装置
３１  レベル１（上位）モデリングツール
３１ａ  Ｌ１（レベル１）変換プログラム
３１ｂ  Ｌ１（レベル１）逆変換プログラム
３１ｃ  レベル１（上位）モデル
３２  レベル２（中位）モデリングツール
３２ａ  Ｌ２（レベル２）変換プログラム
３２ｂ  Ｌ２（レベル２）逆変換プログラム
３２ｃ  レベル２（中位）モデル
３３  レベル３（下位）モデリングツール
３３ａ  Ｌ３（レベル３）変換プログラム
３３ｂ  Ｌ３（レベル３）逆変換プログラム
３３ｃ  レベル３（下位）モデル
３４  プログラミングツール
３５  設計ツール
４０ＮＡ，４０ＮＢ、４０ＲＡ、４０ＳＢ  サービス
４１  変換プログラム
４２  逆変換プログラム
４３Ａ１、４３Ａ２、４３Ｂ１、４３Ｂ２、４３Ｘ１、４３Ｘ２、４３Ｙ１  アプリケーションプログラム（ＡＰプログラム）
５０  制御スクリプト生成ツール
５１  制御スクリプト
５２  グラフ
５４  問題タイプデータ
５５ａ  パターンセット
５５ｂ  マシンタイプデータ
６０  問題
７０  判定
８０  現実問題
８１  入力データ
８２  現実問題の解
９０  問題モデル
９１  表現
９２  機能
９３  変数
９４  結果
９５  条件
９６  解
１００  コンピュータ
１０１  プロセッサ
１０２  入力装置
１０３  表示装置
１０４  通信装置
１０５  記憶装置
１０６  バス
２００  サービス連携部
２０１  マッチング部
２０２  加工ルール生成部
２１０  サービス登録部
２１１、２１２、２１３、２１４、２１５、２１６  サービスエントリ
２２０  連携実行部
２２１、２２２、２２３  サービスグループ
２３０  実績計算部
【図１】
2020166802.tif 000004
【図２】
2020166802.tif 000005
【図３】
2020166802.tif 000006
【図４】
2020166802.tif 000007
【図５】
2020166802.tif 000008
【図６】
2020166802.tif 000009
【図７】
2020166802.tif 000010
【図８】
2020166802.tif 000011
【図９】
2020166802.tif 000012
【図１０】
2020166802.tif 000013
【図１１】
2020166802.tif 000014
【図１２】
2020166802.tif 000015
【図１３】
2020166802.tif 000016
【図１４】
2020166802.tif 000017
【図１５】
2020166802.tif 000018
【図１６】
2020166802.tif 000019
【図１７】
2020166802.tif 000020
【図１８】
2020166802.tif 000021
【図１９】
2020166802.tif 000022
【図２０】
2020166802.tif 000023
【図２１】
2020166802.tif 000024
【図２２】
2020166802.tif 000025
【図２３】
2020166802.tif 000026
【図２４】
2020166802.tif 000027
【図２５】
2020166802.tif 000028
【図２６】
2020166802.tif 000029
【図２７】
2020166802.tif 000030
【図２８】
2020166802.tif 000031
【図２９】
2020166802.tif 000032
【図３０】
2020166802.tif 000033
【図３１】
2020166802.tif 000034