以下に、本願の開示するデータ配置プログラム、データ配置方法およびデータ配置装置の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
本実施例に係るデータ配置装置の処理の一例について説明する。図1〜図11は、本実施例に係るデータ配置装置の処理を説明するための図である。データ配置装置は、同一の計算資源に類似する複数のデータを割り当てないように、複数のデータと各計算資源に格納されたデータとの間の類似性指標に基づき、複数のデータおよび複数の計算資源に対して安定マッチングを行う。
図1について説明する。レコードデータ110に含まれる複数のデータを、計算資源1〜4に追加する場合の動作を示す。一例として、追加するデータをビット列とする。データ間の類似度を、ビット列間のハミング距離にマイナスを掛けたものとする。ハミング距離は、ビット列でビットが違うものの数を示す。例えば、ビット列「101」とビット列「111」との類似度は、−1となる。
図2について説明する。データ配置装置は、レコードデータ110から、データ「100,000,111,010」を取り出す。データ配置装置は、計算資源1〜4に配置されているデータがないので、そのままデータを計算資源1〜4に追加する。すなわち、データ配置装置は、データ「100」を計算資源1に追加する。データ配置装置は、データ「000」を計算資源2に追加する。データ配置装置は、データ「111」を計算資源3に追加する。データ配置装置は、データ「010」を計算資源4に追加する。
図3について説明する。データ配置装置は、レコードデータ110から、データ「110,010,101,001」を取り出す。データ配置装置は、かかるデータ「110,010,101,001」を何れの計算資源に割り当てるのかを以下の処理を実行することで決める。
図4について説明する。データ配置装置は、図3で取り出したデータ「110,010,101,001」それぞれと、計算資源1〜4にあるデータの集合それぞれとの類似度を計算する。データ配置装置は、データ「110」とデータ「100,000,111,010」との類似度を計算すると、それぞれの類似度は「−1,−2,−1,−1」となる。データ配置装置は、データ「010」とデータ「100,000,111,010」との類似度を計算すると、それぞれの類似度は「−2,−1,−2,0」となる。
データ配置装置は、データ「101」とデータ「100,000,111,010」との類似度を計算すると、それぞれの類似度は「−1,−2,−1,−3」となる。データ配置装置は、データ「001」とデータ「100,000,111,010」との類似度を計算すると、それぞれの類似度は「−3,−2,−1,−1」となる。
以下の説明において、適宜、データ配置装置がレコードデータ110から取り出したデータのうち、1番目のデータを第1候補データ、2番目のデータを第2候補データ、3番目のデータを第3候補データ、4番目のデータを第4候補データと表記する。図4に示す例では、「110」が第1候補データ、「010」が第2候補データ、「101」が第3候補データ、「001」が第4候補データとなる。
図5について説明する。データ配置装置は、図4で説明した類似度の計算を実行することで、行列50を得る。行列50の1行目は、第1候補データと各計算資源1〜4に格納されたデータ「100,000,111,010」との類似度をそれぞれ示す。行列50の2行目は、第2候補データと各計算資源1〜4に格納されたデータ「100,000,111,010」との類似度をそれぞれ示す。行列50の3行目は、第3候補データと各計算資源1〜4に格納されたデータ「100,000,111,010」との類似度をそれぞれ示す。行列50の4行目は、第4候補データと各計算資源1〜4に格納されたデータ「100,000,111,010」との類似度をそれぞれ示す。
図6について説明する。データ配置装置は、行列50の行と列とをそれぞれ別々にソートして順位づけをすることで、第1〜第4候補データの希望リスト50aと、各計算資源1〜4の希望リスト50bとを作成する。
データ配置装置は、行列50の行毎に順位付けを行うことで、第1〜第4候補データの希望リストを生成する。データ配置装置は、類似するデータを含んでいない計算資源が優先されるように、第1〜第4候補データの希望リストを生成する。
ここでは一例として、行列50の3行目を基にして、第3候補データの希望リスト51を生成する処理について説明する。行列50の3行目は「−1,−2,−1,−3」となる。このため、第3候補データと、各計算資源に格納されたデータとについて、類似度の低い順に並べると、計算資源4、計算資源2、計算資源1、計算資源3となる。ただし、計算資源1と計算資源3との類似度は等しいため、計算資源1と計算資源3との順序は逆でもよい。データ配置装置は、第3候補データの希望リストを「4,2,1,3」とする。データ配置装置は、第1,2,4候補データについても同様の処理を行うことで、希望リスト50aを作成する。
データ配置装置は、行列50の列毎に順位付けを行うことで、計算資源1〜4の希望リストを生成する。データ配置装置は、類似していない候補データが優先されるように、計算資源1〜4の希望リストを生成する。
ここでは一例として、行列50の2列目を基にして、計算資源2の希望リスト52を生成する処理について説明する。行列50の2列目は「−2,−1,−2,−2」となる。このため、計算資源2に格納されたデータと、第1〜第4候補データとについて、類似度の低い順に並べると、第1候補データ、第3候補データ、第4候補データ、第2候補データとなる。ただし、第1候補データ、第3候補データ、第4候補データの類似度は等しいため、1番目から3番目までに第1候補データ、第3候補データ、第4候補データが含まれれば、どのように並べてもよい。データ配置装置は、計算資源2の希望リストを「1,3,4,2」とする。データ配置措置は、計算資源1、3,4についても同様の処理を行うことで、希望リスト50bを作成する。
図7について説明する。データ配置装置は、図6に示した希望リスト50aと希望リスト50bとを安定マッチング関数に入力することで、マッチング結果55を得る。マッチング結果55によれば、第1候補データを計算資源2に追加し、第2候補データを計算資源3に追加し、第3候補データを計算資源4に追加し、第4候補データを計算資源1に追加することを示す。
データ配置装置は、マッチング結果55に基づき、第1候補データを計算資源2に追加し、第2候補データを計算資源3に追加し、第3候補データを計算資源4に追加し、第4候補データを計算資源1に追加する。
図8について説明する。データ配置装置は、レコードデータ110から、データ「101,001,110,110」を取り出す。データ配置装置は、かかるデータ「101,001,110,110」を何れの計算資源に割り当てるのかを以下の処理を実行することで決める。図8に示す例では、「101」が第1候補データ、「001」が第2候補データ、「110」が第3候補データ、「110」が第4候補データとなる。
図9について説明する。データ配置装置は、図8で取り出した第1〜第4候補データそれぞれと、計算資源1〜4にあるデータの集合それぞれとの類似度を計算する。データ配置装置は、計算資源に複数のデータが存在する場合には、候補データと複数のデータとの類似度のうち、最大値を求める。すなわち、最も似ているデータとの類似度を求める。
例えば、データ配置装置は、第1候補データと、計算資源1〜4との類似度を計算すると、それぞれの類似度は「−1,−2,−1,0」となる。第2候補データと、計算資源1〜4との類似度を計算すると、それぞれの類似度は「−1,−1,−2,−1」となる。第3候補データと、計算資源1〜4との類似度を計算すると、それぞれの類似度は「−1,0,−1,−1」となる。第4候補データと、計算資源1〜4との類似度を計算すると、それぞれの類似度は「−1,0,−1,−1」となる。
図10について説明する。データ配置装置は、図9で説明した類似度の計算を実行することで、行列60を得る。行列60の1行目は、第1候補データと計算資源1〜4との類似度をそれぞれ示す。行列60の2行目は、第2候補データと計算資源1〜4との類似度をそれぞれ示す。行列60の3行目は、第3候補データと計算資源1〜4との類似度をそれぞれ示す。行列60の4行目は、第4候補データと計算資源1〜4との類似度をそれぞれ示す。
データ配置装置は、行列60の行と列とをそれぞれ別々にソートして順位づけをすることで、第1〜第4候補データの希望リスト60aと、各計算資源1〜4の希望リスト60bとを作成する。希望リスト60a,60bを作成する処理は、図6に示した希望リスト50a,50bを作成する処理と同様である。
図11について説明する。データ配置装置は、図10に示した希望リスト60aと希望リスト60bとを安定マッチング関数に入力することで、マッチング結果65を得る。マッチング結果65によれば、第1候補データを計算資源2に追加し、第2候補データを計算資源3に追加し、第3候補データを計算資源1に追加し、第4候補データを計算資源4に追加することを示す。
データ配置装置は、マッチング結果65に基づき、第1候補データを計算資源2に追加し、第2候補データを計算資源3に追加し、第3候補データを計算資源1に追加し、第4候補データを計算資源4に追加する。データ追加装置は、レコードデータ110にデータが無くなるまで、上記処理を繰り返し実行する。
データ配置処理は、図1〜図11に示した処理を実行することで、複数の計算資源へのデータの配列を、各計算資源に割り振るデータをほぼ均等にしつつ、同一の計算資源に配置するデータの類似度を大きくならないようにすることができる。
次に、本実施例のデータ配置装置が利用する安定マッチング問題(Stable marriage problem, Stable matching problem)の一例について説明する。安定マッチング問題は、男N人と女N人がいて、各男は女の希望リストを持ち、各女は男の希望リストを持っている場合に、男女の間の安定なペア達を作る問題である。ここで、男女間のマッチングが与えられた場合に、現在のペアを組んでいる相手よりも互いに好ましい相手がいる場合、彼らは駆け落ちをしてしまう。そのようなペアをブロッキングペアと呼ぶ。このブロッキングペアの存在するマッチングを不安定マッチングと呼び、ブロッキングペアの存在しないマッチングを安定マッチングと呼ぶ。
図12は、安定マッチングと不安定マッチングとを説明するための図である。図12では、男4人と女4人の場合の安定マッチングと不安定マッチングとを示す。4人の男をそれぞれ1,2,3,4とし、4人の女をそれぞれa,b,c,dとする。男1,2,3,4は、女a,b,c,dに対する希望リストを持つ。例えば、男2の希望は、c,b,a,dの順となる。例えば、女bの希望は、2,1,4,3となる。
グループ20aでは、ペアはそれぞれ(1,a)、(2,c)、(3,b)、(4、d)となる。グループ20aには、ブロッキングペアが存在しないので、グループ20aの各ペアは、安定なマッチングと言える。
これに対して、グループ20bでは、ペアはそれぞれ(1,a)、(2,c)、(3,d)、(4,b)となる。グループ20bには、ブロッキングペア(4,d)が存在する。男4は女bより女dが好ましく、女dは男3より男4が好ましいためである。このため、グループ20bの各ペアは、不安定なマッチングと言える。
次に、図12のグループ20aに示した安定マッチングを得るためのゲール−シャプレイ(Gale-Shapley)のアルゴリズムについて説明する。図13は、ゲール−シャプレイのアルゴリズムの処理手順の一例を示す図である。図13の処理を実行することで、安定マッチングを得ることができる。以下の説明では、ゲール−シャプレイのアルゴリズムを適宜、GSと表記する。
図13に示すように、GSは、n人の男性とn人の女性、および、各人の異性全員に対する希望リストを取得する(ステップS10)。GSは、独身の男性hが存在するか否かを判定する(ステップS11)。独身の男性hが存在しない場合には(ステップS11,No)、現在婚約しているペアの集合を安定マッチングとして出力する(ステップS12)。
一方、GSは、独身の男性hが存在する場合には(ステップS11,Yes)、男性hがまだプロポーズしていない女性のなかで、希望リストの最高位の女性dにプロポーズさせる(ステップS13)。GSは、プロポーズされた女性dが独身であるか否かを判定する(ステップS14)。
GSは、女性dが独身である場合には(ステップS14,Yes)、女性dと男性hとを婚約させ(ステップS15)、ステップS11に移行する。一方、GSは、女性dが独身でない場合には(ステップS14,No)、ステップS16に移行する。
ステップS16において、女性dの希望リストにおいて、希望順位が男性h’>男性hならば、女性dは男性hからのプロポーズを断る。希望順位が男性h>h’ならば、女性は男性h’との婚約を解消し、男性hと婚約する。GSは、ステップS16の処理を終了した後に、ステップS11に移行する。
次に、ゲール−シャプレイのアルゴリズムを拡張した拡張ゲール−シャプレイについて説明する。以下の説明では、拡張ゲール−シャプレイを拡張GSと表記する。拡張GSは、アルゴリズムの途中で安定マッチングに至らないペア候補を希望リストから削除する。具体的に、拡張GSでは、男性hと女性dとを婚約させた場合に、女性dの希望リストから、男性hよりも優先順位の低い男性を削除する点でGSと相違する。このような処理を追加することで、GSよりも効率的に安定マッチングを実行することができる。
次に、安定マッチング問題の拡張について説明する。古典的な安定マッチング問題では、次の事項(1)〜(3)を仮定している。事項(1)男女の数が同じ、事項(2)全ての希望リストは同順位を許容しない、事項(3)全ての男女は全ての異性の順位付けを行う。すなわち、独身を許容しない。このため、以下に示すように、事項(1)〜(3)の仮定を緩めることで問題を一般化することができる。
事項(1)なし、事項(2)あり、事項(3)ありの場合について説明する。この場合には、安定マッチング問題を、拡張GSを用いて解く。男女の人数差の人間は独身となる。
事項(1)あり、事項(2)なし、事項(3)ありの場合について説明する。この場合には、同順位になっているものを、無理やり順位をつけることで、古典的安定マッチング問題となる。同順位になっているものに対して順位付けを行った後に、拡張GSを用いて解く。
事項(1)あり、事項(2)あり、事項(3)なしの場合について説明する。この場合には、不完全リストの安定マッチング問題となる。この不安定マッチング問題は拡張GSを用いて解く。このとき、独身となる人が出てくる。
事項(1)あり、事項(2)なし、事項(3)なしの場合について説明する。この場合には、同順位になっているものに対して順位付けを行った後に、拡張GSを用いて解く。希望リストの順位の付け方により、独身となるものが変わる。
次に、病院研修医問題(Hospitals/Residents problem)について説明する。病院研修医問題は、研修医の配属先病院を決める問題である。上述した安定マッチング問題と異なるものは、病院は最大受け入れ人数を持っており、それ以上の研修医を受け入れないことである。病院が受け入れる最大受け入れ人数をクオータと表記する。全ての病院のクオータが1である場合には、病院研修医問題は、安定マッチング問題と同じ問題となる。
病院研修医問題の解き方は、以下の手順で、病院研修医問題を不完全リストの安定マッチング問題に直すことである。病院Aのクオータを「qA」とするとき、AをqA個に分割し、クオータが1であるA1,A2,A3,・・・,AqAに分ける。また、研修医の希望リストに含まれている病院AをqA個のA1からAqAにし、強引に順位付けを行う。
例えば、病院A、Bが存在し、病院Aのクオータを2、病院Bのクオータを1とする。ある研修医の希望リストにおいて、第1希望を病院B、第2希望を病院Aとする。この場合には、まず、病院Aを病院A1、病院A2に分け、病院A1、病院A2について強引に順位づけを行う。例えば、病院A1、A2に対して、第2希望または第3希望をランダムに割り当てる。そうすることで、例えば、ある研修医の希望リストについて、第1希望を病院B、第2希望を病院A1、第3希望を病院A2とする。この結果、不完全リストの安定マッチング問題となるため、拡張GSを用いて解く。
次に、本実施例に係るデータ配置装置の構成の一例について説明する。図14は、本実施例に係るデータ配置装置の構成を示す機能ブロック図である。図14に示すように、このデータ配置装置100は、N個の計算資源1〜Nを有する。Nは2以上の自然数である。また、データ配置装置100は、記憶部105、入力部120、マッチング管理部130、候補データ選択部140、マッチング計算部150、配置処理部160、照合部170を有する。
記憶部105は、レコードデータ110および配置先情報115を有する。記憶部105は、例えば、RAM(Random Access Memory)、ROM(Read Only Memory)、フラッシュメモリ(Flash Memory)などの半導体メモリ素子などの記憶装置に対応する。
レコードデータ110は、計算資源1〜Nに配置するデータを有する。図15は、レコードデータのデータ構造の一例を示す図である。図15に示すように、このレコードデータ110は、データ識別子とデータとを対応付ける。データ識別子は、データを一意に識別する情報である。データは、各計算資源1〜Nに配置するデータである。例えば、データ識別子「001」に対応するデータは「2.0,4.1,6.4」となる。ここでは、データ識別子と、データの組とを対応付ける例を示したが、単一のデータ識別子に、単一のデータを対応付けてもよい。
配置先情報115は、データの配置先を示す情報である。図16は、配置先情報のデータ構造の一例を示す図である。図16に示すように、この配置先情報115は、データ識別子と、配置先とを対応付ける。データ識別子は、図15で説明したデータ識別子に対応する。配置先は、データを配置する計算資源を一意に識別する情報である。例えば、図16において、データ識別子「001」に対応するデータの配置先が「計算資源1」となっている。
図14の説明に戻る。入力部120は、各種の情報をマッチング管理部130、照合部170に入力するための入力装置である。例えば、入力部120は、キーボードやマウス、タッチパネル等に対応する。例えば、利用者は、入力部120を操作して、マッチング管理部130に、データ配置決定要求、初期の閾値T、限界反復回数J等を入力する。データ配置決定要求、初期閾値T、限界反復回数Jの説明は後述する。また、利用者は、入力部120を操作して、クエリデータを照合部170に入力することで、照合要求を行う。
マッチング管理部130は、設定部の一例である。マッチング管理部130は、データ配置決定要求を取得した場合に、データ配置決定要求に応じて、配置先情報115を更新する。また、マッチング管理部130は、配置先情報115を基にして、配置先が未定のデータを候補データ選択部140に通知し、候補データ選択部140から候補データを取得する。候補データは、図1〜図11に示した各候補データに対応するものである。マッチング管理部130は、候補データをマッチング計算部150に出力し、マッチング計算部150から、各候補データの配置先の情報を取得する。マッチング管理部130は、マッチング計算部150から取得した各候補データの配置先の情報を基にして、配置先情報115を更新する。マッチング管理部130は、限界反復回数Jに達するまで、上記処理を繰り返し実行する。
マッチング管理部130が、データ配置決定要求を取得した場合の処理について具体的に説明する。例えば、データ配置決定要求には、「全部やり直し要求」または「データ数均等更新要求」が含まれる。データ配置決定要求に、全部やり直し要求が含まれている場合について説明する。マッチング管理部130は、配置先情報115にアクセスし、各配置先を未定に設定する。
データ配置決定要求に、データ数均等変更要求が含まれている場合について説明する。前提条件として、レコードデータ110にあるデータの内、各計算資源1〜Nに分配されているデータ数をn1からnNとする。また、n1からnNのなかで最小のものを「n_*」とする。マッチング管理部130は、計算資源1に配置決定されているデータの内、n1−n_*個のデータを、レコードデータ110からランダムに選択し、選択したデータの配置先を未定に設定する。マッチング管理部130は、計算資源2〜Nに配置決定されているデータについても同様の処理を実行する。
候補データ選択部140は、選択部の一例である。候補データ選択部140は、マッチング管理部130から配置先が未定のデータの通知を受け付ける。配置先が未定のデータ集合をデータ集合X’と表記する。候補データ選択部140は、データ集合X’の中からN個ランダムに選択し、選択したデータを候補データとして、マッチング管理部130に出力する。候補データ選択部140は、データ集合X’に含まれるデータの数がN個に満たない場合には、データ集合X’を候補データとして、マッチング管理部130に出力する。
マッチング計算部150は、マッチング管理部130から各候補データを取得し、取得した各候補データの配置先を判定する。マッチング計算部150は、各候補データの配置先の情報を、マッチング管理部130に通知する。
ここで、マッチング計算部150の処理について具体的に説明する。前提条件として、各候補データをv1、v2、・・・、vN’とする。各計算資源をs1、s2、・・・、sNとする。ただし、N’とNとの関係は、式(1)を満たすものとする。
ceil(N’/N)=1・・・(1)
マッチング計算部150は、候補データviと、計算資源sjに配置されているデータ及び配置先が決定済みのデータ全てとの類似度を計算する。候補データviと、計算資源sjに配置されているデータ及び配置先が決定済みのデータ全てとの類似度のうち、最大値を、dijと表記する。
マッチング計算部150は、類似度の最大値dijを(i,j)要素に持つN’×N行列Dを作成する。マッチング計算部150は、行列Dのi行目を昇順にソートし、候補データviに対する計算資源sjの順位を決定する。マッチング計算部150は、決定した順位に基づいて、候補データviの希望リストLviを作成する。このとき、j!=j’で、-dij=dij’となるときがあるが、ソートの際にどちらが先に来てもよいものとする。
マッチング計算部150は、行列Dのj列目を昇順にソートし、計算資源sjに対する候補データviの順位を決定する。マッチング計算部150は、決定した順序に基づいて、計算資源sjの希望リストLsjを作成する。
マッチング計算部150は、各候補データの希望リストLv1、・・・、LvN’と、計算資源の希望リストLsj、・・・、Lsjと、拡張GSアルゴリズムとを用いて、安定マッチングを求める。マッチング計算部150が拡張GSアルゴリズムを用いる際、プロポーズするのは、候補データ側でも、計算資源側でもよい。マッチング計算部150は、マッチング結果に基づいて、各候補データの配置先の情報を、マッチング管理部130に通知する。
配置処理部160は、配置先情報115を基にして、レコードデータ110に含まれる各データを、計算資源1〜Nに配置する処理部である。
照合部170は、入力部120からクエリデータを取得した場合に、各計算資源1〜Nとクエリデータとを照合する処理部である。照合部170は、照合結果を図示しない表示装置等に出力する。
次に、本実施例に係るデータ配置装置100の処理手順の一例について説明する。図17は、本実施例に係るデータ配置装置の処理手順の一例を示すフローチャートである。図17に示すように、データ配置装置100のマッチング管理部130は、データ配置決定処理要求、初期閾値T、限界反復回数Jを取得する(ステップS101)。
マッチング管理部130は、配置情報の上書き処理を実行する(ステップS102)。マッチング管理部130は、限界反復回数Jが1以下であるか否かを判定する(ステップS103)。マッチング管理部130は、限界反復回数Jが1以下でない場合には(ステップS103,No)、配置先情報115を取得する(ステップS104)。
マッチング管理部130は、1から|X|までの乱数aを得て、Xからa個ランダムに選択しコピーしたものをデータ集合X’に設定し、候補データ選択部140に出力する(ステップS105)。ステップS105において、「X」は、配属先が未定のデータ集合とする。
データ配置装置100の候補データ選択部140は、候補データ選択処理を実行する(ステップS106)。マッチング管理部130は、候補データ選択部140から候補データを得て、Xから候補データに入っているデータを削除する(ステップS107)。
マッチング管理部130は、候補データおよび閾値Tをマッチング計算部150に出力する(ステップS108)。マッチング計算部150は、マッチング計算処理を実行する(ステップS109)。
マッチング管理部130は、マッチング計算部150から候補データの配置先の情報を取得し、候補データの配置先情報Yを更新する(ステップS110)。マッチング管理部130は、配置先が未定のデータ集合Xが空であるか否かを判定する(ステップS111)。
マッチング管理部130は、配置先が未定のデータ集合Xが空でない場合には(ステップS111,No)、ステップS105に移行する。一方、マッチング管理部130は、配置先が未定のデータ集合Xが空の場合には(ステップS111,Yes)、配置先情報Yを、配置先情報115に書き出す(ステップS112)。
マッチング管理部130は、限界反復回数Jから1を減算した値によって、限界反復回数Jの値を更新する(ステップS113)。マッチング管理部130は、閾値を2倍した値2Tによって、Tの値を更新し(ステップS114)、ステップS103に移行する。
ところで、マッチング管理部130は、ステップS103において、限界反復回数Jが1以下の場合には(ステップS103,Yes)、限界反復回数Jが1であるか否かを判定する(ステップS115)。マッチング管理部130は、限界反復回数Jが1でない場合には(ステップS115,No)、処理を終了する。
一方、マッチング管理部130は、限界反復回数Jが1である場合には(ステップS115,Yes)、閾値Tの値を+∞に設定し(ステップS116)、ステップS104に移行する。
次に、図17のステップS102に示した配置情報の上書き処理の処理手順について説明する。図18は、配置情報の上書き処理の処理手順を示すフローチャートである。図18に示すように、データ配置装置100のマッチング管理部130は、データ配置決定要求が、全部やり直し要求であるか否かを判定する(ステップS121)。
マッチング管理部130は、データ配置決定要求が、全部やり直し要求である場合には(ステップS121,Yes)、配置先情報115の全てのデータの配置先を未定に設定し(ステップS122)、配置情報の上書き処理を終了する。
一方、マッチング管理部130は、データ配置決定要求が、全部やり直し要求でない場合には(ステップS121,No)、要求がデータ数均等更新要求であるか否かを判定する(ステップS123)。マッチング管理部130は、要求がデータ数均等更新要求でない場合には(ステップS123,No)、配置情報の上書き処理を終了する。
一方、マッチング管理部130は、要求がデータ数均等更新要求である場合には(ステップS123,Yes)、レコードデータ110にあるデータの内、各計算資源に分配されているデータ数をn1からnNとする(ステップS124)。
マッチング管理部130は、n1からnNの中で最小のものをn_*とする(ステップS125)。マッチング管理部130は、計算資源1に配置決定されているデータの内、n1−n_*個のデータをランダムに選択し、それらの配置先を未定とする。また、マッチング管理部130は、他の計算資源についても同様の処理を実行する(ステップS126)。
次に、図17のステップS106に示した候補データ選択処理の処理手順について説明する。図19は、候補データ選択処理の処理手順を示すフローチャート(1)である。図19に示すように、データ配置装置100の候補データ選択部140は、データ集合X’を取得する(ステップS131)。
候補データ選択部140は、データ集合X’の要素数がN以上であるか否かを判定する(ステップS132)。候補データ選択部140は、データ集合X’の要素数がN以上である場合に(ステップS132,Yes)、データ集合X’からランダムにN個選択する(ステップS133)。候補データ選択部140は、選択したデータを候補データとして出力する(ステップS134)。
ところで、候補データ選択部140は、データ集合X’の要素数がN以上でない場合には(ステップS132,No)、データ集合X’を全て選択し(ステップS135)、ステップS134に移行する。
次に、図17のステップS109に示したマッチング計算処理の処理手順について説明する。図20は、マッチング計算処理の処理手順を示すフローチャート(1)である。データ配置装置100のマッチング計算部150は、各候補データをv1、・・・、vN’とし、各計算資源をs1、・・・、sNとする(ステップS141)。
マッチング計算部150は、行列Dの計算を行う(ステップS142)。マッチング計算部150は、行列Dのi番目の行ベクトルをEiとする。マッチング計算部150は、Eiベクトルの要素を値が小さいものから順に順位をつけ、候補データviの希望リストLviを作成する(ステップS143)。
マッチング計算部150は、行列Dのj番目の列ベクトルをFjとする。マッチング計算部150は、Fjベクトルの要素を値が小さいものから順に順位をつけ、計算資源sjの希望リストLsjを作成する(ステップS144)。
マッチング計算部150は、安定マッチングを行う(ステップS145)。ステップS145における安定マッチングは、拡張GSアルゴリズムに従う。マッチング計算部150が拡張GSアルゴリズムを用いる際、プロポーズするのは、候補データ側でも、計算資源側でもよい。
マッチング計算部150は、マッチングMの中の全ての組(vi、sj)に対し、候補データviの配置先を、計算資源sjとする(ステップS146)。
次に、図20に示した行列Dの計算の処理手順について説明する。図21は、行列Dの計算の処理手順を示すフローチャート(1)である。図21に示すように、データ配置装置100のマッチング計算部150は、計算資源sjに配置済みおよび配置決定済みのデータの集合をQjとする(ステップS151)。マッチング計算部150は、i=1、・・・、N’およびj=1、・・・Nに対し、下記の処理を実行する(ステップS152)。
マッチング計算部150は、データ集合Qjに含まれるデータ全てに対し、候補データviとの類似度を計算する(ステップS153)。マッチング計算部150は、類似度のうち、最大のものをdijに設定する(ステップS154)。マッチング計算部150は、行列Dの(i、j)成分をdijに設定する(ステップS155)。
次に、本実施例に係るデータ配置装置100の効果について説明する。データ配置装置100は、候補データ選択部140が選択した複数の候補データそれぞれについて、各計算資源1〜Nに対して算出される類似度から、類似性指標として、各候補データの希望リストと各計算資源1〜Nの希望リストを生成する。データ配置装置100は、各候補データの希望リストと各計算資源1〜Nの希望リストを基にして、安定マッチングを行うことで、複数の候補データを各計算資源1〜Nに割り当て、配置する。このため、データ配置装置100によれば、複数の計算資源へのデータの配置を、各計算資源に割り振るデータをほぼ均等にしつつ、同一の計算資源に配置するデータの類似度を大きくならないようにすることができる。
また、データ配置装置100は、安定マッチングを行う場合に、ある候補データに、該候補データの優先される計算資源にプロポーズさせ、プロポーズを受けた計算資源と既にペアとなっている候補データよりも、ある候補データの類似度が小さいかを判定する。データ配置装置100は、計算資源に対して、ある候補データの類似度が既にペアになっている候補データの類似度の方が小さい場合に、プロポーズさせた候補データと計算資源とをペアにする。これにより、データ配置装置100は、ブロッキングペアのない安定マッチングを効率的に行うことができる。
また、データ配置装置100は、各計算資源に配置されているデータ数n1〜nNの中で最小のものをn_*個とし、各計算資源に配置決定されているデータの内、n1−n_*個のデータをランダムに選択し、選択したデータの配置先を未定に設定する。この処理を行うことで、同一の計算資源に配置するデータの類似度を大きくならないようにすることができる。
ところで、図14に示した候補データ選択部140、マッチング計算部150の処理は一例である。以下では、候補データ選択部140およびマッチング計算部150のその他の処理について説明する。
候補データ選択部140のその他の処理(1)について説明する。候補データ選択部140は、マッチング管理部130から配置先が未定のデータ集合X’の情報を取得する。候補データ選択部140は、データ集合X’の中からNの倍数個ランダムに選択し、選択したデータを候補データとして、マッチング管理部130に出力する。候補データ選択部140は、データ集合X’に含まれるデータの数がNに満たない場合には、データ集合X’全てを候補データとして、マッチング管理部130に出力する。
図22は、候補データ選択処理の処理手順を示すフローチャート(2)である。図22に示すように、候補データ選択部140は、データ集合X’を取得する(ステップS161)。候補データ選択部140は、p=ceil(|X’|/N)とする(ステップS162)。
候補データ選択部140は、pの値が1以上であるか否かを判定する(ステップS163)。候補データ選択部140は、pの値が1以上である場合には(ステップS163,Yes)、データ集合X’からランダムにpN個の配置先が未定のデータを選択する(ステップS164)。候補データ選択部140は、選択したデータを候補データとして出力する(ステップS165)。
候補データ選択部140は、pの値が1以上でない場合には(ステップS163,No)、データ集合X’を全て選択し(ステップS166)、ステップS165に移行する。
続いて、候補データ選択部140のその他の処理(2)について説明する。候補データ選択部140は、マッチング管理部130から配置先が未定のデータ集合X’の情報を取得する。候補データ選択部140は、データ集合X’の各データに対し、0以上1未満の乱数を振る。候補データ選択部140は、各データに割り振った数を基にして、割り振った数が0.5以上となるデータを集合Aに追加する。
候補データ選択部140は、k-medoid法等を用いて、集合Aのデータを、K個のクラスタに分ける。例えば、Kは「K=ceil(A/N)」により定まる値である。このとき、各クラスタに属するデータの数はおよそNになる。候補データ選択部140は、クラスタをランダムに1つ選択し、選択したクラスタに属するデータ数をMとする。
候補データ選択部140は、選択したクラスタのデータ数MがN以上である場合には、選択したクラスタからN個のデータを選択し、選択したデータを候補データとして、マッチング管理部130に出力する。
これに対して、候補データ選択部140は、選択したクラスタのデータ数MがN未満の場合について説明する。候補データ選択部140は、選択したクラスタに属するデータを全て候補データとする。また、候補データ選択部140は、選択したクラスタに属さないデータ集合Aのデータの数が、N−M個以上の場合に、N−M個のデータを、選択したクラスタに属さないデータ集合Aのデータからランダムに選択し、候補データに追加する。一方、候補データ選択部140は、選択したクラスタに属さないデータ集合Aのデータの数が、N−M個未満の場合に、選択したクラスタに属さないデータ集合Aのデータを全て選択し、候補データに追加する。候補データ選択部140は、候補データを、マッチング管理部130に出力する。
図23は、候補データ選択処理の処理手順を示すフローチャート(3)である。図23に示すように、候補データ選択部140は、データ集合X’を取得する(ステップS171)。候補データ選択部140は、データ集合X’の各要素を対象に、下記の処理を実行する。候補データ選択部140は、データ集合X’のデータに対して[0、1]の浮動小数の乱数を振る。候補データ選択部140は、振られた値が0.5よりも大きいデータを集合Aに入れる。候補データ選択部140は、振られた値が0.5以下のデータを集合Aに入れない(ステップS172)。
候補データ選択部140は、集合Aの要素数を|A|とし、K=ceil(|A|/N)とする(ステップS173)。候補データ選択部140は、k-medoid法等を用いて、AをK個のクラスタに分類する(ステップS174)。
候補データ選択部140は、各クラスタに[1、K]の整数の乱数を振り、それをiとする(ステップS175)。候補データ選択部140は、クラスタiに属するデータ数をMとする(ステップS176)。
候補データ選択部140は、MがN以上であるか否かを判定する(ステップS177)。候補データ選択部140は、MがN以上である場合には(ステップS177,Yes)、クラスタiからN個のデータをランダムに選択する(ステップS178)。候補データ選択部140は、選択したデータを候補データとして出力する(ステップS179)。
一方、候補データ選択部140は、MがN未満の場合には(ステップS177,No)、ステップS180に移行する。候補データ選択部140は、クラスタiのデータを全て選択する。候補データ選択部140は、更に集合Aのうち、クラスタiに属していないデータ数が、N−Mの場合、N−M個のデータをランダムに選択する。候補データ選択部140は、N−M未満の場合に、集合Aのデータを全て選択する(ステップS180)。候補データ選択部140は、ステップS179に移行する。
続いて、候補データ選択部140のその他の処理(3)について説明する。候補データ選択部140は、マッチング管理部130から配置先が未定のデータ集合X’の情報を取得する。候補データ選択部140は、データ集合X’の各データに対し、0以上1未満の乱数を振る。候補データ選択部140は、各データに割り振った数を基にして、割り振った数が0.5以上となるデータを集合Aに追加する。
候補データ選択部140は、k-medoid法等を用いて、集合Aのデータを、K個のクラスタに分ける。例えば、Kは「K=ceil(A/N)」により定まる値である。候補データ選択部140は、各クラスタに属するデータ数がN以上となるクラスタを全て選択する。候補データ選択部140は、選択したクラスタから、N個ずつデータをランダムに選択し、選択したデータを候補データとして出力する。この場合、選択される候補データの数は、Nの倍数となる。
図24は、候補データ選択処理の処理手順を示すフローチャート(4)である。図24に示すように、候補データ選択部140は、データ集合X’を取得する(ステップS191)。候補データ選択部140は、データ集合X’の各要素を対象に、以下の処理を行う。候補データ選択部140は、データ集合X’のデータに対して[0、1]の浮動小数の乱数を振る。候補データ選択部140は、振られた値が0.5よりも大きいデータを集合Aに入れる。候補データ選択部140は、振られた値が0.5以下のデータを集合Aに入れない(ステップS192)。
候補データ選択部140は、集合Aの要素数を|A|とし、K=ceil(|A|/N)とする(ステップS193)。候補データ選択部140は、候補データ選択部140は、k-medoid法を用いて、AをK個のクラスタに分類する(ステップS194)。
候補データ選択部140は、クラスタに含まれるデータ数がN以上のものを全て選ぶ(ステップS195)。候補データ選択部140は、選んだクラスタ毎に、N個のデータをランダムに選択する(ステップS196)。候補データ選択部140は、選択したデータを候補データとして出力する(ステップS197)。
続いて、マッチング計算部150のその他の処理(1)について説明する。ここで説明するマッチング計算部150の処理は、行列Dの計算の処理手順が、上記マッチング計算部の説明と異なる。具体的に、マッチング計算部150は、候補データviと、計算資源sjに配置されているデータ及び配置先が決定済みのデータ全てとの類似度を計算する。マッチング計算部150は、候補データviと、計算資源sjに配置されているデータ及び配置先が決定済みのデータ全てとの類似度のうち、上位k件の平均値を行列Dの(i、j)成分に設定する。
図25は、行列Dの計算の処理手順を示すフローチャート(2)である。図25に示すように、マッチング計算部150は、計算資源sjに配置済みおよび配置決定済みのデータの集合をQjとする(ステップS201)。マッチング計算部150は、i=1、・・・、N’およびj=1、・・・Nに対し、下記の処理を実行する(ステップS202)。
マッチング計算部150は、データ集合Qjに含まれるデータ全てに対し、候補データviとの類似度を計算する(ステップS203)。マッチング計算部150は、類似度の大きいものから10個選択し、選択した各類似度の平均値をdijに設定する(ステップS204)。マッチング計算部150は、行列Dの(i、j)成分をdijに設定する(ステップS205)。
続いて、マッチング計算部150のその他の処理(2)について説明する。ここで説明するマッチング計算部150の処理は、行列Dの計算の処理手順が、上記マッチング計算部の説明と異なる。具体的に、マッチング計算部150は、候補データviと、計算資源sjに配置されているデータ及び配置先が決定済みのデータ全てとの類似度を計算する。マッチング計算部150は、全ての類似度の平均mと、標準偏差σを算出する。マッチング計算部150は、平均mと標準偏差σを加算した値を、行列Dの(i、j)成分に設定する。
図26は、行列Dの計算の処理手順を示すフローチャート(3)である。図26に示すように、マッチング計算部150は、計算資源sjに配置済みおよび配置決定済みのデータの集合をQjとする(ステップS211)。マッチング計算部150は、i=1、・・・、N’およびj=1、・・・、Nに対し、下記の処理を実行する(ステップS212)。
マッチング計算部150は、データ集合Qjに含まれるデータ全てに対し、候補データviとの類似度を計算する(ステップS213)。マッチング計算部150は、各類似度の平均をm、標準偏差をσとする。マッチング計算部150は、dij=m+σとする(ステップS214)。マッチング計算部150は、行列Dの(i、j)成分をdijに設定する(ステップS215)。
続いて、マッチング計算部150のその他の処理(3)について説明する。マッチング計算部150は、マッチング管理部130から各候補データを取得する。前提条件として、各候補データをv1、v2、・・・、vN’とする。各計算資源をs1、s2、・・・、sNとする。また、pをp=ceil(N’/N)から特定される整数とする。
マッチング計算部150は、候補データviと、計算資源sjに配置されているデータ及び配置先が決定済みのデータ全てとの類似度を計算する。マッチング計算部150は、候補データviと、計算資源sjに配置されているデータ及び配置先が決定済みのデータ全てとの類似度のうち、最大値を、dijと表記する。
マッチング計算部150は、類似度の最大値dijを(i,j)要素に持つN’×N行列Dを作成する。マッチング計算部150は、行列Dのi行目を昇順にソートし、候補データviに対する計算資源sjの順位を決定する。マッチング計算部150は、決定した順位に基づいて、候補データviの希望リストLviを作成する。このとき、j!=j’で、-dij=dij’となるときがあるが、ソートの際にどちらが先に来てもよいものとする。
マッチング計算部150は、行列Dのj列目を昇順にソートし、計算資源sjに対する候補データviの順位を決定する。マッチング計算部150は、決定した順序に基づいて、計算資源sjの希望リストLsjを作成する。
マッチング計算部150は、各候補データの希望リストLv1、・・・、LvN’とし、計算資源の希望リストLsj、・・・、LsNとし、各病院のクオータをpとして病院研修問題としてマッチングを計算する。マッチング計算部150がマッチングを行う場合、プロポーズするのは、候補データ側でも、計算資源側でもよい。マッチング計算部150は、マッチング結果に基づいて、各候補データの配置先の情報を、マッチング管理部130に通知する。
図27は、マッチング計算処理の処理手順を示すフローチャート(2)である。図27に示すように、マッチング計算部150は、各候補データをv1、・・・、vN’とし、各計算資源をs1、・・・、sNとする(ステップS221)。マッチング計算部150は、p=ceil(N’/N)を計算する(ステップS222)。
マッチング計算部150は、行列Dの計算を行う(ステップS223)。マッチング計算部150が実行する行列Dの計算は、上述した図21、25、26のいずれかの処理手順に従う。
マッチング計算部150は、行列Dのi番目の行ベクトルをEiとする。マッチング計算部150は、Eiベクトルの要素を値が小さいものから順に順位をつけ、候補データviの希望リストLviを作成する(ステップS224)。
マッチング計算部150は、行列Dのj番目の列ベクトルをFjとする。マッチング計算部150は、Fjベクトルの要素を値が小さいものから順に順位をつけ、計算資源sjの希望リストLsjを作成する(ステップS225)。
マッチング計算部150は、病院のクオータがpの病院研修医問題に基づき、安定マッチングを行う(ステップS226)。ステップS226において、マッチング計算部150は、病院研修医問題を不完全リストの安定マッチング問題に直し、拡張GSアルゴリズムを用いて解くことで、安定マッチングを行う。
マッチング計算部150は、マッチングMの中の全ての組(vi、sj)に対し、候補データviの配置先を、計算資源sjとする(ステップS227)。
続いて、マッチング計算部150のその他の処理(4)について説明する。マッチング計算部150は、マッチング管理部130から各候補データを取得する。前提条件として、各候補データをv1、v2、・・・、vN’とする。各計算資源をs1、s2、・・・、sNとする。また、ceil(N’/N)=1と仮定する。
前提条件として、各計算資源1〜Nに配置されているデータ及び配置決定済みデータの数をn1〜nNとする。n1〜nNのなかで最大のものをn*とし、最小のものをn*とする。マッチング計算部150は、候補データviと、計算資源sjに配置されているデータ及び配置先が決定済みのデータ全てとの類似度を計算する。マッチング計算部150は、候補データviと、計算資源sjに配置されているデータ及び配置先が決定済みのデータ全てとの類似度のうち、最大値を、dijと表記する。なお、マッチング計算部150は、類似度の最大値の代わりに、上位k件の平均値を、dijに設定してもよい。また、マッチング計算部150は、類似度の最大値の代わりに、類似度の平均mと、標準偏差σとを加算した値を、dijに設定してもよい。
マッチング計算部150は、類似度の最大値dijを(i,j)要素に持つN’×N行列Dを作成する。マッチング計算部150は、行列Dのi行目を昇順にソートし、候補データviに対する計算資源sjの順位を決定する。マッチング計算部150は、決定した順位に基づいて、候補データviの希望リストLviを作成する。このとき、j!=j’で、-dij=dij’となるときがあるが、ソートの際にどちらが先に来てもよいものとする。
マッチング計算部150は、計算資源sjに対するdijが閾値Tより大きい場合には、候補データviの希望リストLviから、対応する計算資源sjを削除する。
マッチング計算部150は、行列Dのj列目を昇順にソートし、計算資源sjに対する候補データviの順位を決定する。マッチング計算部150は、決定した順序に基づいて、計算資源sjの希望リストLsjを作成する。マッチング計算部150は、候補データviに対応するdijが閾値Tより大きい場合には、計算資源の希望リストLsjから、対応する候補データviを削除する。
マッチング計算部150は、n*とn*とが等しくなく、かつ、njがn*と等しい場合には、計算資源sjの希望リストLsjを空にする。
マッチング計算部150は、各候補データの希望リストLv1、・・・、LvN’と、計算資源の希望リストLsj、・・・、LsNとを用いて拡張GSアルゴリズムで不完全リストの安定マッチング問題を解く。
マッチング計算部150がマッチングを行う場合、プロポーズするのは、候補データ側でも、計算資源側でもよい。マッチング計算部150は、得られたマッチングにおいてペアとなった候補データ全ての配置先の情報を、マッチング管理部130に通知する。また、マッチング計算部150は、ペアとならなかった候補データの配置先を未定とし、マッチング管理部130に通知する。
図28は、マッチング計算処理の処理手順を示すフローチャート(3)である。図28に示すように、マッチング計算部150は、各候補データをv1、・・・、vN’とし、各計算資源をs1、・・・、sNとする(ステップS231)。マッチング計算部150は、計算資源sjに配置済みおよび配置決定済みのデータ数njとし、n1、・・・、nNのうち最大のものをn*、最小のものをn*とする(ステップS232)。
マッチング計算部150は、行列Dの計算を行う(ステップS233)。マッチング計算部150が実行する行列Dの計算は、上述した図21、25、26のいずれかの処理手順に従う。
マッチング計算部150は、行列Dのi番目の行ベクトルをEiとする。マッチング計算部150は、Eiベクトルの要素を値が小さいものから順に順位をつけ、候補データviの希望リストLviを作成する(ステップS234)。
マッチング計算部150は、n*とn*とが等しくない場合に、n*と等しいnjを持つ計算資源sjを希望リストLviから削除する(ステップS235)。
マッチング計算部150は、行列Dのj番目の列ベクトルをFjとする。マッチング計算部150は、Fjベクトルの要素を値が小さいものから順に順位をつけ、計算資源sjの希望リストLsjを作成する(ステップS236)。
マッチング計算部150は、n*とn*とが等しくない場合に、n*と等しいnjを持つ計算資源sjに対しLsjを空に設定する(ステップS237)。
マッチング計算部150は、安定マッチングを行う(ステップS238)。マッチング計算部150は、マッチングMの中の全ての組(vi、sj)に対し、候補データviの配置先を、計算資源sjとする(ステップS239)。
続いて、マッチング計算部150のその他の処理(5)について説明する。マッチング計算部150は、マッチング管理部130から各候補データを取得する。前提条件として、各候補データをv1、v2、・・・、vN’とする。各計算資源をs1、s2、・・・、sNとする。また、pをp=ceil(N’/N)から特定される整数とする。
前提条件として、各計算資源1〜Nに配置されているデータ及び配置決定済みデータの数をn1〜nNとする。n1〜nNのなかで最大のものをn*とし、最小のものをn*とする。マッチング計算部150は、候補データviと、計算資源sjに配置されているデータ及び配置先が決定済みのデータ全てとの類似度を計算する。マッチング計算部150は、候補データviと、計算資源sjに配置されているデータ及び配置先が決定済みのデータ全てとの類似度のうち、最大値を、dijと表記する。なお、マッチング計算部150は、類似度の最大値の代わりに、上位k件の平均値を、dijに設定してもよい。また、マッチング計算部150は、類似度の最大値の代わりに、類似度の平均mと、標準偏差σとを加算した値を、dijに設定してもよい。
マッチング計算部150は、類似度の最大値dijを(i,j)要素に持つN’×N行列Dを作成する。マッチング計算部150は、行列Dのi行目を昇順にソートし、候補データviに対する計算資源sjの順位を決定する。マッチング計算部150は、決定した順位に基づいて、候補データviの希望リストLviを作成する。このとき、j!=j’で、-dij=dij’となるときがあるが、ソートの際にどちらが先に来てもよいものとする。
マッチング計算部150は、計算資源sjに対するdijが閾値Tより大きい場合には、候補データviの希望リストLviから、対応する計算資源sjを削除する。
マッチング計算部150は、行列Dのj列目を昇順にソートし、計算資源sjに対する候補データviの順位を決定する。マッチング計算部150は、決定した順序に基づいて、計算資源sjの希望リストLsjを作成する。マッチング計算部150は、候補データviに対応するdijが閾値Tより大きい場合には、計算資源の希望リストLsjから、対応する候補データviを削除する。
マッチング計算部150は、n*とn*とが等しくなく、かつ、njがn*と等しい場合には、計算資源sjの希望リストLsjを空にする。
マッチング計算部150は、各候補データの希望リストLv1、・・・LvN’と、計算資源の希望リストLsj、・・・、LsNとを用いて、病院のクオータがpの病院研修医問題を解く。マッチング計算部150は、病院研修医問題を不完全リスト問題に直し、拡張GSアルゴリズムを用いて解く。
マッチング計算部150がマッチングを行う場合、プロポーズするのは、候補データ側でも、計算資源側でもよい。マッチング計算部150は、得られたマッチングにおいてペアとなった候補データ全ての配置先の情報を、マッチング管理部130に通知する。また、マッチング計算部150は、ペアとならなかった候補データの配置先を未定とし、マッチング管理部130に通知する。
図29は、マッチング計算部の処理手順を示すフローチャート(4)である。図29に示すように、マッチング計算部150は、各候補データをv1、・・・、vN’とし、各計算資源をs1、・・・、sNとする(ステップS241)。マッチング計算部150は、p=ceil(N’/N)を計算する(ステップS242)。
マッチング計算部150は、計算資源sjに配置済みおよび配置決定済みのデータ数njとし、n1、・・・、nNのうち最大のものをn*、最小のものをn*とする(ステップS243)。
マッチング計算部150は、行列Dの計算を行う(ステップS244)。マッチング計算部150が実行する行列Dの計算は、上述した図21、25、26のいずれかの処理手順に従う。
マッチング計算部150は、行列Dのi番目の行ベクトルをEiとする。マッチング計算部150は、Eiベクトルの要素を値が小さいものから順に順位をつけ、候補データviの希望リストLviを作成する(ステップS245)。
マッチング計算部150は、n*とn*とが等しくない場合に、n*と等しいnjを持つ計算資源sjを希望リストLviから削除する(ステップS246)。
マッチング計算部150は、行列Dのj番目の列ベクトルをFjとする。マッチング計算部150は、Fjベクトルの要素を値が小さいものから順に順位をつけ、計算資源sjの希望リストLsjを作成する(ステップS247)。
マッチング計算部150は、n*とn*とが等しくない場合に、n*と等しいnjを持つ計算資源sjに対し希望リストLsjを空に設定する(ステップS248)。
マッチング計算部150は、病院のクオータがpの病院研修医問題を解く(ステップS249)。マッチング計算部150は、マッチングMの中の全ての組(vi、sj)に対し、候補データviの配置先を、計算資源sjとする(ステップS250)。
次に、上記実施例に示したデータ配置装置100と同様の機能を実現するデータ配置プログラムを実行するコンピュータの一例について説明する。図30は、データ配置プログラムを実行するコンピュータの一例を示す図である。
図30に示すように、コンピュータ200は、各種演算処理を実行するCPU201と、ユーザからのデータの入力を受け付ける入力装置202と、ディスプレイ203とを有する。また、コンピュータ200は、記憶媒体からプログラム等を読取る読み取り装置204と、ネットワークを介して他のコンピュータとの間でデータの授受を行うインターフェース装置205とを有する。また、コンピュータ200は、各種情報を一時記憶するRAM206と、ハードディスク装置207とを有する。そして、各装置201〜207は、バス208に接続される。
ハードディスク装置207は、マッチング管理プログラム207a、候補データ選択プログラム207b、マッチング計算プログラム207cを有する。CPU201は、マッチング管理プログラム207a、候補データ選択プログラム207b、マッチング計算プログラム207cを読み出してRAM206に展開する。マッチング管理プログラム207aは、マッチング管理プロセス206aとして機能する。候補データ選択プログラム207bは、候補データ選択プロセス206bとして機能する。マッチング計算プログラム207cは、マッチング計算プロセス206cとして機能する。例えば、マッチング管理プロセス206aの処理は、マッチング管理部130の処理に対応する。候補データ選択プロセス206bの処理は、候補データ選択部140の処理に対応する。マッチング計算プロセス206cの処理は、マッチング計算部150の処理に対応する。
なお、マッチング管理プログラム207a、候補データ選択プログラム207b、マッチング計算プログラム207cについては、必ずしも最初からハードディスク装置207に記憶させておかなくても良い。例えば、コンピュータ200に挿入されるフレキシブルディスク(FD)、CD−ROM、DVDディスク、光磁気ディスク、ICカードなどの「可搬用の物理媒体」に各プログラムを記憶させておく。そして、コンピュータ200が各プログラム207a〜207cを読み出して実行するようにしてもよい。
以上の各実施例を含む実施形態に関し、さらに以下の付記を開示する。
(付記1)コンピュータに、
複数の計算資源に対して、データを分散配置する際に、入力データより、前記複数の計算資源の数に対応する数の複数のデータを取得し、
取得した前記複数のデータそれぞれについて、前記複数の計算資源に保存されたデータ各々に対し算出される類似度から、前記複数の計算資源ごとの類似性指標を生成し、
前記複数のデータそれぞれに対する前記複数の計算資源の前記類似性指標に基づき、各割り当てに対応する前記類似性指標が小さい方向に安定となるマッチング方式により前記複数の計算資源各々へ割り当て、
前記割り当てに基づき、取得した前記複数のデータを前記複数の計算資源に配置する
処理を実行させることを特徴とするデータ配置プログラム。
(付記2)前記割り当てる処理は、第1のデータと複数の計算資源との前記類似性指標に基づき、第1のデータに対して優先される第1の計算資源を特定し、前記第1の計算資源と複数のデータとの類似性指標において、前記第1の計算資源に既に割り当てられている第2のデータに対する類似性指標よりも、前記第1のデータに対する類似性指標の方が小さい場合に、前記第1の計算資源に前記第1のデータを割り当てることを特徴とする付記1に記載のデータ配置プログラム。
(付記3)前記複数の計算資源に配置されたデータの数のうち最小の数を特定し、特定した前記最小の数のデータを各計算資源に残し、各計算資源に配置された前記最小の数を超える残りのデータの配置先を未定に設定する処理を更に実行することを特徴とする付記1または2に記載のデータ配置プログラム。
(付記4)前記取得する処理は、前記入力データを複数のクラスタに分類し、分類した複数のクラスタからクラスタを選択し、選択したクラスタに属するデータから前記複数の計算資源の数に対応する数の複数のデータを取得することを特徴とする付記1、2または3に記載のデータ配置プログラム。
(付記5)コンピュータが実行するデータ配置方法であって、
複数の計算資源に対して、データを分散配置する際に、入力データより、前記複数の計算資源の数に対応する数の複数のデータを取得し、
取得した前記複数のデータそれぞれについて、前記複数の計算資源に保存されたデータ各々に対し算出される類似度から、前記複数の計算資源ごとの類似性指標を生成し、
前記複数のデータそれぞれに対する前記複数の計算資源の前記類似性指標に基づき、各割り当てに対応する前記類似性指標が小さい方向に安定となるマッチング方式により前記複数の計算資源各々へ割り当て、
前記割り当てに基づき、取得した前記複数のデータを前記複数の計算資源に配置する
処理を実行することを特徴とするデータ配置方法。
(付記6)前記割り当てる処理は、第1のデータと複数の計算資源との前記類似性指標に基づき、第1のデータに対して優先される第1の計算資源を特定し、前記第1の計算資源と複数のデータとの類似性指標において、前記第1の計算資源に既に割り当てられている第2のデータに対する類似性指標よりも、前記第1のデータに対する類似性指標の方が小さい場合に、前記第1の計算資源に前記第1のデータを割り当てることを特徴とする付記5に記載のデータ配置方法。
(付記7)前記複数の計算資源に配置されたデータの数のうち最小の数を特定し、特定した前記最小の数のデータを各計算資源に残し、各計算資源に配置された前記最小の数を超える残りのデータの配置先を未定に設定する処理を更に実行することを特徴とする付記5または6に記載のデータ配置方法。
(付記8)前記取得する処理は、前記入力データを複数のクラスタに分類し、分類した複数のクラスタからクラスタを選択し、選択したクラスタに属するデータから前記複数の計算資源の数に対応する数の複数のデータを取得することを特徴とする付記5、6または7に記載のデータ配置方法。
(付記9)複数の計算資源に対して、データを分散配置する際に、入力データより、前記複数の計算資源の数に対応する数の複数のデータを取得する選択部と、
前記複数のデータそれぞれについて、前記複数の計算資源に保存されたデータ各々に対し算出される類似度から、前記複数の計算資源ごとの類似性指標を生成し、前記複数のデータそれぞれに対する前記複数の計算資源の前記類似性指標に基づき、各割り当てに対応する前記類似性指標が小さい方向に安定となるマッチング方式により前記複数の計算資源各々へ割り当てるマッチング計算部と、
前記割り当てに基づき、取得した前記複数のデータを前記複数の計算資源に配置する配置処理部と
を有することを特徴とするデータ配置装置。
(付記10)前記マッチング計算部は、第1のデータと複数の計算資源との前記類似性指標に基づき、第1のデータに対して優先される第1の計算資源を特定し、前記第1の計算資源と複数のデータとの類似性指標において、前記第1の計算資源に既に割り当てられている第2のデータに対する類似性指標よりも、前記第1のデータに対する類似性指標の方が小さい場合に、前記第1の計算資源に前記第1のデータを割り当てることを特徴とする付記9に記載のデータ配置装置。
(付記11)前記複数の計算資源に配置されたデータの数のうち最小の数を特定し、特定した前記最小の数のデータを各計算資源に残し、各計算資源に配置された前記最小の数を超える残りのデータの配置先を未定に設定する設定部を更に有することを特徴とする付記9または10に記載のデータ配置装置。
(付記12)前記選択部は、前記入力データを複数のクラスタに分類し、分類した複数のクラスタからクラスタを選択し、選択したクラスタに属するデータから前記複数の計算資源の数に対応する数の複数のデータを取得することを特徴とする付記9、10または11に記載のデータ配置装置。