JP5220057B2 - ビット列検索装置、検索方法及びプログラム - Google Patents
ビット列検索装置、検索方法及びプログラム Download PDFInfo
- Publication number
- JP5220057B2 JP5220057B2 JP2010121153A JP2010121153A JP5220057B2 JP 5220057 B2 JP5220057 B2 JP 5220057B2 JP 2010121153 A JP2010121153 A JP 2010121153A JP 2010121153 A JP2010121153 A JP 2010121153A JP 5220057 B2 JP5220057 B2 JP 5220057B2
- Authority
- JP
- Japan
- Prior art keywords
- node
- array
- branch destination
- branch
- tree
- 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
- 238000000034 method Methods 0.000 title claims description 105
- 238000004364 calculation method Methods 0.000 claims description 22
- 238000010586 diagram Methods 0.000 description 24
- 238000006243 chemical reaction Methods 0.000 description 10
- 238000013500 data storage Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 6
- 239000000284 extract Substances 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Description
ビット列データを検索するビット列検索に関するものとして、下記特許文献1、特許文献2及び特許文献3等に開示されたカップルドノードツリーを用いた検索技術がある。
図1Aを参照すると、ノード101が配列100の配列番号10の配列要素に配置されている。ノード101はノード種別102、弁別ビット位置103及び代表ノード番号104で構成されている。ノード種別102は0であり、ノード101がブランチノードであることを示している。弁別ビット位置103には1が格納されている。代表ノード番号104にはリンク先のノード対の代表ノードの配列番号20が格納されている。なお、以下では表記の簡略化のため、代表ノード番号に格納された配列番号を代表ノード番号ということもある。また、代表ノード番号に格納された配列番号をそのノードに付した符号あるいはノード対に付した符号で表すこともある。
配列番号30及び31の配列要素に格納されたノード122とノード123からなるノード対121の内容は省略されている。
したがって、前段のブランチノードの代表ノード番号に、検索キーの弁別ビット位置のビット値を加えることにより、リンク先のノードが格納された配列要素の配列番号を求めることができる。
なお、上記の例では代表ノード番号をノード対の配置された配列番号のうち小さい方を採用しているが、大きいほうを採用することも可能であることは明らかである。
符号210aで示すのが図1Bに例示するカップルドノードツリー200のルートノードである。図示の例では、ルートノード210aは配列番号220に配置されたノード対201aの代表ノードとしている。
ノード対201bはノード210bと211bで構成され、それらのノード種別260b、261bはともに0であり、ブランチノードであることを示している。ノード210bの弁別ビット位置230bには1が格納され、リンク先の代表ノード番号にはノード対201cの代表ノード210cの格納された配列要素の配列番号220bが格納されている。
ノード210dのノード種別260dは0、弁別ビット位置230dは5であり、代表ノード番号にはノード対201eの代表ノード210eの格納された配列要素の配列番号220dが格納されている。ノード210dと対になるノード211dのノード種別261dは1であり、インデックスキー251dには“011010”が格納されている。
ノード対201eのノード210e、211eのノード種別260e、261eはともに1であり双方ともリーフノードであることを示し、それぞれのインデックスキー250e、251eにはインデックスキーとして“010010”と“010011”が格納されている。
ノード対201fのノード210f、211fのノード種別260f、261fはともに0であり双方ともブランチノードである。それぞれの弁別ビット位置230f、231fには5、3が格納されている。ノード210fの代表ノード番号にはノード対201gの代表ノード210gの格納された配列要素の配列番号220fが格納され、ノード211fの代表ノード番号にはノード対201hの代表ノードであるノード[0]210hの格納された配列要素の配列番号221fが格納されている。
ノード対201gのノード210g、211gのノード種別260g、261gはともに1であり双方ともリーフノードであることを示し、それぞれのインデックスキー250g、251gには“100010”と“100011”が格納されている。
また同じくノード対201hの代表ノードであるノード[0]210hとそれと対をなすノード[1]211hのノード種別260h、261hはともに1であり双方ともリーフノードであることを示し、それぞれのインデックスキー250h、251hには“101011”と“101100“が格納されている。
取得された検索開始ノードの配列番号は、図示しない検索開始ノード設定エリアに設定されるが、この検索開始ノード設定エリアは、先に述べた「処理の途中で得られた各種の値を後の処理で用いるためにそれぞれの処理に応じた一時記憶領域」の一つである。以下の説明では、「図示しない検索開始ノード設定エリアに設定する」のような表現に変えて、「検索開始ノードの配列番号を得る。」、「検索開始ノードとして設定する」あるいは単に「検索開始ノードに設定する」のように記述することもある。
この判定において、読み出したノードがブランチノードである場合は、ノードから弁別ビット位置についての情報を取り出し、更に、取り出した弁別ビット位置に対応するビット値を検索キーから取り出す。そして、ノードから代表ノード番号を取り出して、検索キーから取り出したビット値と代表ノード番号とを加算し、新たな配列番号として、上述の探索経路スタックに取得された配列番号を格納する処理に戻るループ処理を実行する。
ノード210fの弁別ビット位置230fには5が格納されているので、検索キー“100010”の弁別ビット位置が5のビット値をみると0であるから、代表ノード番号の格納された配列番号220fの配列要素に格納されたノード210gにリンクする。
ノード210gのノード種別260gは1でありリーフノードであることを示しているので、インデックスキー250gを検索結果キーとして読み出す。このようにしてカップルドノードツリーを用いた検索が行われる。なお、検索結果キーを検索キーと比較すると両方とも“100010”であって一致している。
そこで、本発明が解決しようとする課題は、より小さい容量の記憶手段に配置可能なカップルドノードツリーのツリー構造を提供することである。
図2Aは、本発明の一実施形態における配列に配置されたカップルドノードツリーの構成例を説明する図である。図1Aに示す構成例と比べると、リーフノード、ブランチノードからノード種別を格納する領域を削除し、またブランチノードから代表ノード番号を格納する領域がなくなっている。また、図2Aに示す構成例では、後に説明する仮想的な配列番号は、配列番号と一致するものとしているので、表示されていない。
図2Aに示す例では、インデックスキー“00001”は、ルートノード401の弁別ビット位置403のビット位置2におけるビット値0によりすでに他の配列要素に格納されたインデックスキーとは弁別されている。したがって、ルートノードの直近下位の配列番号2の配列要素に格納されたノードが本来のリーフノードの位置であるが、本実施形態においてはリーフノードであることを識別するノード種別を用いないので、弁別ビット位置が最上位ビット位置の0であるダミーのブランチノード412、442を挿入して最下段に位置するようにしている。なお、図2Aに示す配列番号5の配列要素が空きとなっているように、2段目のダミーのブランチノード442と対をなすノードは実質的に存在しない空きノードとなる。
なお、リーフノードにインデックスキーではなくインデックスキーにアクセスするための情報を格納する場合には、データ格納装置には、インデックスキーを記憶する記憶領域が設けられる。
また、特に図示されてはいないが、処理の途中で得られた各種の値を後の処理で用いるためにそれぞれの処理に応じた一時記憶装置が用いられることは当然である。
図3に示すカップルドノードツリーを格納する配列309は、ブランチノードを格納するブランチノード配列309aとリーフノードを格納するリーフノード配列309bに分離されている。それぞれの配列には、図2Bに示すカップルドノードツリー200bのブランチノードとリーフノードが格納されている。
ベース番号とノード参照番号を導入することにより、ブランチノード配列309aとリーフノード配列309bの配列内での配置の自由度を高めることができる。また、ブランチノード配列309aとリーフノード配列309bを格納する記憶手段の選択度も高めることができる。
なお、ベース番号を0とするとノード参照番号と配列番号は等しくなる。ブランチノード配列とリーフノード配列を分離せず、ベース番号を0とした配列に格納されたカップルドノードツリーの構成例が、図2Aに例示するものである。また、ブランチノード配列とリーフノード配列を分離せず、ベース番号を0とした配列に格納されたカップルドノードツリーのツリー構造を概念的に示す図が、図2Bである。
ブランチノード配列309aのノード参照番号720aの値1の配列要素(以下、ノード参照番号1の配列要素のようにいう。)には、ルートノード220aの弁別ビット位置の値1(以下、弁別ビット位置1のようにいう。)が格納され、検索キー280に格納されたビット列のビット位置1のビット値が0であるので、分岐先配列の配列番号1の配列要素には0が格納される。
この分岐先配列の配列番号1の配列要素に格納された分岐先情報0は、検索キー280で図2Bに示すカップルドノードツリーを検索すると、ルートノード210aの直近下位のノード対210bにおいて、ノード位置が0であるノード210bにサーチパスが分岐することを示している。
以下同様に、ブランチノード配列309aのノード参照番号3の配列要素には、ノード211bの弁別ビット位置3が格納され、検索キー280に格納されたビット列のビット位置3のビット値が1であるので、分岐先配列の配列番号3の配列要素には1が格納される。
ブランチノード配列309aのノード参照番号6の配列要素には、弁別ビット位置6が格納され、検索キー280に格納されたビット列のビット位置6のビット値が0であるので、分岐先配列の配列番号6の配列要素には0が格納される。
ブランチノード配列309aのノード参照番号10の配列要素には、弁別ビット位置6が格納され、検索キー280に格納されたビット列のビット位置6のビット値が0であるので、分岐先配列の配列番号10の配列要素には0が格納される。
そして、分岐先配列により、検索結果であるインデックスキーが格納されたリーフノード配列の配列番号を求める。
さらに、点線の矢印221cで示すように、配列番号5の太枠で示した配列要素に格納された分岐先情報の値1を読み出し、配列番号5を2倍した値に加えて配列番号11を求める。
図5は、本発明の一実施形態における検索処理の処理フロー例を示す図である。
次にステップS502において、検索キーをもとに、ブランチノード配列から分岐先配列を求める。この処理は、図4に示す例では、先に説明した検索キー280とブランチノード配列309aから分岐先配列311を生成する処理に相当する。ステップS502の詳細な処理フローは、後に図6A及び図6Bを参照して説明する。
次にステップS601において、ノード参照番号1の指すブランチノード配列の配列要素に格納された弁別ビット位置と検索キーにより、配列番号1の指す分岐先配列の配列要素に分岐先情報を示すビット値を設定する。
以下同様に、ステップS703〜ステップS70n−2において、3段目〜n−2段目のノードの配列番号の指す分岐先配列に格納された分岐先情報により、それぞれ4段目〜n−1段目のノードの配列番号を求める。ステップS701〜ステップS70n−2の処理の詳細は、後に図7Bを参照して説明する。
なお、図7Aに例示する処理フロー例は、特定の段数nを有する本実施形態のカップルドノードツリーを用いたものであるが、段数nをパラメータとしたアセンブラマクロにより、本実施形態の任意の段数のカップルドノードツリーを用いた検索処理を実現するための処理フローを生成することが可能である。
上述の図7Bの処理は、図4に示す例示では、点線の矢印220a、220b、221cで示す処理である。例えば点線の矢印220bで示すように、配列番号2の太枠で示した配列要素に格納された分岐先情報の値1を読み出し、配列番号2を2倍した値に加えて配列番号5を求める処理である。
先に述べたように、ブランチノードとリーフノードを1つの配列に格納する場合は、ノード参照番号は一連の番号となるので、リーフノードの格納された配列要素のノード参照番号を求めるときに、ブランチノードを格納する最後の配列要素のノード参照番号を減じる必要はない。したがって、その場合には、図7Cに示すステップS724の処理は処理フローから削除される。
図8に例示する本実施態様に係るビット列検索装置800は、検索ツリー記憶手段810、検索開始位置設定手段820、検索キー設定手段850、分岐先情報設定実行部802、分岐先情報記憶手段812、初段ノード分岐先情報格納位置設定手段880、次段ノード分岐先情報格納位置計算実行部804、及びリーフノード出力実行部806を備えている。
検索開始位置設定手段820は、検索開始ノードのノード参照番号に、ルートノードのノード参照番号である1を設定するとともに、分岐先情報を格納する分岐先配列の配列番号に1を設定する。検索開始位置設定手段820の機能は、図6Aに示すステップS600の処理に対応する。また、検索キー設定手段850には、検索キーが設定される。
ブランチノード読出手段8301〜830mは、検索ツリー記憶手段810に配置されたブランチノード配列から、ノード参照番号の指す配列要素の内容を弁別ビット位置として読み出し、分岐先配列の配列番号とともに分岐先情報抽出手段に出力する。そして、分岐先配列の配列番号とブランチノード配列のノード参照番号にそれぞれ1を加えて次のブランチノード読出手段に出力する。
分岐先配列は、分岐先情報記憶手段812の記憶領域に確保される。
次段ノード分岐先情報格納位置計算手段840n−2が求めた配列番号は、次に説明するリーフノード出力実行部806に入力され、リーフノードの読み出しに用いられる。
リーフノード格納位置計算手段8061は、次段ノード分岐先情報格納位置計算手段840n−2が求めた配列番号の指す分岐先情報を読み出し、配列番号を2倍し、2倍した配列番号に分岐先情報を加えた値をリーフノード配列の配列要素の仮のノード参照番号として求める。そして、仮のノード参照番号からブランチノード配列のノード参照番号の最大値、すなわち検索ツリー記憶手段810に格納されたブランチノードの数mを減じた値をリーフノード配列の配列要素のノード参照番号として求める。リーフノード格納位置計算手段8061の機能は、図7AのステップS70n−1、すなわち図7Cに示す処理に対応する。
また、検索結果キーと検索キーを比較し、一致すれば検索成功とし、一致しなければ検索失敗とする検索結果を出力することも可能である。
本発明のポインタレスツリーの生成は、例えば次のようにして実現することができる。すなわち、ポインタレスツリーを生成する際には、ポインタレスツリーに格納されるインデックスキーにより、図1A及び図1Bに例示する形態のツリーが生成されているものとする。そして、ポインタレスツリーの生成は、ツリーのノードをルートノードから順次巡回し、本発明の一実施形態のノードに変換することにより、実現される。
ツリーの生成は、前記特許文献1として引用した特開2008−15872号公報の図5〜図8及びそれに関連した明細書の記載に開示され、詳細に説明されているので、ここでの説明は省略する。
ステップS902aの処理の詳細については、後に図12A及び図12Bを参照して説明する。
そして、ステップS921において、探索経路スタックに、配列番号と段数カウンタのカウント値を格納してステップS913に戻る。ここで探索経路スタックに格納される配列番号は、ステップS920で代表ノード番号に値0を加えた値のものであるから、ノード[0]の配列番号である。
探索経路スタックのスタックポインタはツリーのルートノードの配列番号を指していれば、ツリーの全てのノードの処理は完了しているので処理を終了する。そうでなければ、ステップS924に進む。
ステップS1130では、段数カウンタは上限値か判定し、上限値でなければ、ステップS1131でノード参照番号を2倍し、ステップS1132で段数カウンタに値1を加えてステップS1130に戻る。
ステップS1138では、ノード参照番号と段数カウンタに、ステップS1129で退避したノード参照番号と段数カウンタをそれぞれ設定して処理を終了する。
図12Aは、変換前のツリーの最大段数を求める処理の前段の処理フロー例を説明する図である。
次にステップS1207において、配列番号に、ツリーのルートノードの配列番号を設定して図12Bに示すステップS1213に進む。
そして、ステップS1220aにおいて、探索経路スタックに、配列番号と段数カウンタのカウント値を格納してステップS1213に戻る。ここで探索経路スタックに格納される配列番号は、ステップS1220で代表ノード番号に値0を加えた値のものであるから、ノード[0]の配列番号である。
探索経路スタックのスタックポインタはツリーのルートノードの配列番号を指していれば、ツリーの全てのリーフノードについての段数の処理は完了しているので処理を終了する。そうでなければ、ステップS1224に進む。
また、本発明の一実施形態に係るビット列検索装置が、図5〜図7Cに例示した処理をコンピュータに実行させるプログラムによりコンピュータ上に構築可能なことは明らかである。
したがって、上記プログラム、及びプログラムを記憶したコンピュータ読み取り可能な記憶媒体は、本発明の実施の形態に含まれる。さらに、本発明のカップルドノードツリーのデータ構造も、本発明の実施の形態に含まれる。
101 ノード
102 ノード種別
103、403 弁別ビット位置
104 代表ノード番号
118、418 インデックスキー
200、200b カップルドノードツリー
210a、401 ルートノード
280 検索キー
301 データ処理装置
302 中央処理装置
303 キャッシュメモリ
304 バス
305 主記憶装置
306 外部記憶装置
307 通信装置
308 データ格納装置
309 配列
309a ブランチノード配列
309b リーフノード配列
310 探索経路スタック
311 分岐先配列
700a、700b ベース番号
720a、720b ノード参照番号
730a、730b 配列番号
800 ビット列検索装置
802 分岐先情報設定実行部
804 次段ノード分岐先情報格納位置計算実行部
806 リーフノード出力実行部
810 検索ツリー記憶手段
812 分岐先情報記憶手段
820 検索開始位置設定手段
Claims (6)
- ビット列からなる検索キーにより、検索対象であるビット列からなるインデックスキーあるいは該インデックスキーにアクセスするための情報が格納されたツリーのデータ構造に基づいて、前記インデックスキーを検索するビット列検索装置において、
前記インデックスキーは、本来のインデックスキーのある特定のビット位置に特定のビット値を挿入したものであり、
前記検索キーは、本来の検索キーの、前記本来のインデックスキーと同一の特定のビット位置に前記特定のビット値を挿入したものであり、
前記ツリーは配列に記憶され、n段目(nは正整数)までのツリーの構成要素を有するものであり、
該ツリーの始点であるルートノードであって、ノード参照番号1に、前記配列の先頭の配列要素の位置を定める番号であるベース番号を加えた値の配列番号の配列要素に配置されるルートノードと、前記配列の隣接した配列要素に配置される代表ノードと非代表ノードである2つのノードを有する、ツリーの構成要素としてのノード対を有し、前記ノードはブランチノードかリーフノードであって、前記ブランチノードは、前記検索キーの弁別ビット位置を格納する領域を含むが、ブランチノードとリーフノードを識別するノード種別を格納する領域、リンク先である直近下位のノード対の代表ノードの配置された配列要素の配列番号を格納する領域、及び前記インデックスキーあるいは該インデックスキーにアクセスするための情報を格納する領域を含まないものであり、前記リーフノードは、前記インデックスキーあるいは該インデックスキーにアクセスするための情報を格納する領域を含むが、前記ノード種別を格納する領域、及び前記検索キーの弁別ビット位置を格納する領域を含まないものであって、前記代表ノードは該代表ノードの直近上位のブランチノードのノード参照番号の2倍の値のノード参照番号に、前記ベース番号を加えた値の配列番号の配列要素に配置され、前記リーフノードはn段目にのみ位置する、カップルドノードツリーを記憶する検索ツリー記憶手段と、
前記検索キーの、各ブランチノードの前記弁別ビット位置と一致するビット位置のビット値を分岐先情報として前記ブランチノードに対応して格納する分岐先配列を記憶する分岐先情報記憶手段と、
前記検索ツリー記憶手段に記憶されたカップルドノードツリーからブランチノードをノード参照番号順に読み出し、該ブランチノードの弁別ビット位置と前記検索キーにより前記分岐先情報を抽出して前記分岐先配列の配列番号1の配列要素から順次各配列要素に設定する分岐先情報設定実行部と、
前記分岐先配列に設定された配列番号1の配列要素に格納された分岐先情報を前記カップルドノードツリーの第1段のノードの分岐先情報として読み出し、該読み出した分岐先情報に前記配列番号1を2倍した値を加えて得られる値を、前記カップルドノードツリーの第2段のノードの分岐先情報が格納された前記分岐先配列の配列要素の配列番号とし、以下、第2段のノードの分岐先情報に該第2段のノードの分岐先情報が格納された前記配列要素の配列番号を2倍した値を加えて得られる値を、前記カップルドノードツリーの第3段のノードの分岐先情報が格納された前記分岐先配列の配列要素の配列番号とするように、自段のノードの分岐先情報に該自段のノードの分岐先情報が格納された前記配列要素の配列番号を2倍した値を加えて得られる値を、前記カップルドノードツリーの次段のノードの分岐先情報が格納された前記分岐先配列の配列要素の配列番号とすることを前記カップルドノードツリーの第n−2段のノードまで繰り返して前記カップルドノードツリーの第n−1段のノードの分岐先情報の格納された前記分岐先配列の配列要素の配列番号を求める次段ノード分岐先情報格納位置計算実行部と、
前記次段ノード分岐先情報格納位置計算実行部が求めた配列番号により、前記分岐先配列から前記カップルドノードツリーの第n−1段のノードの分岐先情報を読み出し、該読み出した分岐先情報と該配列番号に基づいてリーフノードの格納位置を求め、前記検索ツリー記憶手段に記憶されたカップルドノードツリーから該格納位置に格納されたリーフノードを読み出すリーフノード出力実行部と、
を備えることを特徴とするビット列検索装置
- 請求項1記載のビット列検索装置において、
前記カップルドノードツリーを記憶する配列は、ブランチノードを記憶するブランチノード配列とリーフノードを記憶するリーフノード配列から構成され、該ブランチノード配列は、前記カップルドノードツリーを記憶する配列のうち、前記カップルドノードツリーのn−1段目までのツリーの構成要素を記憶する部分と一致するものであり、
前記リーフノード出力実行部は、前記次段ノード分岐先情報格納位置計算実行部が求めた配列番号により、前記分岐先配列から前記カップルドノードツリーの第n−1段のノードの分岐先情報を読み出し、該読み出した分岐先情報と該配列番号を2倍した値の和から前記ブランチノード配列のノード参照番号の最大値を減じたリーフノード配列のノード参照番号を求め、該リーフノード配列のノード参照番号に該リーフノード配列の先頭の配列要素の位置を定める番号であるベース番号を加えた値の配列番号を前記リーフノードの格納位置として求め、前記検索ツリー記憶手段に記憶されたカップルドノードツリーから該格納位置に格納されたリーフノードを読み出し、該リーフノードからインデックスキーを読み出す、あるいはインデックスキーにアクセスするための情報に基づき当該インデックスキーを読み出すことを特徴とするビット列検索装置。 - 請求項1記載のビット列検索装置が実行するビット列検索方法において、
前記検索ツリー記憶手段に記憶されたカップルドノードツリーからブランチノードをノード参照番号順に読み出し、該ブランチノードの弁別ビット位置と前記検索キーにより前記分岐先情報を抽出して前記分岐先配列の配列番号1の配列要素から順次各配列要素に設定する分岐先情報設定ステップと、
前記分岐先配列に設定された配列番号1の配列要素に格納された分岐先情報を前記カップルドノードツリーの第1段のノードの分岐先情報として読み出し、該読み出した分岐先情報に前記配列番号1を2倍した値を加えて得られる値を、前記カップルドノードツリーの第2段のノードの分岐先情報が格納された前記分岐先配列の配列要素の配列番号とし、以下、第2段のノードの分岐先情報に該第2段のノードの分岐先情報が格納された前記配列要素の配列番号を2倍した値を加えて得られる値を、前記カップルドノードツリーの第3段のノードの分岐先情報が格納された前記分岐先配列の配列要素の配列番号とするように、自段のノードの分岐先情報に該自段のノードの分岐先情報が格納された前記配列要素の配列番号を2倍した値を加えて得られる値を、前記カップルドノードツリーの次段のノードの分岐先情報が格納された前記分岐先配列の配列要素の配列番号とすることを前記カップルドノードツリーの第n−2段のノードまで繰り返して前記カップルドノードツリーの第n−1段のノードの分岐先情報の格納された前記分岐先配列の配列要素の配列番号を求める次段ノード分岐先情報格納位置計算ステップと、
前記次段ノード分岐先情報格納位置計算ステップで求めた配列番号により、前記分岐先配列から前記カップルドノードツリーの第n−1段のノードの分岐先情報を読み出し、該読み出した分岐先情報と該配列番号に基づいてリーフノードの格納位置を求め、前記検索ツリー記憶手段に記憶されたカップルドノードツリーから該格納位置に格納されたリーフノードを読み出すリーフノード出力ステップと、
を備えることを特徴とするビット列検索方法。 - 請求項3記載のビット列検索方法において、
前記カップルドノードツリーを記憶する配列は、ブランチノードを記憶するブランチノード配列とリーフノードを記憶するリーフノード配列から構成され、該ブランチノード配列は、前記カップルドノードツリーを記憶する配列のうち、前記カップルドノードツリーのn−1段目までのツリーの構成要素を記憶する部分と一致するものであり、
前記リーフノード出力ステップは、前記次段ノード分岐先情報格納位置計算ステップで求めた配列番号により、前記分岐先配列から前記カップルドノードツリーの第n−1段のノードの分岐先情報を読み出し、該読み出した分岐先情報と該配列番号を2倍した値の和から前記ブランチノード配列のノード参照番号の最大値を減じたリーフノード配列のノード参照番号を求め、該リーフノード配列のノード参照番号に該リーフノード配列の先頭の配列要素の位置を定める番号であるベース番号を加えた値の配列番号を前記リーフノードの格納位置として求め、前記検索ツリー記憶手段に記憶されたカップルドノードツリーから該格納位置に格納されたリーフノードを読み出し、該リーフノードからインデックスキーを読み出す、あるいはインデックスキーにアクセスするための情報に基づき当該インデックスキーを読み出すことを特徴とするビット列検索方法。
- 請求項3又は請求項4記載のビット列検索方法をコンピュータに実行させることを特徴とするプログラム。
- 請求項3又は請求項4記載のビット列検索方法をコンピュータに実行させるプログラムを記憶したことを特徴とするコンピュータ読み取り可能な記憶媒体。
Priority Applications (5)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2010121153A JP5220057B2 (ja) | 2010-05-27 | 2010-05-27 | ビット列検索装置、検索方法及びプログラム |
| PCT/JP2010/006834 WO2011064984A1 (ja) | 2009-11-30 | 2010-11-23 | ビット列検索装置、検索方法及びプログラム |
| EP10832837A EP2515245A1 (en) | 2009-11-30 | 2010-11-23 | Bit stream retrieval device, retrieval method, and program |
| CN2010800626871A CN102741841A (zh) | 2009-11-30 | 2010-11-23 | 比特序列检索装置、检索方法以及程序 |
| US13/483,940 US20120239664A1 (en) | 2009-11-30 | 2012-05-30 | Bit string search apparatus, search method, and program |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2010121153A JP5220057B2 (ja) | 2010-05-27 | 2010-05-27 | ビット列検索装置、検索方法及びプログラム |
Publications (3)
| Publication Number | Publication Date |
|---|---|
| JP2011248626A JP2011248626A (ja) | 2011-12-08 |
| JP2011248626A5 JP2011248626A5 (ja) | 2013-01-31 |
| JP5220057B2 true JP5220057B2 (ja) | 2013-06-26 |
Family
ID=45413809
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2010121153A Expired - Fee Related JP5220057B2 (ja) | 2009-11-30 | 2010-05-27 | ビット列検索装置、検索方法及びプログラム |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JP5220057B2 (ja) |
Family Cites Families (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| DE19810843B4 (de) * | 1998-03-12 | 2004-11-25 | Telefonaktiebolaget Lm Ericsson (Publ) | Verfahren und Zugriffseinrichtung zum Bestimmen der Speicheradresse eines Datenwerts in einer Speichereinrichtung |
| JP4271214B2 (ja) * | 2006-07-07 | 2009-06-03 | 株式会社エスグランツ | ビット列検索装置、検索方法及びプログラム |
| JP4439013B2 (ja) * | 2007-04-25 | 2010-03-24 | 株式会社エスグランツ | ビット列検索方法及び検索プログラム |
| JP2009251840A (ja) * | 2008-04-04 | 2009-10-29 | S Grants Co Ltd | ビット列検索装置、検索方法及びプログラム |
-
2010
- 2010-05-27 JP JP2010121153A patent/JP5220057B2/ja not_active Expired - Fee Related
Also Published As
| Publication number | Publication date |
|---|---|
| JP2011248626A (ja) | 2011-12-08 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| CN101911060B (zh) | 数据库的索引关键字更新方法 | |
| CN101535993B (zh) | 比特序列检索装置及检索方法 | |
| JP4502223B2 (ja) | ビット列のマージソート装置、方法及びプログラム | |
| JP4271214B2 (ja) | ビット列検索装置、検索方法及びプログラム | |
| JP4514771B2 (ja) | カップルドノードツリーの最長一致/最短一致検索装置、検索方法及びプログラム | |
| JP4848317B2 (ja) | データベースのインデックス作成システム、方法及びプログラム | |
| JP4527753B2 (ja) | ビット列検索装置、検索方法及びプログラム | |
| JP5165662B2 (ja) | ビット列キー分類・分配装置、分類・分配方法及びプログラム | |
| WO2012090763A1 (ja) | コード列検索装置、検索方法及びプログラム | |
| WO2008065735A1 (fr) | Procédé de division/connexion pour un arbre de nœuds couplé et programme | |
| CN101589390A (zh) | 比特序列检索装置、检索方法以及程序 | |
| JP2008269197A (ja) | カップルドノードツリーの退避/復元方法及びプログラム | |
| JP3630057B2 (ja) | 検索用データ構造構築方法、その装置、及び機械可読プログラム記録媒体 | |
| JP5220057B2 (ja) | ビット列検索装置、検索方法及びプログラム | |
| JP4514810B2 (ja) | ビット列検索装置、検索方法及びプログラム | |
| CN101911068B (zh) | 比特序列检索装置、检索方法 | |
| JP5912714B2 (ja) | データ構造、データ構造生成方法、情報処理装置、情報処理システム、及び情報処理プログラム | |
| JP2009251840A (ja) | ビット列検索装置、検索方法及びプログラム | |
| JPWO2018012413A1 (ja) | 類似データ検索装置、類似データ検索方法および記録媒体 | |
| JP4813575B2 (ja) | ビット列検索装置 | |
| Golovach et al. | Enumeration and maximum number of minimal connected vertex covers in graphs | |
| JP2010257427A (ja) | インデックス更新データ作成装置、作成方法及びプログラム | |
| JP5165654B2 (ja) | ビット列データソート装置、方法及びプログラム | |
| JP2009199577A (ja) | ビット列検索装置、検索方法及びプログラム |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A712 Effective date: 20121010 |
|
| A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20121211 |
|
| A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20121211 |
|
| A871 | Explanation of circumstances concerning accelerated examination |
Free format text: JAPANESE INTERMEDIATE CODE: A871 Effective date: 20121211 |
|
| A975 | Report on accelerated examination |
Free format text: JAPANESE INTERMEDIATE CODE: A971005 Effective date: 20130116 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20130122 |
|
| A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20130123 |
|
| 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: 20130305 |
|
| A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20130305 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20160315 Year of fee payment: 3 |
|
| R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
| LAPS | Cancellation because of no payment of annual fees |