JP2009251840A - Bit sequence search device, search method, and program - Google Patents

Bit sequence search device, search method, and program Download PDF

Info

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
Application number
JP2008097722A
Other languages
Japanese (ja)
Inventor
Toshio Shinjo
敏男 新庄
Mitsuhiro Kokubu
光裕 國分
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
S Grants Co Ltd
Original Assignee
S Grants Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by S Grants Co Ltd filed Critical S Grants Co Ltd
Priority to JP2008097722A priority Critical patent/JP2009251840A/en
Priority to PCT/JP2009/000772 priority patent/WO2009122651A1/en
Publication of JP2009251840A publication Critical patent/JP2009251840A/en
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/31Indexing; Data structures therefor; Storage structures
    • G06F16/316Indexing structures
    • G06F16/322Trees

Abstract

<P>PROBLEM TO BE SOLVED: To provide a data structure of a coupled node tree which has released the limit that nodes constituting a pair should be arranged in adjacent storage regions, and various search methods using the data structure. <P>SOLUTION: A branch node includes position information on one and the other of the nodes constituting a pair at a link destination. Index key search is realized by repeating, until a leaf node is reached, the process of selecting the position information on one of the first and the second node in accordance with the bit value of a search key at a discrimination bit contained in the branch node, and the process of making a linkage to one of the nodes constituting a pair according to the selected position information. <P>COPYRIGHT: (C)2010,JPO&INPIT

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 node 1750b is connected to the left link 1740a of the node 1750a, and a node 1750f is connected to the right link 1741a. The index key held by the node 1750b is “010011”, and the check bit position 1730b is 1. A node 1750c is connected to the left link 1740b of the node 1750b, and a node 1750d is connected to the right link 1741b. The index key held by the node 1750c is “000111”, and the check bit position 1730c is 3. The index key held by the node 1750d is “011010”, and the check bit position 1730d is 2.

ノード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 node 1750c indicates the left and right link pointers of the node 1750c, and the left pointer 1740c not connected by the dotted line indicates that the column is blank. The connection destination of the dotted line of the right pointer 1741c connected to the dotted line represents the address indicated by the pointer. In this case, the right pointer 1741c specifies the node 1750c. The right pointer 1741d of the node 1750d points to the node 1750d itself, and the node 1750e is connected to the left link 1740d. The index key held by the node 1750e is “010010”, and the check bit position 1730e is 5. The left pointer 1740e of the node 1750e points to the node 1750b, and the right pointer 1741e points to the node 1750e.

また、ノード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 node 1750f is “101101”, and the check bit position 1730f is 2. A node 1750g is connected to the left link 1740f of the node 1750f, and a node 1750h is connected to the right link 1741f. The index key held by the node 1750g is “1000011”, and the check bit position 1730g is 5. The left pointer 1740g of the node 1750g points to the node 1750a, and the right pointer 1741g points to the node 1750g. The index key held by the node 1750h is “101100”, and the check bit position 1730h is 3. The left pointer 1740h of the node 1750h points to the node 1750f, and the right pointer 1741h points to the node 1750h.

図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 Patent Document 1 below. In the Patricia tree described in the following Patent Document 1, the lower left and right nodes are stored in a continuous area, thereby reducing the storage capacity of the pointer, and a bit indicating whether or not the next link is a back link Is provided at each node to reduce the back link determination process. However, in the one disclosed in Patent Document 1 below, one node always occupies the index key area and the pointer area, and the lower left and right nodes are stored in a continuous area, and one pointer is used. Therefore, for example, the storage capacity of the same capacity as the node needs to be allocated to the left pointer 1740c, the right pointer 1741h, etc., which is the lowermost part of the Patricia tree shown in FIG. It's not big. In addition, the problem of delay in search processing due to the back link and the difficulty of processing such as additional deletion have not been improved.

上述の従来の検索手法における問題点を解決するものとして、本出願人は、特願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.

