JP4029536B2 - 多次元ベクトル検索方法および装置並びに多次元ベクトル検索プログラムを記録した記録媒体 - Google Patents
多次元ベクトル検索方法および装置並びに多次元ベクトル検索プログラムを記録した記録媒体 Download PDFInfo
- Publication number
- JP4029536B2 JP4029536B2 JP2000017877A JP2000017877A JP4029536B2 JP 4029536 B2 JP4029536 B2 JP 4029536B2 JP 2000017877 A JP2000017877 A JP 2000017877A JP 2000017877 A JP2000017877 A JP 2000017877A JP 4029536 B2 JP4029536 B2 JP 4029536B2
- Authority
- JP
- Japan
- Prior art keywords
- address value
- search
- vector data
- calculated
- multidimensional
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Description
【発明の属する技術分野】
本発明は、多数のn(n≧1)次元ベクトルデータが蓄積されたデータベース等から、n次元空間内において、位置、サイズ共に任意のn次元矩形領域内に存在するベクトルデータを検索する多次元ベクトル検索方法に関し、特に、nが数十以上となる場合の検索に適用して有効な技術に関するものである。
【0002】
【従来の技術】
従来、蓄積された複数のn次元ベクトルデータの中から、n次元ベクトル空間内において、位置、サイズ共に任意のn次元矩形領域内に存在するベクトルデータを検索する方法が、PCT/EP97/04520に開示されている。
【0003】
この方法では、ベクトル空間を一次元的に順序付けることのできる領域に分割し、各ベクトルデータが属する領域によってベクトルデータを管理する。検索時には、ベクトル空間内で位置、サイズ共に任意のn次元矩形領域を検索範囲として、検索範囲と重なる領域を全て求め、求めた各領域内に存在するベクトルデータに対して、ベクトルデータの各次元値と検索範囲の各次元の最小値、最大値との比較を行う。ベクトルデータの各次元値の比較において、検索範囲内に存在すると判定されたベクトルデータを検索結果として出力する。
【0004】
【発明が解決しようとする課題】
しかしながら、上記のような従来の方法では、対象データが数十次元以上の高次元ベクトルになると、検索するのに要する処理時間が増大するという問題があった。すなわち、上記公知例によれば、検索処理は「検索範囲と重なる領域を全て求める処理」と「ベクトルデータの各次元値と検索範囲の各次元の最小値、最大値との比較を行う処理」とに分けることができ、「検索範囲と重なる領域を全て求める処理」の処理オーダが、O(2n×a(n))(aは1つの領域に対して検索範囲と重なるか否かをを判定する処理量)であり、「ベクトルデータの各次元値と検索範囲の各次元の最小値、最大値との比較を行う処理」の処理オーダが、O(r×b(n))(rは検索結果となるデータ数、bは1件毎に検索範囲の各次元との比較を行う処理量)である。例えば、対象ベクトルデータが32次元の場合には、「検索範囲と重なる領域を全て求める処理」の処理オーダは、O(約40億×a(n))となる。aの処理時間を1μ秒と仮定しても、「検索範囲と重なる領域を全て求める処理」だけで4000秒を要することになる。このように、上記従来の方法では、対象データの次元数が増加すると、検索処理時間が増大する。多次元ベクトル検索方法は、例えば類似画像検索のような検索システムに適用されるが、そのような検索システムにおいて要求される検索処理時間は10万件程度のベクトルデータに対して「数秒程度」であり、上記従来の方法では、要求を満たすのは難しいと考えられる。
【0005】
本発明の目的は上記問題を改善するために、nが数十以上の場合でも、位置、サイズ共に任意のn次元矩形領域内に存在するn次元ベクトルデータを検索するのに要する処理時間に対し、検索対象となるベクトルデータの次元数の影響を減らす技術を提供することにある。
【0006】
【課題を解決するための手段】
上記問題を改善するために、蓄積された複数の多次元ベクトルデータの中から、位置、サイズ共に任意の多次元矩形領域内に存在する当該多次元ベクトルデータを検索する多次元ベクトル検索方法において、前記多次元矩形領域を検索条件として入力し、前記多次元ベクトルデータと当該多次元ベクトルデータの各次元の概略値を元に算出されるアドレス値とからなるデータ対に対して、当該アドレス値を用いて第1の判定処理を行い、当該アドレス値が前記検索条件を満たす場合に、当該データ対の多次元ベクトルデータを用いて第2の判定処理を行い、当該ベクトルデータが前記検索条件を満たす場合に、当該多次元ベクトルデータを検索結果として出力するようにする。すなわち、本発明による検索処理は、検索結果の候補となるデータを絞り込む「第1の判定処理」と、検索結果の候補となるデータを対象にして、最終的に検索結果となるデータを求める「第2の判定処理」とに分けられる。第1の判定処理の処理オーダは、O(N×f(n))(Nは蓄積データ数、fは1件毎の前判定処理量)であり、第2の判定処理の処理オーダは、O(N’×g(n))(N’は本判定処理の対象となるデータ数、gは1件毎の本判定処理量)であるので、検索処理全体の処理オーダはO(N×f(n)+N’×g(n))となる。アドレス値はベクトルデータの各次元値の概略値を元に算出されるので、アドレス値のサイズはベクトルデータのサイズよりも小さくなり、結果として、f(n)<<g(n)となる。また、本発明においては、経験的観測により、第1の判定処理を行うことにより、第2の判定処理の対象となるデータ数を検索結果となるデータ数の3倍程度にまで絞り込むことが期待できる。例えば、10万件の蓄積データから100件の検索結果を出力する検索では、第1の判定処理の処理オーダO(10万×f(n))に対して、第2の判定処理の処理オーダはO(300×g(n))となる。ここで、経験的観測により、ファイルI/Oを考慮した処理時間として、fの処理時間を10μ秒、gの処理時間を1m秒と仮定すると、第1の判定処理の処理時間が1秒程度、第2の判定処理の処理時間が0.3秒程度であり、検索処理全体で1.3秒となるので、10万件程度のベクトルデータに対して「数秒程度」という要求を満たし得る性能であるということができる。また、CPU演算はファイルI/Oに比べて処理時間が非常に短いので、検索対象となるベクトルデータの次元数が増加しても、検索処理全体の処理量にはほとんど影響を与えない。
【0007】
以上のように本発明の多次元ベクトル検索方法によれば、nが数十以上の場合でも、位置、サイズ共に任意のn次元矩形領域内に存在するn次元ベクトルデータを検索するのに要する処理時間を、処理量が検索対象となるベクトルデータの次元数にしたがって増大せず、10万件程度のベクトルデータに対して「数秒程度」という要求を満し得る時間にまで減らすことが可能である。
【0008】
【発明の実施の形態】
次に、本発明の一実施形態について図面を参照して説明する。
【0009】
図1は本実施形態の多次元ベクトル検索方法の原理を示す図である。本実施形態では、多次元空間403に分布する、10個のベクトルデータ303から検索範囲404内に存在するベクトルデータ303を求める手順として、まず、第1の判定処理を行うことにより、10個のベクトルデータ303から、検索範囲404内に存在し得るベクトルデータ303である、図の網掛け部分に存在する3個のベクトルデータ303に絞り込む。次に、絞り込まれた3個のベクトルデータ303に対してのみ、第2の判定処理を行い、検索範囲404内に存在する2個のベクトルデータ303を求める。ここで、第1の判定処理の計算量が非常に少ないので、検索処理に要する時間を減らすことができる。
【0010】
図2は本実施形態の多次元ベクトル検索装置の構成を示す図である。図2に示すように本実施形態の多次元ベクトル検索装置は、CPU100と、入力装置101と、出力装置102と、バス103と、メモリ200と、二次記憶装置300とから構成される。本システムの蓄積処理実行時は、蓄積処理プログラム201と、アドレス算出プログラム203と、B−Treeプログラム204とがメモリ200に格納され、CPU100で実行される。入力装置101から入力されたベクトルデータ303がメモリ200に渡り、蓄積処理プログラム201がB−Treeデータ301を更新し、アドレス値302、ベクトルデータ303を二次記憶装置300に格納する。本システムの検索処理実行時は、検索処理プログラム202と、アドレス算出プログラム203と、B−Treeプログラム204と、軸アドレス算出プログラム205と、範囲内判定プログラム206とがメモリ200に格納され、CPU100で実行される。ここで、B−Treeプログラム204は、一般的に用いられているB−Tree処理を行うプログラムである。入力装置101から入力された検索範囲404の情報がメモリ200に渡り、検索処理プログラム202がB−Treeデータ301、アドレス値302、ベクトルデータ303を参照して検索結果のベクトルデータ303を求め、出力装置102に検索結果のベクトルデータ303を出力する。二次記憶装置300には、B−Treeデータ301と、アドレス値302と、ベクトルデータ303とが格納されている。B−Treeデータ301は、B−Treeプログラム204により作成されるデータであり、図10に示すように、アドレス値302をインデクスキーとしたB−Treeのノード部に相当する。B−Treeデータ301のリーフ部に相当するのがアドレス値302、B−Treeデータ301の実データ部に相当するのがベクトルデータ303となっている。以下、アドレス値302と当該アドレス値302を算出した元のベクトルデータ303との組をデータ対と呼ぶ。
【0011】
本システムを機能させるための、蓄積処理プログラム201、検索処理プログラム202、アドレス算出プログラム203、B−Treeプログラム204、軸アドレス算出プログラム205、範囲内判定プログラム206、からなるプログラムは、CD−ROM等の記録媒体に記録され二次記憶媒体2に格納された後、メモリ12にロードされて実行されるものとする。なお前記プログラムを記録する媒体はCD−ROM以外の他の媒体でも良い。
【0012】
以下、本実施形態の蓄積処理と検索処理について説明する。
【0013】
図3は、本実施形態の蓄積処理プログラム201のフローチャートである。以下、図11、図12と併せて説明する。ステップ31では、入力装置101から入力されたベクトルデータ303から、アドレス算出プログラム203によりアドレス値302を算出する。図11に示すように、ベクトルデータ303(11)が入力されたら、ベクトルデータ303(11)のアドレス値302[1.3.2]を算出する。ステップ32では、算出したアドレス値302の二次記憶装置300における格納位置をB−Treeプログラム204により求め、B−Treeデータ301を更新し、アドレス値302、ベクトルデータ303を二次記憶装置300に格納する。ここでは、アドレス値302の大小関係が、データ対(3)<データ対(11)<データ対(4)となっているので、図12に示すように、データ対(11)のアドレス値302[1.3.2]はデータ対(3)のアドレス値302[1.0.3]と、データ対(4)のアドレス値302[2.0.3]との間に挿入されるので、B−Treeデータ301を更新し、それに伴いアドレス値302、ベクトルデータ303をしかるべき格納位置に格納する。
【0014】
図4は、本実施形態のアドレス算出プログラム203のフローチャートである。ステップ41では、アドレス値302を算出する対象のベクトルデータ303から、検索の用途に応じて必要なm個の次元を選択することにより、アドレス用ベクトルを作成する。ステップ42では、アドレス用ベクトル空間からなるキューブ401を処理対象キューブとする。ステップ43では、変数iに「1」を代入する。iとは、アドレス値302の全ての桁に対して処理を行ったかどうかをチェックする変数である。ステップ44では、対象キューブに対して基本分割処理を行い、処理対象キューブを2m個のサブキューブ402に分割する。ステップ45では、ベクトルデータ303がステップ44で分割されたサブキューブ402のうち、どのサブキューブ402に含まれるかを判断する。ステップ46では、ベクトルデータ303が含まれるサブキューブ402の番号をアドレス値302のi桁目の数Xiとする。ここで、Xiは符号なしmビット整数である。ステップ47では、ベクトルデータ303が含まれるサブキューブ402を処理対象キューブとする。ステップ48では、アドレス値302の全ての桁に対して処理を行ったかどうかをチェックする。、i<kを満たす場合にはステップ49に進み、満たさない場合には、アドレス値302の全ての桁に対して処理を行ったので、[X1.X2.….Xk]というk個の数値並びをアドレス値302としてプログラムを終了する。ステップ49では、変数iを「1」増分する。ここで、アドレス値302の桁数kを多くすると、範囲内判定プログラム206で行われるアドレス値302の比較処理において判定精度が良くなり、ベクトルデータ303の比較処理を行う回数を減らすことができる。反面、アドレス値302の比較処理自体の計算量、アドレス値302のデータ量が大きくなる。そのため、アドレス値302の桁数kは、蓄積されているベクトルデータ303の分布密度等を考慮して適切な値に設定する必要がある。
【0015】
基本分割とは、図8に示すように、m次元のキューブ401を各辺2分割することにより、2m個のサブキューブ402に分割する処理であり、各サブキューブ402には通し番号を付ける。ここでは、分割の際に各辺を2等分割しているが、ベクトルデータ303の分布の偏りを考慮して分割しても良い。アドレス値302の1次元的な順序付け規則とは、上位桁の数値が大きいアドレス値302ほど大きいと定義する。すなわち、2次元のアドレス用ベクトルから3桁のアドレス値302を算出した場合には、アドレス値302は数式1のような大小関係を持ち、これを昇順で並べると、図9の矢印で示した順番となる。
【0016】
【数1】
0.0.0<0.0.1< … <0.0.3<0.1.0< … <3.3.2<3.3.3
図5は、本実施形態の検索処理プログラム202のフローチャートである。以下、図13の検索範囲404が入力された場合の蓄積データに対して、検索処理プログラムが行う処理の流れを、図14と併せて説明する。ステップ50では、検索範囲404内で原点から一番近い点と一番遠い点とを求め、アドレス算出プログラム203により、それぞれの点のアドレス値302を算出する。以下、検索範囲404内で原点から一番近い点が持つアドレス値302を検索最小アドレス値、検索範囲404内で原点から一番遠い点が持つアドレス値302を検索最大アドレス値と呼ぶ。検索最小アドレス値は[2.1.1]、検索最大アドレス値は[3.2.1]と算出される。ステップ51では、B−Treeプログラム204により、二次記憶装置300での、検索最小アドレス値と検索最大アドレス値の格納位置を求める。図14に示すように、検索最小アドレス値の格納位置は(4)と(5)の間、検索最大アドレス値の格納位置は(9)と(10)の間と求められるので、。ステップ52では、軸アドレス算出プログラムにより、検索最小アドレス値の軸アドレス値と検索最大アドレス値の軸アドレス値を算出する。検索最小アドレス値の軸アドレス値は、横軸[0.1.1]、縦軸[1.0.0]と算出され、検索最大アドレス値の軸アドレス値は、横軸[1.0.1]、縦軸[1.1.0]と算出される。ステップ53では、ステップ51で求めた検索最小アドレス値の格納位置に格納されているデータ対を処理対象データ対とする。すなわち、データ対(5)を処理対象データ対とする。ステップ54では、処理対象データ対以降に格納されているデータ対、すなわち、処理対象データ対のアドレス値302よりも大きいアドレス値302を持つデータ対に対して処理を行う必要があるかを判断する。この判断は、ステップ52で求めた検索最大アドレス値の格納位置と処理対象データ対の格納位置とを比較することにより行う。「検索最大アドレス値の格納位置<処理対象データ対格納位置」ならば、処理を続ける必要がないので、プログラムを終了する。「検索最大アドレス値の格納位置≧処理対象データ対格納位置」ならば、ステップ55に進む。つまり、図14において、データ対(9)よりも後に格納されているデータ対(10)に対しては、判定処理を行う必要がない。ステップ55では、軸アドレス算出プログラム205により、処理対象データ対のアドレス値302の軸アドレスを算出する。アドレス値302(5)の軸アドレスは、横軸[0.1.1]、縦軸[1.0.1]と求められる。ステップ56では、範囲内判定プログラム206により、処理対象データ対のベクトルデータ303が検索範囲404内に存在するか否かの判定処理を行う。ステップ57では、処理対象データ対のベクトルデータ303が検索範囲404内に存在すると判定された、すなわち、処理対象データ対のベクトルデータ303が検索結果であるならば、ステップ58に進む。そうでないならば、すてっぷ59に進む。ステップ58では、処理対象データ対のベクトルデータ303を検索結果として出力装置102に出力する。ステップ59では、処理対象データ対の次の位置に格納されているデータ対を処理対象として、ステップ54に進む。処理対象データ対が(5)の場合、処理対象データ対を次に格納されているデータ対(6)にする。
【0017】
以上のように、B−Treeプログラム204を用いることにより、データ対(1)、データ対(2)、データ対(3)、データ対(4)、データ対(10)に対しては、アドレス値302の比較による判定処理を行う必要がないので、アドレス値302の比較による判定処理の計算量を1/2に減らすことができる。
【0018】
図6は、本実施形態の軸アドレス算出プログラム205のフローチャートである。j軸アドレス値ajは、アドレス値302を第jベクトルについてのみ評価する処理を高速化するために使用される。ステップ61では、変数iに「1」を代入する。iとは、アドレス値302の全ての桁に対して2進数を算出したかどうかをチェックする変数である。ステップ62では、アドレス値302のi桁目の数Xiを2進数で表示した時の各桁数xi1、xi2、…、ximを算出する。ここでmとは、アドレス用ベクトルの次元数である。ステップ63では、全ての桁に対して2進数を算出したかどうかをチェックする。i<kを満たす場合にはステップ64に進み、満たさない場合には、全ての桁に対して2進数を算出したのでステップ65に進む。ここでkとは、アドレス用ベクトルの次元数である。ステップ64では、変数iを「1」増分する。ステップ65では、変数jに「1」を代入する。jとは、アドレス用ベクトルの全ての次元における軸アドレス値を算出したかどうかをチェックする変数である。ステップ66では、ステップ62で算出された2進数のうちx1j、x2j、…、xkjのk個の2進数から構成されるkビット整数をj軸アドレス値ajとして算出する。ステップ67では、アドレス用ベクトルの全ての次元における軸アドレス値を算出したかどうかをチェックする。j<mを満たす場合にはステップ68に進み、満たさない場合には、アドレス用ベクトルの全ての次元における軸アドレス値を算出したのでプログラムを終了する。ステップ68では、変数jを「1」増分する。
【0019】
図7は、本実施形態の範囲内判定プログラム206のフローチャートである。以下、図1の蓄積データに対して範囲内判定プログラム206が行う処理の流れを、図15、図16と併せて説明する。範囲内判定プログラム206が行う処理は、「アドレス値302の比較による判定処理」と「ベクトルデータ303各次元値の比較による判定処理」とに分けることができる。ステップ71からステップ74までがアドレス値302の比較による判定処理であり、ステップ75からステップ78までがベクトルデータ303各次元値の比較による判定処理である。ステップ71では、変数iに「1」を代入する。iとは、アドレス値302の全ての軸アドレス値に対して判定処理を行ったかどうかをチェックする変数である。ステップ72では、処理対象データ対のアドレス値302が検索最小アドレス値から検索最大アドレス値までの値かどうかを判断する。ここで、aminiとは検索最小アドレス値のi軸アドレス値、aiとは処理対象データ対のアドレス値302のi軸アドレス値、amaxiとは検索最大アドレス値のi軸アドレス値を示す。amini≦ai≦amaxiを満たす場合にはステップ73へ進む。満たさない場合には、処理対象データ対のベクトルデータ303は検索範囲404の内部には存在しないとしてプログラムを終了する。ステップ73では、全ての軸アドレス値に対して判定処理を行ったかどうかをチェックする。ここでmとは、アドレス用ベクトルの次元数である。i<mを満たす場合にはステップ74に進み、満たさない場合には、全ての軸アドレス値に対して判定処理を行ったので、処理対象データ対のベクトルデータ303は検索範囲404の内部に存在するとして、ステップ75に進む。ステップ74では、変数iを「1」増分する。図15に、アドレス値302の比較による判定処理の詳細な内容を示す。(5)〜(9)のデータに対して、アドレス値302の比較による判定処理を行い、検索範囲404内に存在し得ると判定されたデータが(5)、(7)、(9)である。ステップ75では、変数jに「1」を代入する。jとは、ベクトルデータ303の全ての次元に対して判定処理を行ったかどうかをチェックする変数である。ステップ76では、処理対象データ対のベクトルデータ303の次元値が検索範囲404の当該次元の最大値から最小値までの値かどうかを判断する。ここで、vminjとは検索範囲404のj次元での最小値、vjとは処理対象データ対のベクトルデータ303のj次元値、vmaxjとは検索範囲404のj次元での最大値を示す。vminj≦vj≦vmaxjを満たす場合にはステップ77へ進む。満たさない場合には、処理対象データ対のベクトルデータ303は検索範囲404の内部には存在しないとしてプラグラムを終了する。ステップ77では、ベクトルデータ303の全ての次元に対して判定処理を行ったかどうかをチェックする。ここでnとは、ベクトルデータ303の次元数である。j<nを満たす場合にはステップ78に進み、満たさない場合には、ベクトルデータ303の全ての次元に対して判定処理を行ったので、処理対象データ対のネクトルデータ303は検索範囲404の内部に存在するとしてプログラムを終了する。ステップ78では、変数jを「1」増分する。図16に、ベクトルデータ303各次元値の比較による判定処理の詳細な内容を示す。(5)、(7)、(9)のデータに対して、アドレス値302の比較による判定処理を行い、検索範囲404内に存在すると判定されたデータが(5)、(9)であり、個の2個のデータが検索結果となる。
【0020】
本実施形態では、1枚の画像から輝度微分情報や色情報を解析して求められる590次元の画像特徴量をベクトルデータ303として使用した。そして、590次元のベクトルデータ303から32次元のアドレス用ベクトルを作成し、6桁のアドレス値302を算出した。そのため、590次元のベクトルデータ303からアドレス値302を算出するよりも、アドレス値302のサイズが32/590になり、検索処理に要する計算量を減らすことができる。また、軸アドレス値のサイズが6ビットであり、それに対して、ベクトルデータ303の各次元値のサイズは4バイト=32ビット(実数値)である。ここで、10万件のベクトルデータ303の集合に対して、B−Treeプログラム204を用いることによって、アドレス値302の比較による判定処理の対象となるベクトルデータ303を蓄積データ件数の1/2に絞り込み、アドレス値302の比較による判定処理で300件が検索範囲404の内部に存在し得ると判定され、ベクトルデータ303各次元値の比較による判定処理で100件が検索範囲404の内部に存在すると判定される検索処理について考察する。この場合、10万件分のベクトルデータ303各次元値の比較による判定処理を5万件分のアドレス値302の比較による判定処理と300件分のベクトルデータ303各次元値の比較による判定処理で代用したと言うことができる。ここで、B−Treeプログラム204を用いた処理量は他の処理に比べて無視できるほど小さいものとした。1件に対するベクトルデータ303各次元値の比較による判定処理が、ベクトルデータ303の590次元各次元における32ビット比較処理であるのに対して、1件に対するアドレス値302の比較による判定処理は、アドレス用ベクトルの32次元各次元における6ビット比較処理であるので、1件当たりの比較処理回数が32/590、1回あたりの比較処理対象データサイズが6/32となる。よって、1件に対するベクトルデータ303各次元値の比較による判定処理を1uとすると、検索処理に要する計算量を10万uから、約500u+300u=約800uに減らすことが可能となる。
【0021】
以上説明したように本実施形態の多次元ベクトル検索方法によれば、n次元ベクトル空間内において、位置、サイズ共に任意のn次元矩形領域内に存在するn次元ベクトルデータを検索するのに要する処理時間を1/100程度に減らすことが可能であり、また、処理量が検索対象となるベクトルデータの次元数にしたがって増大しないので、nが数十以上の場合でも適用することが可能である。
【0022】
【発明の効果】
本発明によれば、位置、サイズ共に任意のn次元矩形領域内に存在するn次元ベクトルデータを検索する処理において、「第1の判定処理」と「第2の判定処理」とを導入することによって、nが数十以上の場合でも、位置、サイズ共に任意のn次元矩形領域内に存在するn次元ベクトルデータを検索するのに要する処理時間に対し、検索対象となるベクトルデータの次元数の影響を減らすことが可能となる。
【図面の簡単な説明】
【図1】本実施形態の多次元ベクトル検索方法の原理を示す図である。
【図2】本実施形態の多次元ベクトル検索装置の構成を示す図である。
【図3】本実施形態の蓄積処理プログラム201のフローチャートである。
【図4】本実施形態のアドレス算出プログラム203のフローチャートである。
【図5】本実施形態の検索処理プログラム202のフローチャートである。
【図6】本実施形態の軸アドレス算出プログラム205のフローチャートである。
【図7】本実施形態の範囲内判定プログラム206のフローチャートである。
【図8】本実施形態のアドレス算出プログラム203が行う基本分割を説明する図である。
【図9】本実施形態のアドレス値302の1次元的な順序付け規則を説明する図である。
【図10】本実施形態の二次記憶装置300の詳細を示す図である。
【図11】本実施形態の蓄積処理を説明するための多次元ベクトル空間403を示す図である。
【図12】本実施形態の蓄積処理を説明するための二次記憶装置300の詳細を示す図である。
【図13】本実施形態の検索処理を説明するための多次元ベクトル空間403を示す図である。
【図14】本実施形態の検索処理を説明するための二次記憶装置300の詳細を示す図である。
【図15】本実施形態のアドレス値302の比較による判定処理の詳細な内容を示す図である。
【図16】本実施形態のベクトルデータ303各次元値の比較による判定処理の詳細な内容を示す図である。
【符号の説明】
101 CPU
101 入力装置
102 出力装置
103 バス
200 メモリ
201 蓄積処理プログラム
202 検索処理プログラム
203 アドレス算出プログラム
204 B−Treeプログラム
205 軸アドレス算出プログラム
206 範囲内判定プログラム
300 二次記憶装置
301 B−Treeデータ
302 アドレス値
303 ベクトルデータ
401 キューブ
402 サブキューブ
403 多次元ベクトル空間
Claims (5)
- 記憶装置に蓄積された複数の多次元ベクトルデータ(次元数をNとする)の中から、位置およびサイズに任意の多次元矩形領域内に存在する当該多次元ベクトルデータを検索する多次元ベクトル検索装置における多次元ベクトル検索方法において、
前記多次元ベクトルデータからN≧nなるn個の次元を選択して構成されるn次元ベクトルデータに関して、当該n次元ベクトルデータの存在するn次元の領域全体を、(2のk乗)のn乗個のサブ領域群に分割し、各サブ領域を一意に識別して順序を規定する、k桁の数値として表されるアドレス値を算出し、当該n次元ベクトルデータの存在するn次元の各次元に、各次元の領域全体を2のk乗個のサブ領域群に分割し、該各サブ領域を一意に識別し、順序を規定し、k桁の数値として表される軸アドレス値を算出し、
前記多次元ベクトルデータからアドレス値を算出し、該算出したアドレス値を前記多次元ベクトルデータに対応付けB−Tree構造を有するB−Treeデータとして前記記憶装置に格納し、
多次元矩形領域を含む検索条件の入力に応じて、該入力された多次元矩形領域にてアドレス値順序が最小となる端点とアドレス値順序が最大となる端点に相当する検索最小アドレス値と検索最大アドレス値を算出し、前記算出した検索最小アドレス値に対応する軸アドレス値と、前記算出した検索最大アドレス値に対応する軸アドレス値と、前記算出した検索最小アドレス値に対応するB−Tree構造における格納位置と、前記算出した検索最大アドレス値に対応するB−Treeデータにおける格納位置とをそれぞれ算出し、前記算出した検索最小アドレス値に対応するB−Tree構造における格納位置から前記算出した検索最大アドレス値に対応するB−Tree構造における格納位置に含まれる多次元ベクトルデータを対象として、それぞれについて軸アドレス値を算出し、前記算出した検索最小アドレス値に対応する軸アドレス値と前記算出した検索最大アドレス値に対応する軸アドレス値との比較演算により、特定される前記多次元ベクトルデータを得る第1の判定処理を処理し、
前記第1の判定処理で得た前記多次元ベクトルデータを前記記憶装置から参照して前記検索条件を満たすか否かを判定する第2の判定処理を行い、当該多次元ベクトルデータが前記検索条件を満たす場合は当該多次元ベクトルデータを前記記憶装置から読み出して検索結果として出力することを特徴とする多次元ベクトル検索方法。 - 請求項1記載の多次元ベクトル検索方法において、前記多次元ベクトルデータを前記記憶装置に格納する際に、当該多次元ベクトルデータの各次元の概略値を元に算出される前記アドレス値と当該多次元ベクトルデータとを関連付けて別々に格納することを特徴とする多次元ベクトル検索方法。
- 請求項1記載の多次元ベクトル検索方法において、前記アドレス値を算出する際に、前記多次元ベクトルデータについて所定の次元を選択してアドレス用ベクトルを作成し、当該アドレス用ベクトルの各次元の概略値を元に算出される値をアドレス値とすることを特徴とする多次元ベクトル検索方法。
- 請求項1記載の多次元ベクトル検索方法において、前記アドレス値について一次元的順序を付ける規則を設定し、前記アドレス値をインデクスキーとしたB−Treeを作成して前記データ対を蓄積し、前記第1の判定処理を行う際に、当該B−Treeを用いて前記検索範囲の最小アドレス値と前記検索範囲の最大アドレス値の格納位置を求め、当該検索範囲の最小アドレス値よりも小さいアドレス値を持つ前記データ対と当該検索範囲の最大アドレス値よりも大きいアドレス値を持つ前記データ対については、前記第1の判定処理を行わないことを特徴とする多次元ベクトル検索方法。
- 記憶装置に蓄積された複数の多次元ベクトルデータ(次元数をNとする)の中から、位置およびサイズに任意の多次元矩形領域内に存在する当該多次元ベクトルデータを検索する多次元ベクトル検索装置において、
前記多次元ベクトル検索装置は、
前記多次元ベクトルデータからN≧nなるn個の次元を選択して構成されるn次元ベクトルデータに関して、当該n次元ベクトルデータの存在するn次元の領域全体を、(2のk乗)のn乗個のサブ領域群に分割し、各サブ領域を一意に識別して順序を規定する、k桁の数値として表されるアドレス値を算出し、当該n次元ベクトルデータの存在するn次元の各次元に、各次元の領域全体を2のk乗個のサブ領域群に分割し、該各サブ領域を一意に識別し、順序を規定し、k桁の数値として表される軸アドレス値を算出し、
前記多次元ベクトルデータからアドレス値を算出し、該算出したアドレス値を前記多次元ベクトルデータに対応付けB−Tree構造を有するB−Treeデータとして前記記憶装置に格納し、
多次元矩形領域を含む検索条件の入力に応じて、該入力された多次元矩形領域にてアドレス値順序が最小となる端点とアドレス値順序が最大となる端点に相当する検索最小アドレス値と検索最大アドレス値を算出し、前記算出した検索最小アドレス値に対応する軸アドレス値と、前記算出した検索最大アドレス値に対応する軸アドレス値と、前記算出した検索最小アドレス値に対応するB−Tree構造における格納位置と、前記算出した検索最大アドレス値に対応するB−Treeデータにおける格納位置とをそれぞれ算出し、前記算出した検索最小アドレス値に対応するB−Tree構造における格納位置から前記算出した検索最大アドレス値に対応するB−Tree構造における格納位置に含まれる多次元ベクトルデータを対象として、それぞれについて軸アドレス値を算出し、前記算出した検索最小アドレス値に対応する軸アドレス値と前記算出した検索最大アドレス値に対応する軸アドレス値との比較演算により、特定される前記多次元ベクトルデータを得る第1の判定処理を処理し、
前記第1の判定処理で得た前記多次元ベクトルデータを前記記憶装置から参照して前記検索条件を満たすか否かを判定する第2の判定処理を行い、当該多次元ベクトルデータが前記検索条件を満たす場合は当該多次元ベクトルデータを前記記憶装置から読み出して検索結果として出力することを特徴とする多次元ベクトル検索装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2000017877A JP4029536B2 (ja) | 2000-01-24 | 2000-01-24 | 多次元ベクトル検索方法および装置並びに多次元ベクトル検索プログラムを記録した記録媒体 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2000017877A JP4029536B2 (ja) | 2000-01-24 | 2000-01-24 | 多次元ベクトル検索方法および装置並びに多次元ベクトル検索プログラムを記録した記録媒体 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2001209651A JP2001209651A (ja) | 2001-08-03 |
JP4029536B2 true JP4029536B2 (ja) | 2008-01-09 |
Family
ID=18544806
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2000017877A Expired - Fee Related JP4029536B2 (ja) | 2000-01-24 | 2000-01-24 | 多次元ベクトル検索方法および装置並びに多次元ベクトル検索プログラムを記録した記録媒体 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4029536B2 (ja) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9619501B2 (en) | 2012-01-13 | 2017-04-11 | Nec Corporation | Index scan device and index scan method |
JP6155920B2 (ja) * | 2013-07-12 | 2017-07-05 | 日本電気株式会社 | 多次元範囲検索装置及び多次元範囲検索方法 |
CN105354303A (zh) * | 2015-11-06 | 2016-02-24 | 广东电网有限责任公司清远供电局 | 基于bi多维分析理论的电网告警数据处理方法和装置 |
-
2000
- 2000-01-24 JP JP2000017877A patent/JP4029536B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2001209651A (ja) | 2001-08-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Kraska et al. | The case for learned index structures | |
US6823335B2 (en) | Information search apparatus and method, and storage medium | |
JP6070956B2 (ja) | 類似性検出装置及び指向性近傍検出方法 | |
KR100545477B1 (ko) | 거리 측정기를 사용한 이미지 검색법 | |
US5848416A (en) | Method and apparatus for storing and retrieving data and a memory arrangement | |
JPH11212980A (ja) | インデクス作成方法および検索方法 | |
CN111563101B (zh) | 执行计划优化方法、装置、设备及存储介质 | |
KR100903961B1 (ko) | 시그니처 파일을 이용한 고차원 데이터 색인 및 검색방법과 그 시스템 | |
KR102005343B1 (ko) | 분할 공간 기반의 공간 데이터 객체 질의처리장치 및 방법, 이를 기록한 기록매체 | |
JP2008225575A (ja) | 計算機負荷見積システム、計算機負荷見積方法 | |
Tavenard et al. | Improving the efficiency of traditional DTW accelerators | |
CN108027816B (zh) | 数据管理系统、数据管理方法及记录介质 | |
Fraley et al. | Least angle regression and LASSO for large datasets | |
JP4029536B2 (ja) | 多次元ベクトル検索方法および装置並びに多次元ベクトル検索プログラムを記録した記録媒体 | |
JP2000305946A (ja) | 情報検索装置、情報検索方法、及び記憶媒体 | |
Coşkun et al. | Indexed fast network proximity querying | |
Hoseini Monjezi et al. | An inexact multiple proximal bundle algorithm for nonsmooth nonconvex multiobjective optimization problems | |
CN113010525A (zh) | 一种基于pid的海洋时空大数据并行knn查询处理方法 | |
JP2001022621A (ja) | 多次元データベース管理システム | |
JPH11213004A (ja) | データ処理装置及びその方法、及びそのプログラムを記憶した記憶媒体 | |
JP4460277B2 (ja) | 画像の対応点探索方法、対応点探索装置および対応点探索プログラム | |
Flaherty et al. | Distributed octree data structures and local refinement method for the parallel solution of three-dimensional conservation laws | |
CN110210691B (zh) | 资源推荐方法、装置、存储介质及设备 | |
Dimri et al. | Algorithms: Design and Analysis | |
JPH10260990A (ja) | 例示検索の高速化方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
RD01 | Notification of change of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7421 Effective date: 20060417 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060725 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060925 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20070213 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070413 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20070626 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070827 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20070925 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20071008 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101026 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111026 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121026 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121026 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131026 Year of fee payment: 6 |
|
LAPS | Cancellation because of no payment of annual fees |