(57)【特許請求の範囲】
【請求項１】
コンピュータに、
複数の計算資源に対して、データを分散配置する際に、入力データより、前記複数の計算資源の数に対応する数の複数のデータを取得し、
取得した前記複数のデータそれぞれについて、前記複数の計算資源に保存されたデータ各々に対し算出される類似度から、前記複数の計算資源ごとの類似性指標を生成し、
前記複数のデータそれぞれに対する前記複数の計算資源の前記類似性指標に基づき、各割り当てに対応する前記類似性指標が小さい方向に安定となるマッチング方式により前記複数の計算資源各々へ割り当て、
前記割り当てに基づき、取得した前記複数のデータを前記複数の計算資源に配置する
処理を実行させることを特徴とするデータ配置プログラム。
【請求項２】
前記割り当てる処理は、第１のデータと複数の計算資源との前記類似性指標に基づき、第１のデータに対して優先される第１の計算資源を特定し、前記第１の計算資源と複数のデータとの類似性指標において、前記第１の計算資源に既に割り当てられている第２のデータに対する類似性指標よりも、前記第１のデータに対する類似性指標の方が小さい場合に、前記第１の計算資源に前記第１のデータを割り当てることを特徴とする請求項１に記載のデータ配置プログラム。
【請求項３】
前記複数の計算資源に配置されたデータの数のうち最小の数を特定し、特定した前記最小の数のデータを各計算資源に残し、各計算資源に配置された前記最小の数を超える残りのデータの配置先を未定に設定する処理を更に実行することを特徴とする請求項１または２に記載のデータ配置プログラム。
【請求項４】
前記取得する処理は、前記入力データを複数のクラスタに分類し、分類した複数のクラスタからクラスタを選択し、選択したクラスタに属するデータから前記複数の計算資源の数に対応する数の複数のデータを取得することを特徴とする請求項１、２または３に記載のデータ配置プログラム。
【請求項５】
コンピュータが実行するデータ配置方法であって、
複数の計算資源に対して、データを分散配置する際に、入力データより、前記複数の計算資源の数に対応する数の複数のデータを取得し、
取得した前記複数のデータそれぞれについて、前記複数の計算資源に保存されたデータ各々に対し算出される類似度から、前記複数の計算資源ごとの類似性指標を生成し、
前記複数のデータそれぞれに対する前記複数の計算資源の前記類似性指標に基づき、各割り当てに対応する前記類似性指標が小さい方向に安定となるマッチング方式により前記複数の計算資源各々へ割り当て、
前記割り当てに基づき、取得した前記複数のデータを前記複数の計算資源に配置する
処理を実行することを特徴とするデータ配置方法。
【請求項６】
複数の計算資源に対して、データを分散配置する際に、入力データより、前記複数の計算資源の数に対応する数の複数のデータを取得する選択部と、
前記複数のデータそれぞれについて、前記複数の計算資源に保存されたデータ各々に対し算出される類似度から、前記複数の計算資源ごとの類似性指標を生成し、前記複数のデータそれぞれに対する前記複数の計算資源の前記類似性指標に基づき、各割り当てに対応する前記類似性指標が小さい方向に安定となるマッチング方式により前記複数の計算資源各々へ割り当てるマッチング計算部と、
前記割り当てに基づき、取得した前記複数のデータを前記複数の計算資源に配置する配置処理部と
を有することを特徴とするデータ配置装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ配置プログラム等に関する。
【背景技術】
【０００２】
画像や音声、センサーデータ等の非構造データを用いた照合処理や類似性の計算は時間がかかるものが多い。このため、複数の計算資源にレコードデータを割り振り、処理を分散させることで、照合処理を効率化する従来技術がある。
【０００３】
図３１は、従来技術の一例を説明するための図である。例えば、あるクエリを用いて、レコードデータを照合する場合に、処理時間がクエリに依存せず、レコードデータのみに依存する場合がある。例えば、音楽ファイルの中である周波数成分が何秒であるかをカウントする場合には、処理時間は音楽の長さに依存する。このような場合には、混合整数計画問題を解き、処理がほぼ均等になるように、レコードデータを各計算資源に配布すればよい。
【０００４】
図３１に示す例では、レコードデータ１０ａ〜１０ｊが存在し、各レコードデータの長さをレコードデータの処理に要する処理時間とする。例えば、レコードデータ１０ａ，１０ｂ，１０ｊを第１サーバに配布し、レコードデータ１０ｃ，１０ｅ，１０ｄ，１０ｇを第２サーバに配布し、レコードデータ１０ｉ，１０ｆ，１０ｈを第３サーバに配布する。このように、レコードデータ１０ａ〜１０ｊを配布することで、各処理時間を均等にすることができる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００３−２２３３４４号公報
【特許文献２】特表２００２−５１３９７５号公報
【特許文献３】特開２００８−２１２９５号公報
【特許文献４】国際公開第２０１３／１３６５２８号
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、上述した従来技術では、複数の計算資源へのデータの配置を、各計算資源に割り振るデータをほぼ均等にしつつ、同一の計算資源に配置するデータの類似度を大きくならないようにすることができないという問題がある。
【０００７】
例えば、処理時間がレコードデータのみに依存せず、クエリデータとレコードデータとのデータ対により、処理時間が変動する場合がある。また、データ対が似ているほど処理時間がかかることが多くある。このような場合には、従来技術により、各レコードデータを各計算資源に配布しても、処理を効率的に行うことは難しい。
【０００８】
１つの側面では、複数の計算資源へのデータの配置を、各計算資源に割り振るデータをほぼ均等にしつつ、同一の計算資源に配置するデータの類似度を大きくならないデータ配置プログラム、データ配置方法およびデータ配置装置を提供することを目的とする。
【課題を解決するための手段】
【０００９】
第１の案では、コンピュータに下記の処理を実行させる。コンピュータに、データを分散配置する際に、入力データより、複数の計算資源の数に対応する数の複数のデータを取得する処理を実行させる。コンピュータに、取得した複数のデータそれぞれについて、複数の計算資源に保存されたデータ各々に対し算出される類似度から、複数の計算資源ごとの類似性指標を生成する処理を実行させる。コンピュータに、複数のデータそれぞれに対する複数の計算資源の類似性指標に基づき、各割り当てに対応する類似性指標が小さい方向に安定となるマッチング方式により複数の計算資源各々へ割り当てる処理を実行させる。コンピュータに、割り当てに基づき、取得した複数のデータを複数の計算資源に配置する処理を実行させる。
【発明の効果】
【００１０】
本発明の１実施態様によれば、複数の計算資源へのデータの配置を、各計算資源に割り振るデータをほぼ均等にしつつ、同一の計算資源に配置するデータの類似度を大きくならないようにすることができる。
【図面の簡単な説明】
【００１１】
【図１】図１は、本実施例に係るデータ配置装置の処理を説明するための図（１）である。
【図２】図２は、本実施例に係るデータ配置装置の処理を説明するための図（２）である。
【図３】図３は、本実施例に係るデータ配置装置の処理を説明するための図（３）である。
【図４】図４は、本実施例に係るデータ配置装置の処理を説明するための図（４）である。
【図５】図５は、本実施例に係るデータ配置装置の処理を説明するための図（５）である。
【図６】図６は、本実施例に係るデータ配置装置の処理を説明するための図（６）である。
【図７】図７は、本実施例に係るデータ配置装置の処理を説明するための図（７）である。
【図８】図８は、本実施例に係るデータ配置装置の処理を説明するための図（８）である。
【図９】図９は、本実施例に係るデータ配置装置の処理を説明するための図（９）である。
【図１０】図１０は、本実施例に係るデータ配置装置の処理を説明するための図（１０）である。
【図１１】図１１は、本実施例に係るデータ配置装置の処理を説明するための図（１１）である。
【図１２】図１２は、安定マッチングと不安定マッチングとを説明するための図である。
【図１３】図１３は、ゲール−シャプレイのアルゴリズムの処理手順の一例を示す図である。
【図１４】図１４は、本実施例に係るデータ配置装置の構成を示す機能ブロック図である。
【図１５】図１５は、レコードデータのデータ構造の一例を示す図である。
【図１６】図１６は、配置先情報のデータ構造の一例を示す図である。
【図１７】図１７は、本実施例に係るデータ配置装置の処理手順の一例を示すフローチャートである。
【図１８】図１８は、配置情報の上書き処理の処理手順を示すフローチャートである。
【図１９】図１９は、候補データ選択処理の処理手順を示すフローチャート（１）である。
【図２０】図２０は、マッチング計算処理の処理手順を示すフローチャート（１）である。
【図２１】図２１は、行列Ｄの計算の処理手順を示すフローチャート（１）である。
【図２２】図２２は、候補データ選択処理の処理手順を示すフローチャート（２）である。
【図２３】図２３は、候補データ選択処理の処理手順を示すフローチャート（３）である。
【図２４】図２４は、候補データ選択処理の処理手順を示すフローチャート（４）である。
【図２５】図２５は、行列Ｄの計算の処理手順を示すフローチャート（２）である。
【図２６】図２６は、行列Ｄの計算の処理手順を示すフローチャート（３）である。
【図２７】図２７は、マッチング計算処理の処理手順を示すフローチャート（２）である。
【図２８】図２８は、マッチング計算処理の処理手順を示すフローチャート（３）である。
【図２９】図２９は、マッチング計算処理の処理手順を示すフローチャート（４）である。
【図３０】図３０は、データ配置プログラムを実行するコンピュータの一例を示す図である。
【図３１】図３１は、従来技術の一例を説明するための図である。
【発明を実施するための形態】
【００１２】
以下に、本願の開示するデータ配置プログラム、データ配置方法およびデータ配置装置の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
【実施例】
【００１３】
本実施例に係るデータ配置装置の処理の一例について説明する。図１〜図１１は、本実施例に係るデータ配置装置の処理を説明するための図である。データ配置装置は、同一の計算資源に類似する複数のデータを割り当てないように、複数のデータと各計算資源に格納されたデータとの間の類似性指標に基づき、複数のデータおよび複数の計算資源に対して安定マッチングを行う。
【００１４】
図１について説明する。レコードデータ１１０に含まれる複数のデータを、計算資源１〜４に追加する場合の動作を示す。一例として、追加するデータをビット列とする。データ間の類似度を、ビット列間のハミング距離にマイナスを掛けたものとする。ハミング距離は、ビット列でビットが違うものの数を示す。例えば、ビット列「１０１」とビット列「１１１」との類似度は、−１となる。
【００１５】
図２について説明する。データ配置装置は、レコードデータ１１０から、データ「１００，０００，１１１，０１０」を取り出す。データ配置装置は、計算資源１〜４に配置されているデータがないので、そのままデータを計算資源１〜４に追加する。すなわち、データ配置装置は、データ「１００」を計算資源１に追加する。データ配置装置は、データ「０００」を計算資源２に追加する。データ配置装置は、データ「１１１」を計算資源３に追加する。データ配置装置は、データ「０１０」を計算資源４に追加する。
【００１６】
図３について説明する。データ配置装置は、レコードデータ１１０から、データ「１１０，０１０，１０１，００１」を取り出す。データ配置装置は、かかるデータ「１１０，０１０，１０１，００１」を何れの計算資源に割り当てるのかを以下の処理を実行することで決める。
【００１７】
図４について説明する。データ配置装置は、図３で取り出したデータ「１１０，０１０，１０１，００１」それぞれと、計算資源１〜４にあるデータの集合それぞれとの類似度を計算する。データ配置装置は、データ「１１０」とデータ「１００，０００，１１１，０１０」との類似度を計算すると、それぞれの類似度は「−１，−２，−１，−１」となる。データ配置装置は、データ「０１０」とデータ「１００，０００，１１１，０１０」との類似度を計算すると、それぞれの類似度は「−２，−１，−２，０」となる。
【００１８】
データ配置装置は、データ「１０１」とデータ「１００，０００，１１１，０１０」との類似度を計算すると、それぞれの類似度は「−１，−２，−１，−３」となる。データ配置装置は、データ「００１」とデータ「１００，０００，１１１，０１０」との類似度を計算すると、それぞれの類似度は「−３，−２，−１，−１」となる。
【００１９】
以下の説明において、適宜、データ配置装置がレコードデータ１１０から取り出したデータのうち、１番目のデータを第１候補データ、２番目のデータを第２候補データ、３番目のデータを第３候補データ、４番目のデータを第４候補データと表記する。図４に示す例では、「１１０」が第１候補データ、「０１０」が第２候補データ、「１０１」が第３候補データ、「００１」が第４候補データとなる。
【００２０】
図５について説明する。データ配置装置は、図４で説明した類似度の計算を実行することで、行列５０を得る。行列５０の１行目は、第１候補データと各計算資源１〜４に格納されたデータ「１００，０００，１１１，０１０」との類似度をそれぞれ示す。行列５０の２行目は、第２候補データと各計算資源１〜４に格納されたデータ「１００，０００，１１１，０１０」との類似度をそれぞれ示す。行列５０の３行目は、第３候補データと各計算資源１〜４に格納されたデータ「１００，０００，１１１，０１０」との類似度をそれぞれ示す。行列５０の４行目は、第４候補データと各計算資源１〜４に格納されたデータ「１００，０００，１１１，０１０」との類似度をそれぞれ示す。
【００２１】
図６について説明する。データ配置装置は、行列５０の行と列とをそれぞれ別々にソートして順位づけをすることで、第１〜第４候補データの希望リスト５０ａと、各計算資源１〜４の希望リスト５０ｂとを作成する。
【００２２】
データ配置装置は、行列５０の行毎に順位付けを行うことで、第１〜第４候補データの希望リストを生成する。データ配置装置は、類似するデータを含んでいない計算資源が優先されるように、第１〜第４候補データの希望リストを生成する。
【００２３】
ここでは一例として、行列５０の３行目を基にして、第３候補データの希望リスト５１を生成する処理について説明する。行列５０の３行目は「−１，−２，−１，−３」となる。このため、第３候補データと、各計算資源に格納されたデータとについて、類似度の低い順に並べると、計算資源４、計算資源２、計算資源１、計算資源３となる。ただし、計算資源１と計算資源３との類似度は等しいため、計算資源１と計算資源３との順序は逆でもよい。データ配置装置は、第３候補データの希望リストを「４，２，１，３」とする。データ配置装置は、第１，２，４候補データについても同様の処理を行うことで、希望リスト５０ａを作成する。
【００２４】
データ配置装置は、行列５０の列毎に順位付けを行うことで、計算資源１〜４の希望リストを生成する。データ配置装置は、類似していない候補データが優先されるように、計算資源１〜４の希望リストを生成する。
【００２５】
ここでは一例として、行列５０の２列目を基にして、計算資源２の希望リスト５２を生成する処理について説明する。行列５０の２列目は「−２，−１，−２，−２」となる。このため、計算資源２に格納されたデータと、第１〜第４候補データとについて、類似度の低い順に並べると、第１候補データ、第３候補データ、第４候補データ、第２候補データとなる。ただし、第１候補データ、第３候補データ、第４候補データの類似度は等しいため、１番目から３番目までに第１候補データ、第３候補データ、第４候補データが含まれれば、どのように並べてもよい。データ配置装置は、計算資源２の希望リストを「１，３，４，２」とする。データ配置措置は、計算資源１、３，４についても同様の処理を行うことで、希望リスト５０ｂを作成する。
【００２６】
図７について説明する。データ配置装置は、図６に示した希望リスト５０ａと希望リスト５０ｂとを安定マッチング関数に入力することで、マッチング結果５５を得る。マッチング結果５５によれば、第１候補データを計算資源２に追加し、第２候補データを計算資源３に追加し、第３候補データを計算資源４に追加し、第４候補データを計算資源１に追加することを示す。
【００２７】
データ配置装置は、マッチング結果５５に基づき、第１候補データを計算資源２に追加し、第２候補データを計算資源３に追加し、第３候補データを計算資源４に追加し、第４候補データを計算資源１に追加する。
【００２８】
図８について説明する。データ配置装置は、レコードデータ１１０から、データ「１０１，００１，１１０，１１０」を取り出す。データ配置装置は、かかるデータ「１０１，００１，１１０，１１０」を何れの計算資源に割り当てるのかを以下の処理を実行することで決める。図８に示す例では、「１０１」が第１候補データ、「００１」が第２候補データ、「１１０」が第３候補データ、「１１０」が第４候補データとなる。
【００２９】
図９について説明する。データ配置装置は、図８で取り出した第１〜第４候補データそれぞれと、計算資源１〜４にあるデータの集合それぞれとの類似度を計算する。データ配置装置は、計算資源に複数のデータが存在する場合には、候補データと複数のデータとの類似度のうち、最大値を求める。すなわち、最も似ているデータとの類似度を求める。
【００３０】
例えば、データ配置装置は、第１候補データと、計算資源１〜４との類似度を計算すると、それぞれの類似度は「−１，−２，−１，０」となる。第２候補データと、計算資源１〜４との類似度を計算すると、それぞれの類似度は「−１，−１，−２，−１」となる。第３候補データと、計算資源１〜４との類似度を計算すると、それぞれの類似度は「−１，０，−１，−１」となる。第４候補データと、計算資源１〜４との類似度を計算すると、それぞれの類似度は「−１，０，−１，−１」となる。
【００３１】
図１０について説明する。データ配置装置は、図９で説明した類似度の計算を実行することで、行列６０を得る。行列６０の１行目は、第１候補データと計算資源１〜４との類似度をそれぞれ示す。行列６０の２行目は、第２候補データと計算資源１〜４との類似度をそれぞれ示す。行列６０の３行目は、第３候補データと計算資源１〜４との類似度をそれぞれ示す。行列６０の４行目は、第４候補データと計算資源１〜４との類似度をそれぞれ示す。
【００３２】
データ配置装置は、行列６０の行と列とをそれぞれ別々にソートして順位づけをすることで、第１〜第４候補データの希望リスト６０ａと、各計算資源１〜４の希望リスト６０ｂとを作成する。希望リスト６０ａ，６０ｂを作成する処理は、図６に示した希望リスト５０ａ，５０ｂを作成する処理と同様である。
【００３３】
図１１について説明する。データ配置装置は、図１０に示した希望リスト６０ａと希望リスト６０ｂとを安定マッチング関数に入力することで、マッチング結果６５を得る。マッチング結果６５によれば、第１候補データを計算資源２に追加し、第２候補データを計算資源３に追加し、第３候補データを計算資源１に追加し、第４候補データを計算資源４に追加することを示す。
【００３４】
データ配置装置は、マッチング結果６５に基づき、第１候補データを計算資源２に追加し、第２候補データを計算資源３に追加し、第３候補データを計算資源１に追加し、第４候補データを計算資源４に追加する。データ追加装置は、レコードデータ１１０にデータが無くなるまで、上記処理を繰り返し実行する。
【００３５】
データ配置処理は、図１〜図１１に示した処理を実行することで、複数の計算資源へのデータの配列を、各計算資源に割り振るデータをほぼ均等にしつつ、同一の計算資源に配置するデータの類似度を大きくならないようにすることができる。
【００３６】
次に、本実施例のデータ配置装置が利用する安定マッチング問題（Stable  marriage  problem,  Stable  matching  problem）の一例について説明する。安定マッチング問題は、男Ｎ人と女Ｎ人がいて、各男は女の希望リストを持ち、各女は男の希望リストを持っている場合に、男女の間の安定なペア達を作る問題である。ここで、男女間のマッチングが与えられた場合に、現在のペアを組んでいる相手よりも互いに好ましい相手がいる場合、彼らは駆け落ちをしてしまう。そのようなペアをブロッキングペアと呼ぶ。このブロッキングペアの存在するマッチングを不安定マッチングと呼び、ブロッキングペアの存在しないマッチングを安定マッチングと呼ぶ。
【００３７】
図１２は、安定マッチングと不安定マッチングとを説明するための図である。図１２では、男４人と女４人の場合の安定マッチングと不安定マッチングとを示す。４人の男をそれぞれ１，２，３，４とし、４人の女をそれぞれａ，ｂ，ｃ，ｄとする。男１，２，３，４は、女ａ，ｂ，ｃ，ｄに対する希望リストを持つ。例えば、男２の希望は、ｃ，ｂ，ａ，ｄの順となる。例えば、女ｂの希望は、２，１，４，３となる。
【００３８】
グループ２０ａでは、ペアはそれぞれ（１，ａ）、（２，ｃ）、（３，ｂ）、（４、ｄ）となる。グループ２０ａには、ブロッキングペアが存在しないので、グループ２０ａの各ペアは、安定なマッチングと言える。
【００３９】
これに対して、グループ２０ｂでは、ペアはそれぞれ（１，ａ）、（２，ｃ）、（３，ｄ）、（４，ｂ）となる。グループ２０ｂには、ブロッキングペア（４，ｄ）が存在する。男４は女ｂより女ｄが好ましく、女ｄは男３より男４が好ましいためである。このため、グループ２０ｂの各ペアは、不安定なマッチングと言える。
【００４０】
次に、図１２のグループ２０ａに示した安定マッチングを得るためのゲール−シャプレイ（Gale-Shapley）のアルゴリズムについて説明する。図１３は、ゲール−シャプレイのアルゴリズムの処理手順の一例を示す図である。図１３の処理を実行することで、安定マッチングを得ることができる。以下の説明では、ゲール−シャプレイのアルゴリズムを適宜、ＧＳと表記する。
【００４１】
図１３に示すように、ＧＳは、ｎ人の男性とｎ人の女性、および、各人の異性全員に対する希望リストを取得する（ステップＳ１０）。ＧＳは、独身の男性ｈが存在するか否かを判定する（ステップＳ１１）。独身の男性ｈが存在しない場合には（ステップＳ１１，Ｎｏ）、現在婚約しているペアの集合を安定マッチングとして出力する（ステップＳ１２）。
【００４２】
一方、ＧＳは、独身の男性ｈが存在する場合には（ステップＳ１１，Ｙｅｓ）、男性ｈがまだプロポーズしていない女性のなかで、希望リストの最高位の女性ｄにプロポーズさせる（ステップＳ１３）。ＧＳは、プロポーズされた女性ｄが独身であるか否かを判定する（ステップＳ１４）。
【００４３】
ＧＳは、女性ｄが独身である場合には（ステップＳ１４，Ｙｅｓ）、女性ｄと男性ｈとを婚約させ（ステップＳ１５）、ステップＳ１１に移行する。一方、ＧＳは、女性ｄが独身でない場合には（ステップＳ１４，Ｎｏ）、ステップＳ１６に移行する。
【００４４】
ステップＳ１６において、女性ｄの希望リストにおいて、希望順位が男性ｈ’＞男性ｈならば、女性ｄは男性ｈからのプロポーズを断る。希望順位が男性ｈ＞ｈ’ならば、女性は男性ｈ’との婚約を解消し、男性ｈと婚約する。ＧＳは、ステップＳ１６の処理を終了した後に、ステップＳ１１に移行する。
【００４５】
次に、ゲール−シャプレイのアルゴリズムを拡張した拡張ゲール−シャプレイについて説明する。以下の説明では、拡張ゲール−シャプレイを拡張ＧＳと表記する。拡張ＧＳは、アルゴリズムの途中で安定マッチングに至らないペア候補を希望リストから削除する。具体的に、拡張ＧＳでは、男性ｈと女性ｄとを婚約させた場合に、女性ｄの希望リストから、男性ｈよりも優先順位の低い男性を削除する点でＧＳと相違する。このような処理を追加することで、ＧＳよりも効率的に安定マッチングを実行することができる。
【００４６】
次に、安定マッチング問題の拡張について説明する。古典的な安定マッチング問題では、次の事項（１）〜（３）を仮定している。事項（１）男女の数が同じ、事項（２）全ての希望リストは同順位を許容しない、事項（３）全ての男女は全ての異性の順位付けを行う。すなわち、独身を許容しない。このため、以下に示すように、事項（１）〜（３）の仮定を緩めることで問題を一般化することができる。
【００４７】
事項（１）なし、事項（２）あり、事項（３）ありの場合について説明する。この場合には、安定マッチング問題を、拡張ＧＳを用いて解く。男女の人数差の人間は独身となる。
【００４８】
事項（１）あり、事項（２）なし、事項（３）ありの場合について説明する。この場合には、同順位になっているものを、無理やり順位をつけることで、古典的安定マッチング問題となる。同順位になっているものに対して順位付けを行った後に、拡張ＧＳを用いて解く。
【００４９】
事項（１）あり、事項（２）あり、事項（３）なしの場合について説明する。この場合には、不完全リストの安定マッチング問題となる。この不安定マッチング問題は拡張ＧＳを用いて解く。このとき、独身となる人が出てくる。
【００５０】
事項（１）あり、事項（２）なし、事項（３）なしの場合について説明する。この場合には、同順位になっているものに対して順位付けを行った後に、拡張ＧＳを用いて解く。希望リストの順位の付け方により、独身となるものが変わる。
【００５１】
次に、病院研修医問題（Hospitals/Residents  problem）について説明する。病院研修医問題は、研修医の配属先病院を決める問題である。上述した安定マッチング問題と異なるものは、病院は最大受け入れ人数を持っており、それ以上の研修医を受け入れないことである。病院が受け入れる最大受け入れ人数をクオータと表記する。全ての病院のクオータが１である場合には、病院研修医問題は、安定マッチング問題と同じ問題となる。
【００５２】
病院研修医問題の解き方は、以下の手順で、病院研修医問題を不完全リストの安定マッチング問題に直すことである。病院Ａのクオータを「ｑＡ」とするとき、ＡをｑＡ個に分割し、クオータが１であるＡ１，Ａ２，Ａ３，・・・，ＡｑＡに分ける。また、研修医の希望リストに含まれている病院ＡをｑＡ個のＡ１からＡｑＡにし、強引に順位付けを行う。
【００５３】
例えば、病院Ａ、Ｂが存在し、病院Ａのクオータを２、病院Ｂのクオータを１とする。ある研修医の希望リストにおいて、第１希望を病院Ｂ、第２希望を病院Ａとする。この場合には、まず、病院Ａを病院Ａ１、病院Ａ２に分け、病院Ａ１、病院Ａ２について強引に順位づけを行う。例えば、病院Ａ１、Ａ２に対して、第２希望または第３希望をランダムに割り当てる。そうすることで、例えば、ある研修医の希望リストについて、第１希望を病院Ｂ、第２希望を病院Ａ１、第３希望を病院Ａ２とする。この結果、不完全リストの安定マッチング問題となるため、拡張ＧＳを用いて解く。
【００５４】
次に、本実施例に係るデータ配置装置の構成の一例について説明する。図１４は、本実施例に係るデータ配置装置の構成を示す機能ブロック図である。図１４に示すように、このデータ配置装置１００は、Ｎ個の計算資源１〜Ｎを有する。Ｎは２以上の自然数である。また、データ配置装置１００は、記憶部１０５、入力部１２０、マッチング管理部１３０、候補データ選択部１４０、マッチング計算部１５０、配置処理部１６０、照合部１７０を有する。
【００５５】
記憶部１０５は、レコードデータ１１０および配置先情報１１５を有する。記憶部１０５は、例えば、ＲＡＭ（Random  Access  Memory）、ＲＯＭ（Read  Only  Memory）、フラッシュメモリ（Flash  Memory）などの半導体メモリ素子などの記憶装置に対応する。
【００５６】
レコードデータ１１０は、計算資源１〜Ｎに配置するデータを有する。図１５は、レコードデータのデータ構造の一例を示す図である。図１５に示すように、このレコードデータ１１０は、データ識別子とデータとを対応付ける。データ識別子は、データを一意に識別する情報である。データは、各計算資源１〜Ｎに配置するデータである。例えば、データ識別子「００１」に対応するデータは「２．０，４．１，６．４」となる。ここでは、データ識別子と、データの組とを対応付ける例を示したが、単一のデータ識別子に、単一のデータを対応付けてもよい。
【００５７】
配置先情報１１５は、データの配置先を示す情報である。図１６は、配置先情報のデータ構造の一例を示す図である。図１６に示すように、この配置先情報１１５は、データ識別子と、配置先とを対応付ける。データ識別子は、図１５で説明したデータ識別子に対応する。配置先は、データを配置する計算資源を一意に識別する情報である。例えば、図１６において、データ識別子「００１」に対応するデータの配置先が「計算資源１」となっている。
【００５８】
図１４の説明に戻る。入力部１２０は、各種の情報をマッチング管理部１３０、照合部１７０に入力するための入力装置である。例えば、入力部１２０は、キーボードやマウス、タッチパネル等に対応する。例えば、利用者は、入力部１２０を操作して、マッチング管理部１３０に、データ配置決定要求、初期の閾値Ｔ、限界反復回数Ｊ等を入力する。データ配置決定要求、初期閾値Ｔ、限界反復回数Ｊの説明は後述する。また、利用者は、入力部１２０を操作して、クエリデータを照合部１７０に入力することで、照合要求を行う。
【００５９】
マッチング管理部１３０は、設定部の一例である。マッチング管理部１３０は、データ配置決定要求を取得した場合に、データ配置決定要求に応じて、配置先情報１１５を更新する。また、マッチング管理部１３０は、配置先情報１１５を基にして、配置先が未定のデータを候補データ選択部１４０に通知し、候補データ選択部１４０から候補データを取得する。候補データは、図１〜図１１に示した各候補データに対応するものである。マッチング管理部１３０は、候補データをマッチング計算部１５０に出力し、マッチング計算部１５０から、各候補データの配置先の情報を取得する。マッチング管理部１３０は、マッチング計算部１５０から取得した各候補データの配置先の情報を基にして、配置先情報１１５を更新する。マッチング管理部１３０は、限界反復回数Ｊに達するまで、上記処理を繰り返し実行する。
【００６０】
マッチング管理部１３０が、データ配置決定要求を取得した場合の処理について具体的に説明する。例えば、データ配置決定要求には、「全部やり直し要求」または「データ数均等更新要求」が含まれる。データ配置決定要求に、全部やり直し要求が含まれている場合について説明する。マッチング管理部１３０は、配置先情報１１５にアクセスし、各配置先を未定に設定する。
【００６１】
データ配置決定要求に、データ数均等変更要求が含まれている場合について説明する。前提条件として、レコードデータ１１０にあるデータの内、各計算資源１〜Ｎに分配されているデータ数をｎ１からｎＮとする。また、ｎ１からｎＮのなかで最小のものを「ｎ＿＊」とする。マッチング管理部１３０は、計算資源１に配置決定されているデータの内、ｎ１−ｎ＿＊個のデータを、レコードデータ１１０からランダムに選択し、選択したデータの配置先を未定に設定する。マッチング管理部１３０は、計算資源２〜Ｎに配置決定されているデータについても同様の処理を実行する。
【００６２】
候補データ選択部１４０は、選択部の一例である。候補データ選択部１４０は、マッチング管理部１３０から配置先が未定のデータの通知を受け付ける。配置先が未定のデータ集合をデータ集合Ｘ’と表記する。候補データ選択部１４０は、データ集合Ｘ’の中からＮ個ランダムに選択し、選択したデータを候補データとして、マッチング管理部１３０に出力する。候補データ選択部１４０は、データ集合Ｘ’に含まれるデータの数がＮ個に満たない場合には、データ集合Ｘ’を候補データとして、マッチング管理部１３０に出力する。
【００６３】
マッチング計算部１５０は、マッチング管理部１３０から各候補データを取得し、取得した各候補データの配置先を判定する。マッチング計算部１５０は、各候補データの配置先の情報を、マッチング管理部１３０に通知する。
【００６４】
ここで、マッチング計算部１５０の処理について具体的に説明する。前提条件として、各候補データをｖ１、ｖ２、・・・、ｖＮ’とする。各計算資源をｓ１、ｓ２、・・・、ｓＮとする。ただし、Ｎ’とＮとの関係は、式（１）を満たすものとする。
【００６５】
ｃｅｉｌ（Ｎ’／Ｎ）＝１・・・（１）
【００６６】
マッチング計算部１５０は、候補データｖｉと、計算資源ｓｊに配置されているデータ及び配置先が決定済みのデータ全てとの類似度を計算する。候補データｖｉと、計算資源ｓｊに配置されているデータ及び配置先が決定済みのデータ全てとの類似度のうち、最大値を、ｄｉｊと表記する。
【００６７】
マッチング計算部１５０は、類似度の最大値ｄｉｊを（ｉ，ｊ）要素に持つＮ’×Ｎ行列Ｄを作成する。マッチング計算部１５０は、行列Ｄのｉ行目を昇順にソートし、候補データｖｉに対する計算資源ｓｊの順位を決定する。マッチング計算部１５０は、決定した順位に基づいて、候補データｖｉの希望リストＬｖｉを作成する。このとき、ｊ！＝ｊ’で、-ｄｉｊ＝ｄｉｊ’となるときがあるが、ソートの際にどちらが先に来てもよいものとする。
【００６８】
マッチング計算部１５０は、行列Ｄのｊ列目を昇順にソートし、計算資源ｓｊに対する候補データｖｉの順位を決定する。マッチング計算部１５０は、決定した順序に基づいて、計算資源ｓｊの希望リストＬｓｊを作成する。
【００６９】
マッチング計算部１５０は、各候補データの希望リストＬｖ１、・・・、ＬｖＮ’と、計算資源の希望リストＬｓｊ、・・・、Ｌｓｊと、拡張ＧＳアルゴリズムとを用いて、安定マッチングを求める。マッチング計算部１５０が拡張ＧＳアルゴリズムを用いる際、プロポーズするのは、候補データ側でも、計算資源側でもよい。マッチング計算部１５０は、マッチング結果に基づいて、各候補データの配置先の情報を、マッチング管理部１３０に通知する。
【００７０】
配置処理部１６０は、配置先情報１１５を基にして、レコードデータ１１０に含まれる各データを、計算資源１〜Ｎに配置する処理部である。
【００７１】
照合部１７０は、入力部１２０からクエリデータを取得した場合に、各計算資源１〜Ｎとクエリデータとを照合する処理部である。照合部１７０は、照合結果を図示しない表示装置等に出力する。
【００７２】
次に、本実施例に係るデータ配置装置１００の処理手順の一例について説明する。図１７は、本実施例に係るデータ配置装置の処理手順の一例を示すフローチャートである。図１７に示すように、データ配置装置１００のマッチング管理部１３０は、データ配置決定処理要求、初期閾値Ｔ、限界反復回数Ｊを取得する（ステップＳ１０１）。
【００７３】
マッチング管理部１３０は、配置情報の上書き処理を実行する（ステップＳ１０２）。マッチング管理部１３０は、限界反復回数Ｊが１以下であるか否かを判定する（ステップＳ１０３）。マッチング管理部１３０は、限界反復回数Ｊが１以下でない場合には（ステップＳ１０３，Ｎｏ）、配置先情報１１５を取得する（ステップＳ１０４）。
【００７４】
マッチング管理部１３０は、１から｜Ｘ｜までの乱数ａを得て、Ｘからａ個ランダムに選択しコピーしたものをデータ集合Ｘ’に設定し、候補データ選択部１４０に出力する（ステップＳ１０５）。ステップＳ１０５において、「Ｘ」は、配属先が未定のデータ集合とする。
【００７５】
データ配置装置１００の候補データ選択部１４０は、候補データ選択処理を実行する（ステップＳ１０６）。マッチング管理部１３０は、候補データ選択部１４０から候補データを得て、Ｘから候補データに入っているデータを削除する（ステップＳ１０７）。
【００７６】
マッチング管理部１３０は、候補データおよび閾値Ｔをマッチング計算部１５０に出力する（ステップＳ１０８）。マッチング計算部１５０は、マッチング計算処理を実行する（ステップＳ１０９）。
【００７７】
マッチング管理部１３０は、マッチング計算部１５０から候補データの配置先の情報を取得し、候補データの配置先情報Ｙを更新する（ステップＳ１１０）。マッチング管理部１３０は、配置先が未定のデータ集合Ｘが空であるか否かを判定する（ステップＳ１１１）。
【００７８】
マッチング管理部１３０は、配置先が未定のデータ集合Ｘが空でない場合には（ステップＳ１１１，Ｎｏ）、ステップＳ１０５に移行する。一方、マッチング管理部１３０は、配置先が未定のデータ集合Ｘが空の場合には（ステップＳ１１１，Ｙｅｓ）、配置先情報Ｙを、配置先情報１１５に書き出す（ステップＳ１１２）。
【００７９】
マッチング管理部１３０は、限界反復回数Ｊから１を減算した値によって、限界反復回数Ｊの値を更新する（ステップＳ１１３）。マッチング管理部１３０は、閾値を２倍した値２Ｔによって、Ｔの値を更新し（ステップＳ１１４）、ステップＳ１０３に移行する。
【００８０】
ところで、マッチング管理部１３０は、ステップＳ１０３において、限界反復回数Ｊが１以下の場合には（ステップＳ１０３，Ｙｅｓ）、限界反復回数Ｊが１であるか否かを判定する（ステップＳ１１５）。マッチング管理部１３０は、限界反復回数Ｊが１でない場合には（ステップＳ１１５，Ｎｏ）、処理を終了する。
【００８１】
一方、マッチング管理部１３０は、限界反復回数Ｊが１である場合には（ステップＳ１１５，Ｙｅｓ）、閾値Ｔの値を＋∞に設定し（ステップＳ１１６）、ステップＳ１０４に移行する。
【００８２】
次に、図１７のステップＳ１０２に示した配置情報の上書き処理の処理手順について説明する。図１８は、配置情報の上書き処理の処理手順を示すフローチャートである。図１８に示すように、データ配置装置１００のマッチング管理部１３０は、データ配置決定要求が、全部やり直し要求であるか否かを判定する（ステップＳ１２１）。
【００８３】
マッチング管理部１３０は、データ配置決定要求が、全部やり直し要求である場合には（ステップＳ１２１，Ｙｅｓ）、配置先情報１１５の全てのデータの配置先を未定に設定し（ステップＳ１２２）、配置情報の上書き処理を終了する。
【００８４】
一方、マッチング管理部１３０は、データ配置決定要求が、全部やり直し要求でない場合には（ステップＳ１２１，Ｎｏ）、要求がデータ数均等更新要求であるか否かを判定する（ステップＳ１２３）。マッチング管理部１３０は、要求がデータ数均等更新要求でない場合には（ステップＳ１２３，Ｎｏ）、配置情報の上書き処理を終了する。
【００８５】
一方、マッチング管理部１３０は、要求がデータ数均等更新要求である場合には（ステップＳ１２３，Ｙｅｓ）、レコードデータ１１０にあるデータの内、各計算資源に分配されているデータ数をｎ１からｎＮとする（ステップＳ１２４）。
【００８６】
マッチング管理部１３０は、ｎ１からｎＮの中で最小のものをｎ＿＊とする（ステップＳ１２５）。マッチング管理部１３０は、計算資源１に配置決定されているデータの内、ｎ１−ｎ＿＊個のデータをランダムに選択し、それらの配置先を未定とする。また、マッチング管理部１３０は、他の計算資源についても同様の処理を実行する（ステップＳ１２６）。
【００８７】
次に、図１７のステップＳ１０６に示した候補データ選択処理の処理手順について説明する。図１９は、候補データ選択処理の処理手順を示すフローチャート（１）である。図１９に示すように、データ配置装置１００の候補データ選択部１４０は、データ集合Ｘ’を取得する（ステップＳ１３１）。
【００８８】
候補データ選択部１４０は、データ集合Ｘ’の要素数がＮ以上であるか否かを判定する（ステップＳ１３２）。候補データ選択部１４０は、データ集合Ｘ’の要素数がＮ以上である場合に（ステップＳ１３２，Ｙｅｓ）、データ集合Ｘ’からランダムにＮ個選択する（ステップＳ１３３）。候補データ選択部１４０は、選択したデータを候補データとして出力する（ステップＳ１３４）。
【００８９】
ところで、候補データ選択部１４０は、データ集合Ｘ’の要素数がＮ以上でない場合には（ステップＳ１３２，Ｎｏ）、データ集合Ｘ’を全て選択し（ステップＳ１３５）、ステップＳ１３４に移行する。
【００９０】
次に、図１７のステップＳ１０９に示したマッチング計算処理の処理手順について説明する。図２０は、マッチング計算処理の処理手順を示すフローチャート（１）である。データ配置装置１００のマッチング計算部１５０は、各候補データをｖ１、・・・、ｖＮ’とし、各計算資源をｓ１、・・・、ｓＮとする（ステップＳ１４１）。
【００９１】
マッチング計算部１５０は、行列Ｄの計算を行う（ステップＳ１４２）。マッチング計算部１５０は、行列Ｄのｉ番目の行ベクトルをＥｉとする。マッチング計算部１５０は、Ｅｉベクトルの要素を値が小さいものから順に順位をつけ、候補データｖｉの希望リストＬｖｉを作成する（ステップＳ１４３）。
【００９２】
マッチング計算部１５０は、行列Ｄのｊ番目の列ベクトルをＦｊとする。マッチング計算部１５０は、Ｆｊベクトルの要素を値が小さいものから順に順位をつけ、計算資源ｓｊの希望リストＬｓｊを作成する（ステップＳ１４４）。
【００９３】
マッチング計算部１５０は、安定マッチングを行う（ステップＳ１４５）。ステップＳ１４５における安定マッチングは、拡張ＧＳアルゴリズムに従う。マッチング計算部１５０が拡張ＧＳアルゴリズムを用いる際、プロポーズするのは、候補データ側でも、計算資源側でもよい。
【００９４】
マッチング計算部１５０は、マッチングＭの中の全ての組（ｖｉ、ｓｊ）に対し、候補データｖｉの配置先を、計算資源ｓｊとする（ステップＳ１４６）。
【００９５】
次に、図２０に示した行列Ｄの計算の処理手順について説明する。図２１は、行列Ｄの計算の処理手順を示すフローチャート（１）である。図２１に示すように、データ配置装置１００のマッチング計算部１５０は、計算資源ｓｊに配置済みおよび配置決定済みのデータの集合をＱｊとする（ステップＳ１５１）。マッチング計算部１５０は、ｉ＝１、・・・、Ｎ’およびｊ＝１、・・・Ｎに対し、下記の処理を実行する（ステップＳ１５２）。
【００９６】
マッチング計算部１５０は、データ集合Ｑｊに含まれるデータ全てに対し、候補データｖｉとの類似度を計算する（ステップＳ１５３）。マッチング計算部１５０は、類似度のうち、最大のものをｄｉｊに設定する（ステップＳ１５４）。マッチング計算部１５０は、行列Ｄの（ｉ、ｊ）成分をｄｉｊに設定する（ステップＳ１５５）。
【００９７】
次に、本実施例に係るデータ配置装置１００の効果について説明する。データ配置装置１００は、候補データ選択部１４０が選択した複数の候補データそれぞれについて、各計算資源１〜Ｎに対して算出される類似度から、類似性指標として、各候補データの希望リストと各計算資源１〜Ｎの希望リストを生成する。データ配置装置１００は、各候補データの希望リストと各計算資源１〜Ｎの希望リストを基にして、安定マッチングを行うことで、複数の候補データを各計算資源１〜Ｎに割り当て、配置する。このため、データ配置装置１００によれば、複数の計算資源へのデータの配置を、各計算資源に割り振るデータをほぼ均等にしつつ、同一の計算資源に配置するデータの類似度を大きくならないようにすることができる。
【００９８】
また、データ配置装置１００は、安定マッチングを行う場合に、ある候補データに、該候補データの優先される計算資源にプロポーズさせ、プロポーズを受けた計算資源と既にペアとなっている候補データよりも、ある候補データの類似度が小さいかを判定する。データ配置装置１００は、計算資源に対して、ある候補データの類似度が既にペアになっている候補データの類似度の方が小さい場合に、プロポーズさせた候補データと計算資源とをペアにする。これにより、データ配置装置１００は、ブロッキングペアのない安定マッチングを効率的に行うことができる。
【００９９】
また、データ配置装置１００は、各計算資源に配置されているデータ数ｎ１〜ｎＮの中で最小のものをｎ＿＊個とし、各計算資源に配置決定されているデータの内、ｎ１−ｎ＿＊個のデータをランダムに選択し、選択したデータの配置先を未定に設定する。この処理を行うことで、同一の計算資源に配置するデータの類似度を大きくならないようにすることができる。
【０１００】
ところで、図１４に示した候補データ選択部１４０、マッチング計算部１５０の処理は一例である。以下では、候補データ選択部１４０およびマッチング計算部１５０のその他の処理について説明する。
【０１０１】
候補データ選択部１４０のその他の処理（１）について説明する。候補データ選択部１４０は、マッチング管理部１３０から配置先が未定のデータ集合Ｘ’の情報を取得する。候補データ選択部１４０は、データ集合Ｘ’の中からＮの倍数個ランダムに選択し、選択したデータを候補データとして、マッチング管理部１３０に出力する。候補データ選択部１４０は、データ集合Ｘ’に含まれるデータの数がＮに満たない場合には、データ集合Ｘ’全てを候補データとして、マッチング管理部１３０に出力する。
【０１０２】
図２２は、候補データ選択処理の処理手順を示すフローチャート（２）である。図２２に示すように、候補データ選択部１４０は、データ集合Ｘ’を取得する（ステップＳ１６１）。候補データ選択部１４０は、ｐ＝ｃｅｉｌ（｜Ｘ’｜／Ｎ）とする（ステップＳ１６２）。
【０１０３】
候補データ選択部１４０は、ｐの値が１以上であるか否かを判定する（ステップＳ１６３）。候補データ選択部１４０は、ｐの値が１以上である場合には（ステップＳ１６３，Ｙｅｓ）、データ集合Ｘ’からランダムにｐＮ個の配置先が未定のデータを選択する（ステップＳ１６４）。候補データ選択部１４０は、選択したデータを候補データとして出力する（ステップＳ１６５）。
【０１０４】
候補データ選択部１４０は、ｐの値が１以上でない場合には（ステップＳ１６３，Ｎｏ）、データ集合Ｘ’を全て選択し（ステップＳ１６６）、ステップＳ１６５に移行する。
【０１０５】
続いて、候補データ選択部１４０のその他の処理（２）について説明する。候補データ選択部１４０は、マッチング管理部１３０から配置先が未定のデータ集合Ｘ’の情報を取得する。候補データ選択部１４０は、データ集合Ｘ’の各データに対し、０以上１未満の乱数を振る。候補データ選択部１４０は、各データに割り振った数を基にして、割り振った数が０．５以上となるデータを集合Ａに追加する。
【０１０６】
候補データ選択部１４０は、ｋ-medoid法等を用いて、集合Ａのデータを、Ｋ個のクラスタに分ける。例えば、Ｋは「Ｋ＝ｃｅｉｌ（Ａ／Ｎ）」により定まる値である。このとき、各クラスタに属するデータの数はおよそＮになる。候補データ選択部１４０は、クラスタをランダムに１つ選択し、選択したクラスタに属するデータ数をＭとする。
【０１０７】
候補データ選択部１４０は、選択したクラスタのデータ数ＭがＮ以上である場合には、選択したクラスタからＮ個のデータを選択し、選択したデータを候補データとして、マッチング管理部１３０に出力する。
【０１０８】
これに対して、候補データ選択部１４０は、選択したクラスタのデータ数ＭがＮ未満の場合について説明する。候補データ選択部１４０は、選択したクラスタに属するデータを全て候補データとする。また、候補データ選択部１４０は、選択したクラスタに属さないデータ集合Ａのデータの数が、Ｎ−Ｍ個以上の場合に、Ｎ−Ｍ個のデータを、選択したクラスタに属さないデータ集合Ａのデータからランダムに選択し、候補データに追加する。一方、候補データ選択部１４０は、選択したクラスタに属さないデータ集合Ａのデータの数が、Ｎ−Ｍ個未満の場合に、選択したクラスタに属さないデータ集合Ａのデータを全て選択し、候補データに追加する。候補データ選択部１４０は、候補データを、マッチング管理部１３０に出力する。
【０１０９】
図２３は、候補データ選択処理の処理手順を示すフローチャート（３）である。図２３に示すように、候補データ選択部１４０は、データ集合Ｘ’を取得する（ステップＳ１７１）。候補データ選択部１４０は、データ集合Ｘ’の各要素を対象に、下記の処理を実行する。候補データ選択部１４０は、データ集合Ｘ’のデータに対して［０、１］の浮動小数の乱数を振る。候補データ選択部１４０は、振られた値が０．５よりも大きいデータを集合Ａに入れる。候補データ選択部１４０は、振られた値が０．５以下のデータを集合Ａに入れない（ステップＳ１７２）。
【０１１０】
候補データ選択部１４０は、集合Ａの要素数を｜Ａ｜とし、Ｋ＝ｃｅｉｌ（｜Ａ｜／Ｎ）とする（ステップＳ１７３）。候補データ選択部１４０は、ｋ-medoid法等を用いて、ＡをＫ個のクラスタに分類する（ステップＳ１７４）。
【０１１１】
候補データ選択部１４０は、各クラスタに［１、Ｋ］の整数の乱数を振り、それをｉとする（ステップＳ１７５）。候補データ選択部１４０は、クラスタｉに属するデータ数をＭとする（ステップＳ１７６）。
【０１１２】
候補データ選択部１４０は、ＭがＮ以上であるか否かを判定する（ステップＳ１７７）。候補データ選択部１４０は、ＭがＮ以上である場合には（ステップＳ１７７，Ｙｅｓ）、クラスタｉからＮ個のデータをランダムに選択する（ステップＳ１７８）。候補データ選択部１４０は、選択したデータを候補データとして出力する（ステップＳ１７９）。
【０１１３】
一方、候補データ選択部１４０は、ＭがＮ未満の場合には（ステップＳ１７７，Ｎｏ）、ステップＳ１８０に移行する。候補データ選択部１４０は、クラスタｉのデータを全て選択する。候補データ選択部１４０は、更に集合Ａのうち、クラスタｉに属していないデータ数が、Ｎ−Ｍの場合、Ｎ−Ｍ個のデータをランダムに選択する。候補データ選択部１４０は、Ｎ−Ｍ未満の場合に、集合Ａのデータを全て選択する（ステップＳ１８０）。候補データ選択部１４０は、ステップＳ１７９に移行する。
【０１１４】
続いて、候補データ選択部１４０のその他の処理（３）について説明する。候補データ選択部１４０は、マッチング管理部１３０から配置先が未定のデータ集合Ｘ’の情報を取得する。候補データ選択部１４０は、データ集合Ｘ’の各データに対し、０以上１未満の乱数を振る。候補データ選択部１４０は、各データに割り振った数を基にして、割り振った数が０．５以上となるデータを集合Ａに追加する。
【０１１５】
候補データ選択部１４０は、ｋ-medoid法等を用いて、集合Ａのデータを、Ｋ個のクラスタに分ける。例えば、Ｋは「Ｋ＝ｃｅｉｌ（Ａ／Ｎ）」により定まる値である。候補データ選択部１４０は、各クラスタに属するデータ数がＮ以上となるクラスタを全て選択する。候補データ選択部１４０は、選択したクラスタから、Ｎ個ずつデータをランダムに選択し、選択したデータを候補データとして出力する。この場合、選択される候補データの数は、Ｎの倍数となる。
【０１１６】
図２４は、候補データ選択処理の処理手順を示すフローチャート（４）である。図２４に示すように、候補データ選択部１４０は、データ集合Ｘ’を取得する（ステップＳ１９１）。候補データ選択部１４０は、データ集合Ｘ’の各要素を対象に、以下の処理を行う。候補データ選択部１４０は、データ集合Ｘ’のデータに対して［０、１］の浮動小数の乱数を振る。候補データ選択部１４０は、振られた値が０．５よりも大きいデータを集合Ａに入れる。候補データ選択部１４０は、振られた値が０．５以下のデータを集合Ａに入れない（ステップＳ１９２）。
【０１１７】
候補データ選択部１４０は、集合Ａの要素数を｜Ａ｜とし、Ｋ＝ｃｅｉｌ（｜Ａ｜／Ｎ）とする（ステップＳ１９３）。候補データ選択部１４０は、候補データ選択部１４０は、k-medoid法を用いて、ＡをＫ個のクラスタに分類する（ステップＳ１９４）。
【０１１８】
候補データ選択部１４０は、クラスタに含まれるデータ数がＮ以上のものを全て選ぶ（ステップＳ１９５）。候補データ選択部１４０は、選んだクラスタ毎に、Ｎ個のデータをランダムに選択する（ステップＳ１９６）。候補データ選択部１４０は、選択したデータを候補データとして出力する（ステップＳ１９７）。
【０１１９】
続いて、マッチング計算部１５０のその他の処理（１）について説明する。ここで説明するマッチング計算部１５０の処理は、行列Ｄの計算の処理手順が、上記マッチング計算部の説明と異なる。具体的に、マッチング計算部１５０は、候補データｖｉと、計算資源ｓｊに配置されているデータ及び配置先が決定済みのデータ全てとの類似度を計算する。マッチング計算部１５０は、候補データｖｉと、計算資源ｓｊに配置されているデータ及び配置先が決定済みのデータ全てとの類似度のうち、上位ｋ件の平均値を行列Ｄの（ｉ、ｊ）成分に設定する。
【０１２０】
図２５は、行列Ｄの計算の処理手順を示すフローチャート（２）である。図２５に示すように、マッチング計算部１５０は、計算資源ｓｊに配置済みおよび配置決定済みのデータの集合をＱｊとする（ステップＳ２０１）。マッチング計算部１５０は、ｉ＝１、・・・、Ｎ’およびｊ＝１、・・・Ｎに対し、下記の処理を実行する（ステップＳ２０２）。
【０１２１】
マッチング計算部１５０は、データ集合Ｑｊに含まれるデータ全てに対し、候補データｖｉとの類似度を計算する（ステップＳ２０３）。マッチング計算部１５０は、類似度の大きいものから１０個選択し、選択した各類似度の平均値をｄｉｊに設定する（ステップＳ２０４）。マッチング計算部１５０は、行列Ｄの（ｉ、ｊ）成分をｄｉｊに設定する（ステップＳ２０５）。
【０１２２】
続いて、マッチング計算部１５０のその他の処理（２）について説明する。ここで説明するマッチング計算部１５０の処理は、行列Ｄの計算の処理手順が、上記マッチング計算部の説明と異なる。具体的に、マッチング計算部１５０は、候補データｖｉと、計算資源ｓｊに配置されているデータ及び配置先が決定済みのデータ全てとの類似度を計算する。マッチング計算部１５０は、全ての類似度の平均ｍと、標準偏差σを算出する。マッチング計算部１５０は、平均ｍと標準偏差σを加算した値を、行列Ｄの（ｉ、ｊ）成分に設定する。
【０１２３】
図２６は、行列Ｄの計算の処理手順を示すフローチャート（３）である。図２６に示すように、マッチング計算部１５０は、計算資源ｓｊに配置済みおよび配置決定済みのデータの集合をＱｊとする（ステップＳ２１１）。マッチング計算部１５０は、ｉ＝１、・・・、Ｎ’およびｊ＝１、・・・、Ｎに対し、下記の処理を実行する（ステップＳ２１２）。
【０１２４】
マッチング計算部１５０は、データ集合Ｑｊに含まれるデータ全てに対し、候補データｖｉとの類似度を計算する（ステップＳ２１３）。マッチング計算部１５０は、各類似度の平均をｍ、標準偏差をσとする。マッチング計算部１５０は、ｄｉｊ＝ｍ＋σとする（ステップＳ２１４）。マッチング計算部１５０は、行列Ｄの（ｉ、ｊ）成分をｄｉｊに設定する（ステップＳ２１５）。
【０１２５】
続いて、マッチング計算部１５０のその他の処理（３）について説明する。マッチング計算部１５０は、マッチング管理部１３０から各候補データを取得する。前提条件として、各候補データをｖ１、ｖ２、・・・、ｖＮ’とする。各計算資源をｓ１、ｓ２、・・・、ｓＮとする。また、ｐをｐ＝ｃｅｉｌ（Ｎ’／Ｎ）から特定される整数とする。
【０１２６】
マッチング計算部１５０は、候補データｖｉと、計算資源ｓｊに配置されているデータ及び配置先が決定済みのデータ全てとの類似度を計算する。マッチング計算部１５０は、候補データｖｉと、計算資源ｓｊに配置されているデータ及び配置先が決定済みのデータ全てとの類似度のうち、最大値を、ｄｉｊと表記する。
【０１２７】
マッチング計算部１５０は、類似度の最大値ｄｉｊを（ｉ，ｊ）要素に持つＮ’×Ｎ行列Ｄを作成する。マッチング計算部１５０は、行列Ｄのｉ行目を昇順にソートし、候補データｖｉに対する計算資源ｓｊの順位を決定する。マッチング計算部１５０は、決定した順位に基づいて、候補データｖｉの希望リストＬｖｉを作成する。このとき、ｊ！＝ｊ’で、-ｄｉｊ＝ｄｉｊ’となるときがあるが、ソートの際にどちらが先に来てもよいものとする。
【０１２８】
マッチング計算部１５０は、行列Ｄのｊ列目を昇順にソートし、計算資源ｓｊに対する候補データｖｉの順位を決定する。マッチング計算部１５０は、決定した順序に基づいて、計算資源ｓｊの希望リストＬｓｊを作成する。
【０１２９】
マッチング計算部１５０は、各候補データの希望リストＬｖ１、・・・、ＬｖＮ’とし、計算資源の希望リストＬｓｊ、・・・、ＬｓＮとし、各病院のクオータをｐとして病院研修問題としてマッチングを計算する。マッチング計算部１５０がマッチングを行う場合、プロポーズするのは、候補データ側でも、計算資源側でもよい。マッチング計算部１５０は、マッチング結果に基づいて、各候補データの配置先の情報を、マッチング管理部１３０に通知する。
【０１３０】
図２７は、マッチング計算処理の処理手順を示すフローチャート（２）である。図２７に示すように、マッチング計算部１５０は、各候補データをｖ１、・・・、ｖＮ’とし、各計算資源をｓ１、・・・、ｓＮとする（ステップＳ２２１）。マッチング計算部１５０は、ｐ＝ｃｅｉｌ（Ｎ’／Ｎ）を計算する（ステップＳ２２２）。
【０１３１】
マッチング計算部１５０は、行列Ｄの計算を行う（ステップＳ２２３）。マッチング計算部１５０が実行する行列Ｄの計算は、上述した図２１、２５、２６のいずれかの処理手順に従う。
【０１３２】
マッチング計算部１５０は、行列Ｄのｉ番目の行ベクトルをＥｉとする。マッチング計算部１５０は、Ｅｉベクトルの要素を値が小さいものから順に順位をつけ、候補データｖｉの希望リストＬｖｉを作成する（ステップＳ２２４）。
【０１３３】
マッチング計算部１５０は、行列Ｄのｊ番目の列ベクトルをＦｊとする。マッチング計算部１５０は、Ｆｊベクトルの要素を値が小さいものから順に順位をつけ、計算資源ｓｊの希望リストＬｓｊを作成する（ステップＳ２２５）。
【０１３４】
マッチング計算部１５０は、病院のクオータがｐの病院研修医問題に基づき、安定マッチングを行う（ステップＳ２２６）。ステップＳ２２６において、マッチング計算部１５０は、病院研修医問題を不完全リストの安定マッチング問題に直し、拡張ＧＳアルゴリズムを用いて解くことで、安定マッチングを行う。
【０１３５】
マッチング計算部１５０は、マッチングＭの中の全ての組（ｖｉ、ｓｊ）に対し、候補データｖｉの配置先を、計算資源ｓｊとする（ステップＳ２２７）。
【０１３６】
続いて、マッチング計算部１５０のその他の処理（４）について説明する。マッチング計算部１５０は、マッチング管理部１３０から各候補データを取得する。前提条件として、各候補データをｖ１、ｖ２、・・・、ｖＮ’とする。各計算資源をｓ１、ｓ２、・・・、ｓＮとする。また、ｃｅｉｌ（Ｎ’／Ｎ）＝１と仮定する。
【０１３７】
前提条件として、各計算資源１〜Ｎに配置されているデータ及び配置決定済みデータの数をｎ１〜ｎＮとする。ｎ１〜ｎＮのなかで最大のものをｎ＊とし、最小のものをｎ＊とする。マッチング計算部１５０は、候補データｖｉと、計算資源ｓｊに配置されているデータ及び配置先が決定済みのデータ全てとの類似度を計算する。マッチング計算部１５０は、候補データｖｉと、計算資源ｓｊに配置されているデータ及び配置先が決定済みのデータ全てとの類似度のうち、最大値を、ｄｉｊと表記する。なお、マッチング計算部１５０は、類似度の最大値の代わりに、上位ｋ件の平均値を、ｄｉｊに設定してもよい。また、マッチング計算部１５０は、類似度の最大値の代わりに、類似度の平均ｍと、標準偏差σとを加算した値を、ｄｉｊに設定してもよい。
【０１３８】
マッチング計算部１５０は、類似度の最大値ｄｉｊを（ｉ，ｊ）要素に持つＮ’×Ｎ行列Ｄを作成する。マッチング計算部１５０は、行列Ｄのｉ行目を昇順にソートし、候補データｖｉに対する計算資源ｓｊの順位を決定する。マッチング計算部１５０は、決定した順位に基づいて、候補データｖｉの希望リストＬｖｉを作成する。このとき、ｊ！＝ｊ’で、-ｄｉｊ＝ｄｉｊ’となるときがあるが、ソートの際にどちらが先に来てもよいものとする。
【０１３９】
マッチング計算部１５０は、計算資源ｓｊに対するｄｉｊが閾値Ｔより大きい場合には、候補データｖｉの希望リストＬｖｉから、対応する計算資源ｓｊを削除する。
【０１４０】
マッチング計算部１５０は、行列Ｄのｊ列目を昇順にソートし、計算資源ｓｊに対する候補データｖｉの順位を決定する。マッチング計算部１５０は、決定した順序に基づいて、計算資源ｓｊの希望リストＬｓｊを作成する。マッチング計算部１５０は、候補データｖｉに対応するｄｉｊが閾値Ｔより大きい場合には、計算資源の希望リストＬｓｊから、対応する候補データｖｉを削除する。
【０１４１】
マッチング計算部１５０は、ｎ＊とｎ＊とが等しくなく、かつ、ｎｊがｎ＊と等しい場合には、計算資源ｓｊの希望リストＬｓｊを空にする。
【０１４２】
マッチング計算部１５０は、各候補データの希望リストＬｖ１、・・・、ＬｖＮ’と、計算資源の希望リストＬｓｊ、・・・、ＬｓＮとを用いて拡張ＧＳアルゴリズムで不完全リストの安定マッチング問題を解く。
【０１４３】
マッチング計算部１５０がマッチングを行う場合、プロポーズするのは、候補データ側でも、計算資源側でもよい。マッチング計算部１５０は、得られたマッチングにおいてペアとなった候補データ全ての配置先の情報を、マッチング管理部１３０に通知する。また、マッチング計算部１５０は、ペアとならなかった候補データの配置先を未定とし、マッチング管理部１３０に通知する。
【０１４４】
図２８は、マッチング計算処理の処理手順を示すフローチャート（３）である。図２８に示すように、マッチング計算部１５０は、各候補データをｖ１、・・・、ｖＮ’とし、各計算資源をｓ１、・・・、ｓＮとする（ステップＳ２３１）。マッチング計算部１５０は、計算資源ｓｊに配置済みおよび配置決定済みのデータ数ｎｊとし、ｎ１、・・・、ｎＮのうち最大のものをｎ＊、最小のものをｎ＊とする（ステップＳ２３２）。
【０１４５】
マッチング計算部１５０は、行列Ｄの計算を行う（ステップＳ２３３）。マッチング計算部１５０が実行する行列Ｄの計算は、上述した図２１、２５、２６のいずれかの処理手順に従う。
【０１４６】
マッチング計算部１５０は、行列Ｄのｉ番目の行ベクトルをＥｉとする。マッチング計算部１５０は、Ｅｉベクトルの要素を値が小さいものから順に順位をつけ、候補データｖｉの希望リストＬｖｉを作成する（ステップＳ２３４）。
【０１４７】
マッチング計算部１５０は、ｎ＊とｎ＊とが等しくない場合に、ｎ＊と等しいｎｊを持つ計算資源ｓｊを希望リストＬｖｉから削除する（ステップＳ２３５）。
【０１４８】
マッチング計算部１５０は、行列Ｄのｊ番目の列ベクトルをＦｊとする。マッチング計算部１５０は、Ｆｊベクトルの要素を値が小さいものから順に順位をつけ、計算資源ｓｊの希望リストＬｓｊを作成する（ステップＳ２３６）。
【０１４９】
マッチング計算部１５０は、ｎ＊とｎ＊とが等しくない場合に、ｎ＊と等しいｎｊを持つ計算資源ｓｊに対しＬｓｊを空に設定する（ステップＳ２３７）。
【０１５０】
マッチング計算部１５０は、安定マッチングを行う（ステップＳ２３８）。マッチング計算部１５０は、マッチングＭの中の全ての組（ｖｉ、ｓｊ）に対し、候補データｖｉの配置先を、計算資源ｓｊとする（ステップＳ２３９）。
【０１５１】
続いて、マッチング計算部１５０のその他の処理（５）について説明する。マッチング計算部１５０は、マッチング管理部１３０から各候補データを取得する。前提条件として、各候補データをｖ１、ｖ２、・・・、ｖＮ’とする。各計算資源をｓ１、ｓ２、・・・、ｓＮとする。また、ｐをｐ＝ｃｅｉｌ（Ｎ’／Ｎ）から特定される整数とする。
【０１５２】
前提条件として、各計算資源１〜Ｎに配置されているデータ及び配置決定済みデータの数をｎ１〜ｎＮとする。ｎ１〜ｎＮのなかで最大のものをｎ＊とし、最小のものをｎ＊とする。マッチング計算部１５０は、候補データｖｉと、計算資源ｓｊに配置されているデータ及び配置先が決定済みのデータ全てとの類似度を計算する。マッチング計算部１５０は、候補データｖｉと、計算資源ｓｊに配置されているデータ及び配置先が決定済みのデータ全てとの類似度のうち、最大値を、ｄｉｊと表記する。なお、マッチング計算部１５０は、類似度の最大値の代わりに、上位ｋ件の平均値を、ｄｉｊに設定してもよい。また、マッチング計算部１５０は、類似度の最大値の代わりに、類似度の平均ｍと、標準偏差σとを加算した値を、ｄｉｊに設定してもよい。
【０１５３】
マッチング計算部１５０は、類似度の最大値ｄｉｊを（ｉ，ｊ）要素に持つＮ’×Ｎ行列Ｄを作成する。マッチング計算部１５０は、行列Ｄのｉ行目を昇順にソートし、候補データｖｉに対する計算資源ｓｊの順位を決定する。マッチング計算部１５０は、決定した順位に基づいて、候補データｖｉの希望リストＬｖｉを作成する。このとき、ｊ！＝ｊ’で、-ｄｉｊ＝ｄｉｊ’となるときがあるが、ソートの際にどちらが先に来てもよいものとする。
【０１５４】
マッチング計算部１５０は、計算資源ｓｊに対するｄｉｊが閾値Ｔより大きい場合には、候補データｖｉの希望リストＬｖｉから、対応する計算資源ｓｊを削除する。
【０１５５】
マッチング計算部１５０は、行列Ｄのｊ列目を昇順にソートし、計算資源ｓｊに対する候補データｖｉの順位を決定する。マッチング計算部１５０は、決定した順序に基づいて、計算資源ｓｊの希望リストＬｓｊを作成する。マッチング計算部１５０は、候補データｖｉに対応するｄｉｊが閾値Ｔより大きい場合には、計算資源の希望リストＬｓｊから、対応する候補データｖｉを削除する。
【０１５６】
マッチング計算部１５０は、ｎ＊とｎ＊とが等しくなく、かつ、ｎｊがｎ＊と等しい場合には、計算資源ｓｊの希望リストＬｓｊを空にする。
【０１５７】
マッチング計算部１５０は、各候補データの希望リストＬｖ１、・・・ＬｖＮ’と、計算資源の希望リストＬｓｊ、・・・、ＬｓＮとを用いて、病院のクオータがｐの病院研修医問題を解く。マッチング計算部１５０は、病院研修医問題を不完全リスト問題に直し、拡張ＧＳアルゴリズムを用いて解く。
【０１５８】
マッチング計算部１５０がマッチングを行う場合、プロポーズするのは、候補データ側でも、計算資源側でもよい。マッチング計算部１５０は、得られたマッチングにおいてペアとなった候補データ全ての配置先の情報を、マッチング管理部１３０に通知する。また、マッチング計算部１５０は、ペアとならなかった候補データの配置先を未定とし、マッチング管理部１３０に通知する。
【０１５９】
図２９は、マッチング計算部の処理手順を示すフローチャート（４）である。図２９に示すように、マッチング計算部１５０は、各候補データをｖ１、・・・、ｖＮ’とし、各計算資源をｓ１、・・・、ｓＮとする（ステップＳ２４１）。マッチング計算部１５０は、ｐ＝ｃｅｉｌ（Ｎ’／Ｎ）を計算する（ステップＳ２４２）。
【０１６０】
マッチング計算部１５０は、計算資源ｓｊに配置済みおよび配置決定済みのデータ数ｎｊとし、ｎ１、・・・、ｎＮのうち最大のものをｎ＊、最小のものをｎ＊とする（ステップＳ２４３）。
【０１６１】
マッチング計算部１５０は、行列Ｄの計算を行う（ステップＳ２４４）。マッチング計算部１５０が実行する行列Ｄの計算は、上述した図２１、２５、２６のいずれかの処理手順に従う。
【０１６２】
マッチング計算部１５０は、行列Ｄのｉ番目の行ベクトルをＥｉとする。マッチング計算部１５０は、Ｅｉベクトルの要素を値が小さいものから順に順位をつけ、候補データｖｉの希望リストＬｖｉを作成する（ステップＳ２４５）。
【０１６３】
マッチング計算部１５０は、ｎ＊とｎ＊とが等しくない場合に、ｎ＊と等しいｎｊを持つ計算資源ｓｊを希望リストＬｖｉから削除する（ステップＳ２４６）。
【０１６４】
マッチング計算部１５０は、行列Ｄのｊ番目の列ベクトルをＦｊとする。マッチング計算部１５０は、Ｆｊベクトルの要素を値が小さいものから順に順位をつけ、計算資源ｓｊの希望リストＬｓｊを作成する（ステップＳ２４７）。
【０１６５】
マッチング計算部１５０は、ｎ＊とｎ＊とが等しくない場合に、ｎ＊と等しいｎｊを持つ計算資源ｓｊに対し希望リストＬｓｊを空に設定する（ステップＳ２４８）。
【０１６６】
マッチング計算部１５０は、病院のクオータがｐの病院研修医問題を解く（ステップＳ２４９）。マッチング計算部１５０は、マッチングＭの中の全ての組（ｖｉ、ｓｊ）に対し、候補データｖｉの配置先を、計算資源ｓｊとする（ステップＳ２５０）。
【０１６７】
次に、上記実施例に示したデータ配置装置１００と同様の機能を実現するデータ配置プログラムを実行するコンピュータの一例について説明する。図３０は、データ配置プログラムを実行するコンピュータの一例を示す図である。
【０１６８】
図３０に示すように、コンピュータ２００は、各種演算処理を実行するＣＰＵ２０１と、ユーザからのデータの入力を受け付ける入力装置２０２と、ディスプレイ２０３とを有する。また、コンピュータ２００は、記憶媒体からプログラム等を読取る読み取り装置２０４と、ネットワークを介して他のコンピュータとの間でデータの授受を行うインターフェース装置２０５とを有する。また、コンピュータ２００は、各種情報を一時記憶するＲＡＭ２０６と、ハードディスク装置２０７とを有する。そして、各装置２０１〜２０７は、バス２０８に接続される。
【０１６９】
ハードディスク装置２０７は、マッチング管理プログラム２０７ａ、候補データ選択プログラム２０７ｂ、マッチング計算プログラム２０７ｃを有する。ＣＰＵ２０１は、マッチング管理プログラム２０７ａ、候補データ選択プログラム２０７ｂ、マッチング計算プログラム２０７ｃを読み出してＲＡＭ２０６に展開する。マッチング管理プログラム２０７ａは、マッチング管理プロセス２０６ａとして機能する。候補データ選択プログラム２０７ｂは、候補データ選択プロセス２０６ｂとして機能する。マッチング計算プログラム２０７ｃは、マッチング計算プロセス２０６ｃとして機能する。例えば、マッチング管理プロセス２０６ａの処理は、マッチング管理部１３０の処理に対応する。候補データ選択プロセス２０６ｂの処理は、候補データ選択部１４０の処理に対応する。マッチング計算プロセス２０６ｃの処理は、マッチング計算部１５０の処理に対応する。
【０１７０】
なお、マッチング管理プログラム２０７ａ、候補データ選択プログラム２０７ｂ、マッチング計算プログラム２０７ｃについては、必ずしも最初からハードディスク装置２０７に記憶させておかなくても良い。例えば、コンピュータ２００に挿入されるフレキシブルディスク（ＦＤ）、ＣＤ−ＲＯＭ、ＤＶＤディスク、光磁気ディスク、ＩＣカードなどの「可搬用の物理媒体」に各プログラムを記憶させておく。そして、コンピュータ２００が各プログラム２０７ａ〜２０７ｃを読み出して実行するようにしてもよい。
【０１７１】
以上の各実施例を含む実施形態に関し、さらに以下の付記を開示する。
【０１７２】
（付記１）コンピュータに、
複数の計算資源に対して、データを分散配置する際に、入力データより、前記複数の計算資源の数に対応する数の複数のデータを取得し、
取得した前記複数のデータそれぞれについて、前記複数の計算資源に保存されたデータ各々に対し算出される類似度から、前記複数の計算資源ごとの類似性指標を生成し、
前記複数のデータそれぞれに対する前記複数の計算資源の前記類似性指標に基づき、各割り当てに対応する前記類似性指標が小さい方向に安定となるマッチング方式により前記複数の計算資源各々へ割り当て、
前記割り当てに基づき、取得した前記複数のデータを前記複数の計算資源に配置する
処理を実行させることを特徴とするデータ配置プログラム。
【０１７３】
（付記２）前記割り当てる処理は、第１のデータと複数の計算資源との前記類似性指標に基づき、第１のデータに対して優先される第１の計算資源を特定し、前記第１の計算資源と複数のデータとの類似性指標において、前記第１の計算資源に既に割り当てられている第２のデータに対する類似性指標よりも、前記第１のデータに対する類似性指標の方が小さい場合に、前記第１の計算資源に前記第１のデータを割り当てることを特徴とする付記１に記載のデータ配置プログラム。
【０１７４】
（付記３）前記複数の計算資源に配置されたデータの数のうち最小の数を特定し、特定した前記最小の数のデータを各計算資源に残し、各計算資源に配置された前記最小の数を超える残りのデータの配置先を未定に設定する処理を更に実行することを特徴とする付記１または２に記載のデータ配置プログラム。
【０１７５】
（付記４）前記取得する処理は、前記入力データを複数のクラスタに分類し、分類した複数のクラスタからクラスタを選択し、選択したクラスタに属するデータから前記複数の計算資源の数に対応する数の複数のデータを取得することを特徴とする付記１、２または３に記載のデータ配置プログラム。
【０１７６】
（付記５）コンピュータが実行するデータ配置方法であって、
複数の計算資源に対して、データを分散配置する際に、入力データより、前記複数の計算資源の数に対応する数の複数のデータを取得し、
取得した前記複数のデータそれぞれについて、前記複数の計算資源に保存されたデータ各々に対し算出される類似度から、前記複数の計算資源ごとの類似性指標を生成し、
前記複数のデータそれぞれに対する前記複数の計算資源の前記類似性指標に基づき、各割り当てに対応する前記類似性指標が小さい方向に安定となるマッチング方式により前記複数の計算資源各々へ割り当て、
前記割り当てに基づき、取得した前記複数のデータを前記複数の計算資源に配置する
処理を実行することを特徴とするデータ配置方法。
【０１７７】
（付記６）前記割り当てる処理は、第１のデータと複数の計算資源との前記類似性指標に基づき、第１のデータに対して優先される第１の計算資源を特定し、前記第１の計算資源と複数のデータとの類似性指標において、前記第１の計算資源に既に割り当てられている第２のデータに対する類似性指標よりも、前記第１のデータに対する類似性指標の方が小さい場合に、前記第１の計算資源に前記第１のデータを割り当てることを特徴とする付記５に記載のデータ配置方法。
【０１７８】
（付記７）前記複数の計算資源に配置されたデータの数のうち最小の数を特定し、特定した前記最小の数のデータを各計算資源に残し、各計算資源に配置された前記最小の数を超える残りのデータの配置先を未定に設定する処理を更に実行することを特徴とする付記５または６に記載のデータ配置方法。
【０１７９】
（付記８）前記取得する処理は、前記入力データを複数のクラスタに分類し、分類した複数のクラスタからクラスタを選択し、選択したクラスタに属するデータから前記複数の計算資源の数に対応する数の複数のデータを取得することを特徴とする付記５、６または７に記載のデータ配置方法。
【０１８０】
（付記９）複数の計算資源に対して、データを分散配置する際に、入力データより、前記複数の計算資源の数に対応する数の複数のデータを取得する選択部と、
前記複数のデータそれぞれについて、前記複数の計算資源に保存されたデータ各々に対し算出される類似度から、前記複数の計算資源ごとの類似性指標を生成し、前記複数のデータそれぞれに対する前記複数の計算資源の前記類似性指標に基づき、各割り当てに対応する前記類似性指標が小さい方向に安定となるマッチング方式により前記複数の計算資源各々へ割り当てるマッチング計算部と、
前記割り当てに基づき、取得した前記複数のデータを前記複数の計算資源に配置する配置処理部と
を有することを特徴とするデータ配置装置。
【０１８１】
（付記１０）前記マッチング計算部は、第１のデータと複数の計算資源との前記類似性指標に基づき、第１のデータに対して優先される第１の計算資源を特定し、前記第１の計算資源と複数のデータとの類似性指標において、前記第１の計算資源に既に割り当てられている第２のデータに対する類似性指標よりも、前記第１のデータに対する類似性指標の方が小さい場合に、前記第１の計算資源に前記第１のデータを割り当てることを特徴とする付記９に記載のデータ配置装置。
【０１８２】
（付記１１）前記複数の計算資源に配置されたデータの数のうち最小の数を特定し、特定した前記最小の数のデータを各計算資源に残し、各計算資源に配置された前記最小の数を超える残りのデータの配置先を未定に設定する設定部を更に有することを特徴とする付記９または１０に記載のデータ配置装置。
【０１８３】
（付記１２）前記選択部は、前記入力データを複数のクラスタに分類し、分類した複数のクラスタからクラスタを選択し、選択したクラスタに属するデータから前記複数の計算資源の数に対応する数の複数のデータを取得することを特徴とする付記９、１０または１１に記載のデータ配置装置。
【符号の説明】
【０１８４】
１００  データ配置装置
１３０  マッチング管理部
１４０  候補データ選択部
１５０  マッチング計算部
【図１】
0006318980.tif 000002
【図２】
0006318980.tif 000003
【図３】
0006318980.tif 000004
【図４】
0006318980.tif 000005
【図５】
0006318980.tif 000006
【図６】
0006318980.tif 000007
【図７】
0006318980.tif 000008
【図８】
0006318980.tif 000009
【図９】
0006318980.tif 000010
【図１０】
0006318980.tif 000011
【図１１】
0006318980.tif 000012
【図１２】
0006318980.tif 000013
【図１３】
0006318980.tif 000014
【図１４】
0006318980.tif 000015
【図１５】
0006318980.tif 000016
【図１６】
0006318980.tif 000017
【図１７】
0006318980.tif 000018
【図１８】
0006318980.tif 000019
【図１９】
0006318980.tif 000020
【図２０】
0006318980.tif 000021
【図２１】
0006318980.tif 000022
【図２２】
0006318980.tif 000023
【図２３】
0006318980.tif 000024
【図２４】
0006318980.tif 000025
【図２５】
0006318980.tif 000026
【図２６】
0006318980.tif 000027
【図２７】
0006318980.tif 000028
【図２８】
0006318980.tif 000029
【図２９】
0006318980.tif 000030
【図３０】
0006318980.tif 000031
【図３１】
0006318980.tif 000032