JP4271227B2 - ビット列検索装置、検索方法及びプログラム - Google Patents
ビット列検索装置、検索方法及びプログラム Download PDFInfo
- Publication number
- JP4271227B2 JP4271227B2 JP2006293619A JP2006293619A JP4271227B2 JP 4271227 B2 JP4271227 B2 JP 4271227B2 JP 2006293619 A JP2006293619 A JP 2006293619A JP 2006293619 A JP2006293619 A JP 2006293619A JP 4271227 B2 JP4271227 B2 JP 4271227B2
- Authority
- JP
- Japan
- Prior art keywords
- node
- search
- key
- array element
- bit string
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/90335—Query processing
- G06F16/90344—Query processing by using string matching techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/31—Indexing; Data structures therefor; Storage structures
- G06F16/316—Indexing structures
- G06F16/322—Trees
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Communication Control (AREA)
Description
上記ビット列の検索を高速に行うために、ビット列を記憶するデータ構造を種々に工夫することが従来から行われている。このようなものの一つとして、パトリシアツリーという木構造が知られている。
ある検索キーで検索を行うとき、ルートノードから順次各ノードに保持される検索キーの検査ビット位置を検査していき、検査ビット位置のビット値が1であるか0であるか判定を行い、1であれば右リンクをたどり、0であれば左リンクをたどる。そして、リンク先のノードの検査ビット位置がリンク元のノードの検査ビット位置より大きくなければ、すなわち、リンク先が下方でなく上方に戻れば(図24において点線で示されたこの逆戻りのリンクをバックリンクという)、リンク先のノードのインデックスキーと検索キーの比較を行う。比較の結果、等しければ検索成功であり、等しくなければ検索失敗であることが保証されている。
また、本発明の別の態様によれば、前方から指定された数のビット以降については0を設定したビット列を、前記下限値を設定するために入力された下限キーとし、前方から前記指定された数のビット以降については1を設定したビット列を、前記上限値を設定するために入力された上限キーとして検索範囲を決定し、該検索範囲について昇順あるいは降順でインデックスキーを取り出すことにより、前方から前記指定された数のビットについて一致するビット列からなるインデックスキーを出力する前方一致検索を提供する。
図1を参照すると、ノード101が配列100の配列番号10の配列要素に配置されている。ノード101はノード種別102、弁別ビット位置103及び代表ノード番号104で構成されている。ノード種別102は0であり、ノード101がブランチノードであることを示している。弁別ビット位置103には1が格納されている。代表ノード番号104にはリンク先のノード対の代表ノードの配列番号20が格納されている。なお、以下では表記の簡略化のため、代表ノード番号に格納された配列番号を代表ノード番号ということもある。また、代表ノード番号に格納された配列番号をそのノードに付した符号あるいはノード対に付した符号で表すこともある。
ノード[0]112、ノード[1]113、ノード122、及びノード123の格納された配列要素にそれぞれ付された0あるいは1は、検索キーで検索を行う場合にノード対のどちらのノードにリンクするかを示すものである。前段のブランチノードの弁別ビット位置にある検索キーのビット値である0か1を代表ノード番号に加えた配列番号のノードにリンクする。
図2は、カップルドノードツリーのツリー構造を概念的に示す図である。図示の6ビットのインデックスキーは、図24に例示されたパトリシアツリーのものと同じである。
ツリー構造としては、ルートノード210aの下にノート対201bが、その下層にノード対201cとノード対201fが配置され、ノード対201fの下層にはノード対201hとノード対201gが配置されている。ノード対201cの下にはノード対201dが、さらにその下にはノード対201eが配置されている。
まず、ビット列“100010”を検索キーとしてルートノード210aから処理をスタートする。ルートノード210aの弁別ビット位置230aは0であるので、検索キー“100010”の弁別ビット位置が0のビット値をみると1である。そこで代表ノード番号の格納された配列番号220aに1を加えた配列番号の配列要素に格納されたノード211bにリンクする。ノード211bの弁別ビット位置231bには2が格納されているので、検索キー“100010”の弁別ビット位置が2のビット値をみると0であるから、代表ノード番号の格納された配列番号221bの配列要素に格納されたノード210fにリンクする。
カップルドノードツリーの構成はインデックスキーの集合により規定される。図2の例で、ルートノード210aの弁別ビット位置が0であるのは、図2に例示されたインデックスキーに0ビット目が0のものと1のものがあるからである。0ビット目が0のインデックスキーのグループはノード210bの下に分類され、0ビット目が1のインデックスキーのグループはノード211bの下に分類されている。
そして2ビット目が1であるインデックスキーは3ビット目の異なるものがあるのでノード211fの弁別ビット位置には3が格納され、2ビット目が0であるインデックスキーでは3ビット目も4ビット目も等しく5ビット目で異なるのでノード210fの弁別ビット位置には5が格納される。
そしてさらにいえば、異なるビット値となるビット位置ごとにビット値が“1”のノードとビット値が“0”のノードとに分岐していることから、ノード[1]側とツリーの深さ方向を優先させてリーフノードをたどると、それらに格納されたインデックスキーは、ノード211hのインデックスキー251hの“101100”、ノード210hのインデックスキー250hの“101011”、・・・、ノード210cのインデックスキー250cの“000111”となり降順にソートされている。
検索キーで検索するときはインデックスキーがカップルドノードツリー上に配置されたルートをたどることになり、例えば検索キーが“101100”であればノード211hに到達することができる。また、上記説明からも想像がつくように、“101101”か“101110”を検索キーとした場合でもノード211hにたどり着き、インデックスキー251hと比較することにより検索が失敗したことが分かる。
本発明の検索装置による検索処理及びデータメンテナンスは中央処理装置302及びキャッシュメモリ303を少なくとも備えたデータ処理装置301によりデータ格納装置308を用いて実施される。カップルドノードツリーが配置される配列309と検索中にたどるノードが格納された配列要素の配列番号を記憶する探索経路スタック310を有するデータ格納装置308は、主記憶装置305または外部記憶装置306で実現することができ、あるいは通信装置307を介して接続された遠方に配置された装置を用いることも可能である。
以下、上記のカップルドノードツリーに格納されたインデックスキーを検索するための各種動作について、図面を用いて具体的に説明する。
まず、ステップS401で、検索開始ノードの配列番号を取得する。取得された配列番号に対応する配列は、カップルドノードツリーを構成する任意のノードを格納したものである。検索開始ノードの指定は、後に説明する各種応用検索において行われる。
図6は、カップルドノードツリー(部分木を含む)に格納されたインデックスキーの最小値を求める処理を示したフローチャートである。先に述べたようなインデックスキーのツリー上の配置から、インデックスキーの最小値を求める処理は検索開始ノードからノード[0]をリーフノードに至るまでツリー上でたどることに相当する。
図10は、カップルドノードツリーに格納されたインデックスキーを昇順に取り出す処理を示したフローチャートである。インデックスキーを昇順に取り出す処理は、ノード対をなすノードのうちノード[0]側及びツリーの深さを優先させてノードから順次リーフノードをたどり、各リーフノードからインデックスキーを取り出していくことに相当する。
ステップS1002でカップルドノードツリーに含まれるインデックスキーの最大値を求めると、ステップS1003で、ステップS1002で求めた最大値と上限キーとを比較し、上限キーが最大値より大きいか否かを判定する。上限キーがインデックスキーの最大値以上であるときは、ステップS1004に進み、ステップS1002で求めた最大値を上限値として設定し、処理を終了する。
上記の応用検索を複数組み合わせて、以下に示すような検索処理を行うことも可能である。
100 配列
101 ノード
102 ノード種別
103 弁別ビット位置
104 代表ノード番号
111 ノード対
112 ノード[0]、代表ノード
113 ノード[1]、代表ノードと対をなすノード
118 インデックスキー
301 データ処理装置
302 中央処理装置
303 キャッシュメモリ
304 バス
305 主記憶装置
306 外部記憶装置
307 通信装置
308 データ格納装置
309 配列
310 探索経路スタック
Claims (14)
- ビット列からなる検索キーにより検索対象であるビット列からなるインデックスキーが格納されたツリーのデータ構造に基づいて前記インデックスキーを検索するビット列検索装置において、
前記ツリーの始点であるルートノードと、隣接した記憶領域に配置される代表ノードと非代表ノードである2つのノードを有する、ツリーの構成要素としてのノード対を有し、前記ノードは該ノードがブランチノードであるかリーフノードであるかを示すノード種別を格納する領域を有し、前記ブランチノードは、前記ノード種別に加えて、前記検索キーの弁別ビット位置を格納する領域とリンク先のノード対の代表ノードの位置を示す位置情報を格納する領域を含むが、前記検索対象のビット列からなるインデックスキーを格納する領域を含まないものであり、前記リーフノードは、前記ノード種別に加えて、前記検索対象のビット列からなるインデックスキーを格納する領域を含むが、前記検索キーの弁別ビット位置を格納する領域とリンク先のノード対の代表ノードの位置を示す位置情報を格納する領域を含まないものである、カップルドノードツリーと、
前記ノード対のどちらか一方のノードである検索開始ノードの位置を示す位置情報を取得し、該取得した検索開始ノードの位置を示す位置情報により検索開始ノードを読み出す検索開始ノード読出手段と、
前記ノードのノード種別を格納する領域から当該ノード種別を読み出し、該ノード種別が前記リーフノードを示すものであるかブランチノードを示すものであるかを判定するノード種別判定手段と、
前記リーフノードのインデックスキーを格納する領域から当該インデックスキーを読み出すインデックスキー読出手段と、
前記ブランチノードの弁別ビット位置を格納する領域とリンク先のノード対の代表ノードの位置を示す位置情報を格納する領域からそれぞれ当該弁別ビット位置とリンク先のノード対の代表ノードの位置を示す位置情報を読み出し、該読み出した弁別ビット位置の前記検索キーのビット値と前記読み出したリンク先のノード対の代表ノードの位置を示す位置情報との演算によりリンク先のノード対のどちらかのノードの位置を示す位置情報を求め、該求めたノードの位置を示す位置情報により示される記憶領域から、該記憶領域に配置されたノードをリンク先ノードとして読み出すリンク手段と、
を備え、
前記検索開始ノード読出手段で読み出した検索開始ノードのノード種別を前記ノード種別判定手段で判定し、該ノード種別がリーフノードを示すものであれば、該リーフノードから前記インデックスキー読出手段によりインデックスキーを読み出し、該ノード種別がブランチノードを示すものであれば、前記リンク手段によりリンク先ノードを読み出し、該読み出したリンク先ノードのノード種別を前記ノード種別判定手段で判定することを該ノード種別がリーフノードを示すものとなるまで繰り返し、該リーフノードから前記インデックスキー読出手段によりインデックスキーを読み出し、
前記インデックスキー読出手段により読み出されたインデックスキーを、前記検索開始ノードをそのルートノードとする前記カップルドノードツリーの部分木の前記検索キーによる検索結果である検索結果キーとすることを特徴とするビット列検索装置。 - ビット列検索装置が、ビット列からなる検索キーにより検索対象であるビット列からなるインデックスキーが格納されたツリーのデータ構造に基づいて前記インデックスキーを検索するビット列検索方法において、
前記ツリーの始点であるルートノードと、隣接した記憶領域に配置される代表ノードと非代表ノードである2つのノードを有する、ツリーの構成要素としてのノード対を有し、前記ノードは該ノードがブランチノードであるかリーフノードであるかを示すノード種別を格納する領域を有し、前記ブランチノードは、前記ノード種別に加えて、前記検索キーの弁別ビット位置を格納する領域とリンク先のノード対の代表ノードの位置を示す位置情報を格納する領域を含むが、前記検索対象のビット列からなるインデックスキーを格納する領域を含まないものであり、前記リーフノードは、前記ノード種別に加えて、前記検索対象のビット列からなるインデックスキーを格納する領域を含むが、前記検索キーの弁別ビット位置を格納する領域とリンク先のノード対の代表ノードの位置を示す位置情報を格納する領域を含まないものである、カップルドノードツリーであって、
前記ノード対のどちらか一方のノードである検索開始ノードの位置を示す位置情報を取得し、該取得した検索開始ノードの位置を示す位置情報により検索開始ノードを読み出す検索開始ノード読出ステップと、
前記ノードのノード種別を格納する領域から当該ノード種別を読み出し、該ノード種別が前記リーフノードを示すものであるかブランチノードを示すものであるかを判定するノード種別判定ステップと、
前記リーフノードのインデックスキーを格納する領域から当該インデックスキーを読み出すインデックスキー読出ステップと、
前記ブランチノードの弁別ビット位置を格納する領域とリンク先のノード対の代表ノードの位置を示す位置情報を格納する領域からそれぞれ当該弁別ビット位置とリンク先のノード対の代表ノードの位置を示す位置情報を読み出し、該読み出した弁別ビット位置の前記検索キーのビット値と前記読み出したリンク先のノード対の代表ノードの位置を示す位置情報との演算によりリンク先のノード対のどちらかのノードの位置を示す位置情報を求め、該求めたノードの位置を示す位置情報により示される記憶領域から、該記憶領域に配置されたノードをリンク先ノードとして読み出すリンクステップと、
を備え、
前記検索開始ノード読出ステップで読み出した検索開始ノードのノード種別を前記ノード種別判定ステップで判定し、該ノード種別がリーフノードを示すものであれば、該リーフノードから前記インデックスキー読出ステップによりインデックスキーを読み出し、該ノード種別がブランチノードを示すものであれば、前記リンクステップにより前記リンク先ノードを読み出し、該読み出したリンク先ノードのノード種別を前記ノード種別判定ステップで判定することを該ノード種別がリーフノードを示すものとなるまで繰り返し、該リーフノードから前記インデックスキー読出ステップによりインデックスキーを読み出し、
前記インデックスキー読出ステップにより読み出されたインデックスキーを、前記検索開始ノードをそのルートノードとする前記カップルドノードツリーの部分木の前記検索キーによる検索結果である検索結果キーとすることを特徴とするビット列検索方法。 - 前記カップルドノードツリーは、配列に記憶され、前記代表ノードの位置を示す位置情報は、該代表ノードが格納された前記配列の配列要素の配列番号であり、
前記検索開始ノードの格納された配列要素の配列番号及び前記検索開始ノードから前記リーフノードに至るリンク先のノードの格納された配列要素の配列番号は、順次スタックに保持されていくことを特徴とする請求項2記載のビット列検索方法。 - ビット列検索装置が、ビット列からなる検索キーにより検索対象であるビット列からなるインデックスキーが格納されたツリーのデータ構造に基づいて前記インデックスキーを検索するビット列検索方法において、
前記ツリーの始点であるルートノードと、隣接した記憶領域に配置される代表ノードと非代表ノードである2つのノードを有する、ツリーの構成要素としてのノード対を有し、前記ノードは該ノードがブランチノードであるかリーフノードであるかを示すノード種別を格納する領域を有し、前記ブランチノードは、前記ノード種別に加えて、前記検索キーの弁別ビット位置を格納する領域とリンク先のノード対の代表ノードの位置を示す位置情報を格納する領域を含むが、前記検索対象のビット列からなるインデックスキーを格納する領域を含まないものであり、前記リーフノードは、前記ノード種別に加えて、前記検索対象のビット列からなるインデックスキーを格納する領域を含むが、前記検索キーの弁別ビット位置を格納する領域とリンク先のノード対の代表ノードの位置を示す位置情報を格納する領域を含まないものである、カップルドノードツリーであって、
前記ルートノード、あるいは、前記ノード対のどちらか一方のノード、である検索開始ノードの位置を示す位置情報を取得し、該取得した検索開始ノードの位置を示す位置情報により検索開始ノードを読み出す検索開始ノード読出ステップと、
前記ノードのノード種別を格納する領域から当該ノード種別を読み出し、該ノード種別が前記リーフノードを示すものであるかブランチノードを示すものであるかを判定するノード種別判定ステップと、
前記リーフノードのインデックスキーを格納する領域から当該インデックスキーを読み出すインデックスキー読出ステップと、
前記ブランチノードのリンク先のノード対の代表ノードの位置を示す位置情報を格納する領域からリンク先のノード対の代表ノードの位置を示す位置情報を読み出し、該読み出したリンク先のノード対の代表ノードの位置を示す位置情報により示される記憶領域に配置された代表ノードのみをリンク先ノードとして読み出す、あるいは該読み出したリンク先のノード対の代表ノードの位置を示す位置情報に基づいて演算により求める位置情報により示される記憶領域に配置された非代表ノードのみをリンク先ノードとして読み出すリンクステップと、
を備え、
前記検索開始ノード読出ステップで読み出した検索開始ノードのノード種別を前記ノード種別判定ステップで判定し、該ノード種別がリーフノードを示すものであれば、該リーフノードから前記インデックスキー読出ステップによりインデックスキーを読み出し、該ノード種別がブランチノードを示すものであれば、前記リンクステップにより前記リンク先ノードを読み出し、該読み出したリンク先ノードのノード種別を前記ノード種別判定ステップで判定することを該ノード種別がリーフノードを示すものとなるまで繰り返し、該リーフノードから前記インデックスキー読出ステップによりインデックスキーを読み出し、
前記インデックスキーステップにより読み出されたインデックスキーを、前記検索開始ノードをそのルートノードとする、前記カップルドノードツリーあるいは該カップルドノードツリーの部分木の、前記検索キーによる検索結果であるインデックスキーの最大値あるいは最小値として取得することを特徴とするビット列検索方法。 - 前記カップルドノードツリーは、配列に記憶され、前記代表ノードの位置を示す位置情報は、該代表ノードが格納された前記配列の配列要素の配列番号であり、
前記検索開始ノードの格納された配列要素の配列番号及び前記検索開始ノードから前記リーフノードに至るリンク先のノードの格納された配列要素の配列番号は、順次スタックに保持されていくことを特徴とする請求項4記載のビット列検索方法。 - ビット列検索装置が、ビット列からなる検索キーにより検索対象であるビット列からなるインデックスキーが格納されたツリーのデータ構造に基づいて前記インデックスキーを検索するビット列検索方法において、
請求項5記載のビット列検索方法により前記カップルドノードツリーのルートノードを前記検索開始ノードとして前記カップルドノードツリーのインデックスキーの最小値を取得する最小値取得ステップと、
前記スタックのポップ動作による該スタックからの配列番号の読出と該読み出した配列番号が代表ノードを格納する配列要素の配列番号であるかの判定を、 該読み出した配列番号が代表ノードを格納する配列要素の配列番号であると判定されるまで繰り返す代表ノードサーチステップと、
前記代表ノードサーチステップにおいて代表ノードを格納する配列要素の配列番号であると判定された配列番号の配列要素に格納された代表ノードと対をなす非代表ノードを検索開始ノードとして請求項5記載のビット列検索方法を行うことにより、該検索開始ノードをルートノードとする部分木のインデックスキーの最小値を取得する部分木最小値取得ステップと、を備え、
前記代表ノードサーチステップと前記部分木最小値取得ステップを繰り返すことにより、前記カップルドノードツリーに格納されたインデックスキーを昇順に取り出すことを特徴とするビット列検索方法。 - ビット列検索装置が、ビット列からなる検索キーにより検索対象であるビット列からなるインデックスキーが格納されたツリーのデータ構造に基づいて前記インデックスキーを検索するビット列検索方法において、
請求項5記載のビット列検索方法により前記カップルドノードツリーのルートノードを前記検索開始ノードとして前記カップルドノードツリーのインデックスキーの最大値を取得する最大値取得ステップと、
前記スタックのポップ動作による該スタックからの配列番号の読出と該読み出した配列番号が非代表ノードを格納する配列要素の配列番号であるかの判定を、該読み出した配列番号が非代表ノードを格納する配列要素の配列番号であると判定されるまで繰り返す非代表ノードサーチステップと、
前記非代表ノードサーチステップにおいて非代表ノードを格納する配列要素の配列番号であると判定された配列番号の配列要素に格納された非代表ノードと対をなす代表ノードを検索開始ノードとして請求項5記載のビット列検索方法を行うことにより、該検索開始ノードをルートノードとする部分木のインデックスキーの最大値を取得する部分木最大値取得ステップと、を備え、
前記非代表ノードサーチステップと前記部分木最大値取得ステップを繰り返すことにより、前記カップルドノードツリーに格納されたインデックスキーを降順に取り出すことを特徴とするビット列検索方法。 - ビット列検索装置が、ビット列からなる検索キーにより検索対象であるビット列からなるインデックスキーが格納されたツリーのデータ構造に基づいて前記インデックスキーを検索するビット列検索方法において、
検索範囲の下限を指定する下限キーを取得する下限キー取得ステップと、
請求項5記載のビット列検索方法により前記カップルドノードツリーのルートノードを前記検索開始ノードとして前記カップルドノードツリーのインデックスキーの最小値を取得する最小値取得ステップと、
前記下限キー取得ステップで取得した下限キーと前記最小値取得ステップで取得したインデックスキーの最小値を比較し、前記下限キーの方が大きければ、前記下限キーを検索キーとするとともに前記カップルドノードツリーのルートノードを前記検索開始ノードとして請求項3記載のビット列検索方法により前記検索結果キーを取り出す検索結果キー取り出しステップと、
前記検索キーと前記検索結果キー取り出しステップで取り出した検索結果キーを比較しそれらの大小関係を判定する検索結果キー比較ステップと、
前記スタックのポップ動作による該スタックからの配列番号の読出と該読み出した配列番号が代表ノードを格納する配列要素の配列番号であるかの判定を、 該読み出した配列番号が代表ノードを格納する配列要素の配列番号であると判定されるまで繰り返す代表ノードサーチステップと、
前記代表ノードサーチステップにおいて代表ノードを格納する配列要素の配列番号であると判定された配列番号の配列要素に格納された代表ノードと対をなす非代表ノードを検索開始ノードとして請求項5記載のビット列検索方法を行うことにより、該検索開始ノードをそのルートノードとする部分木のインデックスキーの最小値を取得する部分木最小値取得ステップと、を備え、
前記検索結果キーが前記検索キーより大きいと判定されるまで、前記部分木最小値取得ステップで取得した最小値を検索結果キーとして前記検索結果キー比較ステップから前記部分木最小値取得ステップまでの処理を繰り返すことにより、前記検索キーより大きい前記検索結果キーを前記指定された下限キーに対する前記カップルドノードツリーの下限値として取得することを特徴とするビット列検索方法。 - ビット列検索装置が、ビット列からなる検索キーにより検索対象であるビット列からなるインデックスキーが格納されたツリーのデータ構造に基づいて前記インデックスキーを検索するビット列検索方法において、
検索範囲の上限を指定する上限キーを取得する上限キー取得ステップと、
請求項5記載のビット列検索方法により前記カップルドノードツリーのルートノードを前記検索開始ノードとして前記カップルドノードツリーのインデックスキーの最大値を取得する最大値取得ステップと、
前記上限キー取得ステップで取得した上限キーと前記最大値取得ステップで取得したインデックスキーの最大値を比較し、前記上限キーの方が小さければ、前記上限キーを検索キーとするとともに前記カップルドノードツリーのルートノードを前記検索開始ノードとして請求項3記載のビット列検索方法により前記検索結果キーを取り出す検索結果キー取り出しステップと、
前記検索キーと前記検索結果キー取り出しステップで取り出した検索結果キーを比較しそれらの大小関係を判定する検索結果キー比較ステップと、
前記スタックのポップ動作による該スタックからの配列番号の読出と該読み出した配列番号が非代表ノードを格納する配列要素の配列番号であるかの判定を、該読み出した配列番号が非代表ノードを格納する配列要素の配列番号であると判定されるまで繰り返す非代表ノードサーチステップと、
前記非代表ノードサーチステップにおいて非代表ノードを格納する配列要素の配列番号であると判定された配列番号の配列要素に格納された非代表ノードと対をなす代表ノードを検索開始ノードとして請求項5記載のビット列検索方法を行うことにより、該検索開始ノードをそのルートノードとする部分木のインデックスキーの最大値を取得する部分木最大値取得ステップと、を備え、
前記検索結果キーが前記検索キーより小さいと判定されるまで、前記部分木最大値取得ステップで取得した最大値を検索結果キーとして前記検索結果キー比較ステップから前記部分木最大値取得ステップまでの処理を繰り返すことにより、前記検索キーより小さい前記検索結果キーを前記指定された上限キーに対する前記カップルドノードツリーの上限値として取得することを特徴とするビット列検索方法。 - ビット列検索装置が、ビット列からなる検索キーにより検索対象であるビット列からなるインデックスキーが格納されたツリーのデータ構造に基づいて前記インデックスキーを検索するビット列検索方法において、
検索範囲の上限を指定する上限キー及び検索範囲の下限を指定する下限キーを取得する第1の検索範囲取得ステップと、
前記第1の検索範囲取得ステップで取得した上限キーに基づいて請求項9記載のビット列検索方法によりカップルドノードツリーの上限値を取得するとともに、前記第1の検索範囲取得ステップで取得した下限キーに基づいて請求項8記載のビット列検索方法により前記カップルドノードツリーの下限値を取得する第2の検索範囲取得ステップと、
前記第2の検索範囲取得ステップで取得した下限値を検索キーとするとともに前記カップルドノードツリーのルートノードを検索開始ノードとして請求項3記載のビット列検索方法により前記下限値に相当するインデックスキーを検索結果キーとして取り出す検索結果キー取り出しステップと、
前記第2の検索範囲取得ステップで取得した上限値と前記検索結果キー取り出しステップで取り出した検索結果キーを比較しそれらの大小関係を判定する検索結果キー比較ステップと、
前記スタックのポップ動作による該スタックからの配列番号の読出と該読み出した配列番号が代表ノードを格納する配列要素の配列番号であるかの判定を、 該読み出した配列番号が代表ノードを格納する配列要素の配列番号であると判定されるまで繰り返す代表ノードサーチステップと、
前記代表ノードサーチステップにおいて代表ノードを格納する配列要素の配列番号であると判定された配列番号の配列要素に格納された代表ノードと対をなす非代表ノードを検索開始ノードとして請求項5記載のビット列検索方法を行うことにより、該検索開始ノードをそのルートノードとする部分木のインデックスキーの最小値を取得する部分木最小値取得ステップと、を備え、
前記検索結果キーと前記上限値が等しいと判定されるまで、前記部分木最小値取得ステップで取得した最小値を検索結果キーとして取り出すとともに前記検索結果キー比較ステップから前記部分木最小値取得ステップまでの処理を繰り返すことにより、前記カップルドノードツリーに格納されたインデックスキーを指定された下限キーと上限キーの範囲で昇順に取り出すことを特徴とするビット列検索方法。 - ビット列検索装置が、ビット列からなる検索キーにより検索対象であるビット列からなるインデックスキーが格納されたツリーのデータ構造に基づいて前記インデックスキーを検索するビット列検索方法において、
検索範囲の上限を指定する上限キー及び検索範囲の下限を指定する下限キーを取得する第1の検索範囲取得ステップと、
前記第1の検索範囲取得ステップで取得した上限キーに基づいて請求項9記載のビット列検索方法によりカップルドノードツリーの上限値を取得するとともに、前記第1の検索範囲取得ステップで取得した下限キーに基づいて請求項8記載のビット列検索方法により前記カップルドノードツリーの下限値を取得する第2の検索範囲取得ステップと、
前記第2の検索範囲取得ステップで取得した上限値を検索キーとするとともに前記カップルドノードツリーのルートノードを検索開始ノードとして請求項3記載のビット列検索方法により前記上限値に相当するインデックスキーを検索結果キーとして取り出す検索結果キー取り出しステップと、
前記第2の検索範囲取得ステップで取得した下限値と前記検索結果キー取り出しステップで取り出した検索結果キーを比較しそれらの大小関係を判定する検索結果キー比較ステップと、
前記スタックのポップ動作による該スタックからの配列番号の読出と該読み出した配列番号が非代表ノードを格納する配列要素の配列番号であるかの判定を、該読み出した配列番号が非代表ノードを格納する配列要素の配列番号であると判定されるまで繰り返す非代表ノードサーチステップと、
前記非代表ノードサーチステップにおいて非代表ノードを格納する配列要素の配列番号であると判定された配列番号の配列要素に格納された非代表ノードと対をなす代表ノードを検索開始ノードとして請求項5記載のビット列検索方法を行うことにより、該検索開始ノードをそのルートノードとする部分木のインデックスキーの最大値を取得する部分木最大値取得ステップと、を備え、
前記検索結果キーと前記下限値が等しいと判定されるまで、前記部分木最大値取得ステップで取得した最大値を検索結果キーとして取り出すとともに前記検索結果キー比較ステップから前記部分木最大値取得ステップまでの処理を繰り返すことにより、前記カップルドノードツリーに格納されたインデックスキーを指定された上限キーと下限キーの範囲で降順に取り出すことを特徴とするビット列検索方法。 - ビット列検索装置が、ビット列からなる検索キーにより検索対象であるビット列からなるインデックスキーが格納されたツリーのデータ構造に基づいて前記インデックスキーを検索するビット列検索方法において、
ビット列の前方一致検索を行うために指定された前方一致キーの無意ビットの値を0として下限キーを求めるとともに前記無意ビットの値を1として上限キーを求め、
該上限キーと下限キーに基づき、請求項10又は請求項11記載のビット列検索方法を行い、前記カップルドノードツリーに格納されたインデックスキーを取り出し、該取り出したインデックスキーを前記前方一致キーによる前方一致検索の検索結果キーとすることを特徴とするビット列検索方法。 - 請求項2〜請求項12いずれか1項記載のビット列検索方法をコンピュータに実行させるためのプログラム。
- 請求項2〜請求項12いずれか1項記載のビット列検索方法をコンピュータに実行させるためのプログラムを記憶したことを特徴とするコンピュータ読み取り可能な記憶媒体。
Priority Applications (7)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006293619A JP4271227B2 (ja) | 2006-10-30 | 2006-10-30 | ビット列検索装置、検索方法及びプログラム |
AT07827899T ATE516556T1 (de) | 2006-10-30 | 2007-10-16 | Bitsequenz-suchverfahren und programm |
CN2007800407904A CN101535993B (zh) | 2006-10-30 | 2007-10-16 | 比特序列检索装置及检索方法 |
EP07827899A EP2085897B1 (en) | 2006-10-30 | 2007-10-16 | Bit sequence searching method and program |
PCT/JP2007/001120 WO2008053583A1 (fr) | 2006-10-30 | 2007-10-16 | Procédé et programme de recherche de séquence de bits |
TW096140594A TW200821914A (en) | 2006-10-30 | 2007-10-29 | Bit sequence searching method and program |
US12/385,956 US8150856B2 (en) | 2006-07-07 | 2009-04-24 | Bit string searching apparatus, searching method, and program |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006293619A JP4271227B2 (ja) | 2006-10-30 | 2006-10-30 | ビット列検索装置、検索方法及びプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2008112240A JP2008112240A (ja) | 2008-05-15 |
JP4271227B2 true JP4271227B2 (ja) | 2009-06-03 |
Family
ID=39343937
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006293619A Expired - Fee Related JP4271227B2 (ja) | 2006-07-07 | 2006-10-30 | ビット列検索装置、検索方法及びプログラム |
Country Status (6)
Country | Link |
---|---|
EP (1) | EP2085897B1 (ja) |
JP (1) | JP4271227B2 (ja) |
CN (1) | CN101535993B (ja) |
AT (1) | ATE516556T1 (ja) |
TW (1) | TW200821914A (ja) |
WO (1) | WO2008053583A1 (ja) |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8150856B2 (en) | 2006-07-07 | 2012-04-03 | S. Grants Co., Ltd. | Bit string searching apparatus, searching method, and program |
JP4379894B2 (ja) | 2006-11-28 | 2009-12-09 | 株式会社エスグランツ | カップルドノードツリーの分割/結合方法及びプログラム |
JP4402120B2 (ja) | 2007-01-24 | 2010-01-20 | 株式会社エスグランツ | ビット列検索装置、検索方法及びプログラム |
JP4514771B2 (ja) | 2007-05-18 | 2010-07-28 | 株式会社エスグランツ | カップルドノードツリーの最長一致/最短一致検索装置、検索方法及びプログラム |
JP4514768B2 (ja) | 2007-04-19 | 2010-07-28 | 株式会社エスグランツ | カップルドノードツリーの退避/復元装置、退避/復元方法及びプログラム |
JP4439013B2 (ja) | 2007-04-25 | 2010-03-24 | 株式会社エスグランツ | ビット列検索方法及び検索プログラム |
JP4527753B2 (ja) | 2007-07-03 | 2010-08-18 | 株式会社エスグランツ | ビット列検索装置、検索方法及びプログラム |
CN101802822B (zh) | 2007-09-14 | 2012-10-24 | 新叶股份有限公司 | 比特序列检索装置、检索方法以及程序 |
JP4502223B2 (ja) * | 2007-12-05 | 2010-07-14 | 株式会社エスグランツ | ビット列のマージソート装置、方法及びプログラム |
JP4498409B2 (ja) * | 2007-12-28 | 2010-07-07 | 株式会社エスグランツ | データベースのインデックスキー更新方法及びプログラム |
JP4567754B2 (ja) | 2008-01-17 | 2010-10-20 | 株式会社エスグランツ | ビット列検索装置、検索方法及びプログラム |
JP4514810B2 (ja) * | 2008-05-18 | 2010-07-28 | 株式会社エスグランツ | ビット列検索装置、検索方法及びプログラム |
JP5220483B2 (ja) * | 2008-06-06 | 2013-06-26 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 木構造のデータに対する集約計算を行うコンピュータ・システム、並びにその方法及びコンピュータ・プログラム |
CN102741841A (zh) | 2009-11-30 | 2012-10-17 | 新叶股份有限公司 | 比特序列检索装置、检索方法以及程序 |
US9361578B2 (en) * | 2011-07-13 | 2016-06-07 | Palo Alto Research Center Incorporated | Memory efficient state-set representation for planning |
CN102819536B (zh) * | 2011-09-27 | 2015-08-19 | 金蝶软件(中国)有限公司 | 树型数据处理方法及装置 |
US9547729B2 (en) | 2014-05-30 | 2017-01-17 | International Business Machines Corporation | Adaptive query processor for query systems with limited capabilities |
CN113794558B (zh) * | 2021-09-16 | 2024-02-27 | 烽火通信科技股份有限公司 | 一种XMSS算法中的L-tree计算方法、装置及系统 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6012061A (en) * | 1997-11-25 | 2000-01-04 | International Business Machines Corp. | Method and apparatus for deleting nodes in Patricia trees |
EP1107126A2 (en) * | 1999-12-08 | 2001-06-13 | Hewlett-Packard Company, A Delaware Corporation | A fast, efficient, adaptive, hybrid tree |
US6675163B1 (en) * | 2000-04-06 | 2004-01-06 | International Business Machines Corporation | Full match (FM) search algorithm implementation for a network processor |
JP3601416B2 (ja) * | 2000-06-13 | 2004-12-15 | 日本電気株式会社 | 情報検索方法及び装置 |
JP3691018B2 (ja) * | 2002-01-31 | 2005-08-31 | 日本電信電話株式会社 | 最長一致検索回路および方法およびプログラムおよび記録媒体 |
CN1645374A (zh) * | 2005-01-17 | 2005-07-27 | 徐文新 | 位标记字符串检索技术 |
-
2006
- 2006-10-30 JP JP2006293619A patent/JP4271227B2/ja not_active Expired - Fee Related
-
2007
- 2007-10-16 EP EP07827899A patent/EP2085897B1/en not_active Not-in-force
- 2007-10-16 WO PCT/JP2007/001120 patent/WO2008053583A1/ja active Application Filing
- 2007-10-16 AT AT07827899T patent/ATE516556T1/de not_active IP Right Cessation
- 2007-10-16 CN CN2007800407904A patent/CN101535993B/zh not_active Expired - Fee Related
- 2007-10-29 TW TW096140594A patent/TW200821914A/zh unknown
Also Published As
Publication number | Publication date |
---|---|
WO2008053583A1 (fr) | 2008-05-08 |
EP2085897B1 (en) | 2011-07-13 |
EP2085897A1 (en) | 2009-08-05 |
CN101535993A (zh) | 2009-09-16 |
EP2085897A4 (en) | 2010-03-24 |
CN101535993B (zh) | 2011-11-09 |
TW200821914A (en) | 2008-05-16 |
ATE516556T1 (de) | 2011-07-15 |
JP2008112240A (ja) | 2008-05-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4271227B2 (ja) | ビット列検索装置、検索方法及びプログラム | |
JP4271214B2 (ja) | ビット列検索装置、検索方法及びプログラム | |
JP4514771B2 (ja) | カップルドノードツリーの最長一致/最短一致検索装置、検索方法及びプログラム | |
JP4498409B2 (ja) | データベースのインデックスキー更新方法及びプログラム | |
JP4527753B2 (ja) | ビット列検索装置、検索方法及びプログラム | |
JP4402120B2 (ja) | ビット列検索装置、検索方法及びプログラム | |
JP4514768B2 (ja) | カップルドノードツリーの退避/復元装置、退避/復元方法及びプログラム | |
JP4379894B2 (ja) | カップルドノードツリーの分割/結合方法及びプログラム | |
JP4502223B2 (ja) | ビット列のマージソート装置、方法及びプログラム | |
JP5473893B2 (ja) | コード列検索装置、検索方法及びプログラム | |
JP4439013B2 (ja) | ビット列検索方法及び検索プログラム | |
CN104268176A (zh) | 一种基于搜索关键词的推荐方法及系统 | |
US20100174742A1 (en) | Bit string search apparatus, search method, and program | |
US8166043B2 (en) | Bit strings search apparatus, search method, and program | |
WO2009122651A1 (ja) | ビット列検索装置、検索方法及びプログラム | |
JP4417431B2 (ja) | カップルドノードツリーの分割/結合方法及びプログラム | |
JP4567754B2 (ja) | ビット列検索装置、検索方法及びプログラム | |
EP2149845B1 (en) | Coupled node tree backup/restore apparatus, backup/restore method, and program | |
JP2011018296A (ja) | カップルドノードツリーのインデックスキー挿入/削除方法 | |
JP4813575B2 (ja) | ビット列検索装置 | |
JP2009199577A (ja) | ビット列検索装置、検索方法及びプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20080702 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20080818 |
|
A871 | Explanation of circumstances concerning accelerated examination |
Free format text: JAPANESE INTERMEDIATE CODE: A871 Effective date: 20081023 |
|
A975 | Report on accelerated examination |
Free format text: JAPANESE INTERMEDIATE CODE: A971005 Effective date: 20081117 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20081202 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20090128 |
|
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: 20090223 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20090224 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120306 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 4271227 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20150306 Year of fee payment: 6 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20150306 Year of fee payment: 6 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313111 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20150306 Year of fee payment: 6 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |