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