インデックスキーの最大値/最小値を求める手法は、代表ノードあるいは代表ノードと対を成すノード(以下、非代表ノードということがある。)のみをリーフノードに至るまでリンクするものであり、カップルドノードツリーに格納されたインデックスキーを昇順または降順に取り出す手法は、後に説明するように、インデックスキーはカップルドノードツリーにおいて、順序性をもって配置されていることを利用したものであり、検索開始ノードを前記順序性に基づいて変更しながら最小値検索または最大値検索を繰り返すものである。また、上記各出願において、カップルドノードツリーを配列に配置すること、上記提案した各検索処理における検索開始ノードからのツリー上の探索経路のノードの配列番号を探索経路スタックに順次スタックし、探索経路スタックにスタックされた配列番号を用いた処理も開示した。
特開2001−357070号公報 特開2008−015872号公報
The method for obtaining the maximum value / minimum value of the index key is to link only the representative node or a node paired with the representative node (hereinafter, also referred to as a non-representative node) to the leaf node. The method of extracting the index keys stored in the node tree in ascending order or descending order uses the fact that the index keys are arranged with order in the coupled node tree, as will be described later. Are repeated based on the order, and the minimum value search or maximum value search is repeated. In each of the above applications, the coupled node tree is arranged in an array, and the array number of the search path node on the tree from the search start node in each of the proposed search processes is sequentially stacked on the search path stack, and the search is performed. A process using array numbers stacked in the path stack is also disclosed.
JP 2001-357070 A JP 2008-015862 A

上記各出願で提案されたカップルドノードツリーの記憶領域上の配置については、先に述べたように、対をなすノード同士は隣接した記憶領域に配置されることが規定されている。そして検索は、リンク先のノード対の一方のノードである代表ノードの位置を示す位置情報を含んだブランチノードにおいて、該ブランチノードに含まれる弁別ビット位置の検索キーのビット値に応じて、前記位置情報によりリンク先のノード対の代表ノードかあるいはそれと隣接した記憶領域に配置されたノードにリンクすることを順次前記リーフノードに至るまで繰り返すことにより実現される。   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 array number 10 in the array 100. The node 101 includes a node type 102, a discrimination bit position 103, a node number [0] 104a, and a node number [1] 104b. The node type 102 is 0, indicating that the node 101 is a branch node. 1 is stored in the discrimination bit position 103. The node number [0] 104a and the node number [1] 104b store the array element numbers 12 and 13 of the link destination nodes, respectively. In the following, for simplification of description, the array number stored in the node number [0] or the node number [1] may be referred to as the node number [0] or the node number [1], respectively. In addition, the array element number stored in the node number [0] or the node number [1] may be represented by a code attached to the node.

図に示すように、ノード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 node 112 and the node 113, which are the lower paired nodes of the node 101, are not adjacent to each other, and their addresses (array numbers) are not continuous but separated. Is. Of course, it is also possible to store consecutive array numbers 12 and 13 in the node number [0] 104a and the node number [1] 104b. In this case, the array elements in which the nodes 112 and 113 are arranged are adjacent to each other. Will be.
The node 112 is stored in the array element of the array element number 12. A node 113 is stored in the array element with array number 13.
0 is stored in the node type 114 of the node 112, 3 is stored in the discrimination bit position 115, and the array numbers 22 and 23 of the link destination nodes are stored in the node number [0] 116a and the node number [1] 116b, respectively. Yes. Further, 1 is stored in the node type 117 of the node 113, indicating that the node 113 is a leaf node. The index key 118 stores “0001”. As described above for the Patricia tree, it is natural that the leaf node includes information for accessing the record corresponding to the index key, but the description is omitted.
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 nodes 122 and 123 stored in the array elements having array numbers 22 and 23 are omitted.

図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 reference numeral 210a indicates a root node. In the illustrated example, the root node 210a is assumed to be stored in the array element having the array element number 220.
In the tree structure, a node 210b and a node 211b that make a pair are arranged below the root node 210a, and a node 210c and a node 211c that make a pair, and a node 210f and a node 211f that make a pair are arranged below the root node 210a. A pair of nodes 210h and 211h and a pair of nodes 210g and 211g are arranged below the pair of nodes 210f and 211f. A pair of node 210d and node 211d are arranged below the paired node 210c and node 211c, and a pair of node 210e and node 211e are arranged below that.

図示された例では、ルートノード210aのノード種別260aは0でブランチノードであることを示し、弁別ビット位置230aは0を示している。ノード番号[0]220a及びノード番号[1]240aには、それぞれ対をなすノード210bとノード211bの格納された配列要素の配列番号が格納されている。なお、以下の説明では、ノード番号[0]及びノード番号[1]を示す符号をそれらに格納されている配列番号を表すために兼用する。   In the illustrated example, the node type 260a of the root node 210a is 0, indicating that it is a branch node, and the discrimination bit position 230a indicates 0. The node number [0] 220a and the node number [1] 240a store the array element numbers of the array elements stored in the node 210b and the node 211b that make a pair, respectively. In the following description, the symbols indicating the node number [0] and the node number [1] are also used to represent the array numbers stored in them.

ノード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 nodes 210b and 211b are both 0, indicating that they are branch nodes. 1 is stored in the discrimination bit position 230b of the node 210b, and the node number [0] and the node number [1] are 220b and 240b, respectively, which are the array elements stored in the paired nodes 210c and 211c, respectively. Is the SEQ ID NO.
Since 1 is stored in the node type 260c of the node 210c, this node is a leaf node and therefore includes the index key 250c. “000111” is stored in the index key 250c. On the other hand, the node type 261c of the node 211c is 0, and the discrimination bit position 231c is 2. The node number [0] and the node number [1] are 221c and 241c, respectively, which are the array element numbers of the array elements stored in the nodes 210d and 211d that make a pair.

ノード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 node type 260d of the node 210d is 1, and “011010” is stored in the index key 250d. The node type 261d of the node 211d paired with the node 210d is 0, the discrimination bit position 231d is 5, and the node number [0] and the node number [1] are 221d and 241d, respectively. They are the array element numbers of the array elements in which the node 210e and the node 211e that make a pair are stored.
The node types 260e and 261e of the nodes 210e and 211e which are paired nodes are both 1, indicating that both are leaf nodes. “010010” and “010011” are used as index keys for the index keys 250e and 251e, respectively. Is stored.
2 is stored in the discrimination bit position 231b of the node 211b paired with the node 210b, and the node number [0] and the node number [1] are 221b and 241b, respectively. They are the array element numbers of the array elements in which the node 210f and the node 211f that make a pair are stored.

ノード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 nodes 210f and 211f are both 0, and both are branch nodes. 5 and 3 are stored in the discrimination bit positions 230f and 231f, respectively. The node number [0] and the node number [1] of the node 210f are 220f and 240f, respectively, which are the array element numbers of the array elements stored in the node 210g and the node 211g that make a pair. The node number [0] and the node number [1] of the node 211f are 221f and 241f, respectively, which are the array element numbers of the array elements stored in the node 210h and the node 211h, respectively.
The node types 260g and 261g of the nodes 210g and 211g are both 1, indicating that both are leaf nodes, and “100010” and “1000011” are stored in the index keys 250g and 251g, respectively.
Similarly, the node types 260h and 261h of the node 210h and the node 211h that is paired with the node 210h are both 1, indicating that both are leaf nodes, and “101011” and “101100” are stored in the index keys 250h and 251h, respectively. Has been.

以下、上述のツリーからインデックスキー“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 root node 210a using the bit string “100010” as a search key. Since the discrimination bit position 230a of the root node 210a is 0, it is 1 when the bit value of the discrimination bit position of the search key “100010” is 0 is seen. Therefore, the node 211b stored in the array element having the array element number 240a stored in the node number [1] is linked. Since 2 is stored in the discrimination bit position 231b of the node 211b, the discrimination bit position of the search key “100010” is 0 when the bit value of 2 is viewed, so the array number stored in the node number [0] Link to the node 210f stored in the array element 221b.

ノード210fの弁別ビット位置230fには5が格納されているので、検索キー“100010”の弁別ビット位置が5のビット値をみると0であるから、ノード番号[0]に格納された配列番号220fの配列要素に格納されたノード210gにリンクする。
ノード210gのノード種別260gは1でありリーフノードであることを示しているので、インデックスキー250gを読み出して検索キーと比較すると両方とも“100010”であって一致している。このようにしてアドレス分離型カップルドノードツリーを用いた検索が行われる。
Since 5 is stored in the discrimination bit position 230f of the node 210f, the discrimination bit position of the search key “100010” is 0 when the bit value of 5 is seen, so the array number stored in the node number [0] Link to the node 210g stored in the array element 220f.
Since the node type 260g of the node 210g is 1, indicating that it is a leaf node, when the index key 250g is read and compared with the search key, both are “100010” and match. In this way, a search using an address separation type coupled node tree is performed.

