(57)【特許請求の範囲】
【請求項１】
多次元空間の部分空間に対する目的の処理を行うとき、処理目的と関連する多次元データを空間充填曲線処理することで得られる複数の１次元値のデータ群の密度分布あるいは累積分布を示す分布情報を参照し、前記部分空間に対応する１次元の値あるいは範囲のデータ密度を取得する取得手段と、
取得した前記部分空間の前記データ密度に応じて、空間充填曲線処理を行うか否かを判定する判定手段と、
前記判定手段の判定結果に従い、前記空間充填曲線処理を行う空間充填曲線処理手段と、を備える空間充填曲線処理システム。
【請求項２】
請求項１に記載の空間充填曲線処理システムにおいて、
前記空間充填曲線処理手段は、前記多次元空間の各部分空間を細分化して段階的に前記空間充填曲線処理を繰り返し行う過程において、
前記データ密度が閾値以上の各部分空間に対してのみ、段階的に細分化を行い、前記空間充填曲線処理を所定回数繰り返し、
前記データ密度が閾値未満の各部分空間に対しては、それ以上の細分化を行わず、前記空間充填曲線処理を中止する空間充填曲線処理システム。
【請求項３】
請求項２に記載の空間充填曲線処理システムにおいて、
前記多次元空間の部分空間に対する処理が、
多次元の属性値または範囲に対応する１次元の属性値または範囲を複数取得する検索処理であるとき、
前記空間充填曲線処理手段は、前記データ密度に応じて前記空間充填曲線処理を中止した各部分空間と、前記所定回数前記空間充填曲線処理を行い得られた各部分空間とを検索範囲として求める空間充填曲線処理システム。
【請求項４】
請求項１乃至３いずれかに記載の空間充填曲線処理システムにおいて、
処理目的と関連する多次元データを空間充填曲線処理することで得られる複数の１次元値のデータ群を入力として、そのデータ群の密度分布あるいは累積分布を示す分布情報を生成する分布算出手段と、
生成された前記分布情報を記憶する分布情報記憶手段と、をさらに備え、
前記取得手段は、前記分布情報記憶手段に記憶された分布情報を参照し、前記部分空間に対応する１次元の値あるいは範囲のデータ密度を取得する空間充填曲線処理システム。
【請求項５】
処理目的と関連する多次元データを空間充填曲線処理するデータ処理装置が、
多次元空間の部分空間に対する処理を行うとき、前記多次元データを前記空間充填曲線処理することで得られる複数の１次元値のデータ群の密度分布あるいは累積分布を示す分布情報を参照し、前記部分空間に対応する１次元の値あるいは範囲のデータ密度を取得し、
前記部分空間の前記データ密度に応じて、空間充填曲線処理を行うか否かを判定し、
判定結果に従い、空間充填曲線処理を行う空間充填曲線処理方法。
【請求項６】
請求項５に記載の空間充填曲線処理方法において、
前記多次元空間の各部分空間を細分化して段階的に前記空間充填曲線処理を繰り返し行う過程において、
前記データ密度が閾値以上の各部分空間に対してのみ、段階的に細分化を行い、前記空間充填曲線処理を所定回数繰り返し、
前記データ密度が閾値未満の各部分空間に対しては、それ以上の細分化を行わず、前記空間充填曲線処理を中止する空間充填曲線処理方法。
【請求項７】
請求項６に記載の空間充填曲線処理方法において、
前記多次元空間の部分空間に対する処理が、多次元の属性値または範囲に対応する１次元の属性値または範囲を複数取得する検索処理であるとき、
前記データ密度に応じて前記空間充填曲線処理を中止した各部分空間と、前記所定回数前記空間充填曲線処理を行い得られた各部分空間とを検索範囲として求める空間充填曲線処理方法。
【請求項８】
空間充填曲線処理を行うデータ処理装置を実現するコンピュータに、
多次元空間の部分空間に対する目的の処理を行うとき、処理目的と関連する多次元データを空間充填曲線処理することで得られる複数の１次元値のデータ群の密度分布あるいは累積分布を示す分布情報を参照し、前記部分空間に対応する１次元の値あるいは範囲のデータ密度を取得する手順、
前記部分空間の前記データ密度に応じて、空間充填曲線処理を行うか否かを判定する手順、
前記判定する手順の判定結果に従い、前記空間充填曲線処理を行う手順を実行させるためのプログラム。
【請求項９】
請求項８に記載のプログラムにおいて、
前記多次元空間の各部分空間を細分化して段階的に前記空間充填曲線処理を繰り返し行う手順、
前記段階的に前記空間充填曲線処理を繰り返し行う手順の過程において、
前記データ密度が閾値以上の各部分空間に対してのみ、段階的に細分化を行い、前記空間充填曲線処理を所定回数繰り返す手順、
前記データ密度が閾値未満の各部分空間に対しては、それ以上の細分化を行わず、前記空間充填曲線処理を中止する手順をコンピュータに実行させるためのプログラム。
【請求項１０】
請求項９に記載のプログラムにおいて、
前記多次元空間の部分空間に対する処理が、多次元の属性値または範囲に対応する１次元の属性値または範囲を複数取得する検索処理であるとき、
前記データ密度に応じて前記空間充填曲線処理を中止した各部分空間と、前記所定回数前記空間充填曲線処理を行い得られた各部分空間とを検索範囲として求める手順をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、空間充填曲線処理システム、空間充填曲線処理方法およびプログラムに関する。
【背景技術】
【０００２】
空間充填曲線処理の一例が非特許文献１に記載されている。この非特許文献１記載の空間充填曲線処理方法は、空間充填曲線の変換を行うための状態遷移表を用い、多次元属性の範囲を入力として、その範囲に含まれるデータを格納したブロックを全て列挙する。ブロックとは、データを格納する物理的なディスクの一部の領域である。空間充填曲線により連続な１次元の範囲となる多次元データは、一つのブロックに格納される。すなわち、多次元属性値を１次元化して得られた値をキーとして、その順序で連続してこのブロックに格納される。与えられた多次元属性の範囲に属すデータを格納したブロックを列挙する際には、ブロックの区切りとなる１次元値を参照しながら、各ブロックについて逐次、与えられた多次元属性の範囲に含まれるか否かを判定し、含まれる場合にはそのブロックを結果に含め、含まれない場合は次のブロックを探す。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００８−２３４５６３号公報
【非特許文献】
【０００４】
【非特許文献１】J. K. Lawder、外１名、“Using Space-Filling Curves for Multi-dimensional Indexing”、Advances in Databases: proceedings of the 17th British National Conference on Databases (BNCOD 17)、Lecture Notes in Computer Science (LNCS)、volume 1832、２０００年、ｐ．２０−３５
【発明の概要】
【０００５】
上述した文献に記載された技術においては、指定した多次元属性範囲に属するデータを格納したブロックを列挙することはできる。しかし、指定した多次元属性範囲と対応する複数の１次元範囲を処理する場合において、多次元属性の範囲（多次元空間の部分空間）に対する空間充填曲線処理を行う際に、高次元や長いビット長の処理に要する時間がかかるという問題点があった。その理由は、以下の通りである。ブロックを列挙する際には、ブロックが担当する１次元範囲と検索式で得られる多次元属性範囲が交差するか否かの判定だけでよかったため、処理が単純であった。しかし、与えられた多次元範囲に対応する複数の１次元範囲を個々に処理する場合には、１つの多次元属性の範囲と対応する１次元範囲は複数あり、その数は次元数とビット長に対して指数的に増加するため、処理に時間がかかる。
【０００６】
本発明の目的は、上述した課題である空間充填曲線処理の高負荷を解決する空間充填曲線処理システム、空間充填曲線処理方法、およびプログラムを提供することにある。
【０００７】
本発明の空間充填曲線処理システムは、
多次元空間の部分空間に対する目的の処理を行うとき、処理目的と関連する多次元データを空間充填曲線処理することで得られる複数の１次元値のデータ群の密度分布あるいは累積分布を示す分布情報を参照し、前記部分空間に対応する１次元の値あるいは範囲のデータ密度を取得する取得手段と、
取得した前記部分空間の前記データ密度に応じて、空間充填曲線処理を行うか否かを判定する判定手段と、
前記判定手段の判定結果に従い、前記空間充填曲線処理を行う空間充填曲線処理手段と、を備える。
【０００８】
本発明の空間充填曲線処理方法は、
処理目的と関連する多次元データを空間充填曲線処理するデータ処理装置が、
多次元空間の部分空間に対する処理を行うとき、前記多次元データを前記空間充填曲線処理することで得られる複数の１次元値のデータ群の密度分布あるいは累積分布を示す分布情報を参照し、前記部分空間に対応する１次元の値あるいは範囲のデータ密度を取得し、
前記部分空間の前記データ密度に応じて、空間充填曲線処理を行うか否かを判定し、
判定結果に従い、空間充填曲線処理を行う。
【０００９】
本発明のコンピュータプログラムは、
空間充填曲線処理を行うデータ処理装置を実現するコンピュータに、
多次元空間の部分空間に対する目的の処理を行うとき、処理目的と関連する多次元データを空間充填曲線処理することで得られる複数の１次元値のデータ群の密度分布あるいは累積分布を示す分布情報を参照し、前記部分空間に対応する１次元の値あるいは範囲のデータ密度を取得する手順、
前記部分空間の前記データ密度に応じて、空間充填曲線処理を行うか否かを判定する手順、
前記判定する手順の判定結果に従い、前記空間充填曲線処理を行う手順を実行させるためのものである。
【００１０】
なお、以上の構成要素の任意の組合せ、本発明の表現を方法、装置、システム、記録媒体、コンピュータプログラムなどの間で変換したものもまた、本発明の態様として有効である。
【００１１】
また、本発明の各種の構成要素は、必ずしも個々に独立した存在である必要はなく、複数の構成要素が一個の部材として形成されていること、一つの構成要素が複数の部材で形成されていること、ある構成要素が他の構成要素の一部であること、ある構成要素の一部と他の構成要素の一部とが重複していること、等でもよい。
【００１２】
また、本発明の方法およびコンピュータプログラムには複数の手順を順番に記載してあるが、その記載の順番は複数の手順を実行する順番を限定するものではない。このため、本発明の方法およびコンピュータプログラムを実施するときには、その複数の手順の順番は内容的に支障のない範囲で変更することができる。
【００１３】
さらに、本発明の方法およびコンピュータプログラムの複数の手順は個々に相違するタイミングで実行されることに限定されない。このため、ある手順の実行中に他の手順が発生すること、ある手順の実行タイミングと他の手順の実行タイミングとの一部ないし全部が重複していること、等でもよい。
【００１４】
本発明によれば、処理精度の劣化を抑えながら、効率のよい処理を実現する空間充填曲線処理システム、空間充填曲線処理方法、およびプログラムが提供される。
【図面の簡単な説明】
【００１５】
上述した目的、およびその他の目的、特徴および利点は、以下に述べる好適な実施の形態、およびそれに付随する以下の図面によってさらに明らかになる。【００１６】
【図１】本発明の実施の形態に係る空間充填曲線処理システムのデータ処理装置の要部構成を示す機能ブロック図である。
【図２】本発明の実施の形態に係る空間充填曲線処理システムにおける空間充填曲線処理に用いることが可能な変換規則を表す状態遷移図である。
【図３】本発明の実施の形態に係る空間充填曲線処理システムのデータ処理装置の構成を示す機能ブロック図である。
【図４】本発明の実施の形態に係る空間充填曲線処理システムの空間充填曲線処理における多次元空間と部分空間との関係を木構造で表した図である。
【図５】本発明の実施の形態に係る空間充填曲線処理システムにおけるデータ群の分布情報の形式の一例を説明するための図である。
【図６】本発明の実施の形態に係る空間充填曲線処理システムにおけるデータ群の分布情報の形式の一例を説明するための図である。
【図７】本発明の実施の形態に係る空間充填曲線処理システムにおけるデータ群の分布情報の形式の一例を説明するための図である。
【図８】本発明の実施の形態に係る空間充填曲線処理システムにおけるデータ群の分布情報の形式の一例を説明するための図である。
【図９】本発明の実施の形態に係る空間充填曲線処理システムのデータ処理装置の分布情報生成処理の手順の一例を示すフローチャートである。
【図１０】本発明の実施の形態に係る空間充填曲線処理システムのデータ処理装置の空間充填曲線処理の手順の一例を示すフローチャートである。
【図１１】本発明の実施の形態に係る空間充填曲線処理システムの動作を説明するための図である。
【図１２】本発明の比較例における多次元範囲検索の空間充填曲線処理の具体例を示す図である。
【図１３】本発明の実施例において想定するデータ分布と空間充填曲線処理の具体例を説明するための図である。
【図１４】本発明の実施例において想定するデータ分布と空間充填曲線処理の具体例を説明するための図である。
【図１５】本発明の実施例において想定するデータ分布と空間充填曲線処理の具体例を説明するための図である。
【発明を実施するための形態】
【００１７】
以下、本発明の実施の形態について、図面を用いて説明する。尚、すべての図面において、同様な構成要素には同様の符号を付し、適宜説明を省略する。
【００１８】
（第１の実施の形態）
図１は、本発明の実施の形態に係る空間充填曲線処理システムのデータ処理装置１００の構成を示す機能ブロック図である。
【００１９】
空間充填曲線処理とは、多次元属性のデータ群を１次元化する処理であり、たとえば、データ群の中の１つの多次元属性値を入力として、対応する１次元値を出力する。変換の際に、図２に示す、変換する次元数に応じた変換規則表を用いてもよい。この変換規則表は、複数の変換規則表状態の間での遷移として表され、ある変換規則状態であった時に、ある先頭ビットからのビット位置における各次元の値の組合せを入力として、次の遷移先の変換規則状態と、対応する１次元値の組合せを出力するものである。
【００２０】
空間充填曲線処理により１次元化された値の集合を一つの１次元範囲と対応するブロック単位で管理する場合、与えられた多次元属性の範囲と交差するブロックを列挙するためには、与えられた多次元範囲と対応する複数の１次元範囲を個別に処理する必要はない。さらに、この場合、各ブロックの１次元範囲の端点を参照しながら、与えられた多次元範囲とそのブロックとが交差するか否かのみを判定することで効率化することができる。しかし、与えられた多次元範囲と対応する複数の１次元範囲を個別に処理する必要のある場合は、空間充填曲線処理は、次元数とビット数が大きい場合に処理すべき空間および計算量が増える。
【００２１】
本発明の実施の形態に係る空間充填曲線処理システムでは、空間充填曲線処理を行う際に、予め、処理と関連するデータ集合の各データを空間充填曲線処理で１次元値とし、その１次元値の集合の分布情報を生成しておく。そして、その分布情報を参照しながら空間充填曲線の部分空間に関する処理を行うことで、その部分空間のデータ密度が推定できる。そのデータ密度がある基準より少なければ、その部分空間の処理を行わないようにすることができる。これにより、ブロックより細かい空間自体の処理を必要とする場合についても、処理精度の劣化を少なく抑えつつ、処理の高速化を実現することができる。
【００２２】
本発明の実施の形態に係る空間充填曲線処理システムは、データベースシステムあるいはデータストリームシステム、Ｐｕｂ／Ｓｕｂ（Publish/Subscribe）システムなどにおいて、多次元範囲検索あるいは多次元属性値を条件づけしたイベント駆動システムとして利用することができる。また、本発明の実施の形態に係る空間充填曲線処理システムは、複雑な検索式の実行順序を決定する際に、データ検索を行う前の選択率推定（selectivity estimation）としても利用可能である。
【００２３】
図１に示すように、本発明の実施の形態に係る空間充填曲線処理システムは、多次元空間の部分空間に対する目的の処理を行うとき、処理目的と関連する多次元データを空間充填曲線処理することで得られる複数の１次元値のデータ群の密度分布あるいは累積分布を示す分布情報を参照し、部分空間に対応する１次元の値あるいは範囲のデータ密度を取得するデータ密度取得部１０４と、部分空間のデータ密度に応じて、空間充填曲線処理を行うか否かを判定する判定部１０６と、判定部１０６の判定結果に従い、空間充填曲線処理を行う空間充填曲線処理部１０８と、を備える。
【００２４】
本実施形態のデータ処理装置１００は、たとえば、サーバコンピュータやパーソナルコンピュータ、またはそれらに相当する装置により実現することができる。
また、以下の各図において、本発明の本質に関わらない部分の構成については省略してあり、図示されていない。
【００２５】
また、本実施形態のデータ処理装置１００の各構成要素は、ＣＰＵ（Central Processing Unit）、メモリ、メモリにロードされた各図の構成要素を実現するプログラム、そのプログラムを格納するハードディスクなどの記憶ユニット、ネットワーク接続用インタフェースを含む任意のコンピュータ（不図示）のハードウェアとソフトウェアの任意の組合せによって実現される。そして、その実現方法、装置にはいろいろな変形例があることは、当業者には理解されるところである。以下説明する各図は、ハードウェア単位の構成ではなく、機能単位のブロックを示している。
コンピュータのＣＰＵが、ハードディスクに記憶されるプログラムをメモリに読み出して実行することにより、データ処理装置１００の各図の各ユニットの各機能を実現することができる。
【００２６】
本実施の形態のデータ処理装置１００は、コンピュータプログラムに対応する各種の処理動作をＣＰＵが実行することにより、本実施形態で説明する各種ユニットが各種機能として実現される。
【００２７】
本実施形態のコンピュータプログラムは、空間充填曲線処理を行うデータ処理装置１００を実現するコンピュータに、多次元空間の部分空間に対する処理を行うとき、処理目的と関連する多次元データを空間充填曲線処理することで得られる複数の１次元値のデータ群の密度分布あるいは累積分布を示す分布情報を参照し、部分空間に対応する１次元の値あるいは範囲のデータ密度を取得する手順、部分空間のデータ密度に応じて、空間充填曲線処理を行うか否かを判定する手順、判定する手順の判定結果に従い、空間充填曲線処理を行う手順、を実行させるように記述されている。
【００２８】
本実施形態のコンピュータプログラムは、コンピュータで読み取り可能な記録媒体に記録されてもよい。記録媒体は特に限定されず、様々な形態のものが考えられる。また、プログラムは、記録媒体からコンピュータのメモリにロードされてもよいし、ネットワークを通じてコンピュータにダウンロードされ、メモリにロードされてもよい。
【００２９】
具体的には、本実施形態の空間充填曲線処理システムは、分布格納部１０２と、データ密度取得部１０４と、判定部１０６と、空間充填曲線処理部１０８とを有するデータ処理装置１００を備える。
【００３０】
分布格納部１０２は、処理目的と関連する多次元データを空間充填曲線処理することで得られる複数の１次元値のデータ群の密度分布あるいは累積分布を示す分布情報を記憶する。
データ密度取得部１０４は、多次元空間の部分空間に対する目的の処理を行うとき、部分空間に対応する１次元の値あるいは範囲のデータ密度を取得する。
【００３１】
判定部１０６は、多次元空間の部分空間に対する目的の処理を行うとき、データ密度取得部１０４が取得した、部分空間のデータ密度に応じて、空間充填曲線処理を行うか否かを判定する。
空間充填曲線処理部１０８は、多次元空間の部分空間に対する目的の処理を行うとき、判定部１０６の判定結果に従い、空間充填曲線処理を行う。
【００３２】
また、本実施形態の空間充填曲線処理システムのデータ処理装置１００は、さらに、図３に示すように、分布格納部１０２に格納される分布情報を生成するための構成として、データ格納部１１２と、空間充填曲線１次元化部１１４と、１次元値格納部１１６と、分布算出部１１８と、を備えることができる。他の実施形態において、分布情報は、他のシステムから与えられたものや既存のものでもよい。
【００３３】
図３では、データ処理装置１００は、図１で示したデータ密度取得部１０４、判定部１０６、および空間充填曲線処理部１０８を含む空間充填曲線処理部１１０と、図１の分布格納部１０２と、を備えるものとして示してある。
【００３４】
データ格納部１１２は、たとえば、当該システムで処理目的となる多次元属性データ群の少なくとも一部、あるいは、分布情報が類似したデータ群が予めサンプルとして与えられ格納される。
【００３５】
空間充填曲線１次元化部１１４は、１つの多次元属性値を入力として、対応する１次元値を出力する。その変換の際に、図２を用いて上述した、変換する次元数に応じた変換規則表を用いてもよい。
【００３６】
図４に、図２の変換規則表を用いた変換処理の例を示す。図４には、先頭ビットを根とし、下位ビットを葉とする木構造であり、多次元の属性値の各ビットに応じて、異なる枝に分岐し、先頭ビットから下位ビットへと進むに従って、変換後の木構造も枝へと進む様子を描いている。なお、各枝に記された値はあるビット目の多次元値であり、その左端からの距離で変換後の１次元値を表している。
【００３７】
たとえば、多次元データが（ｘ，ｙ）＝（７，９）である時、これらは２ビット表記で（０１１１，１００１）と表される。初期状態は状態０であるとし、ここに先頭ビットの各次元の組合せである（０，１）を入力する。図２の状態０における上段の多次元値が０１である左上に対応する１次元値は０１であり、遷移先は状態０である。次の先頭から２ビット目の各次元の組合せである（１，０）と対応する、状態０での多次元値１０に対しては、１次元値が１１であり遷移先は２である。
【００３８】
ここで、先に得られた１次元値０１の下位ビットに得られた１次元値を加え０１１１がこの状態での１次元値である。続いて、先頭から３ビット目の各次元の組合せである（１，０）と対応する、状態２での多次元値１０に対しては、１次元値が１１であり状態０となる。このように、空間充填曲線１次元化部１１４は、各ビットで得られる１次元値から多次元属性値に対応する１次元値を出力する。
１次元値格納部１１６は、空間充填曲線１次元化部１１４が出力した１次元値を格納する。
【００３９】
分布算出部１１８は、処理目的と関連する多次元データを空間充填曲線処理することで得られる複数の１次元値のデータ群を入力として、そのデータ群の密度分布あるいは累積分布を示す分布情報を生成する。すなわち、分布算出部１１８は、１次元値格納部１１６に格納された複数のデータから、そのデータの分布情報を生成する。ここで生成される分布情報は、ある値におけるデータの密度を表した密度分布（図５（ａ）の５０２）でも、ある値以下のデータの割合を表した累積分布（図６（ａ）の５１２）でもよい。生成された分布情報は、分布格納部１０２に格納される。
【００４０】
また、格納される形式は、カーネル密度関数法のように格納される元のデータと任意の関数からその分布を表現する方法（図７の５２２）としてもよい。その場合、格納形式は、元のデータと関数およびパラメータとなる。あるいは、図５（ｂ）または図６（ｂ）に示すようなヒストグラムの表５０４またはヒストグラムの表５１４として表されるような、ある値の範囲に対する度数または累積分布を管理する形式として生成および格納してもよい。
【００４１】
また、別の形式として、ある値を入力して、その値における密度や累積密度を得やすいように、ヒストグラムを区間の傾きとして１次関数を求め、求めた１次関数形式として保持してもよい（図８（ａ）のグラフ５３２および図８（ｂ）の表５３４）。
【００４２】
図３に戻り、空間充填曲線処理部１１０は、与えられた多次元属性の部分空間の処理を行うとき、分布格納部１０２に格納された分布情報を参照し、データ密度に応じて空間充填曲線処理を行い、目的とする処理結果を出力する。
【００４３】
空間充填曲線処理部１１０は、多次元空間の各部分空間を細分化して段階的に空間充填曲線処理を繰り返し行う過程において、データ密度が閾値以上の各部分空間に対してのみ、段階的に細分化を行い、空間充填曲線処理を所定回数繰り返す。そして、空間充填曲線処理部１１０は、データ密度が閾値未満の各部分空間に対しては、それ以上の細分化を行わず、前記空間充填曲線処理を中止する。
【００４４】
空間充填曲線処理部１１０は、図２の変換規則表を参照するなどして、入力として与えられた多次元空間の部分空間に対応する処理を、各次元の先頭ビットの組合せから下位ビットに進めて処理を行う（図１１）。その多次元空間内の処理中の箇所を表すポインタを、さらにビット位置を深く進めるか否か判断する際に、図１のデータ密度取得部１０４がそのポインタの指す多次元の値あるいは範囲と対応する１次元値あるいは１次元値の範囲を求め、図１の分布格納部１０２の分布情報６０２を参照して、その値あるいは範囲に対応するデータの密度を取得する。
【００４５】
そして、図１の判定部１０６が、データの密度がある一定の規則で小さいか否かを判定する。図３の空間充填曲線処理部１１０は、判定結果に従い、データの密度がある一定の規則で小さいと判断されれば、深く進める処理は行わない（図１１の処理６０４）。データ密度が一定の規則で大きいと判断された場合は、深く進める処理を行う（図１１の処理６０６）。
【００４６】
本実施形態の空間充填曲線処理部１１０により得られる１次元化された範囲は、図１１の範囲６１４のようになる。一方、データ密度に基づく判断をせずに一律に予め定めた深さまで処理を進めた場合に得られる１次元化された範囲は、図１１の範囲６１２のようになる。密度分布の分布情報６０２における密度の高い領域では、範囲６１２と範囲６１４は同じ粒度で探索するが、密度の低い領域では範囲６１２では細粒度での探索を行わず、粗粒度での探索を行い、そこでの処理結果を近似結果とする。
【００４７】
空間充填曲線処理部１１０が入力として与えられた多次元空間の部分空間に対して行う処理は具体的には、以下のものが挙げられる。
（ａ）多次元範囲検索のための、与えられた多次元範囲に対応する１次元値の範囲を複数取得する処理
（ｂ）与えられた多次元属性値から近傍のデータを、指定した数取得する最近傍探索のための１次元範囲を順序づけて取得する処理
（ｃ）多次元範囲検索の選択率を推定するために、与えられた多次元範囲に対応する複数の１次元値範囲の総範囲幅を取得する処理
（ｄ）多次元属性分布を可視化するヒストグラム表示のための、ある特定された次元の値とそこでのデータ密度またはデータ量を取得する処理
【００４８】
多次元空間の部分空間に対する処理が、多次元の属性値または範囲に対応する１次元の属性値または範囲を複数取得する検索処理であるとき、空間充填曲線処理部１１０は、データ密度に応じて空間充填曲線処理を中止した各部分空間と、所定回数前記空間充填曲線処理を行い得られた各部分空間とを検索範囲として求める。
【００４９】
データ処理装置１００の各ユニットはそれぞれ概略つぎのように動作する。
データ格納部１１２に格納された処理目的と関連する多次元属性のデータ集合から、その集合の全てあるいは一部のデータ要素に対して、各々のデータを空間充填曲線１次元化部１１４にて空間充填曲線処理を施して１次元化し、これを１次元値格納部１１６に記憶する。続いて、分布算出部１１８が、１次元値格納部１１６に格納されたデータ集合から、分布情報（ヒストグラム）を生成し分布格納部１０２に格納する。このようにして、分布情報が生成され、分布格納部１０２に格納される。
【００５０】
空間充填曲線処理部１１０は、与えられた多次元属性の部分空間の処理を行う際に、分布格納部１０２に記憶された分布情報を参照し、空間充填曲線処理部１１０の目的とする処理結果を出力する。
【００５１】
詳細には、与えられた多次元空間の部分空間に対する条件を満たす複数の１次元範囲を処理する際に、空間充填曲線処理を表す状態遷移表の根ノード（多次元の先頭ビットと対応）から葉ノード（下位ビット）へと探索する。探索しながら、その探索ポインタと分布格納部１０２に格納されたヒストグラムに基づき、その探索領域と対応する密度を得る。たとえば、探索ポインタと対応する１次元値と木の階層（ビット位置）とから決まる１次元範囲を算出し、その範囲の両端点を、ヒストグラムを示す分布関数に入力し、その値の差からその１次元値に対応する密度を得る。その密度に応じて、探索ポインタが探索する範囲を、本来処理すべき範囲を削減することで、探索空間を低減するように動作する。
【００５２】
このような動作により、空間充填曲線処理を行う目的に応じて、その厳密な精度が不要な場合に、省略してもその精度に影響が少ない処理を省略することができ、本発明の目的を達成することができる。
【００５３】
上述のような構成において、本実施の形態の空間充填曲線処理システムにおけるデータ処理装置１００による空間充填曲線処理方法を以下に説明する。図１０は、本実施形態の空間充填曲線処理システムの動作の一例を示すフローチャートである。
【００５４】
本実施形態の空間充填曲線処理方法は、処理目的と関連する多次元データを空間充填曲線処理するデータ処理装置１００が、多次元空間の部分空間に対する処理を行うとき、多次元データを空間充填曲線処理することで得られる複数の１次元値のデータ群の密度分布あるいは累積分布を示す分布情報を参照し、部分空間に対応する１次元の値あるいは範囲のデータ密度を取得し（ステップＳ２０５）、部分空間のデータ密度に応じて、空間充填曲線処理を行うか否かを判定し（ステップＳ２０７）、判定結果に従い、空間充填曲線処理を行う（ステップＳ２０９）。
【００５５】
このように構成された本実施形態の空間充填曲線処理システムの動作について、以下に説明する。
まず、本実施形態の空間充填曲線処理システムのデータ処理装置１００において分布情報を生成する処理手順について説明する。
図９は、本実施形態の空間充填曲線処理システムのデータ処理装置１００の分布情報生成処理の手順の一例を示すフローチャートである。以下、図３および図９を用いて説明する。
【００５６】
ここでは、データ格納部１１２に格納された多次元データのそれぞれについて、ステップＳ１０１〜ステップＳ１１１の間のループ処理を繰り返す。まず、空間充填曲線１次元化部１１４が、多次元データの１次元化を行う（ステップＳ１０３）。そして、空間充填曲線１次元化部１１４が、得られた１次元値を、１次元値格納部１１６に格納する（ステップＳ１０５）。次に、分布算出部１１８が、１次元値格納部１１６に格納されたデータから、累積分布情報を導出し（ステップＳ１０７）、分布格納部１０２に格納する（ステップＳ１０９）。
【００５７】
次に、本実施形態の空間充填曲線処理システムのデータ処理装置１００において、処理目的と関連する多次元データを空間充填曲線処理するときの手順について説明する。
図１０は、本実施形態の空間充填曲線処理システムのデータ処理装置１００の空間充填曲線処理の手順の一例を示すフローチャートである。以下、図１、図３および図１０を用いて説明する。
【００５８】
本実施形態では、与えられた多次元空間の部分空間に対しての空間充填曲線処理において、その部分空間を構成する各部分空間について、ステップＳ２０１〜ステップＳ２１３の間のループ処理を繰り返す。
まず、空間充填曲線処理部１１０が、その部分空間の多次元属性値あるいは属性範囲と対応する１次元値あるいは１次元範囲を取得する（ステップＳ２０３）。そして、空間充填曲線処理部１１０（図１のデータ密度取得部１０４）が、その１次元値あるいは１次元範囲と対応するデータ密度を分布格納部１０２に記憶された分布情報から取得する（ステップＳ２０５）。そして、空間充填曲線処理部１１０が、そのデータ密度からその部分空間の処理を進めるか否かを判定する（ステップＳ２０７）。処理を進める場合は（ステップＳ２０７のＹＥＳ）、空間充填曲線処理部１１０が、この部分空間を入力として空間充填曲線処理を再帰的に行う（ステップＳ２０９）。処理された結果は、このステップＳ２０９での結果として反映される（ステップＳ２１１）。処理を進めない場合（ステップＳ２０７のＮＯ）、または、ステップＳ２１１の後、ステップＳ２０１に戻り、次の部分空間に対してループ処理を繰り返す。全ての部分空間に対する処理を終えると、ループ処理を終了し（ステップＳ２１３）、空間充填曲線処理部１１０は、結果を出力し、結果を処理の要求元に返す（ステップＳ２１５）。
【００５９】
以上説明したように、本発明の実施の形態に係る空間充填曲線処理システムによれば、データ密度の少ない空間の処理を省く判断ができ、これにより少ない処理精度の低減で、処理の高速化を実現できる。たとえば、空間充填曲線処理を行う目的の処理である、範囲検索や選択率推定、近似件数検索、分布可視化等の処理の応答時間を速くできる。その理由は、多次元空間の部分空間に対する空間充填曲線処理を行う際に、処理中の部分空間に対応するデータ密度が参照可能であり、そのデータ密度に応じて部分空間を細分化して処理するか否かを判定するように構成されているためである。言い換えれば、ある空間に対して空間充填曲線処理を行う際に、その処理を省いた時の精度の低下を、元の多次元属性の値を空間充填曲線処理によって１次元化して得られる密度分布（ヒストグラム）を参照することで判断することができ、それを判断指標として探索範囲を決定することで、精度に対する影響を少なく高速処理ができる。
【００６０】
以上、図面を参照して本発明の実施形態について述べたが、これらは本発明の例示であり、上記以外の様々な構成を採用することもできる。
【実施例】
【００６１】
まず、本実施例の比較例として、分布情報のデータ密度を考慮せず、２次元の範囲検索に対して、それに対応する１次元範囲を複数求める処理について図１２を用いて説明する。【００６２】
ここでは、各々の多次元データが、算出された１次元値のアドレスのノードに格納されているとする。しかし、本発明の処理の後段で、算出されたアドレスのノードから取得されたデータに対して、元の検索が適用され、検索結果とするか否かの判断が行われるとする。そのため、ここで求める複数の１次元の範囲は、本来検索式で得られるデータを全て含まなければならない。その一方で、求める複数の１次元の範囲が、検索式に適合しないデータが含まれていても問題ない。【００６３】
図１２に示す２次元の範囲検索では、第１属性ｘが０〜１４の範囲、第２属性ｙが８〜９の範囲を検索するものとし、それぞれのビットパターンの範囲が［００００，１１１０］と［１０００，１００１］であるとする。なお、以下、記号“［”や、記号“］”は閉区間を表し、記号“（”や記号“）”は開区間を表す。
先頭ビット７０１では、０１と１１を満たす範囲が検索対象であるため、図１２の範囲７１１が検索対象となる。次のビット７０２では、先頭ビット７０１が０１であるものに対しては００と１０、先頭ビット７０１が１１であるものに対しては００と１０が検索対象となり、図１２の範囲７１２と対応する。このように、比較例では、第３ビット７０３目では、合計７つのノードに関して、対応する１次元範囲の検索を行う必要がある。このようにして、求められた検索範囲は、図１２の範囲７１３が対応する。【００６４】
次に、実施例について、以下説明する。実施例として、分布情報を参照し、データ密度を考慮して、２次元の範囲検索に対して、それに対応する１次元範囲を複数求める処理について説明する。【００６５】
なお、与えられた多次元属性範囲に対応する処理を先頭ビットから行う際、深さ優先探索と幅優先探索とで処理を行うことができる。深さ優先探索では、多次元属性の空間の探索方法として、複数の結果が得られた場合に一つの結果についてのみビットを先に進める。たとえば、図１０を用いて説明すると、空間充填曲線処理部１１０が、先頭ビットに関して多次元属性範囲の条件に合致するか確認する（ステップＳ２０１のループ１回目におけるステップＳ２０７、ステップＳ２０７がＹＥＳの場合、ステップＳ２０９とステップＳ２１１）。そして、空間充填曲線処理部１１０が、得られた結果のうちの一つの結果についてまず２ビット目に関する条件を判定し（ステップＳ２０１のループ２回目におけるステップＳ２０７、ステップＳ２０７がＹＥＳの場合、ステップＳ２０９とステップＳ２１１）、得られた結果のうちのさらに一つについて、３ビット目を処理する（ステップＳ２０１のループ３回目におけるステップＳ２０７、ステップＳ２０７がＹＥＳの場合、ステップＳ２０９とステップＳ２１１）。【００６６】
たとえば、本実施形態のデータ処理装置１００において、部分空間を格納する探索リストをデータ密度の順でソートして用意し、密度の高い順で取り出し、部分空間の中でさらに条件を満たす部分空間を追加し、再度、次の部分空間を取り出してもよい。一定の計算時間で処理するために、一定の部分空間を処理した時点で停止してもよい。一定のフォルスドロップ（False Drop）率とするために、条件を満たさない部分空間を条件に合うとして処理するデータ密度が一定以上となった時に停止してもよい。【００６７】
一方、幅優先探索では、複数の結果が得られた場合に、特定の結果についてビットを先に進めることは行わず、全ての結果についてなるべく同じビットを扱うように処理を進める。幅優先探索は、深さ優先探索に比較して、一定の計算時間で、できる限り少ないフォルスドロップ率を実現できる。あるいは、一定のフォルスドロップ率で、なるべく短い計算時間で処理するようにすることができる。【００６８】
以下、本実施例では、図１３〜図１５を用いて、深さ優先探索を例として説明する。
本実施例では、検索対象のデータからサンプリングで得られる一部のデータ８００（図１３）から、分布算出部１１８（図３）が累積分布の分布関数として表される分布情報８０１（図１４）を生成したとする。この分布情報８０１を参照しながら、空間充填曲線処理部１１０が、２次元の範囲検索を行う例を示す。【００６９】
まず、先頭ビット８１１（図１４）では、０１と１１を満たす範囲８２１（図１５（ａ））が検索対象であり、対応する１次元のビットはそれぞれ０１と１０である。次に、図１２と同様に先頭ビット８１１の多次元値が０１であるものに対しては００と１０の多次元値（対応する１次元値は００と１１）、先頭ビット８１１が１１であるものに対しては００と１０が検索対象となる（対応する１次元値は００と１１）。これらを満たす検索範囲は図１５（ｂ）の範囲８２２が対応する。【００７０】
ここで、先頭ビット８１１の多次元値が０１で、第２ビット８１２（図１４）が００である１次元値の４ビット目までは０１００であり、それ以降のビットからなる空間と対応する１次元範囲は［０１００００００，０１０１００００）となる。１０進法では［６４，８０）となる。この範囲のデータ密度を算出するために、この累積分布に対してこの両端の値を入力し、その差を得ると、この例では０となる。この結果は、データ密度が十分小さいと判断でき、この部分空間（先頭が０１、１ビット目が００）をさらに分割する処理を進めることは行わず、この部分空間は全て処理対象とするものとして、次の部分空間（先頭が０１、１ビット目１０）の処理を進める。【００７１】
なお、ここでの処理は多次元範囲と対応する１次元範囲を出力することであるので、この１次元範囲［０１００００００，０１０１００００）は全て検索対象に含まれると見なすことができる。一方、次の部分空間（先頭が０１、１ビット目１０）の処理では、その部分空間の１次元範囲が［０１１１１０００，１０００００００）、１０進法では［１２０，１２８）となる。この範囲のデータ密度を、前記分布情報を用いて算出すると、十分大きな値となるので、第３ビット８１３（図１４）への処理を進める。【００７２】
このようにしてデータ分布を参照しながら、データ処理を行うことで、データ密度の高い箇所は下位ビットまで空間充填曲線処理を進め、データ密度の低い箇所は、空間充填曲線の上位ビットでその下位ビットに関する処理を省略し、その範囲全てに対するデータ処理を行う。【００７３】
このように本実施例では、分布情報の密度データを考慮したことで、第３ビット目８１３では、合計３つのノードに関して、対応する１次元範囲の検索を行えばよいことになる。上記比較例の場合に比較して、検索対象となるノード数が７から３に減少していることがわかる。なお、求められた検索範囲は、図１５（ｃ）の範囲８２３が対応する。【００７４】
以上、実施形態および実施例を参照して本願発明を説明したが、本願発明は上記実施形態および実施例に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。【００７５】
上記の実施形態の一部または全部は、以下の付記のようにも記載されうるが、以下には限られない。
（付記１）
処理目的と関連する多次元データを空間充填曲線処理するデータ処理装置が、
多次元空間の部分空間に対する処理を行うとき、前記多次元データを前記空間充填曲線処理することで得られる複数の１次元値のデータ群の密度分布あるいは累積分布を示す分布情報を参照し、前記部分空間に対応する１次元の値あるいは範囲のデータ密度を取得し、
前記部分空間の前記データ密度に応じて、空間充填曲線処理を行うか否かを判定し、
判定結果に従い、空間充填曲線処理を行う空間充填曲線処理方法。
（付記２）
付記１に記載の空間充填曲線処理方法において、
前記データ処理装置が、
前記多次元空間の各部分空間を細分化して段階的に前記空間充填曲線処理を繰り返し行う過程において、
前記データ密度が閾値以上の各部分空間に対してのみ、段階的に細分化を行い、前記空間充填曲線処理を所定回数繰り返し、
前記データ密度が閾値未満の各部分空間に対しては、それ以上の細分化を行わず、前記空間充填曲線処理を中止する空間充填曲線処理方法。
（付記３）
付記２に記載の空間充填曲線処理方法において、
前記多次元空間の部分空間に対する処理が、多次元の属性値または範囲に対応する１次元の属性値または範囲を複数取得する検索処理であるとき、
前記データ処理装置が、
前記データ密度に応じて前記空間充填曲線処理を中止した各部分空間と、前記所定回数前記空間充填曲線処理を行い得られた各部分空間とを検索範囲として求める空間充填曲線処理方法。
（付記４）
付記１乃至３いずれかに記載の空間充填曲線処理方法において、
前記データ処理装置が、分布情報記憶装置をさらに備え、
前記データ処理装置が、
処理目的と関連する多次元データを空間充填曲線処理することで得られる複数の１次元値のデータ群を入力として、そのデータ群の密度分布あるいは累積分布を示す分布情報を生成し、
生成された前記分布情報を前記分布情報記憶装置に記憶し、
前記分布情報記憶装置に記憶された分布情報を参照し、前記部分空間に対応する１次元の値あるいは範囲のデータ密度を取得する空間充填曲線処理方法。
（付記５）
空間充填曲線処理を行うデータ処理装置を実現するコンピュータに、
多次元空間の部分空間に対する処理を行うとき、処理目的と関連する多次元データを空間充填曲線処理することで得られる複数の１次元値のデータ群の密度分布あるいは累積分布を示す分布情報を参照し、前記部分空間に対応する１次元の値あるいは範囲のデータ密度を取得する手順、
前記部分空間の前記データ密度に応じて、空間充填曲線処理を行うか否かを判定する手順、
前記判定する手順の判定結果に従い、前記空間充填曲線処理を行う手順を実行させるためのプログラム。
（付記６）
付記５に記載のプログラムにおいて、
前記多次元空間の各部分空間を細分化して段階的に前記空間充填曲線処理を繰り返し行う手順、
前記段階的に前記空間充填曲線処理を繰り返し行う手順の過程において、
前記データ密度が閾値以上の各部分空間に対してのみ、段階的に細分化を行い、前記空間充填曲線処理を所定回数繰り返す手順、
前記データ密度が閾値未満の各部分空間に対しては、それ以上の細分化を行わず、前記空間充填曲線処理を中止する手順をコンピュータに実行させるためのプログラム。
（付記７）
付記６に記載のプログラムにおいて、
前記多次元空間の部分空間に対する処理が、多次元の属性値または範囲に対応する１次元の属性値または範囲を複数取得する検索処理であるとき、
前記データ密度に応じて前記空間充填曲線処理を中止した各部分空間と、前記所定回数前記空間充填曲線処理を行い得られた各部分空間とを検索範囲として求める手順をコンピュータに実行させるためのプログラム。
（付記８）
付記５乃至７いずれかに記載のプログラムにおいて、
前記データ処理装置は、分布情報記憶装置をさらに備え、
処理目的と関連する多次元データを空間充填曲線処理することで得られる複数の１次元値のデータ群を入力として、そのデータ群の密度分布あるいは累積分布を示す分布情報を生成する手順、
生成された前記分布情報を前記分布情報記憶装置に記憶する手順、
前記分布情報記憶装置に記憶された分布情報を参照し、前記部分空間に対応する１次元の値あるいは範囲のデータ密度を取得する手順をコンピュータに実行させるためのプログラム。【００７６】
この出願は、２０１１年９月２７日に出願された日本出願特願２０１１−２１１１４４号を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【図１】
0006015662.tif 000002
【図２】
0006015662.tif 000003
【図３】
0006015662.tif 000004
【図４】
0006015662.tif 000005
【図５】
0006015662.tif 000006
【図６】
0006015662.tif 000007
【図７】
0006015662.tif 000008
【図８】
0006015662.tif 000009
【図９】
0006015662.tif 000010
【図１０】
0006015662.tif 000011
【図１１】
0006015662.tif 000012
【図１２】
0006015662.tif 000013
【図１３】
0006015662.tif 000014
【図１４】
0006015662.tif 000015
【図１５】
0006015662.tif 000016