JP4271214B2 - ビット列検索装置、検索方法及びプログラム - Google Patents
ビット列検索装置、検索方法及びプログラム Download PDFInfo
- Publication number
- JP4271214B2 JP4271214B2 JP2006187827A JP2006187827A JP4271214B2 JP 4271214 B2 JP4271214 B2 JP 4271214B2 JP 2006187827 A JP2006187827 A JP 2006187827A JP 2006187827 A JP2006187827 A JP 2006187827A JP 4271214 B2 JP4271214 B2 JP 4271214B2
- Authority
- JP
- Japan
- Prior art keywords
- node
- index key
- search
- array element
- key
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims description 103
- 238000003780 insertion Methods 0.000 claims description 91
- 230000037431 insertion Effects 0.000 claims description 91
- 238000012217 deletion Methods 0.000 claims description 23
- 230000037430 deletion Effects 0.000 claims description 23
- 238000004364 calculation method Methods 0.000 claims description 6
- 238000012966 insertion method Methods 0.000 claims description 5
- 239000000470 constituent Substances 0.000 claims 3
- 239000000284 extract Substances 0.000 claims 1
- 238000012545 processing Methods 0.000 description 77
- 238000010586 diagram Methods 0.000 description 17
- 241000712062 Patricia Species 0.000 description 12
- 238000012423 maintenance Methods 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 238000013500 data storage Methods 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 238000007689 inspection Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 238000010845 search algorithm Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
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)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Description
上記ビット列の検索を高速に行うために、ビット列を記憶するデータ構造を種々に工夫することが従来から行われている。このようなものの一つとして、パトリシアツリーという木構造が知られている。
ある検索キーで検索を行うとき、ルートノードから順次各ノードに保持される検索キーの検査ビット位置を検査していき、検査ビット位置のビット値が1であるか0であるか判定を行い、1であれば右リンクをたどり、0であれば左リンクをたどる。そして、リンク先のノードの検査ビット位置がリンク元のノードの検査ビット位置より大きくなければ、すなわち、リンク先が下方でなく上方に戻れば(図17において点線で示されたこの逆戻りのリンクをバックリンクという。)、リンク先のノードのインデックスキーと検索キーの比較を行う。比較の結果、等しければ検索成功であり、等しくなければ検索失敗であることが保証されている。
本発明によれば、上述のように検索に用いるツリー構造体を格納する記憶容量を低減することができ、それによっても検索処理負担を小さくできるが、さらにブランチノードは、カップルドノードツリーに含まれるインデックスのビット列構成により規定される弁別ビット位置を保持するように配置されているから、必要なビット位置での処理のみとなり、分岐処理の負担も小さい。また、弁別ビット位置のビット値は判定処理に用いられるのではなく、演算処理に用いられるので、この点でもCPU処理負担は軽くなる。
以上のとおりであるので、本発明によれば、高速にビット列検索を実行することができ、データメンテナンスの容易なビット列検索装置が提供される。
図1を参照すると、ノード101が配列100の配列番号10の配列要素に配置されている。ノード101はノード種別102、弁別ビット位置103及び代表ノード番号104で構成されている。ノード種別102は0であり、ノード101がブランチノードであることを示している。弁別ビット位置103には1が格納されている。代表ノード番号104にはリンク先のノード対の代表ノードの配列番号20が格納されている。なお、以下では表記の簡略化のため、代表ノード番号に格納された配列番号を代表ノード番号ということもある。また、代表ノード番号に格納された配列番号をそのノードに付した符号あるいはノード対に付した符号で表すこともある。
配列番号30及び31の配列要素に格納されたノード122とノード123からなるノード対121の内容は省略されている。
図2は、カップルドノードツリーのツリー構造を概念的に示す図である。図示の6ビットのインデックスキーは、図17に例示されたパトリシアツリーのものと同じである。
ツリー構造としては、ルートノード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が格納される。
図3は、本発明を実施するためのハードウェア構成例を説明する図である。
図4は、本発明の一実施形態における検索処理を示すフローチャートである。適宜図2を参照しながら、検索処理のアルゴリズムを説明する。
以上のステップS402からS409のループ処理をステップS405での判定がリーフノードとなるまで繰り返す。
ステップS512において、配列から空きのノード対を求め、そのノード対のうち代表ノードとなるべき配列要素の配列番号を取得する。
ステップS514に進み、ステップS512で得た代表ノードの配列番号にステップS513で得たブール値を加算した配列番号を得る。
ステップS514で得た配列番号は、挿入キーをインデックスキーとして持つリーフノードが格納される配列要素の配列番号であり、ステップS515で得た配列番号は、そのリーフノードと対を成すノードが格納される配列要素のものである。
ステップS516〜ステップS523までの処理は、挿入するノード対のカップルドノードツリー上の位置を求める処理であり、ステップS524以下の処理は各ノードにデータを設定して挿入処理を完成させる処理である。
ステップS517に進み、ステップS516で得た差分ビット列から、上位0ビット目から見た最初の不一致ビットのビット位置を得る。この処理は、例えばプライオリティエンコーダを有するCPUではそこに差分ビット列を入力し、不一致のビット位置を得ることができる。また、ソフト的にプライオリティエンコーダと同等の処理を行い最初の不一致ビットのビット位置を得ることも可能である。
ステップS520に進み、ステップS519で取り出した配列番号の配列要素を配列からノードとして読み出す。
次にステップS522に進み、ステップS521で取り出した弁別ビット位置がステップS517で得たビット位置より上位の位置関係か判定する。ここで上位の位置関係とは、ビット列のより左側の位置、すなわちビット位置の値が小さい位置であることとする。
について説明する。
ステップS524では探索経路スタックからスタックポインタの指す配列番号を取り出す。
ステップS526に進み、配列からステップS524で得た配列番号の配列要素を読み出す。
最後にステップS528において、ステップS524で得た配列番号の指す配列要素のノード種別に0(ブランチノード)を、弁別ビット位置にステップS517で得たビット位置を、代表ノード番号にステップS512で得た配列番号を書き込み処理を終了する。
ステップS551において、取得することを求められたカップルドノードツリーのルートノードの配列番号が登録済みであるか判定される。登録済みであれば、図5〜図7を用いて説明した通常の挿入処理が行われる。
まず、ステップS552において、配列から空きのノード対を求め、そのノード対のうち代表ノードとなるべき配列要素の配列番号を取得する。次にステップS553において、ステップS552で得た配列番号に0を加えた配列番号を求める。(実際には、ステップS552で取得した配列番号に等しい。)さらにステップS554において、ステップS553で得た配列番号の配列要素に、挿入するルートノードのノード種別に1(リーフノード)とインデックスキーに挿入キーを書き込み、ステップS556でステップS552で取得したルートノードの配列番号を登録して処理を終了する。
まず、ステップS912で探索経路スタックに2つ以上の配列番号が格納されているか判定する。2つ以上の配列番号が格納されていないということは、言い換えれば1つだけで、その配列番号はルートノードの格納された配列要素のものである。その場合はステップS918に移行し、ステップS901で得たルートノードの配列番号に係るノード対を削除する。次にステップS919に進み、登録されていたルートノードの配列番号を削除して処理を終了する。
図11A及び図11Bは、図2に例示したカップルドノードツリーからインデックスキー"011010"を削除する処理を説明する図である。
図12Aに示すのは、ビット列"0100"、"0001"、"0000"をインデックスキーとして持つカップルドノードツリーとこれから挿入しようとする挿入キー"0011"を保持している一時記憶エリア1250である。図示のツリーはノード対1201a,1201b,1201cで構成されている。
図12Bは、挿入キー"0011"を挿入したカップルドノードツリーを示す図である。新たなノード対1201dがノード対1201bとノード対1201cの間に挿入されている。
以下、図5〜図7を適宜参照しつつ図13〜図16により図12A及び図12Bに例示した挿入処理を説明する。図13〜図16において太線で示す処理のフローは、図12A及び図12Bの例示に沿ったものである。また、S501等の符号は、その部分の処理が図5〜図7に記載されたステップS501等における処理に対応することを示している。
図13に示すように、最初の処理ブロックでルートノード設定が行われる。ルートノードの配列番号を取得することによりルートノードの位置を設定する。取得された配列番号1210aを探索経路スタックに格納する。なお、ここでは、配列番号を表す符合をノードを表す符号と兼用している。
ブランチ処理においては挿入キー"0011"の1ビット目の"0"とノード1210aの代表ノード番号に格納された配列番号1201bを加算してリンク先のノード位置を算出する。なおここでは、代表ノード番号に格納された配列番号をリンク先のノード対の符号で表している。算出されたノード位置1210bは探索経路スタックに格納される。
そこで再度ブランチ処理が行われ、挿入キー"0011"の3ビット目の"1"とノード1210bの代表ノード番号に格納された配列番号1201cを加算してリンク先のノード位置を算出する。算出されたノード位置1211cは探索経路スタックに格納される。
そこで処理はリーフ処理に分岐し、ノード1211cのインデックスキー"0001"と挿入キー"0011"のビット列比較が行われ、一致していれば挿入失敗となり、不一致であれば次の処理に進む。
空きノード対取得ブロックでは、配列から連続した領域の2つの空き配列要素の配列番号に係る代表ノード番号1201dを取得する。
差分ビット位置検出ブロックにおいて、挿入キー"0011"とステップS510で得られたインデックスキー"0001"とのビットごとの排他的論理和"0010"が演算され、差分ビット位置が2ビット目であることが求められる。
図16は、図7に示した処理のうち、後半の各ノードにデータを設定して挿入処理を完成させる処理フローを説明する図である。
以上本発明を実施するための最良の形態について詳細に説明したが、本発明の実施の形態はそれに限ることなく種々の変形が可能であることは当業者に明らかである。
100 配列
101 ノード
102 ノード種別
103 弁別ビット位置
104 代表ノード番号
111 ノード対
112 ノード[0]、代表ノード
113 ノード[1]、代表ノードと対をなすノード
118 インデックスキー
301 データ処理装置
302 中央処理装置
303 キャッシュメモリ
304 バス
305 主記憶装置
306 外部記憶装置
307 通信装置
308 データ格納装置
309 配列
310 探索経路スタック
Claims (15)
- ビット列からなる検索キーにより検索対象であるビット列からなるインデックスキーが格納されたツリーのデータ構造に基づいて前記インデックスキーを検索するビット列検索装置において、
前記ツリーの始点であるルートノードと、隣接した記憶領域に配置される2つのノードを有する、ツリーの構成要素としてのノード対を有し、前記ノードは該ノードがブランチノードであるかリーフノードであるかを示すノード種別を格納する領域を有し、前記ブランチノードは、前記ノード種別に加えて、前記検索キーの弁別ビット位置を格納する領域とリンク先のノード対の一方のノードの位置を示す情報を格納する領域を含むが、前記検索対象のビット列からなるインデックスキーを格納する領域を含まないものであり、前記リーフノードは、前記ノード種別に加えて、前記検索対象のビット列からなるインデックスキーを格納する領域を含むが、前記検索キーの弁別ビット位置を格納する領域とリンク先のノード対の一方のノードの位置を示す情報を格納する領域を含まないものである、カップルドノードツリーと、
前記ルートノードの位置を示す情報を取得し、該取得したルートノードの位置を示す情報によりルートノードを読み出すルートノード読出手段と、
前記ノードのノード種別を格納する領域から当該ノード種別を読み出し、該ノード種別が前記リーフノードを示すものであるかブランチノードを示すものであるかを判定するノード種別判定手段と、
前記リーフノードのインデックスキーを格納する領域から当該インデックスキーを読み出すインデックスキー読出手段と、
前記ブランチノードの弁別ビット位置を格納する領域とリンク先のノード対の一方のノードの位置を示す情報を格納する領域からそれぞれ当該弁別ビット位置とリンク先のノード対の一方のノードの位置を示す情報を読み出し、該読み出した弁別ビット位置の前記検索キーのビット値と前記読み出したリンク先のノード対の一方のノードの位置を示す情報との演算によりノードの位置を示す情報を求め、該求めたノードの位置を示す情報により示される記憶領域から、該記憶領域に配置されたノードをリンク先ノードとして読み出すリンク手段と、
を備え、
前記ルートノード読出手段で読み出したルートノードのノード種別を前記ノード種別判定手段で判定し、該ノード種別がリーフノードを示すものであれば、該リーフノードから前記インデックスキー読出手段によりインデックスキーを読み出し、該ノード種別がブランチノードを示すものであれば、前記リンク手段により前記リンク先ノードを読み出し、該読み出したリンク先ノードのノード種別を前記ノード種別判定手段で判定することを該ノード種別がリーフノードを示すものとなるまで繰り返し、該リーフノードから前記インデックスキー読出手段によりインデックスキーを読み出し、
前記インデックスキー読出手段により読み出されたインデックスキーと前記検索キーを比較し、一致すれば検索成功とし、一致しなければ検索失敗とすることを特徴とするビット列検索装置。 - 前記カップルドノードツリーは、配列に記憶され、前記リンク先のノード対の一方のノードの位置を示す情報は、そのノードが格納された前記配列の配列要素の配列番号であることを特徴とする請求項1記載のビット列検索装置。
- ビット列からなる検索キーにより検索対象であるビット列からなるインデックスキーが格納されたツリーのデータ構造に基づいて前記インデックスキーを検索するビット列検索装置が、前記ツリーに所望のビット列からなる挿入キーをインデックスキーとして格納するインデックスキー挿入方法において、
前記ツリーは配列に記憶されたツリーであって、該ツリーの始点であるルートノードと、前記配列の隣接した配列要素に配置される2つのノードを有する、ツリーの構成要素としてのノード対を有し、前記ノードは該ノードがブランチノードであるかリーフノードであるかを示すノード種別を格納する領域を有し、前記ブランチノードは、前記ノード種別に加えて、前記検索キーの弁別ビット位置を格納する領域とリンク先のノード対の一方のノードが格納された前記配列の配列要素の配列番号を格納する領域を含むが、前記検索対象のビット列からなるインデックスキーを格納する領域を含まないものであり、前記リーフノードは、前記ノード種別に加えて、前記検索対象のビット列からなるインデックスキーを格納する領域を含むが、前記検索キーの弁別ビット位置を格納する領域とリンク先のノード対の一方のノードが格納された前記配列の配列要素の配列番号を格納する領域を含まないものである、カップルドノードツリーであり、
前記ビット列検索装置は、
前記ルートノードが格納された前記配列の配列要素の配列番号を取得し、該取得した配列番号の配列要素からルートノードを読み出すルートノード読出手段と、
前記ノードのノード種別を読み出し、該ノード種別が前記リーフノードを示すものであるかブランチノードを示すものであるかを判定するノード種別判定手段と、
前記リーフノードのインデックスキーを格納する領域から当該インデックスキーを読み出すインデックスキー読出手段と、
前記ブランチノードの弁別ビット位置を格納する領域とリンク先のノード対の一方のノードが格納された前記配列の配列要素の配列番号を格納する領域からそれぞれ当該弁別ビット位置とリンク先のノード対の一方のノードが格納された前記配列の配列要素の配列番号を読み出し、該読み出した弁別ビット位置の前記検索キーのビット値と前記読み出したリンク先のノード対の一方のノードが格納された前記配列の配列要素の配列番号との演算によりノードが格納された前記配列の配列要素の配列番号を求め、該求めた配列番号の配列要素に配置されたノードをリンク先ノードとして読み出すリンク手段と、
を備え、
前記挿入キーを前記検索キーとして、
前記ルートノード読出手段でルートノードのノード種別を読み出し、該読みだしたノード種別を前記ノード種別判定手段で判定し、該ノード種別がリーフノードを示すものであれば、該リーフノードから前記インデックスキー読出手段によりインデックスキーを読み出し、該ノード種別がブランチノードを示すものであれば、前記リンク手段により前記リンク先ノードを読み出し、該読み出したリンク先ノードのノード種別を前記ノード種別判定手段で判定することを該ノード種別がリーフノードを示すものとなるまで繰り返し、該リーフノードから前記インデックスキー読出手段によりインデックスキーを読み出すとともに、該リーフノードに至るまでたどったリンク経路のブランチノード及び該リーフノードが格納された配列要素の配列番号をスタックに順次格納する検索ステップと、
前記検索ステップで読み出したインデックスキーと前記挿入キーの間で大小比較とビット列比較を行う比較ステップと、
前記配列からノード対を格納する空配列要素の組を取得し、その一方の配列要素の配列番号を取得する空ノード対取得ステップと、
前記比較ステップにおける前記大小比較により挿入キーを含むリーフノードを前記空ノード対取得ステップで取得した空配列要素の組のどちらの空配列要素に格納するかを決定するリーフノード格納位置決定ステップと、
前記比較ステップにおけるビット列比較で異なるビット値となる先頭のビット位置と、前記スタックに格納されている配列番号の配列要素に記憶されたブランチノードの弁別ビット位置との相対的位置関係により、該スタックに格納されている配列番号を読み出し、該配列番号の配列要素に格納されるノードを、前記空ノード対取得ステップで取得した空配列要素の組に格納されるノード対のリンク元として該ノード対の挿入位置を決定するノード対挿入位置決定ステップと、
前記リーフノード格納位置決定ステップで決定した空配列要素に配置するリーフノードの、ノード種別を格納する領域にリーフノードであることを示すノード種別を、インデックスキーを格納する領域に前記挿入キーを書き込み、もう一方の空配列要素に、前記ノード対挿入位置決定ステップで前記スタックから読み出した配列番号の配列要素に格納されるノードの内容を読み出して書き込むことで挿入ノード対を生成する挿入ノード対生成ステップと、
前記ノード対挿入位置決定ステップで前記スタックから読み出した配列番号の配列要素に格納されるノードをブランチノードとし、そのノード種別を格納する領域にブランチノードであることを示すノード種別を、弁別ビット位置を格納する領域に前記比較ステップにおけるビット列比較で異なるビット値となる先頭のビット位置を、リンク先のノード対の一方のノードが格納された前記配列の配列要素の配列番号を格納する領域に前記空ノード対取得ステップで取得した配列番号を、それぞれ書き込むブランチノード生成ステップと、
を備えたことを特徴とするインデックスキー挿入方法。 - ビット列からなる検索キーにより検索対象であるビット列からなるインデックスキーが格納されたツリーのデータ構造に基づいて前記インデックスキーを検索するビット列検索装置が、前記ツリーを生成するツリー生成方法において、
前記ツリーは請求項3に記載されたカップルドノードツリーであり、
前記ビット列検索装置は請求項3に記載されたものであって、
前記カップルドノードツリーに格納するインデックスキーの集合から1つのインデックスキーを取り出し、該インデックスキーを含むリーフノードをルートノードとするカップルドノードツリーを生成し、
前記インデックスキーの集合からさらに順次インデックスキーを取り出して該インデックスキーを、請求項3記載のインデックスキー挿入方法により前記カップルドノードツリーに挿入することによりカップルドノードツリーを生成することを特徴とするカップルドノードツリーの生成方法。 - ビット列からなる検索キーにより検索対象であるビット列からなるインデックスキーが格納されたツリーのデータ構造に基づいて前記インデックスキーを検索するビット列検索装置が、所望のビット列からなる削除キーと等しい前記ツリーに格納されたインデックスキーを削除するインデックスキー削除方法において、
前記ツリーは配列に記憶されたツリーであって、該ツリーの始点であるルートノードと、前記配列の隣接した配列要素に配置される2つのノードを有する、ツリーの構成要素としてのノード対を有し、前記ノードは該ノードがブランチノードであるかリーフノードであるかを示すノード種別を格納する領域を有し、前記ブランチノードは、前記ノード種別に加えて、前記検索キーの弁別ビット位置を格納する領域とリンク先のノード対の一方のノードが格納された前記配列の配列要素の配列番号を格納する領域を含むが、前記検索対象のビット列からなるインデックスキーを格納する領域を含まないものであり、前記リーフノードは、前記ノード種別に加えて、前記検索対象のビット列からなるインデックスキーを格納する領域を含むが、前記検索キーの弁別ビット位置を格納する領域とリンク先のノード対の一方のノードが格納された前記配列の配列要素の配列番号を格納する領域を含まないものである、カップルドノードツリーであり、
前記ビット列検索装置は、
前記ルートノードが格納された前記配列の配列要素の配列番号を取得し、該取得した配列番号の配列要素からルートノードを読み出すルートノード読出手段と、
前記ノードのノード種別を読み出し、該ノード種別が前記リーフノードを示すものであるかブランチノードを示すものであるかを判定するノード種別判定手段と、
前記リーフノードのインデックスキーを格納する領域から当該インデックスキーを読み出すインデックスキー読出手段と、
前記ブランチノードの弁別ビット位置を格納する領域とリンク先のノード対の一方のノードが格納された前記配列の配列要素の配列番号を格納する領域からそれぞれ当該弁別ビット位置とリンク先のノード対の一方のノードが格納された前記配列の配列要素の配列番号を読み出し、該読み出した弁別ビット位置の前記検索キーのビット値と前記読み出したリンク先のノード対の一方のノードが格納された前記配列の配列要素の配列番号との演算によりノードが格納された前記配列の配列要素の配列番号を求め、該求めた配列番号の配列要素に配置されたノードをリンク先ノードとして読み出すリンク手段と、
を備え、
前記削除キーを前記検索キーとして、
前記ルートノード読出手段でルートノードのノード種別を読み出し、該読みだしたノード種別を前記ノード種別判定手段で判定し、該ノード種別がリーフノードを示すものであれば、該リーフノードから前記インデックスキー読出手段によりインデックスキーを読み出し、該ノード種別がブランチノードを示すものであれば、前記リンク手段により前記リンク先ノードを読み出し、該読み出したリンク先ノードのノード種別を前記ノード種別判定手段で判定することを該ノード種別がリーフノードを示すものとなるまで繰り返し、該リーフノードから前記インデックスキー読出手段によりインデックスキーを読み出すとともに、該リーフノードに至るまでたどったリンク経路のブランチノード及び該リーフノードが格納された配列要素の配列番号をスタックに順次格納する検索ステップと、
前記検索ステップで読み出したインデックスキーと前記削除キーが等しいとき、
該インデックスキーを保持する前記リーフノードと同一ノード対を構成するノードが格納された配列要素の内容を読み出すノード読出ステップと、
前記リーフノードが格納された配列要素の配列番号の1つ前に前記スタックに格納された配列番号を該スタックから読み出し、該配列番号の配列要素に前記ノード読出ステップで読み出した配列要素の内容を書き込む書込みステップと、
前記ノード対の記憶されていた配列要素の組を解放するノード対削除ステップと、
を実行することを特徴とするインデックスキー削除方法。 - ビット列検索装置が、ビット列からなる検索キーにより検索対象であるビット列からなるインデックスキーが格納されたツリーのデータ構造に基づいて前記インデックスキーを検索するビット列検索方法において、
前記ツリーは、該ツリーの始点であるルートノードと、隣接した記憶領域に配置される2つのノードを有する、ツリーの構成要素としてのノード対を有し、前記ノードは該ノードがブランチノードであるかリーフノードであるかを示すノード種別を格納する領域を有し、前記ブランチノードは、前記ノード種別に加えて、前記検索キーの弁別ビット位置を格納する領域とリンク先のノード対の一方のノードの位置を示す情報を格納する領域を含むが、前記検索対象のビット列からなるインデックスキーを格納する領域を含まないものであり、前記リーフノードは、前記ノード種別に加えて、前記検索対象のビット列からなるインデックスキーを格納する領域を含むが、前記検索キーの弁別ビット位置を格納する領域とリンク先のノード対の一方のノードの位置を示す情報を格納する領域を含まないものである、カップルドノードツリーであって、
前記ルートノードの位置を示す情報を取得し、該取得したルートノードの位置を示す情報によりルートノードを読み出すルートノード読出ステップと、
前記ノードのノード種別を格納する領域から当該ノード種別を読み出し、該ノード種別が前記リーフノードを示すものであるかブランチノードを示すものであるかを判定するノード種別判定ステップと、
前記リーフノードのインデックスキーを格納する領域から当該インデックスキーを読み出すインデックスキー読出ステップと、
前記ブランチノードの弁別ビット位置を格納する領域とリンク先のノード対の一方のノードの位置を示す情報を格納する領域からそれぞれ当該弁別ビット位置とリンク先のノード対の一方のノードの位置を示す情報を読み出し、該読み出した弁別ビット位置の前記検索キーのビット値と前記読み出したリンク先のノード対の一方のノードの位置を示す情報との演算によりノードの位置を示す情報を求め、該求めたノードの位置を示す情報により示される記憶領域から、該記憶領域に配置されたノードをリンク先ノードとして読み出すリンクステップと、
を備え、
前記ルートノード読出ステップで読み出したルートノードのノード種別を前記ノード種別判定ステップで判定し、該ノード種別がリーフノードを示すものであれば、該リーフノードから前記インデックスキー読出ステップによりインデックスキーを読み出し、該ノード種別がブランチノードを示すものであれば、前記リンクステップにより前記リンク先ノードを読み出し、該読み出したリンク先ノードのノード種別を前記ノード種別判定ステップで判定することを該ノード種別がリーフノードを示すものとなるまで繰り返し、該リーフノードから前記インデックスキー読出ステップによりインデックスキーを読み出し、
前記インデックスキー読出ステップにより読み出されたインデックスキーと前記検索キーを比較し、一致すれば検索成功とし、一致しなければ検索失敗とすることを特徴とするビット列検索方法。 - 前記カップルドノードツリーは、配列に記憶され、前記リンク先のノード対の一方のノードの位置を示す情報は、そのノードが格納された前記配列の配列要素の配列番号であることを特徴とする請求項6記載のビット列検索方法。
- 請求項6又は請求項7記載のビット列検索方法をコンピュータに実行させるためのプログラム。
- 請求項3記載のインデックスキー挿入方法をコンピュータに実行させるためのプログラム。
- 請求項4記載のカップルドノードツリー生成方法をコンピュータに実行させるためのプログラム。
- 請求項5記載のインデックスキー削除方法をコンピュータに実行させるためのプログラム。
- 請求項8〜請求項11いずれか1項に記載のプログラムを記憶したコンピュータ読み取り可能な記憶媒体。
- ビット列からなる検索キーによるビット列検索に用いる、検索対象であるビット列からなるインデックスキーが格納されたツリーのデータ構造において、
前記ツリーの始点であるルートノードと、隣接した記憶領域に配置される2つのノードを有する、ツリーの構成要素としてのノード対を有し、
前記ノードは該ノードがブランチノードであるかリーフノードであるかを示すノード種別を格納する領域を有し、
前記ブランチノードは、前記ノード種別に加えて、前記検索キーの弁別ビット位置を格納する領域とリンク先のノード対の一方のノードの位置を示す情報を格納する領域を含むが、前記検索対象のビット列からなるインデックスキーを格納する領域を含まないものであり、
前記リーフノードは、前記ノード種別に加えて、前記検索対象のビット列からなるインデックスキーを格納する領域を含むが、前記検索キーの弁別ビット位置を格納する領域とリンク先のノード対の一方のノードの位置を示す情報を格納する領域を含まないものであり、
ビット列検索装置であって、
前記ルートノードの位置を示す情報を取得し、該取得したルートノードの位置を示す情報によりルートノードを読み出すルートノード読出手段と、前記ノードのノード種別を格納する領域から当該ノード種別を読み出し、該ノード種別が前記リーフノードを示すものであるかブランチノードを示すものであるかを判定するノード種別判定手段と、前記リーフノードのインデックスキーを格納する領域から当該インデックスキーを読み出すインデックスキー読出手段と、前記ブランチノードの弁別ビット位置を格納する領域とリンク先のノード対の一方のノードの位置を示す情報を格納する領域からそれぞれ当該弁別ビット位置とリンク先のノード対の一方のノードの位置を示す情報を読み出し、該読み出した弁別ビット位置の前記検索キーのビット値と前記読み出したリンク先のノード対の一方のノードの位置を示す情報との演算によりノードの位置を示す情報を求め、該求めたノードの位置を示す情報により示される記憶領域から、該記憶領域に配置されたノードをリンク先ノードとして読み出すリンク手段と、を備えたビット列検索装置により、
前記ルートノード読出手段で読み出したルートノードのノード種別を前記ノード種別判定手段で判定し、該ノード種別がリーフノードを示すものであれば、該リーフノードから前記インデックスキー読出手段によりインデックスキーを読み出し、該ノード種別がブランチノードを示すものであれば、前記リンク手段により前記リンク先ノードを読み出し、該読み出したリンク先ノードのノード種別を前記ノード種別判定手段で判定することを該ノード種別がリーフノードを示すものとなるまで繰り返し、該リーフノードから前記インデックスキー読出手段によりインデックスキーを読み出し、
前記インデックスキー読出手段により読み出されたインデックスキーと前記検索キーを比較し、一致すれば検索成功とし、一致しなければ検索失敗とする前記検索キーによる検索の実行を可能とすることを特徴とするデータ構造。 - 前記データ構造は、配列に記憶され、前記リンク先のノード対の一方のノードの位置を示す情報は、そのノードが格納された前記配列の配列要素の配列番号であることを特徴とする請求項13記載のデータ構造。
- 請求項13又は請求項14記載のデータ構造を記憶したことを特徴とするコンピュータ読み取り可能な記憶媒体。
Priority Applications (8)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006187827A JP4271214B2 (ja) | 2006-07-07 | 2006-07-07 | ビット列検索装置、検索方法及びプログラム |
EP07766946A EP2048584B1 (en) | 2006-07-07 | 2007-06-15 | Bit sequence search device, search method, and program |
PCT/JP2007/000639 WO2008004335A1 (fr) | 2006-07-07 | 2007-06-15 | dispositif de recherche de séquence de bits, procédé de recherche et programme |
US12/308,560 US8073874B2 (en) | 2006-07-07 | 2007-06-15 | Bit string searching apparatus, searching method, and program |
CN2007800255634A CN101484895B (zh) | 2006-07-07 | 2007-06-15 | 比特序列检索装置以及检索方法 |
DE602007013905T DE602007013905D1 (de) | 2006-07-07 | 2007-06-15 | Bitsequenz-sucheinrichtung, suchverfahren und programm |
TW096124374A TW200817945A (en) | 2006-07-07 | 2007-07-04 | Bit sequence search device, search 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 |
---|---|---|---|
JP2006187827A JP4271214B2 (ja) | 2006-07-07 | 2006-07-07 | ビット列検索装置、検索方法及びプログラム |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2009018907A Division JP4813575B2 (ja) | 2009-01-30 | 2009-01-30 | ビット列検索装置 |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2008015872A JP2008015872A (ja) | 2008-01-24 |
JP2008015872A5 JP2008015872A5 (ja) | 2008-12-25 |
JP4271214B2 true JP4271214B2 (ja) | 2009-06-03 |
Family
ID=38894310
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006187827A Active JP4271214B2 (ja) | 2006-07-07 | 2006-07-07 | ビット列検索装置、検索方法及びプログラム |
Country Status (7)
Country | Link |
---|---|
US (1) | US8073874B2 (ja) |
EP (1) | EP2048584B1 (ja) |
JP (1) | JP4271214B2 (ja) |
CN (1) | CN101484895B (ja) |
DE (1) | DE602007013905D1 (ja) |
TW (1) | TW200817945A (ja) |
WO (1) | WO2008004335A1 (ja) |
Families Citing this family (26)
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 | 株式会社エスグランツ | ビット列検索装置、検索方法及びプログラム |
JP4439013B2 (ja) | 2007-04-25 | 2010-03-24 | 株式会社エスグランツ | ビット列検索方法及び検索プログラム |
JP4514771B2 (ja) | 2007-05-18 | 2010-07-28 | 株式会社エスグランツ | カップルドノードツリーの最長一致/最短一致検索装置、検索方法及びプログラム |
WO2008132806A1 (ja) | 2007-04-19 | 2008-11-06 | S.Grants Co., Ltd. | カップルドノードツリーの退避/復元方法、最長一致/最短一致検索方法、ビット列検索方法及び記憶媒体 |
JP4514768B2 (ja) | 2007-04-19 | 2010-07-28 | 株式会社エスグランツ | カップルドノードツリーの退避/復元装置、退避/復元方法及びプログラム |
JP4527753B2 (ja) | 2007-07-03 | 2010-08-18 | 株式会社エスグランツ | ビット列検索装置、検索方法及びプログラム |
EP2204744B1 (en) | 2007-09-14 | 2013-04-24 | Kousokuya, Inc. | Bit string search device, search method, and program |
JP4502223B2 (ja) | 2007-12-05 | 2010-07-14 | 株式会社エスグランツ | ビット列のマージソート装置、方法及びプログラム |
JP4498409B2 (ja) * | 2007-12-28 | 2010-07-07 | 株式会社エスグランツ | データベースのインデックスキー更新方法及びプログラム |
JP4567754B2 (ja) | 2008-01-17 | 2010-10-20 | 株式会社エスグランツ | ビット列検索装置、検索方法及びプログラム |
JP2009199577A (ja) * | 2008-01-22 | 2009-09-03 | S Grants Co Ltd | ビット列検索装置、検索方法及びプログラム |
JP2009251840A (ja) * | 2008-04-04 | 2009-10-29 | S Grants Co Ltd | ビット列検索装置、検索方法及びプログラム |
JP4514810B2 (ja) | 2008-05-18 | 2010-07-28 | 株式会社エスグランツ | ビット列検索装置、検索方法及びプログラム |
JP4464459B1 (ja) * | 2009-03-29 | 2010-05-19 | 株式会社エスグランツ | コード列検索装置、検索方法及びプログラム |
JP2010257427A (ja) * | 2009-04-28 | 2010-11-11 | S Grants Co Ltd | インデックス更新データ作成装置、作成方法及びプログラム |
JP5165662B2 (ja) * | 2009-10-27 | 2013-03-21 | 株式会社高速屋 | ビット列キー分類・分配装置、分類・分配方法及びプログラム |
JP5220057B2 (ja) * | 2010-05-27 | 2013-06-26 | 株式会社高速屋 | ビット列検索装置、検索方法及びプログラム |
JP5220047B2 (ja) * | 2009-11-30 | 2013-06-26 | 株式会社高速屋 | ビット列検索装置、検索方法及びプログラム |
WO2011064984A1 (ja) | 2009-11-30 | 2011-06-03 | 株式会社エスグランツ | ビット列検索装置、検索方法及びプログラム |
CN102184165B (zh) * | 2011-04-22 | 2013-01-02 | 烽火通信科技股份有限公司 | 一种节省内存的lcs算法 |
JP5912714B2 (ja) * | 2012-03-21 | 2016-04-27 | 任天堂株式会社 | データ構造、データ構造生成方法、情報処理装置、情報処理システム、及び情報処理プログラム |
CN103902699B (zh) * | 2014-03-31 | 2017-04-12 | 哈尔滨工程大学 | 一种用于大数据环境下可支持多格式特性的数据空间检索方法 |
JP5960863B1 (ja) * | 2015-03-11 | 2016-08-02 | エヌ・ティ・ティ・コミュニケーションズ株式会社 | 検索装置、検索方法、プログラム、及び記録媒体 |
JP6911877B2 (ja) * | 2018-02-19 | 2021-07-28 | 日本電信電話株式会社 | 情報管理装置、情報管理方法及び情報管理プログラム |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5202986A (en) * | 1989-09-28 | 1993-04-13 | Bull Hn Information Systems Inc. | Prefix search tree partial key branching |
JPH07210569A (ja) | 1994-01-19 | 1995-08-11 | Oki Electric Ind Co Ltd | 情報検索方法および情報検索装置 |
US6029170A (en) * | 1997-11-25 | 2000-02-22 | International Business Machines Corporation | Hybrid tree array data structure and method |
US6012061A (en) * | 1997-11-25 | 2000-01-04 | International Business Machines Corp. | Method and apparatus for deleting nodes in Patricia trees |
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 | 日本電気株式会社 | 情報検索方法及び装置 |
JP3569233B2 (ja) * | 2001-01-31 | 2004-09-22 | 川本工業株式会社 | 竪型ミルのシール構造 |
CN1432943A (zh) * | 2002-01-17 | 2003-07-30 | 北京标杆网络技术有限公司 | 标杆智能搜索引擎*** |
JP3691018B2 (ja) | 2002-01-31 | 2005-08-31 | 日本電信電話株式会社 | 最長一致検索回路および方法およびプログラムおよび記録媒体 |
-
2006
- 2006-07-07 JP JP2006187827A patent/JP4271214B2/ja active Active
-
2007
- 2007-06-15 US US12/308,560 patent/US8073874B2/en active Active
- 2007-06-15 WO PCT/JP2007/000639 patent/WO2008004335A1/ja active Application Filing
- 2007-06-15 DE DE602007013905T patent/DE602007013905D1/de active Active
- 2007-06-15 CN CN2007800255634A patent/CN101484895B/zh not_active Expired - Fee Related
- 2007-06-15 EP EP07766946A patent/EP2048584B1/en not_active Expired - Fee Related
- 2007-07-04 TW TW096124374A patent/TW200817945A/zh unknown
Also Published As
Publication number | Publication date |
---|---|
EP2048584A4 (en) | 2010-03-24 |
EP2048584A1 (en) | 2009-04-15 |
TW200817945A (en) | 2008-04-16 |
JP2008015872A (ja) | 2008-01-24 |
EP2048584B1 (en) | 2011-04-13 |
CN101484895A (zh) | 2009-07-15 |
DE602007013905D1 (de) | 2011-05-26 |
US20090240655A1 (en) | 2009-09-24 |
WO2008004335A1 (fr) | 2008-01-10 |
CN101484895B (zh) | 2011-12-28 |
US8073874B2 (en) | 2011-12-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4271214B2 (ja) | ビット列検索装置、検索方法及びプログラム | |
JP4271227B2 (ja) | ビット列検索装置、検索方法及びプログラム | |
JP4514771B2 (ja) | カップルドノードツリーの最長一致/最短一致検索装置、検索方法及びプログラム | |
JP4527753B2 (ja) | ビット列検索装置、検索方法及びプログラム | |
JP4439013B2 (ja) | ビット列検索方法及び検索プログラム | |
JP4402120B2 (ja) | ビット列検索装置、検索方法及びプログラム | |
JP5473893B2 (ja) | コード列検索装置、検索方法及びプログラム | |
CN101657818B (zh) | 配对节点树保存/复原方法、最长一致/最短一致检索方法、比特序列检索方法以及存储介质 | |
US8166043B2 (en) | Bit strings search apparatus, search method, and program | |
WO2009122651A1 (ja) | ビット列検索装置、検索方法及びプログラム | |
JP4567754B2 (ja) | ビット列検索装置、検索方法及びプログラム | |
JP2011018296A (ja) | カップルドノードツリーのインデックスキー挿入/削除方法 | |
JP4813575B2 (ja) | ビット列検索装置 | |
JP4417431B2 (ja) | カップルドノードツリーの分割/結合方法及びプログラム | |
JP5220057B2 (ja) | ビット列検索装置、検索方法及びプログラム | |
WO2009093290A1 (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 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20081111 |
|
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: 4271214 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 |
|
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 |