図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 central processing unit 302 and the cache memory 303 using the data storage device 308. A data storage device 308 having a search path stack 310 for storing an array 309 in which a coupled node tree is arranged and an array element number in which a node to be traced is stored is a main storage device 305 or an external storage device 306. It is also possible to use a device that can be implemented or that is located remotely connected via the communication device 307. The array 100 in FIG. 1 is an example of the array 309.

図3の例示では、主記憶装置305、外部記憶装置306及び通信装置307が一本のバス304によりデータ処理装置301に接続されているが、接続方法はこれに限るものではない。また、主記憶装置305をデータ処理装置301内のものとすることもできるし、探索経路スタック310を中央処理装置302内のハードウェアとして実現することも可能である。あるいは、配列309は外部記憶装置306に、探索経路スタック310を主記憶装置305に持つなど、使用可能なハードウェア環境、インデックスキー集合の大きさ等に応じて適宜ハードウェア構成を選択できることは明らかである。
また、特に図示されてはいないが、処理の途中で得られた各種の値を後の処理で用いるためにそれぞれの処理に応じた一時記憶装置が用いられることは当然である。
In the example of FIG. 3, the main storage device 305, the external storage device 306, and the communication device 307 are connected to the data processing device 301 by a single bus 304, but the connection method is not limited to this. Further, the main storage device 305 can be in the data processing device 301, and the search path stack 310 can be realized as hardware in the central processing unit 302. Alternatively, the array 309 has an external storage device 306, a search path stack 310 in the main storage device 305, etc. It is clear that the hardware configuration can be appropriately selected according to the usable hardware environment, the size of the index key set, etc. It is.
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 value 1 is obtained, and when the insertion key is small, a Boolean value 0 is obtained.
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 root node 1110a stored in the array element having the array element number 1120, a node 1110b and a node 1111b that form a lower pair, and a node 1110d and a node 1111d that form a lower pair. The node 1110c and the node 1111c are paired.

ルートノード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 node type 1160a of the root node 1110a, “0” is stored in the discrimination bit position 1130a, and the node number [0] and the node number [1] are 1120a and 1140a, respectively. The value of the delete key 1170 is “00100”.
“0” is stored in the node type 1160b of the node 1110b, “2” is stored in the discrimination bit position 1130b, and the node number [0] and the node number [1] are 1120b and 1140b, respectively. “1” is stored in the node type 1160b of the node 1111b, indicating that the node 1111b is a leaf node, and “10000” is stored in the index key 1151b.
“0” is stored in the node type 1160d of the node 1110d, “3” is stored in the discrimination bit position 1130d, and the node number [0] and the node number [1] are 1120d and 1140d, respectively. “1” is stored in the node type 1160d of the node 1111d, indicating that the node 1111d is a leaf node, and “00100” is stored in the index key 1151d.
In the discrimination bit positions 1160c and 1161c of the nodes 1110c and 1111c, “0” is stored, these nodes are leaf nodes, and “00010” and “00001” are stored in the index keys 1150c and 1151c, respectively. Stored.

削除キー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 root node 1110a as a search start node, the bit value of the bit position 0 of the delete key 1170 is 0 and the bit value of the bit position 2 is 1, so that the bold line shown in FIG. The node 1110a, the node 1110b, and the node 1111d of the arrows reach the leaf node 1111d, and the search path stack 310 stores the array numbers of those nodes. The stack pointer indicated by the thick arrow indicates the array number 1140b. pointing.

上記検索の後の図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 array number 1120b of the opposite node (node 1110d) are overwritten by the array element pointed to by array number 1120a of the parent node (node 1120b is stored), and node 1120b is the one shown in FIG. 11B. It becomes. Further, the node indicated by the array element number 1140b is deleted, and the address separation type coupled node tree after the deletion processing is as shown in FIG. 11B.

次に、図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 root node 1210a stored in an array element having an array element number 1220, and a node 1210b and a node 1211b that form a lower pair.
“0” is stored in the node type 1260a of the root node 1210a, “0” is stored in the discrimination bit position 1230a, and the node numbers [0] and [1] are 1220a and 1240a, respectively. The value of the insert key 1270 is “00010”.
In the discrimination bit positions 1260b and 1261b of the nodes 1210b and 1211b, both “0” are stored, and these nodes are leaf nodes. “10000” and “00001” are stored in the index keys 1250b and 1251b, respectively.

