JP2009251840A - Bit sequence search device, search method, and program - Google Patents
Bit sequence search device, search method, and program Download PDFInfo
- Publication number
- JP2009251840A JP2009251840A JP2008097722A JP2008097722A JP2009251840A JP 2009251840 A JP2009251840 A JP 2009251840A JP 2008097722 A JP2008097722 A JP 2008097722A JP 2008097722 A JP2008097722 A JP 2008097722A JP 2009251840 A JP2009251840 A JP 2009251840A
- Authority
- JP
- Japan
- Prior art keywords
- node
- search
- tree
- leaf
- 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.)
- Pending
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/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
Abstract
Description
本発明は、ビット列を記憶するツリー状のデータ構造を用いてビット列の集合から所望のビット列を検索する検索処理に関するものであり、特に本出願人が特開2008−015872号公報及び特願2006−293619において提案したカップルドノードツリーを用いた検索装置、検索方法及びそのプログラムに関するものである。 The present invention relates to a search process for searching for a desired bit string from a set of bit strings using a tree-like data structure for storing the bit strings. In particular, the present applicant has disclosed Japanese Patent Application Laid-Open No. 2008-015862 and Japanese Patent Application No. 2006. The present invention relates to a search device, a search method, and a program using a coupled node tree proposed in 293619.
近年、社会の情報化が進展し、大規模なデータベースが各所で利用されるようになってきている。このような大規模なデータベースからレコードを検索するには、各レコードの記憶されたアドレスと対応づけられたレコード内の項目をインデックスキーとして検索をし、所望のレコードを探し出すことが通例である。また、全文検索における文字列も、文書のインデックスキーと見なすことができる。 In recent years, with the progress of informatization of society, large-scale databases are being used in various places. In order to search for a record from such a large database, it is usual to search for an item in the record associated with the stored address of each record using an index key to find a desired record. A character string in full-text search can also be regarded as a document index key.
そして、それらのインデックスキーはビット列で表現されることから、データベースの検索はビット列の検索に帰着されるということができる。上記ビット列の検索を高速に行うために、ビット列を記憶するデータ構造を種々に工夫することが従来から行われている。このようなものの一つとして、パトリシアツリーという木構造が知られている。 Since these index keys are expressed by bit strings, it can be said that a database search is reduced to a bit string search. In order to search the bit string at high speed, various data structures for storing the bit string have been conventionally devised. As one of such things, a tree structure called a Patricia tree is known.
図1は、上述の従来の検索処理に用いられているパトリシアツリーの一例を示すものである。パトリシアツリーのノードは、インデックスキー、検索キーの検査ビット位置、左右のリンクポインタを含んで構成される。明示はされていないが、ノードにはインデックスキーに対応するレコードにアクセスするための情報が含まれていることは勿論である。 FIG. 1 shows an example of a Patricia tree used in the above-described conventional search process. The Patricia tree node includes an index key, a check bit position of the search key, and left and right link pointers. Although not explicitly shown, it goes without saying that the node includes information for accessing the record corresponding to the index key.
図1の例では、インデックスキー“100010”を保持するノード1750aがルートノードとなっており、その検査ビット位置1730aは0である。ノード1750aの左リンク1740aにはノード1750bが接続され、右リンク1741aにはノード1750fが接続されている。ノード1750bの保持するインデックスキーは“010011”であり、検査ビット位置1730bは1である。ノード1750bの左リンク1740bにはノード1750cが、右リンク1741bにはノード1750dが接続されている。ノード1750cが保持するインデックスキーは“000111”、検査ビット位置1730cは3である。ノード1750dが保持するインデックスキーは“011010”、検査ビット位置1730dは2である。
In the example of FIG. 1, the node 1750a holding the index key “100010” is the root node, and the check bit position 1730a is 0. A
ノード1750cから実線で接続された部分はノード1750cの左右のリンクポインタを示すものであり、点線の接続されていない左ポインタ1740cは、その欄が空欄であることを示している。点線の接続された右ポインタ1741cの点線の接続先は、ポインタの示すアドレスを表しており、今の場合ノード1750cを右ポインタ1741cが指定していることを表している。ノード1750dの右ポインタ1741dはノード1750d自身を指しており、左リンク1740dにはノード1750eが接続されている。ノード1750eの保持するインデックスキーは“010010”、検査ビット位置1730eは5である。ノード1750eの左ポインタ1740eはノード1750bを、右ポインタ1741eはノード1750eを指している。
The portion connected by a solid line from the
また、ノード1750fの保持するインデックスキーは“101011”であり、検査ビット位置1730fは2である。ノード1750fの左リンク1740fにはノード1750gが、右リンク1741fにはノード1750hが接続されている。ノード1750gの保持するインデックスキーは“100011”であり、検査ビット位置1730gは5である。ノード1750gの左ポインタ1740gはノード1750aを、右ポインタ1741gはノード1750gを指している。ノード1750hの保持するインデックスキーは“101100”であり、検査ビット位置1730hは3である。ノード1750hの左ポインタ1740hはノード1750fを、右ポインタ1741hはノード1750hを指している。
Further, the index key held by the
図1の例では、ルートノード1750aからツリーを降りるにしたがって、各ノードの検査ビット位置が大きくなるように構成されている。ある検索キーで検索を行うとき、ルートノードから順次各ノードに保持される検索キーの検査ビット位置を検査していき、検査ビット位置のビット値が1であるか0であるか判定を行い、1であれば右リンクをたどり、0であれば左リンクをたどる。そして、リンク先のノードの検査ビット位置がリンク元のノードの検査ビット位置より大きくなければ、すなわち、リンク先が下方でなく上方に戻れば(図1において点線で示されたこの逆戻りのリンクをバックリンクという)、リンク先のノードのインデックスキーと検索キーの比較を行う。比較の結果、等しければ検索成功であり、等しくなければ検索失敗であることが保証されている。 In the example of FIG. 1, the check bit position of each node is configured to increase as the tree descends from the root node 1750a. When performing a search with a certain search key, the check bit position of the search key held in each node is sequentially checked from the root node, and it is determined whether the bit value of the check bit position is 1 or 0, If it is 1, follow the right link, if it is 0, follow the left link. If the check bit position of the link destination node is not larger than the check bit position of the link source node, that is, if the link destination returns upward rather than downward (the reverse link indicated by the dotted line in FIG. The index key of the link destination node and the search key are compared. As a result of the comparison, it is guaranteed that the search is successful if they are equal, and the search is unsuccessful if they are not equal.
上記のように、パトリシアツリーを用いた検索処理では、必要なビットの検査だけで検索できること、キー全体の比較は1回ですむことなどのメリットがあるが、各ノードからの2つのリンクが必ずあることにより記憶容量が増大することや、バックリンクの存在による判定処理の複雑化、バックリンクにより戻ることで初めてインデックスキーと比較することによる検索処理の遅延及び追加削除等データメンテナンスの困難性などの欠点がある。 As described above, search processing using the Patricia tree has advantages such as being able to search only by checking the necessary bits and comparing the entire key only once, but there are always two links from each node. Increase in storage capacity due to the presence of the data, complicating judgment processing due to the presence of a back link, difficulty in data maintenance such as search processing delay and addition / deletion by comparing with an index key for the first time by returning by a back link, etc. There are disadvantages.
これらのパトリシアツリーの欠点を解消しようとするものとして、例えば下記特許文献1に開示された技術がある。下記特許文献1に記載されたパトリシアツリーにおいては、下位の左右のノードは連続した領域に記憶することによりポインタの記憶容量を削減するとともに、次のリンクがバックリンクであるか否かを示すビットを各ノードに設けることにより、バックリンクの判定処理を軽減している。しかしながら、下記特許文献1に開示されたものにおいても、1つのノードは必ずインデックスキーの領域とポインタの領域を占めること、下位の左右のノードを連続した領域に記憶するようにしてポインタを1つとしたため、例えば図1に示したパトリシアツリーの最下段の部分である左ポインタ1740c、右ポインタ1741h等の部分にもノードと同じ容量の記憶領域を割り当てる必要があるなど、記憶容量の削減効果はあまり大きいものではない。また、バックリンクによる検索処理の遅延の問題や追加削除等の処理が困難であることも改善されていない。
As a technique for overcoming the disadvantages of these Patricia trees, for example, there is a technique disclosed in
上述の従来の検索手法における問題点を解決するものとして、本出願人は、特願2006−187827に係る下記特許文献2において、ルートノードと、隣接した記憶領域に配置されるブランチノードとリーフノードまたはブランチノード同士またはリーフノード同士のノード対からなるビット列検索に用いるツリーであって、ルートノードはツリーの始点を表すノードであって、該ツリーのノードが1つのときはリーフノード、ツリーのノードが2つ以上のときは前記ブランチノードであり、前記ブランチノードは、ビット列検索を行う検索キーの弁別ビット位置とリンク先のノード対の一方のノードである代表ノードの位置を示す位置情報を含み、前記リーフノードは検索対象のビット列からなるインデックスキーを含むカップルドノードツリーを用いたビット列検索を開示した。特許文献2においては、与えられたインデックスキーの集合からカップルドノードツリーを生成する方法と、カップルドノードツリーから単一のインデックスキーを検索する手法等の、カップルドノードツリーを用いた基本的な検索手法が示されている。また、カップルドノードツリーの構成が、インデックスキーの集合により一意に規定されることも説明されている。 In order to solve the problems in the above-described conventional search method, the present applicant has disclosed a root node, a branch node and a leaf node arranged in adjacent storage areas in Japanese Patent Application No. 2006-187827 below. Or a tree used for bit string search consisting of a pair of nodes between branch nodes or leaf nodes, and the root node is a node representing the starting point of the tree, and when there is only one node in the tree, the node of the leaf node or tree Is a branch node, and the branch node includes position information indicating a discrimination bit position of a search key for performing a bit string search and a position of a representative node that is one node of a link destination node pair. The leaf node includes a coupled node including an index key composed of a bit string to be searched. A bit string search using Dotsuri disclosed. In Patent Document 2, a basic method using a coupled node tree, such as a method of generating a coupled node tree from a given set of index keys and a method of retrieving a single index key from the coupled node tree. Search techniques are shown. It is also explained that the configuration of a coupled node tree is uniquely defined by a set of index keys.
また、ビット列の検索には、最小値、最大値を求める、ある範囲の値のものを求める等の各種の検索要求が存在する。そこで、本出願人は、特願2006−293619において、カップルドノードツリーの任意の部分木に含まれるインデックスキーの一般化された検索あるいはインデックスキーの最大値/最小値を求める手法及びカップルドノードツリーに格納されたインデックスキーを昇順または降順に取り出す手法等を提案した。一般化された検索手法であるカップルドノードツリーの任意のノードを検索開始ノードとする検索は、前記検索開始ノードをルートノードとするカップルドノードツリーの任意の部分木を検索対象として、検索キーによる検索を実行するものである。その検索は、前記ブランチノードにおいて該ブランチノードに含まれる弁別ビット位置の検索キーのビット値に応じてリンク先のノード対の代表ノードかあるいはそれと隣接した記憶領域に配置されたノードにリンクすることを順次前記リーフノードに至るまで繰り返すことにより行われ、前記リーフノードに含まれるインデックスキーが、検索結果キーとして得られる。 In the search for bit strings, there are various search requests such as obtaining a minimum value and a maximum value, and obtaining a value within a certain range. In view of this, the applicant of the present application disclosed in Japanese Patent Application No. 2006-293619 a generalized search for an index key included in an arbitrary subtree of a coupled node tree or a method for obtaining a maximum value / minimum value of an index key and a coupled node. We proposed a method to extract index keys stored in the tree in ascending or descending order. A search using an arbitrary node of a coupled node tree, which is a generalized search technique, as a search start node is performed by using an arbitrary subtree of the coupled node tree having the search start node as a root node as a search target. The search is executed by The search is performed by linking to the representative node of the link destination node pair or a node arranged in a storage area adjacent thereto according to the bit value of the search key of the discrimination bit position included in the branch node in the branch node. Are sequentially repeated until the leaf node is reached, and an index key included in the leaf node is obtained as a search result key.
インデックスキーの最大値/最小値を求める手法は、代表ノードあるいは代表ノードと対を成すノード(以下、非代表ノードということがある。)のみをリーフノードに至るまでリンクするものであり、カップルドノードツリーに格納されたインデックスキーを昇順または降順に取り出す手法は、後に説明するように、インデックスキーはカップルドノードツリーにおいて、順序性をもって配置されていることを利用したものであり、検索開始ノードを前記順序性に基づいて変更しながら最小値検索または最大値検索を繰り返すものである。また、上記各出願において、カップルドノードツリーを配列に配置すること、上記提案した各検索処理における検索開始ノードからのツリー上の探索経路のノードの配列番号を探索経路スタックに順次スタックし、探索経路スタックにスタックされた配列番号を用いた処理も開示した。
上記各出願で提案されたカップルドノードツリーの記憶領域上の配置については、先に述べたように、対をなすノード同士は隣接した記憶領域に配置されることが規定されている。そして検索は、リンク先のノード対の一方のノードである代表ノードの位置を示す位置情報を含んだブランチノードにおいて、該ブランチノードに含まれる弁別ビット位置の検索キーのビット値に応じて、前記位置情報によりリンク先のノード対の代表ノードかあるいはそれと隣接した記憶領域に配置されたノードにリンクすることを順次前記リーフノードに至るまで繰り返すことにより実現される。 Regarding the arrangement of the coupled node tree in the storage area proposed in each of the above-mentioned applications, as described above, it is specified that the nodes forming a pair are arranged in adjacent storage areas. Then, in the branch node including the position information indicating the position of the representative node that is one node of the link destination node pair, the search is performed according to the bit value of the search key of the discrimination bit position included in the branch node. This is realized by sequentially linking to a representative node of a link destination node pair or a node arranged in a storage area adjacent to the link destination node by position information until the leaf node is reached.
そのため、上記各出願で提案されたカップルドノードツリーにおいては、対をなすノード同士は隣接した記憶領域に配置されることが必須であるが、この条件はノードを配置する記憶領域の使い方に一種の制限を加えるものであり、この制限が好ましくない場合もありえる。 Therefore, in the coupled node tree proposed in each of the above applications, it is essential that the paired nodes are arranged in adjacent storage areas. This condition is a kind of usage of the storage area in which the nodes are arranged. In some cases, this limitation is not preferable.
したがって、本発明の解決しようとする課題は、「対をなすノード同士は隣接した記憶領域に配置される」という制限を解除したカップルドノードツリーのデータ構造とそれを用いた各種検索手法を提供することである。 Therefore, the problem to be solved by the present invention is to provide a data structure of a coupled node tree that removes the restriction that “paired nodes are arranged in adjacent storage areas” and various search methods using the data structure. It is to be.
本発明によるカップルドノードツリーのブランチノードは、リンク先のノード対の一方のノードである代表ノードの位置を示す位置情報に替えて、ノード対の一方のノードの位置情報と他方のノードの位置情報を含む。インデックスキーの検索においては、ブランチノードに含まれる弁別ビット位置の検索キーのビット値に応じて、一方のノードあるいは他方のノードの位置情報を選択し、選択した位置情報によりノード対のどちらかのノードにリンクすることを順次前記リーフノードに至るまで繰り返すことにより実現する。 The branch node of the coupled node tree according to the present invention replaces the position information indicating the position of the representative node that is one node of the linked node pair with the position information of one node and the position of the other node of the node pair. Contains information. In the search of the index key, the position information of one node or the other node is selected according to the bit value of the search key of the discrimination bit position included in the branch node, and either of the node pair is selected according to the selected position information. Linking to the node is realized by sequentially repeating the process until reaching the leaf node.
本発明によれば、ブランチノードはリンク先となるノード対の一方のノードの位置情報と他方のノードの位置情報を含むので、「対をなすノード同士は隣接した記憶領域に配置される」という制限を解除することができ、対をなすノードを配置するアドレスを分離することができる。 According to the present invention, since the branch node includes the position information of one node of the node pair as the link destination and the position information of the other node, “the paired nodes are arranged in adjacent storage areas”. The restriction can be removed, and the addresses where the paired nodes are arranged can be separated.
上述のとおりであるので、以下の説明において、本発明によるカップルドノードツリーをアドレス分離型カップルドノードツリーということがある。また、単にツリーということもある。
最初に、本発明によるカップルドノードツリーについて、カップルドノードツリーを配列に格納する例を説明する。ブランチノードが保持するリンク先の位置を示すデータとして、記憶装置のアドレス情報とすることもできるが、ブランチノードあるいはリーフノードのうち占有する領域の記憶容量の大きい方を格納可能な配列要素からなる配列を用いることにより、ノードの位置を配列番号で表すことができ、位置情報の情報量を削減することができる。
As described above, in the following description, the coupled node tree according to the present invention may be referred to as an address separation type coupled node tree. It may also be simply a tree.
First, an example in which a coupled node tree according to the present invention is stored in an array will be described. The address information of the storage device can be used as the data indicating the link destination position held by the branch node, but it consists of an array element that can store the larger storage capacity of the area occupied by the branch node or leaf node. By using the array, the position of the node can be represented by an array number, and the amount of information on the position information can be reduced.
図2Aは、本発明の一実施形態による配列に格納されたアドレス分離型カップルドノードツリーの構成例を説明する図である。
図2Aを参照すると、ノード101が配列100の配列番号10の配列要素に配置されている。ノード101はノード種別102、弁別ビット位置103、ノード番号[0]104a及びノード番号[1]104bで構成されている。ノード種別102は0であり、ノード101がブランチノードであることを示している。弁別ビット位置103には1が格納されている。ノード番号[0]104a及びノード番号[1]104bにはそれぞれリンク先のノードの配列番号12及び13が格納されている。なお、以下では表記の簡略化のため、ノード番号[0]あるいはノード番号[1]に格納された配列番号をそれぞれノード番号[0]あるいはノード番号[1]ということもある。また、ノード番号[0]あるいはノード番号[1]に格納された配列番号をそのノードに付した符号で表すこともある。
FIG. 2A is a diagram illustrating a configuration example of an address separation type coupled node tree stored in an array according to an embodiment of the present invention.
Referring to FIG. 2A, the node 101 is arranged in the array element of
図に示すように、ノード101の下位の対をなすノードであるノード112とノード113の配置された配列要素は隣接したものではなく、そのアドレス(配列番号)は連続したものではなく分離されたものである。もちろん、ノード番号[0]104a及びノード番号[1]104bに連続した配列番号12及び13を格納することも可能であり、その場合には、ノード112とノード113の配置された配列要素は隣接したものとなる。
配列番号12の配列要素にはノード112が格納されている。そして配列番号13の配列要素にはノード113が格納されている。
ノード112のノード種別114には0が、弁別ビット位置115には3が、ノード番号[0]116a及びノード番号[1]116bにはそれぞれリンク先のノードの配列番号22及び23が格納されている。またノード113のノード種別117には1が格納されており、ノード113がリーフノードであることを示している。インデックスキー118には、“0001”が格納されている。パトリシアツリーについて先に述べたと同様に、リーフノードにインデックスキーと対応するレコードにアクセスする情報が含まれることは当然であるが、表記は省略している。
なお、ある配列番号の配列要素に格納されたノードを、その配列番号のノードということがあり、ノードの格納された配列要素の配列番号を、ノードの配列番号ということもある。
配列番号22及び23の配列要素に格納されたノード122とノード123の内容は省略されている。
As shown in the figure, the array elements in which the
The
0 is stored in the
A node stored in an array element with a certain array number may be referred to as a node with that array number, and an array number of an array element in which a node is stored may be referred to as a node array number.
The contents of the
図2Bは、本発明の一実施形態によるアドレス分離型カップルドノードツリーのツリー構造を概念的に示す図である。図示の6ビットのインデックスキーは、図1に例示されたパトリシアツリーのものと同じである。また、特許文献2の図2に例示されたものとも同じである。
符号210aで示すのがルートノードである。図示の例では、ルートノード210aは配列番号220の配列要素に格納されたものとしている。
ツリー構造としては、ルートノード210aの下に対をなすノード210bとノード211bが、その下層に対をなすノード210cとノード211c及び対をなすノード210fとノード211fが配置されている。対をなすノード210fとノード211fの下層には対をなすノード210hとノード211h及び対をなすノード210gとノード211gが配置されている。対をなすノード210cとノード211cの下には対をなすノード210dとノード211dが、さらにその下には対をなすノード210eとノード211eが配置されている。
FIG. 2B is a diagram conceptually illustrating a tree structure of an address-separated coupled node tree according to an embodiment of the present invention. The 6-bit index key shown is the same as that of the Patricia tree illustrated in FIG. Moreover, it is the same as that illustrated in FIG.
A
In the tree structure, a
図示された例では、ルートノード210aのノード種別260aは0でブランチノードであることを示し、弁別ビット位置230aは0を示している。ノード番号[0]220a及びノード番号[1]240aには、それぞれ対をなすノード210bとノード211bの格納された配列要素の配列番号が格納されている。なお、以下の説明では、ノード番号[0]及びノード番号[1]を示す符号をそれらに格納されている配列番号を表すために兼用する。
In the illustrated example, the
ノード210bと211bのそれぞれのノード種別260b、261bはともに0であり、ブランチノードであることを示している。ノード210bの弁別ビット位置230bには1が格納され、ノード番号[0]及びノード番号[1]はそれぞれ220b、240bであり、それらはそれぞれ対をなすノード210cとノード211cの格納された配列要素の配列番号である。
ノード210cのノード種別260cには1が格納されているので、このノードはリーフノードであり、したがって、インデックスキー250cを含んでいる。インデックスキー250cには“000111”が格納されている。一方ノード211cのノード種別261cは0、弁別ビット位置231cは2である。ノード番号[0]及びノード番号[1]はそれぞれ221c、241cであり、それらはそれぞれ対をなすノード210dとノード211dの格納された配列要素の配列番号である。
The node types 260b and 261b of the
Since 1 is stored in the
ノード210dのノード種別260dは1であり、インデックスキー250dには“011010”が格納されている。ノード210dと対になるノード211dのノード種別261dは0、弁別ビット位置231dは5であり、ノード番号[0]及びノード番号[1]はそれぞれ221d、241dである。それらはそれぞれ対をなすノード210eとノード211eの格納された配列要素の配列番号である。
対をなすノードであるノード210e、211eのノード種別260e、261eはともに1であり双方ともリーフノードであることを示し、それぞれのインデックスキー250e、251eにはインデックスキーとして“010010”と“010011”が格納されている。
ノード210bと対をなすノード211bの弁別ビット位置231bには2が格納され、ノード番号[0]及びノード番号[1]はそれぞれ221b、241bである。それらはそれぞれ対をなすノード210fとノード211fの格納された配列要素の配列番号である。
The
The
2 is stored in the
ノード210f、211fのノード種別260f、261fはともに0であり双方ともブランチノードである。それぞれの弁別ビット位置230f、231fには5、3が格納されている。ノード210fのノード番号[0]及びノード番号[1]はそれぞれ220f、240fであり、それらはそれぞれ対をなすノード210gとノード211gの格納された配列要素の配列番号である。ノード211fのノード番号[0]及びノード番号[1]はそれぞれ221f、241fであり、それらはそれぞれ対をなすノード210hとノード211hの格納された配列要素の配列番号である。
ノード210g、211gのノード種別260g、261gはともに1であり双方ともリーフノードであることを示し、それぞれのインデックスキー250g、251gには“100010”と“100011”が格納されている。
また同じくノード210hとそれと対をなすノード211hのノード種別260h、261hはともに1であり双方ともリーフノードであることを示し、それぞれのインデックスキー250h、251hには“101011”と“101100”が格納されている。
The node types 260f and 261f of the
The node types 260g and 261g of the
Similarly, the
以下、上述のツリーからインデックスキー“100010”を検索する処理の流れを簡単に説明する。弁別ビット位置は、左から0、1、2、・・・とする。
まず、ビット列“100010”を検索キーとしてルートノード210aから処理をスタートする。ルートノード210aの弁別ビット位置230aは0であるので、検索キー“100010”の弁別ビット位置が0のビット値をみると1である。そこでノード番号[1]に格納された配列番号240aの配列要素に格納されたノード211bにリンクする。ノード211bの弁別ビット位置231bには2が格納されているので、検索キー“100010”の弁別ビット位置が2のビット値をみると0であるから、ノード番号[0]に格納された配列番号221bの配列要素に格納されたノード210fにリンクする。
The flow of processing for searching for the index key “100010” from the above tree will be briefly described below. The discrimination bit positions are 0, 1, 2,... From the left.
First, processing is started from the
ノード210fの弁別ビット位置230fには5が格納されているので、検索キー“100010”の弁別ビット位置が5のビット値をみると0であるから、ノード番号[0]に格納された配列番号220fの配列要素に格納されたノード210gにリンクする。
ノード210gのノード種別260gは1でありリーフノードであることを示しているので、インデックスキー250gを読み出して検索キーと比較すると両方とも“100010”であって一致している。このようにしてアドレス分離型カップルドノードツリーを用いた検索が行われる。
Since 5 is stored in the
Since the
図3は、本発明を実施するためのハードウェア構成例を説明する図である。
本発明の検索装置による検索処理及びデータメンテナンスは中央処理装置302及びキャッシュメモリ303を少なくとも備えたデータ処理装置301によりデータ格納装置308を用いて実施される。カップルドノードツリーが配置される配列309と検索中にたどるノードが格納された配列要素の配列番号を記憶する探索経路スタック310を有するデータ格納装置308は、主記憶装置305または外部記憶装置306で実現することができ、あるいは通信装置307を介して接続された遠方に配置された装置を用いることも可能である。図1の配列100は、配列309の一例である。
FIG. 3 is a diagram for explaining a hardware configuration example for carrying out the present invention.
Search processing and data maintenance by the search device of the present invention are performed by the data processing device 301 including at least the
図3の例示では、主記憶装置305、外部記憶装置306及び通信装置307が一本のバス304によりデータ処理装置301に接続されているが、接続方法はこれに限るものではない。また、主記憶装置305をデータ処理装置301内のものとすることもできるし、探索経路スタック310を中央処理装置302内のハードウェアとして実現することも可能である。あるいは、配列309は外部記憶装置306に、探索経路スタック310を主記憶装置305に持つなど、使用可能なハードウェア環境、インデックスキー集合の大きさ等に応じて適宜ハードウェア構成を選択できることは明らかである。
また、特に図示されてはいないが、処理の途中で得られた各種の値を後の処理で用いるためにそれぞれの処理に応じた一時記憶装置が用いられることは当然である。
In the example of FIG. 3, the
Further, although not particularly illustrated, it is natural that a temporary storage device corresponding to each process is used in order to use various values obtained during the process in a later process.
図4は、本発明の一実施形態にかかるビット列検索の基本動作を説明するフローチャートである。
まず、ステップS401で、検索開始ノードの配列番号を図示しない検索開始ノード設定エリアに設定する。設定した配列番号に対応する配列要素は、分離型カップルドノードツリーを構成する任意のノードを格納したものである。
検索開始ノードの配列番号の設定は、検索開始ノードの配列番号の指定あるいは取得によりその配列番号、あるいは該配列番号のノードを図示しない検索開始ノード設定エリアに設定することにより行う。なお、上述の検索開始ノード設定エリアは、先に述べた「処理の途中で得られた各種の値を後の処理で用いるためにそれぞれの処理に応じた一時記憶装置」の一つである。以下の説明では、「図示しない検索開始ノード設定エリアに設定する」のような表現に変えて、「検索開始ノードとして設定する」あるいは単に「検索開始ノードに設定する」のように記述することもある。検索開始ノード以外についても同様である。
FIG. 4 is a flowchart for explaining the basic operation of the bit string search according to the embodiment of the present invention.
First, in step S401, the array element number of the search start node is set in a search start node setting area (not shown). The array element corresponding to the set array number stores an arbitrary node constituting the separated coupled node tree.
The array number of the search start node is set by designating or acquiring the array number of the search start node and setting the array number or the node of the array number in a search start node setting area (not shown). Note that the search start node setting area described above is one of the “temporary storage devices corresponding to each process in order to use various values obtained during the process in a later process”. In the following explanation, instead of the expression “set in the search start node setting area (not shown)”, it may be described as “set as search start node” or simply “set as search start node”. is there. The same applies to other than the search start node.
次に、ステップS402で、探索経路スタック310に取得された配列番号を格納し、ステップS403で、その配列番号に対応する配列要素を参照すべきノードとして読み出す。そして、ステップS404で、読み出したノードから、ノード種別を取り出し、ステップS405で、ノード種別がブランチノードであるか否かを判定する。
ステップS405の判定において、読み出したノードがブランチノードである場合は、ステップS406に進み、ノードから弁別ビット位置についての情報を取り出し、更に、ステップS407で、取り出した弁別ビット位置に対応するビット値を検索キーから取り出す。
次にステップS409に進み、ノードからステップS407で取り出したビット値“i”に対応するノード番号[i]を取り出して、新たな配列番号として、ステップS402に戻る。ビット値“i”に対応するノード番号[i]を取り出すには、例えば、ノード番号[0]の先頭アドレス+(i*ノード番号[0]の長さ)でノード番号[i]のアドレスを求めることにより、実行可能であることは当業者にとって自明である。
以降、ステップS405の判定においてリーフノードと判定されてステップS410に進むまで、ステップS402からステップS409までの処理を繰り返す。ステップS410で、リーフノードからインデックスキーを取り出して、処理を終了する。
Next, in step S402, the obtained array element number is stored in the search path stack 310, and in step S403, the array element corresponding to the array element number is read as a node to be referred to. In step S404, the node type is extracted from the read node, and in step S405, it is determined whether or not the node type is a branch node.
If it is determined in step S405 that the read node is a branch node, the process proceeds to step S406, where information on the discrimination bit position is extracted from the node, and in step S407, a bit value corresponding to the extracted discrimination bit position is obtained. Retrieve from search key.
In step S409, the node number [i] corresponding to the bit value “i” extracted in step S407 is extracted from the node, and the process returns to step S402 as a new array number. In order to extract the node number [i] corresponding to the bit value “i”, for example, the address of the node number [i] is calculated by adding the start address of the node number [0] + (i * node number [0] length). It will be apparent to those skilled in the art that it is feasible by determination.
Thereafter, the processing from step S402 to step S409 is repeated until it is determined that the node is a leaf node in step S405 and the process proceeds to step S410. In step S410, the index key is extracted from the leaf node, and the process ends.
次に、図5〜図8によりアドレス分離型カップルドノードツリーにおけるノード挿入処理を説明する。図5〜図7が通常の挿入処理を説明するものであり、図8はルートノードの挿入処理を説明するものである。ルートノードの挿入処理と通常の挿入処理により、カップルドノードツリーが生成されることから、ノード挿入処理の説明はカップルドノードツリーの生成処理の説明でもある。 Next, node insertion processing in the address separation type coupled node tree will be described with reference to FIGS. 5 to 7 illustrate a normal insertion process, and FIG. 8 illustrates a root node insertion process. Since the coupled node tree is generated by the root node insertion process and the normal insertion process, the description of the node insertion process is also the description of the coupled node tree generation process.
図5は挿入処理の前段である検索処理の処理フローを示す図であり、図4に示した検索処理において挿入キーを検索キーとしたものに相当する。ステップS501において検索開始ノードにルートノードの配列番号を設定し、ステップS510において図4に示す検索処理を実行する。
次にステップS511において、挿入キーとステップS510で得たインデックスキーを比較し、等しければ挿入キーは既にカップルドノードツリーに存在するのであるから、挿入は失敗となり、処理を終了する。等しくなければ次の処理、図6AのステップS516以下の処理に進む。
FIG. 5 is a diagram showing the processing flow of the search process, which is the first stage of the insert process, and corresponds to the search key shown in FIG. 4 with the insert key as the search key. In step S501, the array element number of the root node is set as the search start node, and in step S510, the search process shown in FIG. 4 is executed.
Next, in step S511, the insertion key is compared with the index key obtained in step S510. If they are equal, the insertion key already exists in the coupled node tree, so the insertion fails and the process ends. If not equal, the process proceeds to the next process, that is, the process of step S516 and thereafter in FIG.
図6Aは、挿入キーをインデックスキーとして持つリーフノードを挿入するツリー上の位置を求める処理を説明する処理フロー図である。
ステップS516で、挿入キーとステップS510で得たインデックスキーのビット列比較を例えば排他的論理和で行い、差分ビット列を得る。
ステップS517に進み、ステップS516で得た差分ビット列から、上位0ビット目から見た最初の不一致ビットのビット位置である差分ビット位置をワークエリアである差分ビット位置に設定する。この処理は、例えばプライオリティエンコーダを有するCPUではそこに差分ビット列を入力し、不一致のビット位置を得ることができる。また、ソフト的にプライオリティエンコーダと同等の処理を行って差分ビット位置を得ることも可能である。
FIG. 6A is a processing flow diagram illustrating processing for obtaining a position on a tree where a leaf node having an insertion key as an index key is inserted.
In step S516, bit string comparison between the insertion key and the index key obtained in step S510 is performed by, for example, exclusive OR, to obtain a difference bit string.
Proceeding to step S517, the difference bit position that is the bit position of the first non-matching bit viewed from the higher-order 0th bit is set as the difference bit position that is the work area from the difference bit string obtained in step S516. In this process, for example, a CPU having a priority encoder can input a difference bit string to obtain a mismatched bit position. It is also possible to obtain a difference bit position by performing a process equivalent to that of the priority encoder in software.
次にステップS518に進み、探索経路スタックのスタックポインタがルートノードの配列番号を指しているか判定する。指していればステップS524に移行し、指していなければステップS519に進む。
ステップS519において、探索経路スタックのスタックポインタを1つ戻してそこにスタックされている配列番号を取り出す。
ステップS520に進み、ステップS519で取り出した配列番号の配列要素を配列からノードとして読み出す。
ステップS521に進み、ステップS520で読み出したノードから、弁別ビット位置を取り出す。
次にステップS522に進み、ステップS521で取り出した弁別ビット位置がステップS517で得た差分ビット位置より上位の位置関係か判定する。ここで上位の位置関係とは、ビット列のより左側の位置、すなわちビット位置の値が小さい位置であることとする。
ステップS522の判定結果が否定であれば、ステップS518に戻り、ステップS518での判定が肯定になるかステップS522での判定が肯定になるまで繰り返す。ステップS522での判定が肯定になると、ステップS523で探索経路スタックのスタックポインタを1つ進め、ステップS524の処理に移行する。
ステップS524においては、探索経路スタックからスタックポインタの指す配列番号を取り出し、挿入位置の配列番号として設定する。
In step S518, it is determined whether the stack pointer of the search path stack points to the array element number of the root node. If so, the process proceeds to step S524, and if not, the process proceeds to step S519.
In step S519, the stack pointer of the search path stack is returned by 1, and the array element number stacked there is taken out.
Proceeding to step S520, the array element having the array element number extracted at step S519 is read from the array as a node.
Proceeding to step S521, the discrimination bit position is extracted from the node read out at step S520.
In step S522, it is determined whether the discrimination bit position extracted in step S521 is higher than the difference bit position obtained in step S517. Here, the upper positional relationship is a position on the left side of the bit string, that is, a position where the value of the bit position is small.
If the determination result in step S522 is negative, the process returns to step S518, and is repeated until the determination in step S518 becomes affirmative or the determination in step S522 becomes affirmative. If the determination in step S522 is affirmative, the stack pointer of the search path stack is advanced by 1 in step S523, and the process proceeds to step S524.
In step S524, the array element number pointed to by the stack pointer is extracted from the search path stack and set as the array element number at the insertion position.
上記ステップS516〜ステップS524で説明した処理は、挿入するノードの挿入位置を決定するために、挿入するインデックスキーと検索により取得されたインデックスキーの間でビット列比較を行い、ビット列比較で異なるビット値となる先頭の(最上位の)ビット位置と探索経路スタックに格納されているブランチノードの弁別ビット位置との相対的位置関係を調べ、弁別ビット位置が上位となるブランチノードの次のブランチノードのリンク先を挿入するノードの挿入位置とするものである。 In the processing described in steps S516 to S524, the bit string comparison is performed between the index key to be inserted and the index key acquired by the search in order to determine the insertion position of the node to be inserted. The relative positional relationship between the first (most significant) bit position and the discrimination bit position of the branch node stored in the search path stack is examined, and the branch node next to the branch node having the higher discrimination bit position is checked. This is the insertion position of the node into which the link destination is inserted.
ステップS524に続いて図6BのステップS525aに進む。図6Bは挿入されるインデックスキーを保持するリーフノードとそれと対をなすノードを格納する配列要素を準備する処理である。 Following step S524, the process proceeds to step S525a in FIG. 6B. FIG. 6B is a process for preparing an array element for storing a leaf node holding the inserted index key and a node paired therewith.
ステップS525aにおいて、配列から空きのノードの配列番号を取得し、ノード番号[0]に設定する。同様にステップS525bにおいて、配列から空きのノードの配列番号を取得し、ノード番号[1]に設定する。
次にステップS526に進み、挿入キーとステップS510で得たインデックスキーの大小を比較し、挿入キーが大きいときは値1を小さいときは値0のブール値を得る。
ステップS527aに進み、リーフノードの配列番号として、ステップS526で得たブール値をiとしたときのステップS525aあるいはステップS525bでノード番号[i]に設定された配列番号を設定する。同様にステップS527bにおいて、対ノードの配列番号として、ステップS526で得たブール値を反転した値をiとしたときのステップS525aあるいはステップS525bでノード番号[i]に設定された配列番号を設定する。
In step S525a, the array number of an empty node is acquired from the array and set to node number [0]. Similarly, in step S525b, the array number of an empty node is acquired from the array and set to node number [1].
In step S526, the insertion key is compared with the index key obtained in step S510. When the insertion key is large, a
Proceeding to step S527a, the array element number set to node number [i] in step S525a or step S525b when the Boolean value obtained in step S526 is set to i is set as the array element number of the leaf node. Similarly, in step S527b, the array element number set to the node number [i] in step S525a or step S525b when the value obtained by inverting the Boolean value obtained in step S526 is set as the array element number of the paired node. .
ステップS527aで設定した配列番号は、挿入キーをインデックスキーとして格納するリーフノードが格納される配列要素の配列番号であり、ステップS527bで設定した配列番号は、そのリーフノードと対をなすノードが格納される配列要素のものである。
つまり、前段の検索処理で得られたリーフノードのインデックスキーと挿入キーの大小により、挿入される対をなすノードのうちどちらのノードに、挿入キーを保持するリーフノードが格納されるかが決定される。
The array element number set in step S527a is the array element number of the array element in which the leaf node storing the insertion key as an index key is stored. The array element number set in step S527b is stored in the node paired with the leaf node. Of the array element to be processed.
In other words, depending on the size of the index key and the insertion key of the leaf node obtained in the previous search process, it is determined which of the paired nodes to which the leaf node holding the insertion key is stored is inserted. Is done.
ステップS527bに引き続き、図7に示すステップS528に進む。
図7は図6Bで準備された配列要素にノードを格納し、既存のノードの内容を変更して挿入処理を完成させる処理フローを示す図である。
Subsequent to step S527b, the process proceeds to step S528 shown in FIG.
FIG. 7 is a diagram showing a processing flow in which nodes are stored in the array elements prepared in FIG. 6B and the contents of existing nodes are changed to complete the insertion processing.
ステップS528において、ステップS527aでリーフノードの配列番号に設定した配列番号の指す配列要素のノード種別にリーフノードを示す1を、インデックスキーに挿入キーを書き込む。
次にステップS529に進み、配列からステップS524で挿入位置の配列番号に設定した配列番号の配列要素を読み出し、ステップS530において、対ノードの配列番号に設定した配列番号の配列要素にステップS529で読み出した内容を書き込む。
最後にステップS531において、ステップS524で挿入位置の配列番号に設定した配列番号の指す配列要素のノード種別にブランチノードを示す0を、弁別ビット位置にステップS517で得た差分ビット位置を、ノード番号[0]にステップS525aでノード番号[0]に設定した配列番号を、ノード番号[1]にステップS525bでノード番号[1]に設定した配列番号を書き込み、処理を終了する。
In step S528, 1 indicating the leaf node is written in the node type of the array element indicated by the array element number set in the array element number of the leaf node in step S527a, and the insertion key is written in the index key.
Next, proceeding to step S529, the array element having the array element number set as the array element number at the insertion position in step S524 is read from the array, and in step S530, the array element having the array element number set to the array element number of the pair node is read in step S529. Write the contents.
Finally, in step S531, the node type of the array element pointed to by the array element number set in step S524 is set to 0 indicating the branch node, and the difference bit position obtained in step S517 is set to the discrimination bit position. The array number set in node number [0] in step S525a is written in [0], and the array number set in node number [1] in step S525b is written in node number [1], and the process ends.
図8は、本発明の一実施形態におけるルートノードの挿入処理を含むリーフノードの挿入処理全体の処理フローを説明する図である。
ステップS551において、取得することを求められたカップルドノードツリーのルートノードの配列番号が登録済みであるか判定される。登録済みであれば、図5〜図7を用いて説明した通常の挿入処理が行われる。
ステップS551での判定が登録済みでなければ、まったく新しいカップルドノードツリーの登録、生成が始まることになる。
FIG. 8 is a diagram illustrating the processing flow of the entire leaf node insertion process including the root node insertion process according to an embodiment of the present invention.
In step S551, it is determined whether the array element number of the root node of the coupled node tree requested to be acquired has been registered. If registered, the normal insertion process described with reference to FIGS. 5 to 7 is performed.
If the determination in step S551 is not registered, registration and generation of a completely new coupled node tree starts.
まず、ステップS552において、配列から空きのノードの配列番号を取得する。次にステップS554では、ステップS552で取得した配列番号の指す配列要素すなわち挿入するルートノードに対応する配列要素の、ノード種別にリーフノードを示す1を、インデックスキーに挿入キーを書き込む。そしてステップS556では、ステップS552で取得した配列番号をルートノードの配列番号として登録して処理を終了する。
先にも述べたように、インデックスキーの集合があるとき、そこから順次インデックスキーを取り出し、図8及び図5〜図7の処理を繰り返すことにより、インデックスキーの集合に対応した本発明のカップルドノードツリーを構築することができることは明らかである。
First, in step S552, an array number of an empty node is acquired from the array. In step S554, the array element indicated by the array element number acquired in step S552, that is, the array element corresponding to the root node to be inserted, 1 indicating the leaf node in the node type and the insertion key in the index key are written. In step S556, the array element number acquired in step S552 is registered as the array element number of the root node, and the process ends.
As described above, when there is a set of index keys, the index keys are sequentially extracted from the set, and the processing of FIGS. 8 and 5 to 7 is repeated, so that the couple of the present invention corresponding to the set of index keys is performed. Obviously, a node tree can be constructed.
次に図9、図10を参照して、本発明の一実施形態におけるアドレス分離型カップルドノードツリーから特定のインデックスキーを含むリーフノードを削除する処理フローを説明する。
図9は、削除処理の前段である検索処理の処理フローを示す図であり、図4に示した検索処理において削除キーを検索キーとしたものに相当する。ステップS901において検索開始ノードにルートノードの配列番号を設定し、ステップS910において図4に示す検索処理を実行する。
次にステップS911において削除キーとステップS910で得たインデックスキーを比較し、等しくなければ削除するインデックスキーはカップルドノードツリーに存在しないのであるから、削除は失敗となり、処理を終了する。等しければ次の処理、図10のステップS912以下の処理に進む。
Next, a processing flow for deleting a leaf node including a specific index key from the address separation type coupled node tree according to the embodiment of the present invention will be described with reference to FIGS.
FIG. 9 is a diagram showing the processing flow of the search process that is the first stage of the delete process, and corresponds to the search process shown in FIG. 4 with the delete key as the search key. In step S901, the array element number of the root node is set as the search start node, and the search process shown in FIG. 4 is executed in step S910.
Next, in step S911, the deletion key is compared with the index key obtained in step S910. If they are not equal, the index key to be deleted does not exist in the coupled node tree, so the deletion fails and the process ends. If they are equal, the process proceeds to the next process, the process of step S912 and subsequent steps in FIG.
図10は、削除処理の後段の処理フローを説明する図である。
まず、ステップS912で探索経路スタックに2つ以上の配列番号が格納されているか判定する。2つ以上の配列番号が格納されていないということは、言い換えれば1つだけで、その配列番号はルートノードの格納された配列要素のものである。その場合はステップS918に移行し、ステップS901で得たルートノードの配列番号に係るノードを削除する。次にステップS919に進み、ルートノードの配列番号の登録を抹消する。
FIG. 10 is a diagram for explaining the processing flow at the latter stage of the deletion processing.
First, in step S912, it is determined whether two or more array element numbers are stored in the search path stack. The fact that two or more array numbers are not stored is, in other words, only one, and the array number is that of the array element in which the root node is stored. In that case, the process proceeds to step S918, and the node related to the array element number of the root node obtained in step S901 is deleted. In step S919, the registration of the root node array element number is deleted.
ステップS912において探索経路スタックに2つ以上の配列番号が格納されていると判定されたときはステップS913aに進み、探索経路スタックのスタックポインタを1つ戻して配列番号を取り出し、親ノードの配列番号として設定する。
次にステップS913bにおいて、ステップS913aで設定した親ノードの配列番号の指す配列要素をノードとして読み出し、ステップS913cに進む。
ステップS913cでは、該読み出したノードから、ノード番号[i]の指す値を取り出し、対ノードの配列番号として設定する。ただし、iはステップS910で呼び出した図4に示す検索処理のステップS407で得たビット値を反転した値とする。この処理は、削除対象のインデックスキーを保持するリーフノードと対をなすノードの配置された配列番号を求めるものである。
If it is determined in step S912 that two or more array numbers are stored in the search path stack, the process proceeds to step S913a, the stack pointer of the search path stack is returned by 1, the array number is extracted, and the array number of the parent node is obtained. Set as.
Next, in step S913b, the array element pointed to by the array element number of the parent node set in step S913a is read as a node, and the process proceeds to step S913c.
In step S913c, the value indicated by the node number [i] is extracted from the read node and set as the array number of the paired node. However, i is a value obtained by inverting the bit value obtained in step S407 of the search process shown in FIG. 4 called in step S910. In this process, the array element number at which the node paired with the leaf node holding the index key to be deleted is arranged.
次にステップS914aにおいて、配列から、対ノードの配列番号の指す配列要素の内容を読み出し、ステップS914bで親ノードの配列番号の指す配列要素に、ステップS914aで読み出した内容を書き込む。この処理は、削除対象のインデックスキーが格納されたリーフノードへのリンク元であるブランチノードを上記リーフノードと対をなすノードに置き換えるものである。
次にステップS917aにおいて、ステップS910で呼び出した図4に示す検索処理のステップS409で得た配列番号の指す配列要素を空に、すなわち該配列要素に格納されたノードを削除する。次にステップS917bにおいて、ステップS913cで対ノードの配列番号として設定した配列番号の指す配列要素を空に、すなわち該配列要素に格納されたノードを削除して処理を終了する。
Next, in step S914a, the contents of the array element indicated by the array element number of the paired node are read from the array, and the contents read in step S914a are written in the array element indicated by the array element number of the parent node in step S914b. In this process, a branch node that is a link source to the leaf node storing the index key to be deleted is replaced with a node that is paired with the leaf node.
Next, in step S917a, the array element indicated by the array element number obtained in step S409 of the search process shown in FIG. 4 called in step S910 is emptied, that is, the node stored in the array element is deleted. Next, in step S917b, the array element indicated by the array element number set as the array element number of the pair node in step S913c is emptied, that is, the node stored in the array element is deleted, and the process ends.
次に図11A及び図11Bを参照して削除処理の具体例を説明する。図11Aに示すのは、削除処理前のアドレス分離型カップルドノードツリー、削除キー1170及び探索経路スタック310である。図11Bに示すのは、削除処理後のアドレス分離型カップルドノードツリー及び探索経路スタック310である。 Next, a specific example of the deletion process will be described with reference to FIGS. 11A and 11B. FIG. 11A shows an address-separated coupled node tree, a deletion key 1170, and a search path stack 310 before the deletion process. FIG. 11B shows the address-separated coupled node tree and search path stack 310 after the deletion process.
図11Aに例示するツリーは、配列番号1120の配列要素に格納されたルートノード1110a、その下位の対をなすノード1110bとノード1111b、更にその下位の対をなすノード1110dとノード1111d、その下位の対をなすノード1110cとノード1111cから構成される。
The tree illustrated in FIG. 11A includes a
ルートノード1110aのノード種別1160aに“0”、弁別ビット位置1130aに“0”が格納され、ノード番号[0]及びノード番号[1]は、それぞれ1120a及び1140aである。削除キー1170の値は“00100”である。
ノード1110bのノード種別1160bに“0”、弁別ビット位置1130bに“2”が格納され、ノード番号[0]及びノード番号[1]は、それぞれ1120b及び1140bである。ノード1111bのノード種別1160bには“1”が格納され、ノード1111bがリーフノードであることが示されており、インデックスキー1151bには“10000”が格納されている。
ノード1110dのノード種別1160dに“0”、弁別ビット位置1130dに“3”が格納され、ノード番号[0]及びノード番号[1]は、それぞれ1120d及び1140dである。ノード1111dのノード種別1160dには“1”が格納され、ノード1111dがリーフノードであることが示されており、インデックスキー1151dには“00100”が格納されている。
ノード1110cとノード1111cの弁別ビット位置1160cと1161cには、ともに“0”が格納されていて、それらのノードはリーフノードであり、インデックスキー1150c、1151cにはそれぞれ“00010”、“00001”が格納されている。
“0” is stored in the
“0” is stored in the
“0” is stored in the
In the discrimination bit positions 1160c and 1161c of the
削除キー1170によりルートノード1110aを検索開始ノードとしてインデックスキーの検索を実行すると、削除キー1170のビット位置0のビット値が0、ビット位置2のビット値が1であることから、図に示す太線の矢印の、ノード1110a、ノード1110b、ノード1111dの経路でリーフノード1111dに到達し、探索経路スタック310にはそれらのノードの配列番号が格納され、太い矢印で示すスタックポインタは、配列番号1140bを指している。
When an index key search is executed with the delete key 1170 using the
上記検索の後の図10に示す削除処理の後段の処理によって、図11Bに示すように探索経路スタック310のスタックポインタは1つ戻され、親ノードの配列番号として1120aが設定される。対ノードの配列番号としては1120bが設定される。そして対ノードの配列番号1120bが指す配列要素の内容(ノード1110d)が親ノードの配列番号1120aが指す配列要素(ノード1120bが格納されている。)に上書きされ、ノード1120bは図11Bに示すものとなる。また、配列番号1140bが指すノードは削除され、削除処理終了後のアドレス分離型カップルドノードツリーは、図11Bに示すものとなる。
As a result of the subsequent process of the deletion process shown in FIG. 10 after the search, the stack pointer of the search path stack 310 is returned by one as shown in FIG. 11B, and 1120a is set as the array element number of the parent node. 1120b is set as the array element number of the node. Then, the contents of the array element pointed to by
次に、図12A〜図12Dを参照して挿入処理の具体例を説明する。図12Aに示すのは、挿入処理前のアドレス分離型カップルドノードツリー、挿入キー1270及び探索経路スタック310である。図12Bに示すのは、挿入処理後のアドレス分離型カップルドノードツリー及び探索経路スタック310である。 Next, a specific example of the insertion process will be described with reference to FIGS. 12A to 12D. FIG. 12A shows an address separation type coupled node tree, an insertion key 1270, and a search path stack 310 before insertion processing. FIG. 12B shows the address-separated coupled node tree and search path stack 310 after the insertion process.
図12Aに例示するツリーは、配列番号1220の配列要素に格納されたルートノード1210a、その下位の対をなすノード1210bとノード1211bから構成される。
ルートノード1210aのノード種別1260aに“0”、弁別ビット位置1230aに“0”が格納され、ノード番号[0]及びノード番号[1]は、それぞれ1220a及び1240aである。挿入キー1270の値は“00010”である。
ノード1210bとノード1211bの弁別ビット位置1260bと1261bには、ともに“0”が格納されており、それらのノードはリーフノードである。それらのインデックスキー1250b、1251bにはそれぞれ“10000”、“00001”が格納されている。
The tree illustrated in FIG. 12A includes a
“0” is stored in the
In the discrimination bit positions 1260b and 1261b of the
挿入キー1270によりルートノード1210aを検索開始ノードとして、図5に示すインデックスキーの検索を実行すると、挿入キー1270のビット位置0のビット値が0であることから、図に示す太線の矢印の、ノード1210a、ノード1210bの経路でリーフノード1210bに到達し、検索結果としてインデックスキー1250b“00001”が得られる。探索経路スタック310にはそれらのノードの配列番号が格納され、太い矢印で示すスタックポインタは、配列番号1220aを指している。
When the search of the index key shown in FIG. 5 is executed with the
図6Aに示す処理により、挿入キー1270とインデックスキー1250bを比較すると、挿入キー1270がインデックスキー1250bより大きく、両者の差分ビット位置は“3”である。また、スタックポインタを1つ戻すとスタックポインタはルートノード1210aが格納された配列要素の配列番号1220を指し、ルートノード1210aの内容が読み出される。ルートノード1210aの弁別ビット位置1230aは“0”であり、差分ビット位置“3”より上位であるので、挿入位置の配列番号として配列番号1220aが設定される。
When the insertion key 1270 is compared with the index key 1250b by the processing shown in FIG. 6A, the insertion key 1270 is larger than the
次に、図6Bに示す処理により、配列から空のノードの配列番号1220bと配列番号1240bを取得して、それぞれノード番号[0]とノード番号[1]として設定する。さらにノード番号[1]に設定した配列番号1240bをリーフノードの配列番号として設定し、ノード番号[0]に設定した配列番号1220bを対ノードの配列番号として設定する。
Next, the
次に図7に示す処理により、リーフノードの配列番号として設定した配列番号1240bの指す配列要素に格納するノード1211cのノード種別1261cに“1”、インデックスキー1251cに挿入キー1270“00010”を格納する。また、対ノードの配列番号として設定した配列番号1220bの指す配列要素に、挿入位置の配列番号として設定した配列番号1220aの指す配列要素の内容、すなわちノード1210bの内容を書き込んで、ノード1211cと対をなすノード1210cとする。図示のように、ノード1210cのノード種別1260cは挿入処理前のノード1210bのノード種別1260bと等しく、インデックスキー1250cは挿入処理前のインデックスキー1250cと等しい。
さらに、挿入位置の配列番号として設定した配列番号1220aの指す配列要素(ノード1210bが格納されている。)のノード種別1260bにブランチノードであることを示す“0”を、弁別ビット位置1230bに差分ビット位置を、ノード番号[0]に1220bを、ノード番号[1]に1240bを書き込む。
以上の挿入処理により、図12Aに示すアドレス分離型カップルドノードツリーは、図12Bに示すものとなる。
Next, by the processing shown in FIG. 7, “1” is stored in the
Further, the
By the above insertion processing, the address separation type coupled node tree shown in FIG. 12A becomes as shown in FIG. 12B.
次に図12Cと図12Dを参照してさらにインデックスキーを挿入する具体例を説明する。図12Cに示すアドレス分離型カップルドノードツリーは、図12Bに示すものと同じである。挿入キー1270の値は“00100”である。
挿入キー1270によりルートノード1210aを検索開始ノードとして、図5に示すインデックスキーの検索を実行すると、挿入キー1270のビット位置0のビット値が0であること及びビット位置3のビット値が0であることから、図に示す太線の矢印の、ノード1210a、ノード1210b、ノード1210cの経路でリーフノード1210cに到達し、検索結果としてインデックスキー1250c“00001”が得られる。探索経路スタック310にはそれらのノードの配列番号1200、1220a、1220bが格納され、太い矢印で示すスタックポインタは、配列番号1220bを指している。
Next, a specific example of inserting an index key will be described with reference to FIGS. 12C and 12D. The address separation type coupled node tree shown in FIG. 12C is the same as that shown in FIG. 12B. The value of the insert key 1270 is “00100”.
When the search of the index key shown in FIG. 5 is executed using the root key 1210a as the search start node by the insert key 1270, the bit value of the
図6Aに示す処理により、挿入キー1270とインデックスキー1250cを比較すると、挿入キー1270がインデックスキー1250cより大きく、両者の差分ビット位置は“2”である。また、スタックポインタを1つ戻すとスタックポインタはノード1210bが格納された配列要素の配列番号1220aを指し、ノード1210bの内容が読み出される。ノード1210bの弁別ビット位置1230bは“3”であり、差分ビット位置“3”より上位ではないので、スタックポインタを1つ戻す。
するとスタックポインタは配列番号1220、すなわちルートノード1210aの配列番号を指すので、ルートノード1210aの内容が読み出される。ルートノード1210aの弁別ビット位置1230aは“0”であり、差分ビット位置“3”より上位なのでスタックポインタを1つ進めて配列番号1220aを取り出し、挿入位置の配列番号として配列番号1220aが設定される。
When the insertion key 1270 and the index key 1250c are compared by the process shown in FIG. 6A, the insertion key 1270 is larger than the index key 1250c, and the difference bit position between them is “2”. When the stack pointer is returned by 1, the stack pointer points to the
Then, since the stack pointer indicates the
次に、図6Bに示す処理により、配列から空のノードの配列番号1220dと配列番号1240dを取得して、それぞれノード番号[0]とノード番号[1]として設定する。さらにノード番号[1]に設定した配列番号1240dをリーフノードの配列番号として設定し、ノード番号[0]に設定した配列番号1220dを対ノードの配列番号として設定する。
次に図7に示す処理により、リーフノードの配列番号として設定した配列番号1240dの指す配列要素に格納するノード1211dのノード種別1261dに“1”、インデックスキー1251dに挿入キー1270“00100”を格納する。また、対ノードの配列番号として設定した配列番号1220dの指す配列要素に、挿入位置の配列番号として設定した配列番号1220aの指す配列要素の内容、すなわちノード1210bの内容を書き込んで、ノード1211dと対をなすノード1210dとする。図示のように、ノード1210dのノード種別1260dは挿入処理前のノード1210bのノード種別1260bと、弁別ビット位置1230dは弁別ビット位置1230bと、ノード番号[0]1220dはノード番号[0]1220bと、ノード番号[1]1240dはノード番号[1]1240bと等しい。
さらに、挿入位置の配列番号として設定した配列番号1210aの指す配列要素(ノード1210bが格納されている。)のノード種別1260bにブランチノードであることを示す“0”を、弁別ビット位置1230bに差分ビット位置“2”を、ノード番号[0]に配列番号1220dを、ノード番号[1]に配列番号1240dを書き込む。
以上の挿入処理により、図12Cに示すアドレス分離型カップルドノードツリーは、図12Dに示すものとなる。
Next, the
Next, by the process shown in FIG. 7, “1” is stored in the
Further, the
By the above insertion processing, the address separation type coupled node tree shown in FIG. 12C becomes as shown in FIG. 12D.
以上本発明を実施するための最良の形態について詳細に説明したが、本発明の実施の形態はそれに限ることなく種々の変形が可能であることは当業者に明らかである。
また、本発明のビット列検索装置が、カップルドノードツリーを格納する記憶手段と図4に示した処理をコンピュータに実行させるプログラムによりコンピュータ上に構築可能なことは明らかである。
さらに、図8、図5〜図7に示したインデックス挿入処理とその均等物をコンピュータに実行させるプログラムにより、本発明のインデックス挿入方法が実現可能であり、図9及び図10に示した削除処理とその均等物をコンピュータに実行させるプログラムにより、本発明のインデックス削除方法が実現可能であることも明らかである。そして、それらのプログラムにより、ブランチノードとリーフノードの識別手段、ブランチノードの弁別ビット位置に応じて対をなすノードのどちらかにリンクする手段等がコンピュータ上に実現される。
したがって、上記プログラム、及びプログラムを記憶したコンピュータ読み取り可能な記憶媒体は、本発明の実施の形態に含まれる。さらに、本発明のカップルドノードツリーのデータ構造も、本発明の実施の形態に含まれる。
Although the best mode for carrying out the present invention has been described in detail above, it is obvious to those skilled in the art that the embodiment of the present invention is not limited thereto and can be variously modified.
In addition, it is obvious that the bit string search device of the present invention can be constructed on a computer by a storage means for storing a coupled node tree and a program for causing the computer to execute the processing shown in FIG.
Furthermore, the index insertion method of the present invention can be realized by the program that causes the computer to execute the index insertion process shown in FIGS. 8 and 5 to 7 and its equivalent, and the deletion process shown in FIGS. 9 and 10. It is also clear that the index deletion method of the present invention can be realized by a program that causes a computer to execute the equivalent. With these programs, a means for identifying a branch node and a leaf node, a means for linking to one of a pair of nodes according to the discrimination bit position of the branch node, and the like are realized on the computer.
Therefore, the program and a computer-readable storage medium storing the program are included in the embodiment of the present invention. Furthermore, the data structure of the coupled node tree of the present invention is also included in the embodiment of the present invention.
10、12、13 配列番号
100 配列
101、112、113 ノード
102、114、117 ノード種別
103、115 弁別ビット位置
104a、116a ノード番号[0]
104b、116b ノード番号「1」
118 インデックスキー
301 データ処理装置
302 中央処理装置
303 キャッシュメモリ
304 バス
305 主記憶装置
306 外部記憶装置
307 通信装置
308 データ格納装置
309 配列
310 探索経路スタック
10, 12, 13 Array number 100
104b, 116b Node number “1”
118 Index key 301
Claims (12)
前記ルートノードは、前記ツリーの始点を表すノードであって、該ツリーのノードが1つのときは前記リーフノード、該ツリーのノードが2つ以上のときは前記ブランチノードであり、
前記ブランチノードは、ビット列検索を行う検索キーの弁別ビット位置と前記ノード対の一方のノードの位置情報と他方のノードの位置情報を含み、前記リーフノードは検索対象のビット列からなるインデックスキーを含む、アドレス分離型カップルドノードツリーを備え、
前記アドレス分離型カップルドノードツリーの任意のノードを検索開始ノードとして、前記ブランチノードにおいて、該ブランチノードに含まれる弁別ビット位置の検索キーのビット値に応じて前記一方のノードの位置情報あるいは他方のノードの位置情報を選択し、該選択した位置情報に基づきノード対のどちらかのノードにリンクすることを順次前記リーフノードに至るまで繰り返すことにより、前記リーフノードに含まれるインデックスキーを、前記検索開始ノードをルートノードとする前記アドレス分離型カップルドノードツリーの任意の部分木の前記検索キーによる検索結果である検索結果キーとすることを特徴とするビット列検索装置。 A tree used for a bit string search consisting of a root node and a branch node and a leaf node or a node pair between branch nodes or between leaf nodes,
The root node is a node representing a starting point of the tree, and when the tree has one node, the leaf node is used. When the tree has two or more nodes, the root node is the branch node.
The branch node includes a discrimination bit position of a search key for performing a bit string search, position information of one node of the node pair, and position information of the other node, and the leaf node includes an index key composed of a bit string to be searched. , With address-separated coupled node tree,
Arbitrary nodes of the address-separated coupled node tree are used as search start nodes, and in the branch node, the position information of the one node or the other according to the bit value of the search key of the discrimination bit position included in the branch node The index key included in the leaf node is selected by repeating the process of sequentially linking to either node of the node pair based on the selected position information until reaching the leaf node. A bit string search device characterized by using a search result key as a search result by the search key of an arbitrary subtree of the address-separated coupled node tree having a search start node as a root node.
前記ルートノードは、前記ツリーの始点を表すノードであって、該ツリーのノードが1つのときは前記リーフノード、該ツリーのノードが2つ以上のときは前記ブランチノードであり、
前記ブランチノードは、ビット列検索を行う検索キーの弁別ビット位置と前記ノード対の一方のノードの位置情報と他方のノードの位置情報を含み、前記リーフノードは検索対象のビット列からなるインデックスキーを含む、アドレス分離型カップルドノードツリーを用いたビット列検索方法において、
前記アドレス分離型カップルドノードツリーの任意のノードを検索開始ノードとして、前記ブランチノードにおいて、該ブランチノードに含まれる弁別ビット位置の検索キーのビット値に応じて前記一方のノードの位置情報あるいは他方のノードの位置情報を選択し、該選択した位置情報に基づきノード対のどちらかのノードにリンクすることを順次前記リーフノードに至るまで繰り返すことにより、前記リーフノードに含まれるインデックスキーを、前記検索開始ノードをルートノードとする前記アドレス分離型カップルドノードツリーの任意の部分木の前記検索キーによる検索結果である検索結果キーとすることを特徴とするビット列検索方法。 A tree used for a bit string search consisting of a root node and a branch node and a leaf node or a node pair between branch nodes or between leaf nodes,
The root node is a node representing a starting point of the tree, and when the tree has one node, the leaf node is used. When the tree has two or more nodes, the root node is the branch node.
The branch node includes a discrimination bit position of a search key for performing a bit string search, position information of one node of the node pair, and position information of the other node, and the leaf node includes an index key composed of a bit string to be searched. In the bit string search method using the address-separated coupled node tree,
Arbitrary nodes of the address-separated coupled node tree are used as search start nodes, and in the branch node, the position information of the one node or the other according to the bit value of the search key of the discrimination bit position included in the branch node The index key included in the leaf node is selected by repeating the process of sequentially linking to either node of the node pair based on the selected position information until reaching the leaf node. A bit string search method, wherein a search result key that is a search result by the search key of an arbitrary subtree of the address-separated coupled node tree having a search start node as a root node is used.
前記ツリーの任意のノードを検索開始ノードとし、前記ブランチノードにおいて該ブランチノードに含まれる弁別ビット位置の検索キーのビット値に応じて前記一方のノードの位置情報あるいは他方のノードの位置情報を選択し、該選択した位置情報に基づきノード対のどちらかのノードにリンクすることを順次前記リーフノードに至るまで繰り返すことにより、前記リーフノードに格納されたインデックスキーを、前記検索開始ノードをルートノードとする前記ツリーの任意の部分木の前記検索キーによる検索結果である検索結果キーとするように構成されたアドレス分離型カップルドノードツリーに所望のビット列からなるインデックスキーを含むリーフノードを挿入するインデックスキー挿入方法において、
前記インデックスキーを前記検索キーとし、前記ルートノードを検索開始ノードとして前記アドレス分離型カップルドノードツリーから該当するリーフノードを検索するとともに、該リーフノードに至るまでたどったリンク経路のブランチノード及び該リーフノードが配置された位置情報を順次記憶し、
前記検索キーと前記該当するリーフノードに含まれるインデックスキーの間で大小比較とビット列比較を行い、
ビット列比較で異なるビット値となる先頭のビット位置と前記順次記憶された位置情報の示す位置に配置されたブランチノードの弁別ビット位置との相対的位置関係により挿入されるインデックスキーを含むリーフノードともう一方のノードからなるノード対の挿入位置を決定し、
前記大小関係により挿入するインデックスキーを含むリーフノードを前記挿入されるノード対のどちらのノードとするかを決定する、
ことを特徴とするインデックスキー挿入方法。 A tree used for a bit string search comprising a root node and a branch node and a leaf node or a node pair between branch nodes or between leaf nodes, wherein the root node is a node representing a starting point of the tree, When there is one node, the leaf node is used. When there are two or more nodes in the tree, the branch node is used. The branch node is used to identify a bit position of a search key for performing a bit string search and a link destination node pair. Including the position information of one node and the position information of the other node, the leaf node includes an index key composed of a bit string to be searched,
Arbitrary node of the tree is set as a search start node, and the position information of the one node or the position information of the other node is selected in the branch node according to the bit value of the search key of the discrimination bit position included in the branch node Then, by sequentially linking to either node of the node pair based on the selected position information until reaching the leaf node, the index key stored in the leaf node is used as the search start node as the root node. A leaf node including an index key composed of a desired bit string is inserted into an address-separated coupled node tree configured to be a search result key that is a search result by the search key of an arbitrary subtree of the tree In the index key insertion method,
The index key is used as the search key, the root node is used as a search start node, the corresponding leaf node is searched from the address-separated coupled node tree, and the branch node of the link path that reaches the leaf node, and The position information where leaf nodes are arranged is sequentially stored,
A size comparison and a bit string comparison are performed between the search key and an index key included in the corresponding leaf node,
A leaf node including an index key inserted according to a relative positional relationship between a leading bit position that becomes a different bit value in the bit string comparison and a discrimination bit position of a branch node arranged at a position indicated by the sequentially stored position information; Determine the insertion position of the node pair consisting of the other node,
Determining which node of the inserted node pair the leaf node containing the index key to be inserted according to the magnitude relationship;
An index key insertion method characterized by the above.
前記ツリーの任意のノードを検索開始ノードとし、前記ブランチノードにおいて該ブランチノードに含まれる弁別ビット位置の検索キーのビット値に応じて前記一方のノードの位置情報あるいは他方のノードの位置情報を選択し、該選択した位置情報に基づきノード対のどちらかのノードにリンクすることを順次前記リーフノードに至るまで繰り返すことにより、前記リーフノードに格納されたインデックスキーを、前記検索開始ノードをルートノードとする前記ツリーの任意の部分木の前記検索キーによる検索結果である検索結果キーとするように構成されたアドレス分離型カップルドノードツリーから任意のインデックスキーを含むリーフノードを削除するインデックスキー削除方法において、
前記インデックスキーを前記検索キーとし、前記ルートノードを検索開始ノードとして前記アドレス分離型カップルドノードツリーを検索し、
検索結果キーが格納されたリーフノードと対をなすノードの内容を該リーフノードのリンク元のブランチノードに書き込み、
該リーフノードを削除する、
ことを特徴とするインデックスキー削除方法。 A tree used for a bit string search comprising a root node and a branch node and a leaf node or a node pair between branch nodes or between leaf nodes, wherein the root node is a node representing a starting point of the tree, When there is one node, the leaf node is used. When there are two or more nodes in the tree, the branch node is used. The branch node is used to identify a bit position of a search key for performing a bit string search and a link destination node pair. Including the position information of one node and the position information of the other node, the leaf node includes an index key composed of a bit string to be searched,
Arbitrary node of the tree is set as a search start node, and the position information of the one node or the position information of the other node is selected in the branch node according to the bit value of the search key of the discrimination bit position included in the branch node Then, by sequentially linking to either node of the node pair based on the selected position information until reaching the leaf node, the index key stored in the leaf node is used as the search start node as the root node. Index key deletion that deletes a leaf node including an arbitrary index key from an address-separated coupled node tree configured to be a search result key that is a search result by the search key of an arbitrary subtree of the tree In the method
Search the address-separated coupled node tree using the index key as the search key and the root node as a search start node,
Write the contents of the node paired with the leaf node storing the search result key to the branch node that is the link source of the leaf node,
Delete the leaf node,
An index key deletion method characterized by that.
ルートノードと、ブランチノードとリーフノードまたはブランチノード同士またはリーフノード同士のノード対、からなるビット列検索に用いるツリーであって、前記ルートノードは、前記ツリーの始点を表すノードであって、該ツリーのノードが1つのときは前記リーフノード、該ツリーのノードが2つ以上のときは前記ブランチノードであり、前記ブランチノードは、ビット列検索を行う検索キーの弁別ビット位置とノード対の一方のノードの位置情報と他方のノードの位置情報を含み、前記リーフノードは検索対象のビット列からなるインデックスキーを含み、
前記ツリーの任意のノードを検索開始ノードとし、前記ブランチノードにおいて該ブランチノードに含まれる弁別ビット位置の検索キーのビット値に応じて前記一方のノードの位置情報あるいは他方のノードの位置情報を選択し、該選択した位置情報に基づきノード対のどちらかのノードにリンクすることを順次前記リーフノードに至るまで繰り返すことにより、前記リーフノードに格納されたインデックスキーを、前記検索開始ノードをルートノードとする前記ツリーの任意の部分木の前記検索キーによる検索結果である検索結果キーとする検索処理の実行を可能とすることを特徴とするデータ構造。 A tree-like data structure used for bit string search,
A tree used for a bit string search comprising a root node and a branch node and a leaf node or a node pair between branch nodes or between leaf nodes, wherein the root node is a node representing a starting point of the tree, The node is a leaf node when there is one node, and the branch node when there are two or more nodes in the tree. The branch node is one node of a discrimination bit position and a node pair of a search key for performing a bit string search. The position information of the other node and the position information of the other node, the leaf node includes an index key composed of a bit string to be searched,
Arbitrary node of the tree is set as a search start node, and the position information of the one node or the position information of the other node is selected in the branch node according to the bit value of the search key of the discrimination bit position included in the branch node Then, by sequentially linking to either node of the node pair based on the selected position information until reaching the leaf node, the index key stored in the leaf node is used as the search start node as the root node. A data structure capable of executing a search process using a search result key that is a search result by the search key of an arbitrary subtree of the tree.
The data structure is stored in an array, and the position information of the one node and the position information of the other node are array numbers of array elements of the array in which the node is stored. The data structure described.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008097722A JP2009251840A (en) | 2008-04-04 | 2008-04-04 | Bit sequence search device, search method, and program |
PCT/JP2009/000772 WO2009122651A1 (en) | 2008-04-04 | 2009-02-23 | Bit sequence search device, search method, and program |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008097722A JP2009251840A (en) | 2008-04-04 | 2008-04-04 | Bit sequence search device, search method, and program |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2009251840A true JP2009251840A (en) | 2009-10-29 |
Family
ID=41135060
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2008097722A Pending JP2009251840A (en) | 2008-04-04 | 2008-04-04 | Bit sequence search device, search method, and program |
Country Status (2)
Country | Link |
---|---|
JP (1) | JP2009251840A (en) |
WO (1) | WO2009122651A1 (en) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2011064984A1 (en) * | 2009-11-30 | 2011-06-03 | 株式会社エスグランツ | Bit stream retrieval device, retrieval method, and program |
JP2011134289A (en) * | 2009-11-30 | 2011-07-07 | S Grants Co Ltd | Bit stream retrieval device, retrieval method, and program |
JP2011248626A (en) * | 2010-05-27 | 2011-12-08 | S-Grant Co Ltd | Bit string retrieval device, retrieval method and program |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH07210569A (en) * | 1994-01-19 | 1995-08-11 | Oki Electric Ind Co Ltd | Method and device for retrieving information |
JP3601416B2 (en) * | 2000-06-13 | 2004-12-15 | 日本電気株式会社 | Information retrieval method and device |
JP3691018B2 (en) * | 2002-01-31 | 2005-08-31 | 日本電信電話株式会社 | Longest match search circuit and method, program, and recording medium |
JP4271214B2 (en) * | 2006-07-07 | 2009-06-03 | 株式会社エスグランツ | Bit string search device, search method and program |
-
2008
- 2008-04-04 JP JP2008097722A patent/JP2009251840A/en active Pending
-
2009
- 2009-02-23 WO PCT/JP2009/000772 patent/WO2009122651A1/en active Application Filing
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2011064984A1 (en) * | 2009-11-30 | 2011-06-03 | 株式会社エスグランツ | Bit stream retrieval device, retrieval method, and program |
JP2011134289A (en) * | 2009-11-30 | 2011-07-07 | S Grants Co Ltd | Bit stream retrieval device, retrieval method, and program |
JP2011248626A (en) * | 2010-05-27 | 2011-12-08 | S-Grant Co Ltd | Bit string retrieval device, retrieval method and program |
Also Published As
Publication number | Publication date |
---|---|
WO2009122651A1 (en) | 2009-10-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4271214B2 (en) | Bit string search device, search method and program | |
JP4271227B2 (en) | Bit string search device, search method and program | |
JP4514771B2 (en) | Coupled node tree longest match / shortest match search device, search method and program | |
JP4527753B2 (en) | Bit string search device, search method and program | |
JP4502223B2 (en) | Bit string merge sort apparatus, method, and program | |
JP4439013B2 (en) | Bit string search method and search program | |
CN101657818B (en) | Coupled node tree save/restore method, longest consistence/shortest consistence retrieval method, bit retrieval method and memory medium | |
JP5473893B2 (en) | Code string search device, search method and program | |
EP2116943A1 (en) | Bit string retrieving device, retrieving method, and program | |
WO2009122651A1 (en) | Bit sequence search device, search method, and program | |
US8250089B2 (en) | Bit string search apparatus, search method, and program | |
JP4567754B2 (en) | Bit string search device, search method and program | |
JP2011018296A (en) | Index key insertion/deletion method for coupled node tree | |
JP4813575B2 (en) | Bit string search device | |
EP2149845A1 (en) | Coupled node tree save/restore method, longest consistence/shortest consistence retrieval method, bit retrieval method and memory medium | |
WO2009093290A1 (en) | Bit string retrieval device, retrieval method and program |