挿入キー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 root node 1210a as the search start node by the insert key 1270, the bit value of the bit position 0 of the insert key 1270 is 0. The leaf node 1210b is reached by the route of the nodes 1210a and 1210b, and the index key 1250b “00001” is obtained as a search result. The search path stack 310 stores the array element numbers of these nodes, and the stack pointer indicated by the thick arrow points to the array element number 1220a.

図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 index key 1250b, and the difference bit position between them is “3”. When the stack pointer is returned by 1, the stack pointer points to the array element number 1220 of the array element in which the root node 1210a is stored, and the contents of the root node 1210a are read. Since the discrimination bit position 1230a of the root node 1210a is “0” and higher than the difference bit position “3”, the array element number 1220a is set as the array element number of the insertion position.

次に、図6Bに示す処理により、配列から空のノードの配列番号1220bと配列番号1240bを取得して、それぞれノード番号[0]とノード番号[1]として設定する。さらにノード番号[1]に設定した配列番号1240bをリーフノードの配列番号として設定し、ノード番号[0]に設定した配列番号1220bを対ノードの配列番号として設定する。 Next, the array number 1220b and the array number 1240b of the empty nodes are acquired from the array by the processing shown in FIG. 6B, and set as the node number [0] and the node number [1], respectively. Furthermore, the array element number 1240b set to the node number [1] is set as the array element number of the leaf node, and the array element number 1220b set to the node number [0] is set as the array element number of the counter node.

次に図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 node type 1261c of the node 1211c stored in the array element indicated by the array element number 1240b set as the array element number of the leaf node, and the insert key 1270 “00010” is stored in the index key 1251c. To do. Further, the contents of the array element pointed to by the array element number 1220a set as the array element number of the insertion position, that is, the contents of the node 1210b are written in the array element pointed to by the array element number 1220b set as the array element number of the paired node, It is assumed that the node 1210c forms As illustrated, the node type 1260c of the node 1210c is equal to the node type 1260b of the node 1210b before the insertion process, and the index key 1250c is equal to the index key 1250c before the insertion process.
Further, the node type 1260b of the array element (the node 1210b is stored) indicated by the array element number 1220a set as the array element number of the insertion position is set to a difference between “0” indicating that it is a branch node and the discrimination bit position 1230b. The bit position is written in node number [0] with 1220b and node number [1] with 1240b.
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 bit position 0 of the insert key 1270 is 0 and the bit value of the bit position 3 is 0. For this reason, the leaf node 1210c is reached by the route of the nodes 1210a, 1210b, and 1210c indicated by the bold arrows in the figure, and the index key 1250c “00001” is obtained as a search result. The search path stack 310 stores the array element numbers 1200, 1220a, and 1220b of those nodes, and the stack pointer indicated by the thick arrow points to the array element number 1220b.

図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 array element number 1220a of the array element in which the node 1210b is stored, and the contents of the node 1210b are read out. Since the discrimination bit position 1230b of the node 1210b is “3”, which is not higher than the difference bit position “3”, the stack pointer is returned by one.
Then, since the stack pointer indicates the array element number 1220, that is, the array element number of the root node 1210a, the contents of the root node 1210a are read out. The discrimination bit position 1230a of the root node 1210a is “0”, which is higher than the difference bit position “3”, so that the stack pointer is incremented by 1 to extract the array element number 1220a, and the array element number 1220a is set as the array element number of the insertion position. .

次に、図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 array number 1220d and the array number 1240d of the empty nodes are acquired from the array by the processing shown in FIG. 6B, and set as the node number [0] and the node number [1], respectively. Furthermore, the array element number 1240d set in the node number [1] is set as the array number of the leaf node, and the array element number 1220d set in the node number [0] is set as the array number of the counter node.
Next, by the process shown in FIG. 7, “1” is stored in the node type 1261d of the node 1211d stored in the array element indicated by the array element number 1240d set as the array element number of the leaf node, and the insert key 1270 “00100” is stored in the index key 1251d. To do. Further, the contents of the array element pointed to by the array element number 1220a set as the array element number of the insertion position, that is, the contents of the node 1210b are written in the array element pointed to by the array element number 1220d set as the array element number of the pair node, It is assumed that the node 1210d forms As illustrated, the node type 1260d of the node 1210d is the node type 1260b of the node 1210b before the insertion process, the discrimination bit position 1230d is the discrimination bit position 1230b, the node number [0] 1220d is the node number [0] 1220b, Node number [1] 1240d is equal to node number [1] 1240b.
Further, the node type 1260b of the array element (node 1210b is stored) pointed to by the array element number 1210a set as the array element number of the insertion position is set to a difference between “0” indicating a branch node and the discrimination bit position 1230b. In bit position “2”, array number 1220d is written in node number [0], and array number 1240d is written in node number [1].
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.

従来の検索で用いられるパトリシアツリーの一例を示す図である。It is a figure which shows an example of the Patricia tree used by the conventional search. 配列に格納されたアドレス分離型カップルドノードツリーの構成例を説明する図である。It is a figure explaining the structural example of the address separation type coupled node tree stored in the arrangement | sequence. アドレス分離型カップルドノードツリーのツリー構造を概念的に示す図である。It is a figure which shows notionally the tree structure of an address separation type coupled node tree. 本発明を実施するためのハードウェア構成例を説明する図である。It is a figure explaining the hardware structural example for implementing this invention. 本発明の一実施形態における検索処理を示すフローチャートである。It is a flowchart which shows the search process in one Embodiment of this invention. 本発明の一実施形態における挿入処理の前段である検索処理の処理フローを示す図である。It is a figure which shows the processing flow of the search process which is the front | former stage of the insertion process in one Embodiment of this invention. 本発明の一実施形態における挿入処理における挿入するノード対のための配列要素を準備する処理フローを説明する図である。It is a figure explaining the processing flow which prepares the array element for the node pair to insert in the insertion process in one Embodiment of this invention. 本発明の一実施形態における挿入処理における挿入するノード対のための配列要素を準備する処理フローを説明する図である。It is a figure explaining the processing flow which prepares the array element for the node pair to insert in the insertion process in one Embodiment of this invention. ノードを挿入する位置を求め、各ノードの内容を書き込んで挿入処理を完成させる処理フローを示す図である。It is a figure which shows the processing flow which calculates | requires the position which inserts a node, writes the content of each node, and completes insertion processing. 本発明の一実施形態におけるルートノードの挿入処理を含むリーフノードの挿入処理全体の処理フローを説明する図である。It is a figure explaining the processing flow of the whole insertion process of the leaf node including the insertion process of a root node in one Embodiment of this invention. 本発明の一実施形態における削除処理の前段である検索処理の処理フローを示す図である。It is a figure which shows the processing flow of the search process which is the front | former stage of the deletion process in one Embodiment of this invention. 本発明の一実施形態における削除処理の後段の処理フローを説明する図である。It is a figure explaining the processing flow of the latter part of deletion processing in one embodiment of the present invention. 削除処理前のアドレス分離型カップルドノードツリー例を示す図である。It is a figure which shows the example of an address separation type coupled node tree before a deletion process. 削除処理後のアドレス分離型カップルドノードツリー例を示す図である。It is a figure which shows the example of an address separation type coupled node tree after a deletion process. 挿入処理前のアドレス分離型カップルドノードツリー例を示す図である。It is a figure which shows the example of an address separation type coupled node tree before insertion processing. 挿入処理後のアドレス分離型カップルドノードツリー例を示す図である。It is a figure which shows the example of an address separation type coupled node tree after an insertion process. 挿入処理前の別のアドレス分離型カップルドノードツリー例を示す図である。It is a figure which shows another example of an address separation type coupled node tree before insertion processing. 挿入処理後の別のアドレス分離型カップルドノードツリー例を示す図である。It is a figure which shows another example of an address separation type coupled node tree after an insertion process.

符号の説明Explanation of symbols

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 Array 101, 112, 113 Node 102, 114, 117 Node type 103, 115 Discrimination bit position 104a, 116a Node number [0]
104b, 116b Node number “1”
118 Index key 301 Data processing unit 302 Central processing unit 303 Cache memory 304 Bus 305 Main storage unit 306 External storage unit 307 Communication unit 308 Data storage unit 309 Array 310 Search path stack

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記載のビット列検索装置。   The address-separated coupled node tree is stored in an array, and the position information of the one node and the position information of the other node are array element numbers of array elements of the array in which the node is stored, and the search The array element number of the array element storing the start node and the array element number of the array element storing the link destination node from the search start node to the leaf node are sequentially held in the stack. Item 2. The bit string search device according to Item 1. ルートノードと、ブランチノードとリーフノードまたはブランチノード同士またはリーフノード同士のノード対、からなるビット列検索に用いるツリーであって、
前記ルートノードは、前記ツリーの始点を表すノードであって、該ツリーのノードが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.
前記アドレス分離型カップルドノードツリーは、配列に記憶され、前記一方のノードの位置情報及び他方のノードの位置情報は、そのノードが格納された前記配列の配列要素の配列番号であり、前記検索開始ノードの格納された配列要素の配列番号及び前記検索開始ノードから前記リーフノードに至るリンク先のノードの格納された配列要素の配列番号が、順次スタックに保持されていくことを特徴とする請求項3記載のビット列検索方法。   The address-separated coupled node tree is stored in an array, and the position information of the one node and the position information of the other node are array element numbers of array elements of the array in which the node is stored, and the search The array element number of the array element storing the start node and the array element number of the array element storing the link destination node from the search start node to the leaf node are sequentially held in the stack. Item 4. The bit string search method according to Item 3. ルートノードと、ブランチノードとリーフノードまたはブランチノード同士またはリーフノード同士のノード対、からなるビット列検索に用いるツリーであって、前記ルートノードは、前記ツリーの始点を表すノードであって、該ツリーのノードが1つのときは前記リーフノード、該ツリーのノードが2つ以上のときは前記ブランチノードであり、前記ブランチノードは、ビット列検索を行う検索キーの弁別ビット位置とリンク先のノード対の一方のノードの位置情報と他方のノードの位置情報を含み、前記リーフノードは検索対象のビット列からなるインデックスキーを含み、
前記ツリーの任意のノードを検索開始ノードとし、前記ブランチノードにおいて該ブランチノードに含まれる弁別ビット位置の検索キーのビット値に応じて前記一方のノードの位置情報あるいは他方のノードの位置情報を選択し、該選択した位置情報に基づきノード対のどちらかのノードにリンクすることを順次前記リーフノードに至るまで繰り返すことにより、前記リーフノードに格納されたインデックスキーを、前記検索開始ノードをルートノードとする前記ツリーの任意の部分木の前記検索キーによる検索結果である検索結果キーとするように構成されたアドレス分離型カップルドノードツリーに所望のビット列からなるインデックスキーを含むリーフノードを挿入するインデックスキー挿入方法において、
前記インデックスキーを前記検索キーとし、前記ルートノードを検索開始ノードとして前記アドレス分離型カップルドノードツリーから該当するリーフノードを検索するとともに、該リーフノードに至るまでたどったリンク経路のブランチノード及び該リーフノードが配置された位置情報を順次記憶し、
前記検索キーと前記該当するリーフノードに含まれるインデックスキーの間で大小比較とビット列比較を行い、
ビット列比較で異なるビット値となる先頭のビット位置と前記順次記憶された位置情報の示す位置に配置されたブランチノードの弁別ビット位置との相対的位置関係により挿入されるインデックスキーを含むリーフノードともう一方のノードからなるノード対の挿入位置を決定し、
前記大小関係により挿入するインデックスキーを含むリーフノードを前記挿入されるノード対のどちらのノードとするかを決定する、
ことを特徴とするインデックスキー挿入方法。
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.
前記アドレス分離型カップルドノードツリーは、配列に記憶され、前記一方のノードの位置情報及び他方のノードの位置情報は、そのノードが格納された前記配列の配列要素の配列番号であり、前記検索開始ノードの格納された配列要素の配列番号及び前記検索開始ノードから前記リーフノードに至るリンク先のノードの格納された配列要素の配列番号が、順次スタックに保持されていくことを特徴とする請求項5記載のインデックスキー挿入方法。   The address-separated coupled node tree is stored in an array, and the position information of the one node and the position information of the other node are array element numbers of array elements of the array in which the node is stored, and the search The array element number of the array element storing the start node and the array element number of the array element storing the link destination node from the search start node to the leaf node are sequentially held in the stack. Item 6. The index key insertion method according to Item 5. ルートノードと、ブランチノードとリーフノードまたはブランチノード同士またはリーフノード同士のノード対、からなるビット列検索に用いるツリーであって、前記ルートノードは、前記ツリーの始点を表すノードであって、該ツリーのノードが1つのときは前記リーフノード、該ツリーのノードが2つ以上のときは前記ブランチノードであり、前記ブランチノードは、ビット列検索を行う検索キーの弁別ビット位置とリンク先のノード対の一方のノードの位置情報と他方のノードの位置情報を含み、前記リーフノードは検索対象のビット列からなるインデックスキーを含み、
前記ツリーの任意のノードを検索開始ノードとし、前記ブランチノードにおいて該ブランチノードに含まれる弁別ビット位置の検索キーのビット値に応じて前記一方のノードの位置情報あるいは他方のノードの位置情報を選択し、該選択した位置情報に基づきノード対のどちらかのノードにリンクすることを順次前記リーフノードに至るまで繰り返すことにより、前記リーフノードに格納されたインデックスキーを、前記検索開始ノードをルートノードとする前記ツリーの任意の部分木の前記検索キーによる検索結果である検索結果キーとするように構成されたアドレス分離型カップルドノードツリーから任意のインデックスキーを含むリーフノードを削除するインデックスキー削除方法において、
前記インデックスキーを前記検索キーとし、前記ルートノードを検索開始ノードとして前記アドレス分離型カップルドノードツリーを検索し、
検索結果キーが格納されたリーフノードと対をなすノードの内容を該リーフノードのリンク元のブランチノードに書き込み、
該リーフノードを削除する、
ことを特徴とするインデックスキー削除方法。
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.
前記アドレス分離型カップルドノードツリーは、配列に記憶され、前記一方のノードの位置情報及び他方のノードの位置情報は、そのノードが格納された前記配列の配列要素の配列番号であり、前記検索開始ノードの格納された配列要素の配列番号及び前記検索開始ノードから前記リーフノードに至るリンク先のノードの格納された配列要素の配列番号が、順次スタックに保持されていくことを特徴とする請求項7記載のインデックスキー削除方法。 The address-separated coupled node tree is stored in an array, and the position information of the one node and the position information of the other node are array element numbers of array elements of the array in which the node is stored, and the search The array element number of the array element storing the start node and the array element number of the array element storing the link destination node from the search start node to the leaf node are sequentially held in the stack. Item 8. The index key deletion method according to Item 7. 請求項3又は4記載のビット列検索方法あるいは請求項5又は6記載のインデックスキー挿入方法あるいは請求項7又は8記載のインデックスキー削除方法のいずれか1つの方法をコンピュータに実行させるためのプログラムを記憶したコンピュータ読み取り可能な記憶媒体。   A program for causing a computer to execute any one of the bit string search method according to claim 3 or 4, the index key insertion method according to claim 5 or 6, or the index key deletion method according to claim 7 or 8 is stored. Computer-readable storage medium. 請求項3又は4記載のビット列検索方法あるいは請求項5又は6記載のインデックスキー挿入方法あるいは請求項7又は8記載のインデックスキー削除方法のいずれか1つの方法をコンピュータに実行させるためのプログラム。   A program for causing a computer to execute any one of the bit string search method according to claim 3 or 4, the index key insertion method according to claim 5 or 6, or the index key deletion method according to claim 7 or 8. ビット列検索に用いるツリー状のデータ構造であって、
ルートノードと、ブランチノードとリーフノードまたはブランチノード同士またはリーフノード同士のノード対、からなるビット列検索に用いるツリーであって、前記ルートノードは、前記ツリーの始点を表すノードであって、該ツリーのノードが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.
前記データ構造は、配列に記憶され、前記一方のノードの位置情報及び他方のノードの位置情報は、そのノードが格納された前記配列の配列要素の配列番号であることを特徴とする請求項11記載のデータ構造。
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.
JP2008097722A 2008-04-04 2008-04-04 Bit sequence search device, search method, and program Pending JP2009251840A (en)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Cited By (3)

* Cited by examiner, † Cited by third party
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