JP4379894B2 - カップルドノードツリーの分割/結合方法及びプログラム - Google Patents
カップルドノードツリーの分割/結合方法及びプログラム Download PDFInfo
- Publication number
- JP4379894B2 JP4379894B2 JP2007169459A JP2007169459A JP4379894B2 JP 4379894 B2 JP4379894 B2 JP 4379894B2 JP 2007169459 A JP2007169459 A JP 2007169459A JP 2007169459 A JP2007169459 A JP 2007169459A JP 4379894 B2 JP4379894 B2 JP 4379894B2
- Authority
- JP
- Japan
- Prior art keywords
- node
- tree
- processing
- key
- coupled
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/02—Comparing digital values
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/31—Indexing; Data structures therefor; Storage structures
- G06F16/316—Indexing structures
- G06F16/322—Trees
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/90335—Query processing
- G06F16/90344—Query processing by using string matching techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/02—Indexing scheme relating to groups G06F7/02 - G06F7/026
- G06F2207/025—String search, i.e. pattern matching, e.g. find identical word or best match in a string
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Description
上記ビット列の検索を高速に行うために、ビット列を記憶するデータ構造を種々に工夫することが従来から行われている。このようなものの一つとして、パトリシアツリーという木構造が知られている。
ある検索キーで検索を行うとき、ルートノードから順次各ノードに保持される検索キーの検査ビット位置を検査していき、検査ビット位置のビット値が1であるか0であるか判定を行い、1であれば右リンクをたどり、0であれば左リンクをたどる。そして、リンク先のノードの検査ビット位置がリンク元のノードの検査ビット位置より大きくなければ、すなわち、リンク先が下方でなく上方に戻れば(図32において点線で示されたこの逆戻りのリンクをバックリンクという)、リンク先のノードのインデックスキーと検索キーの比較を行う。比較の結果、等しければ検索成功であり、等しくなければ検索失敗であることが保証されている。
は前記ブランチノードであり、前記ブランチノードは、ビット列検索を行う検索キーの弁別ビット位置とリンク先のノード対の一方のノードの位置を示す位置情報を含み、前記リーフノードは検索対象のビット列からなるインデックスキーを含むカップルドノードツリーを用いたビット列検索を提案した。
したがって、1つのカップルドノードツリーを分割し、また再結合することが必要になる。
図1を参照すると、ノード101が配列100の配列番号10の配列要素に配置されている。ノード101はノード種別102、弁別ビット位置103及び代表ノード番号104で構成されている。ノード種別102は0であり、ノード101がブランチノードであることを示している。弁別ビット位置103には1が格納されている。代表ノード番号104にはリンク先のノード対の代表ノードの配列番号20が格納されている。なお、以下では表記の簡略化のため、代表ノード番号に格納された配列番号を代表ノード番号ということもある。また、代表ノード番号に格納された配列番号をそのノードに付した符号あるいはノード対に付した符号で表すこともある。
、表記は省略している。
ノード[0]112、ノード[1]113、ノード122、及びノード123の格納された配列要素にそれぞれ付された0あるいは1は、検索キーで検索を行う場合にノード対のどちらのノードにリンクするかを示すものである。前段のブランチノードの弁別ビット位置にある検索キーのビット値である0か1を代表ノード番号に加えた配列番号のノードにリンクする。
図2は、カップルドノードツリーのツリー構造を概念的に示す図である。図示の6ビットのインデックスキーは、図32に例示されたパトリシアツリーのものと同じである。
ツリー構造としては、ルートノード210aの下にノート対201bが、その下層にノード対201cとノード対201fが配置され、ノード対201fの下層にはノード対201hとノード対201gが配置されている。ノード対201cの下にはノード対201dが、さらにその下にはノード対201eが配置されている。
ード210dの格納された配列要素の配列番号221cが格納されている。
まず、ビット列“100010”を検索キーとしてルートノード210aから処理をスタートする。ルートノード210aの弁別ビット位置230aは0であるので、検索キー“100010”の弁別ビット位置が0のビット値をみると1である。そこで代表ノード番号の格納された配列番号220aに1を加えた配列番号の配列要素に格納されたノード211bにリンクする。ノード211bの弁別ビット位置231bには2が格納されているので、検索キー“100010”の弁別ビット位置が2のビット値をみると0であるから、代表ノード番号の格納された配列番号221bの配列要素に格納されたノード210fにリンクする。
われる。
カップルドノードツリーの構成はインデックスキーの集合により規定される。図2の例で、ルートノード210aの弁別ビット位置が0であるのは、図2に例示されたインデックスキーに0ビット目が0のものと1のものがあるからである。0ビット目が0のインデックスキーのグループはノード210bの下に分類され、0ビット目が1のインデックスキーのグループはノード211bの下に分類されている。
そして2ビット目が1であるインデックスキーは3ビット目の異なるものがあるのでノード211fの弁別ビット位置には3が格納され、2ビット目が0であるインデックスキーでは3ビット目も4ビット目も等しく5ビット目で異なるのでノード210fの弁別ビット位置には5が格納される。
そしてさらにいえば、異なるビット値となるビット位置ごとにビット値が“1”のノードとビット値が“0”のノードとに分岐していることから、ノード[1]側とツリーの深さ方向を優先させてリーフノードをたどると、それらに格納されたインデックスキーは、ノード211hのインデックスキー251hの“101100”、ノード210hのインデックスキー250hの“101011”、・・・、ノード210cのインデックスキー250cの“000111”となり降順にソートされている。
検索キーで検索するときはインデックスキーがカップルドノードツリー上に配置されたルートをたどることになり、例えば検索キーが“101100”であればノード211hに到達することができる。また、上記説明からも想像がつくように、“101101”か“101110”を検索キーとした場合でもノード211hにたどり着き、インデックスキー251hと比較することにより検索が失敗したことが分かる。
本発明の検索装置による検索処理及び分割/結合処理を含むデータメンテナンスは中央処理装置302及びキャッシュメモリ303を少なくとも備えたデータ処理装置301によりデータ格納装置308を用いて実施される。カップルドノードツリーが配置される配列309と検索中にたどるノードが格納された配列要素の配列番号を記憶する探索経路スタック310を有するデータ格納装置308は、主記憶装置305または外部記憶装置306で実現することができ、あるいは通信装置307を介して接続された遠方に配置された装置を用いることも可能である。
次に、上述の出願において、本出願人により提案されたカップルドノードツリーを用いた基本的な検索処理、カップルドノードツリーにおける挿入削除処理、及びカップルドノードツリーに含まれるインデックスキーの最大値/最小値を求める処理等の応用処理の一部について、図4〜図11Bを参照することにより、本発明を理解するために必要な範囲で紹介する。
まず、ステップS401で、検索開始ノードの配列番号を取得する。取得された配列番号に対応する配列は、カップルドノードツリーを構成する任意のノードを格納したものである。検索開始ノードの指定は、後に説明する各種応用検索において行われる。
進むまで、ステップS402からステップS409までの処理を繰り返す。ステップS410で、リーフノードからインデックスキーを取り出して、処理を終了する。
ちの代表ノードのみあるいは代表ノードと隣接した記憶領域に配置されたノードのみをリンクしてリーフノードに至ることによりインデックスキーの最小値/最大値の検索が可能であることは明らかである。
める処理と同様に、ユーザ等が指定する検索範囲について検索を行う際に、実際にはインデックスキーが取り得ない範囲については対象外とし、実際にインデックスキーが含まれる範囲について検索を行う処理等に応用される。
ステップS802でカップルドノードツリーに含まれるインデックスキーの最大値を求めると、ステップS803で、ステップS802で求めた最大値と上限キーとを比較し、上限キーが最大値より大きいか否かを判定する。上限キーがインデックスキーの最大値以上であるときは、ステップS804に進み、ステップS802で求めた最大値を上限値として設定し、処理を終了する。
ステップS912において、配列から空きのノード対を求め、そのノード対のうち代表ノードとなるべき配列要素の配列番号を取得する。
ステップS914に進み、ステップS912で得た代表ノードの配列番号にステップS913で得たブール値を加算した配列番号を得る。
ステップS914で得た配列番号は、挿入キーをインデックスキーとして持つリーフノードが格納される配列要素の配列番号であり、ステップS915で得た配列番号は、そのリーフノードと対を成すノードが格納される配列要素のものである。
ステップS916〜ステップS923までの処理は、挿入するノード対のカップルドノードツリー上の位置を求める処理であり、ステップS924以下の処理は各ノードにデータを設定して挿入処理を完成させる処理である。
ステップS917に進み、ステップS916で得た差分ビット列から、上位0ビット目から見た最初の不一致ビットのビット位置を得る。この処理は、例えばプライオリティエンコーダを有するCPUではそこに差分ビット列を入力し、不一致のビット位置を得ることができる。また、ソフト的にプライオリティエンコーダと同等の処理を行い最初の不一致ビットのビット位置を得ることも可能である。
ステップS920に進み、ステップS919で取り出した配列番号の配列要素を配列からノードとして読み出す。
次にステップS922に進み、ステップS921で取り出した弁別ビット位置がステップS917で得たビット位置より上位の位置関係か判定する。ここで上位の位置関係とは、ビット列のより左側の位置、すなわちビット位置の値が小さい位置であることとする。
)ビット位置と探索経路スタックに格納されているブランチノードの弁別ビット位置との相対的位置関係を調べ、弁別ビット位置が上位となるブランチノードの次のブランチノードのリンク先を挿入するノード対の挿入位置とするものである。
ステップS924では探索経路スタックからスタックポインタの指す配列番号を取り出す。
ステップS926に進み、配列からステップS924で得た配列番号の配列要素を読み出す。
最後にステップS928において、ステップS924で得た配列番号の指す配列要素のノード種別に0(ブランチノード)を、弁別ビット位置にステップS917で得たビット位置を、代表ノード番号にステップS912で得た配列番号を書き込み、処理を終了する。
まず、ステップS102において、配列から空きのノード対を求め、そのノード対のうち代表ノードとなるべき配列要素の配列番号を取得する。次にステップS103において、ステップS102で得た配列番号に0を加えた配列番号を求める。(実際には、ステップS102で取得した配列番号に等しい。)。さらにステップS104において、ステップS103で得た配列番号の配列要素に、挿入するルートノードのノード種別に1(リーフノード)とインデックスキーに挿入キーを書き込み、ステップS105で、ステップS102で取得したルートノードの配列番号を登録して処理を終了する。
まず、ステップS1112で探索経路スタックに2つ以上の配列番号が格納されているか判定する。2つ以上の配列番号が格納されていないということは、言い換えれば1つだけで、その配列番号はルートノードの格納された配列要素のものである。その場合はステップS1118に移行し、ステップS1101で得たルートノードの配列番号に係るノード対を削除する。次にステップS1119に進み、登録されていたルートノードの配列番号を削除して処理を終了する。
容を読み出し、ステップS1115において探索経路スタックのスタックポインタを1つ戻して配列番号を取り出す。
以上、カップルドノードツリーの分割/結合に関する本発明の前提となる技術を説明したが、必要とあれば、上述の特許出願の明細書及び図面の記載を参照されたい。
ここでカップルドノードツリーの分割とは、あるビット列からなる分割キーを指定したとき、カップルドノードツリーに含まれるインデックスキーをその分割キーとの大小関係により2グループに分け、それぞれのグループに属するインデックスキーからなる2つのカップルドノードツリーを生成することである。
また、カップルドノードツリーの結合とは、2つのインデックスキーの集合に対応する2つカップルドノードツリーから2つのインデックスキーの集合の和集合に対応するカップルドノードツリーを生成することである。本発明では、2つのインデックスキーの集合の積集合は空であることを前提にしている。
最初のステップS1201で指定された分割キーを処理元の分割キーとして設定する。
分割キーの指定は、操作者による外部入力の場合もあり得るし、あるコンピュータプログラムの処理結果による場合、遠方からコマンドによる場合等があり得る。指定された分割キーは、処理元の分割キーを保持するメモリ上のエリアに設定される。
ステップS1203では、処理元のツリーが登録済みか判定する。この判定結果が登録済みではないというのは処理元のツリーが全て削除済みであることを意味するから、分割キーが処理元のツリーのインデックスキーの最大値以上である例外的なものであり、その場合には処理を終了する。
次にステップS1207で、図9A〜図9C、図10に示すツリーの生成、挿入処理により、挿入キーによる処理先のツリーの生成を実行する。
結合処理は、結合しようとする2つのツリーのうちどちらかを処理元のツリーとし、分割キーを処理元のツリーのインデックスキーの最大値以上とすれば、先に述べた例外的な処理に該当し、処理元のツリーは削除され、処理先のツリーに結合される。なお、処理元のツリーのインデックスキーの最大値が未知の場合には、前もって図6に示す最大値検索処理により分割キーを求めることになる。
本実施例1は処理のロジックは簡易なものであるが、処理元のルートノードを検索開始ノードとする最小値検索を繰り返し、インデックスキー単位で挿入削除を行うため、実行時の処理ステップ数は大きくなる。
ステップS1301からステップS1306までの処理は、図12に示す実施例1のステップS1201からステップS1206までの処理とまったく同じであるから、説明を省略する。
後に説明するように、処理元の親ノードは削除ノードの直近上位のブランチノードである。削除ノードは処理元のインデックスキーの最小値を含むものであり、先に述べたインデックスキーの順序性から、次に検索する最小値は処理元の親ノードの下位にある。
図14は、図13に示すステップS1306とステップS1307に対応するノードの挿入処理フローを説明する図である。
登録済みでなければステップS1403に移行し、ステップS1403において、挿入キーを含むノード対を処理先のルートノードに設定し、処理先のルートノードとして登録する。続いてステップS1404に進み、処理先のルートノードを挿入済みノードとして設定して処理を終了する。
ステップS1408では、図6に示す最大値検索処理により、ステップS1406あるいはステップS1407で設定された検索開始ノードから処理先のインデックスキーの最大値を求める。
次に、上述のステップS1403とステップS1409について詳細に説明する。
まず、ステップS1501で配列からノード対が空の代表ノード番号を取得する。
ステップS1503に進み、リーフノードを形成するために、ノード種別にリーフを、インデックスキーに挿入キーを設定し、ステップS1502で設定した配列番号の配列要素に格納する。
なお、上記ステップS1501〜ステップS1504の処理は、図10を参照して説明したカップルドノードツリーの生成処理において、ルートノードの配列番号が登録済みでない場合の、ステップS102〜ステップS105に対応するものである。
ステップS1512の処理は図9Cに示すステップS918〜ステップS923に相当し、ステップS1513〜ステップS1518の処理は図9Cに示すステップS924〜ステップS928に相当する。
次にステップS1507において、配列から、配列番号の指す配列要素の内容をノードとして取り出す。
続いてステップS1509において、ステップS1505で設定した差分ビット位置とステップS1508で取り出した差分ビット位置を比較し、弁別ビット位置が差分ビット位置より上位の位置関係か判定する。
ステップS1510では、処理先の探索経路スタックのスタックポインタがルートノードの配列番号を指しているか判定する。
判定の結果、処理先の探索経路スタックのスタックポインタがルートノードの配列番号を指している場合には、ステップS1511において処理先の探索経路スタックからスタックポインタの指す配列番号を取り出し、処理先の親ノードの配列番号を格納するエリアに設定してステップS1513に移行する。
次にステップS1514において、代表ノード番号に1を加えて得た配列番号を挿入ノードの配列番号を格納するエリアに設定する。
次にステップS1517において、ステップS1511あるいはステップS1512で設定した処理先の親ノードの配列番号の指す配列要素の内容を読み出し、ステップS1516で設定した対ノードの配列番号の指す配列要素に格納する。
あるいはステップS1512で設定した処理先の親ノードの配列番号の指す配列要素に格納して処理を終了する。
最初のステップであるステップS1601は、図13に示すステップS1308に相当するものである。削除ノードに含まれる削除キーは図13に示すステップS1304において最小値検索により求められたものであるから、処理元の探索経路スタックには削除キーの格納された配列要素の配列番号がスタックされているので、その配列番号を読み出して削除ノードを格納するエリアに設定する。
以上、実施例2のツリー分離処理について説明したが、実施例2においても、実施例1の場合と同様にインデックスキーの最大値から順に削除を行うことができる。
ステップS007では、処理元から分割ノードツリーを削除する。そして、ステップS008に進み、次の分割ノードを求める。
分割ノードが求まれば、ステップS010において、その分割ノードをルートノードとする部分木である分割ノードツリーの最大値を求めて次の分割キーとし、ステップS005に戻って次の分割ノードツリーの挿入、削除処理及び更なる次の分割ノードを求める処理を繰り返す。
本実施例では上述のように分割ノードツリー単位で削除挿入処理が行われるため、処理ステップ数が削減される。
図18は、最初の分割ノードを求める処理フローの前段を説明する図である。
図19は、最初の分割ノードを求める処理フローの後段を説明する図である。後段の処理は、処理元の探索経路スタックを遡り、最初のノード〔0〕の配列番号を求めて分割ノ
ードの配列番号として設定するものである。
判定の結果がノード〔1〕側であればステップS1901の処理に戻り、ノード〔0〕側であればステップS1905に移行してステップS1902で取り出した配列番号を分割ノードの配列番号として設定して処理を終了する。
分割キーをインデックスキーとして含むリーフノードがノード〔0〕であれば、そのリーフノードが分割ノード自体であり、分割ノードツリーは1つのリーフノードだけから構成される。このリーフノードと対をなすノード〔1〕側に存在するリーフノードのインデックスキーは、カップルドノードツリーの順序性によって全て分割キーより大きい。したがって、今のケースの場合、分割キーより上位のブランチノードをルートノードとする部分木においては分割キーは最大値とはなりえないから、分割キーは分割ノードツリーの最大値であり、分割ノードツリーは分割キーを最大値とする処理元の部分木のうち最大のものである。
、どのノード〔1〕をルートノードとする部分木においても上記分割キーはこれらの部分木の最大値である。そして、ノード〔0〕にまで遡ったとき、それ以上上位のノードの下位には当該ノード〔0〕と対をなすノード〔1〕以下のノードが存在し、これらのノードには上記分割キーより大きいインデックスキーを含むリーフノードが存在する。
以下引き続き、分割処理の説明を、図20以下を参照して行う。
ステップS2001において、図17に示す処理フローのステップS002で求められた分割ノードの格納された配列要素の配列番号を挿入ノードの配列番号として設定する。
次にステップS2004で、ステップS2003で取得した代表ノード番号をノード[0]の配列番号として設定する。
図30A及び図30Bの(b)の例示では、分割ノード210fの格納された配列要素の配列番号221bが挿入ノードの配列番号に設定され、取得された空のノード対201iの代表ノード番号220’ がノード[0]の配列番号として設定される。
図21に示すように、ステップS2101で、処理先のルートノードの配列番号を、検索開始ノードの配列番号として設定する。
次にステップS2103において、図17に示すステップS010で設定された分割キーとステップS2103で得られた最小値をビット列比較して上位0ビット目から見た最初の不一致ビット位置を求め、差分ビット位置として設定する。
最初にステップS2201で、図17に示す処理フローのステップS008で求められた分割ノードの格納された配列要素の配列番号を、挿入ノードの配列番号として設定する。このステップS2201は図20に示すステップS2001とは、分割ノードが求められた処理ステップがステップS008である点で異なるだけである。
次のステップS2203〜ステップS2205は、図20に示すルートノードの挿入処理のステップS2003〜ステップS2005と同様である。
次にステップS2207において、ステップS2202で設定した処理先の挿入位置の配列番号の指す配列要素の内容を読み出し、ステップS2206で設定したノード[1]の配列番号の指す配列要素に格納する。
ノードの直下にブランチノード同士からなるノード対を挿入し、そのノード対のノード〔1〕以下に既存の処理先のルートノード以下の部分木を接続し、ノード〔0〕に分割ノードツリーを接続するものである。この処理により、分割ノードツリーを挿入後の挿入先の順序性が保たれることは明らかである。
次にステップS2301で設定された削除ノードの配列番号が、処理元のルートノードの配列番号と一致するか判定する。削除ノードの配列番号が、処理元のルートノードの配列番号と一致するときは、ステップS2303に進み、処理元のルートノードの代表ノード番号の指すノード対を削除し、次にステップS2304で処理元のルートノードの配列番号の登録を抹消して処理を終了する。
図24は、図17に示すステップS008における次の分割ノードを求める処理の処理フローを説明する図である。
次にステップS2404において、ステップS2403で得たノード位置がノード〔0〕側であるか判定する。ノード〔0〕側であればステップS2401に戻り、ノード〔1〕側であればステップS2406に移行してS2402で取り出した配列番号から値1を減じて得たノード〔0〕の配列番号を、分割ノードの配列番号として設定して「分割ノードあり」を返す。
そしてステップS2503において、図6に示す最大値検索を実行し、インデックスキーの最大値を求める。
最後にステップS2505において、ステップS2501で退避した値を処理元の探索経路スタックのスタックポインタの値として復元して処理を終了する。
次に分割処理と同様に部分木単位で処理を行う実施例3によるカップルドノードツリーの結合処理を説明する。本実施例の結合処理は、実施例1及び実施例2の結合処理と大きく異なり、実施例1及び実施例2の結合処理がインデックスキー単位、言い換えればノード単位で結合処理を行うものであるのに対して、所定の条件を満たす部分木単位で処理元から分割して処理先に結合するものである。実施例1及び実施例2の結合処理では分割キーを選択することにより分割処理をそのまま適用できたのに対して、本実施例のように部分木単位で結合処理を行おうとすると、単純に分割処理を適用することができない。
図31Aは結合処理開始前の処理元と処理先のツリーの構造例を示す図である。図31Aの(a)には処理元が例示され、その配列番号の符号220a+1が付された分割結合ノードとそれをルートノードとする部分木であり、結合処理の単位となる部分木である分割結合ノードツリー293が示されている。以後、ノードを示す符号を、そのノードを検索処理でたどったときに経路探索スタックにスタックされるそのノードが配置された配列要素の配列番号で表すことがある。
ード220がルートノードであるため、処理元のルートノードは削除され、図31Cの(a)には何も表示されていない。図31Cの(b)には、処理先の結合された分割ノードツリー294、結合処理により追加されたノード対201mとノード221のリンク関係がそれぞれ点線で囲われて示されている。
図26のステップS2601において、処理元の最大値と処理先の最小値の差分ビット位置を求める。図31Aの例示では、処理元の最大値“101001”と処理先の最小値“101011”の差分ビット位置4が求められる。差分ビット位置を求める処理の詳細は、後に図27を参照して説明する。なお、以下の説明では、このステップS2601で求めた差分ビット位置を単に差分ビット位置ということがある。
の配列番号として設定されている配列番号220kを設定して新たなブランチノードを生成し、図31Bの(b)に示す結合後の処理先の構造が得られている。
図27は、図26に示すステップS2601の差分ビット位置を求める処理の詳細な処理フローを説明する図である。まず、ステップS2701において、処理元のルートノードの配列番号を検索開始ノードの配列番号に設定する。次にステップS2702において、図6に示す検索処理により、処理元のインデックスキーの最大値を求める。
タがルートノードの配列番号を指している場合にはステップS2810に進み、処理元の探索経路スタックのスタックポインタがルートノードの配列番号を指していない場合にはステップS2802に進む。
ステップS2803ではステップS2802で取り出した配列番号の指す配列要素の内容をノードとして取り出し、ステップS2304において取り出したノードの弁別ビット位置を取得する。
ステップS2810においては、処理元の経路探索スタックから、スタックポインタの指す配列番号を取り出し、処理元の分割結合ノードの配列番号として設定して処理を終了する。なお、以下の説明において、ここで設定された配列番号を単に分割結合ノードの配列番号ということがある。
図31Aの例示においては、キーの最大値を格納したノード211gから探索経路を遡ると、始めはスタックポインタがノード211gの配列番号221bを指しているのでステップS2801の判定は「いいえ」となって、ステップS2801からの処理を繰り返し、差分ビット位置が4であることからステップS2802の処理でルートノード210aまで至り、ルートノード210aの弁別ビット位置が0であって差分ビット位置より上位であるからステップS2805の判定処理でステップS2809に分岐し、ステップS2809の処理により探索経路を1つ進めて分割結合ノード220a+1が求められる。
先のインデックスキーの最小値を格納したリーフノードが存在し、ノード〔0〕は分割結合ノードである。
ステップS2903ではステップS2902で取り出した配列番号の指す配列要素の内容をノードとして取り出し、ステップS2904において、取り出したノードの弁別ビット位置を取得する。
ステップS2910においては、処理先の経路探索スタックから、スタックポインタの指す配列番号を取り出し、処理先の結合位置の配列番号として設定して処理を終了する。なお、以下の説明において、ここで設定された配列番号を単に結合位置の配列番号ということがある。
図31Aの例示においては、キーの最小値を格納したノード210hから探索経路を遡ると、差分ビット位置が4でありステップS2904で取り出すルートノード210fの弁別ビット位置が3であることからステップS2905からステップS2909に分岐し、ステップS2909の処理により探索経路を1つ進めて結合位置の配列番号221fが求められる。
により分割結合ノードツリーが処理元から削除され、分割結合ノードを処理先に結合することにより分割結合ノードツリーの結合が完成する。
以上本発明を実施するための最良の形態について詳細に説明したが、本発明の実施の形態はそれに限ることなく種々の変形が可能であることは当業者に明らかである。
100 配列
101 ノード
102 ノード種別
103 弁別ビット位置
104 代表ノード番号
111 ノード対
112 ノード[0]、代表ノード
113 ノード[1]、代表ノードと対をなすノード
118 インデックスキー
301 データ処理装置
302 中央処理装置
303 キャッシュメモリ
304 バス
305 主記憶装置
306 外部記憶装置
307 通信装置
308 データ格納装置
309 配列
310 探索経路スタック
Claims (17)
- ルートノードと、隣接した記憶領域に配置されるブランチノードとリーフノードまたはブランチノード同士またはリーフノード同士のノード対、からなるビット列検索に用いるツリーであって、
前記ルートノードは、ツリーの始点を表すノードであって、該ツリーのノードが1つのときは前記リーフノード、ツリーのノードが2つ以上のときは前記ブランチノードであり、
前記ブランチノードは、ビット列検索を行う検索キーの弁別ビット位置とリンク先のノード対の一方のノードである代表ノードの位置を示す位置情報を含み、前記リーフノードは検索対象のビット列からなるインデックスキーを含み、
前記ツリーの任意のノードを検索開始ノードとして前記ブランチノードにおいて、該ブランチノードに含まれる弁別ビット位置の検索キーのビット値に応じてリンク先のノード対の代表ノードかあるいはそれと隣接した記憶領域に配置されたノードにリンクすることを順次前記リーフノードに至るまで繰り返すことにより、前記リーフノードに格納されたインデックスキーを、前記検索開始ノードをルートノードとする前記ツリーの任意の部分木の前記検索キーによる検索結果である検索結果キーとするように構成されたカップルドノードツリーをコンピュータが分割する、カップルドノードツリーの分割方法において、
分割対象である処理元カップルドノードツリーを分割するインデックスキーを決定する分割キーを取得するステップと、
前記処理元カップルドノードツリーのインデックスキーの最小値あるいは最大値を求める処理元最小値あるいは最大値取得ステップと、
前記分割キーと前記最小値あるいは最大値との大小を比較し、該最小値が前記分割キーより大きければあるいは該最大値が前記分割キーより小ければ処理を終了する比較ステップと、
前記比較の結果、該最小値が前記分割キーより大きくなければあるいは該最大値が前記分割キーより小さくなければ、
該最小値あるいは該最大値をインデックスキーとして挿入する処理先カップルドノードツリーが存在していない場合は、該最小値あるいは該最大値をインデックスキーとして含むリーフノードをルートノードとする処理先カップルドノードツリーを生成し、前記処理先カップルドノードツリーが存在している場合は、該処理先カップルドノードツリーに該最小値あるいは該最大値のインデックスキーを挿入することにより新たな処理先カップルドノードツリーを生成する生成ステップと、
前記処理元カップルドノードツリーから前記最小値あるいは前記最大値のインデックスキーを削除する削除ステップと、
を備え、
前記最小値あるいは前記最大値のインデックスキーを削除した前記処理元カップルドノードツリーを新たな処理元カップルドノードツリーとした前記処理元最小値あるいは最大値取得ステップ、前記比較ステップ、前記生成ステップ及び前記削除ステップを前記処理元最小値あるいは最大値取得ステップで取得された最小値あるいは最大値が前記分割キーより大きくなるまであるいは小さくなるまで繰り返すことを特徴とするカップルドノードツリーの分割方法。 - 請求項1に記載のカップルドノードツリーの分割方法において、
前記処理元最小値あるいは最大値取得ステップは、前記処理元カップルドノードツリーのルートノードを検索開始ノードとして前記ノード対のうち、該ノード対を構成する2つのノードのうちの代表ノードのみあるいは代表ノードと隣接した記憶領域に配置されたノードのみをリンクしてリーフノードに至ることにより、前記処理元カップルドノードツリーのインデックスキーの最小値あるいは最大値を求めるステップであることを特徴とするカップルドノードツリーの分割方法。 - 請求項1又は請求項2に記載のカップルドノードツリーの分割方法において、
前記カップルドノードツリーは、配列に記憶され、前記位置情報は、該位置情報に対応するノードが格納された前記配列の配列要素の配列番号であり、
前記検索開始ノードの格納された配列要素の配列番号及び前記検索開始ノードから前記リーフノードに至るリンク先のノードの格納された配列要素の配列番号は、順次スタックに保持されていくものであり、
前記生成ステップは、
前記処理先カップルドノードツリーが存在している場合は、
前記処理元最小値あるいは最大値取得ステップで求めた最小値あるいは最大値を前記処理先カップルドノードツリーの挿入キーとして設定し、
前記処理先カップルドノードツリーのインデックスキーの最大値あるいは最小値を取得する処理先最大値あるいは最小値取得ステップを実行し、
前記挿入キーと前記インデックスキーの最大値あるいは最小値との間でビット列比較を行って異なるビット値となる先頭のビット位置を求め、
該ビット位置と前記スタックに格納されている配列番号のブランチノードの弁別ビット位置との相対的位置関係により、前記挿入キーを保持するリーフノードを含むノード対の挿入位置である処理先親ノードを決定し、
該処理先親ノードの前記位置情報を、前記挿入キーを保持するリーフノードを含むノード対の代表ノードが格納されている配列要素の配列番号とする、
ステップを含むものであること、
を特徴とするカップルドノードツリーの分割方法。 - 請求項3に記載のカップルドノードツリーの分割方法において、
前記生成ステップは、さらに前記処理先親ノードを、挿入キーを含むリーフノードを挿入した挿入済みノードとして設定するステップを含み、
前記処理先最大値あるいは最小値取得ステップは、前記挿入済みノードを検索開始ノードとして前記処理先カップルドノードツリーのインデックスキーの最大値あるいは最小値を取得するものであることを特徴とするカップルドノードツリーの分割方法。 - 請求項4に記載のカップルドノードツリーの分割方法において、
前記削除ステップは、
前記処理元最小値あるいは最大値取得ステップで求めた最小値あるいは最大値をインデックスキーとして含むリーフノードを前記処理元カップルドノードツリーの削除ノードとして設定し、
前記削除ノートと同一ノード対を構成するノードの内容を当該ノード対のリンク元のブランチノードに書き込み、
当該ノード対を削除する、
ステップを含むものであることを特徴とするカップルドノードツリーの分割方法。 - ルートノードと、隣接した記憶領域に配置されるブランチノードとリーフノードまたはブランチノード同士またはリーフノード同士のノード対、からなるビット列検索に用いるツリーであって、
前記ルートノードは、ツリーの始点を表すノードであって、該ツリーのノードが1つのときは前記リーフノード、ツリーのノードが2つ以上のときは前記ブランチノードであり、
前記ブランチノードは、ビット列検索を行う検索キーの弁別ビット位置とリンク先のノード対の一方のノードである代表ノードの位置を示す位置情報を含み、前記リーフノードは検索対象のビット列からなるインデックスキーを含み、
前記ツリーの任意のノードを検索開始ノードとして前記ブランチノードにおいて、該ブランチノードに含まれる弁別ビット位置の検索キーのビット値に応じてリンク先のノード対の代表ノードかあるいはそれと隣接した記憶領域に配置されたノードにリンクすることを順次前記リーフノードに至るまで繰り返すことにより、前記リーフノードに格納されたインデックスキーを、前記検索開始ノードをルートノードとする前記ツリーの任意の部分木の前記検索キーによる検索結果である検索結果キーとするように構成された2つのカップルドノードツリーをコンピュータが結合する、カップルドノードツリーの結合方法において、
前記2つのカップルドノードツリーの一方の処理元カップルドノードツリーのインデックスキーの最小値あるいは最大値を求める処理元最小値あるいは最大値取得ステップと、
前記2つのカップルドノードツリーの他方の処理先カップルドノードツリーに前記最小値あるいは最大値のインデックスキーを挿入する挿入ステップと、
前記処理元カップルドノードツリーから前記最小値あるいは前記最大値のインデックスキーを削除する削除ステップと、
を備え、
前記最小値あるいは前記最大値のインデックスキーを削除した前記処理元カップルドノードツリーを新たな処理元カップルドノードツリーとした前記処理元最小値あるいは最大値取得ステップ、前記挿入ステップ及び前記削除ステップを前記処理元カップルドノードツリーがすべて削除されるまで繰り返すことを特徴とするカップルドノードツリーの結合方法。 - 請求項6に記載のカップルドノードツリーの結合方法において、
前記カップルドノードツリーは、配列に記憶され、前記位置情報は、該位置情報に対応するノードが格納された前記配列の配列要素の配列番号であり、
前記検索開始ノードの格納された配列要素の配列番号及び前記検索開始ノードから前記リーフノードに至るリンク先のノードの格納された配列要素の配列番号は、順次スタックに保持されていくものであり、
前記挿入ステップは、
前記最小値あるいは前記最大値を前記処理先カップルドノードツリーの挿入キーとして設定し、
前記処理先カップルドノードツリーのインデックスキーの最大値あるいは最小値を取得する処理先最大値あるいは最小値取得ステップを実行し、
前記挿入キーと前記インデックスキーの最大値あるいは最小値との間でビット列比較を行って異なるビット値となる先頭のビット位置を求め、
該ビット位置と前記スタックに格納されている配列番号のブランチノードの弁別ビット位置との相対的位置関係により、前記挿入キーを保持するリーフノードを含むノード対の挿入位置である親ノードを決定し、
該親ノードの前記位置情報を、前記挿入キーを保持するリーフノードを含むノード対の代表ノードが格納されている配列要素の配列番号とする、
ステップを含むものであること、
を特徴とするカップルドノードツリーの結合方法。 - 請求項7に記載のカップルドノードツリーの結合方法において、
前記削除ステップは、
前記処理元最小値あるいは最大値取得ステップで求めた最小値あるいは最大値をインデックスキーとして含むリーフノードを前記処理元カップルドノードツリーの削除ノードとして設定し、
前記削除ノートと同一ノード対を構成するノードの内容を当該ノード対のリンク元のブランチノードに書き込み、
当該ノード対を削除する、
ステップを含むものであることを特徴とするカップルドノードツリーの結合方法。 - ルートノードと、隣接した記憶領域に配置されるブランチノードとリーフノードまたはブランチノード同士またはリーフノード同士のノード対、からなるビット列検索に用いるツリーであって、
前記ルートノードは、ツリーの始点を表すノードであって、該ツリーのノードが1つのときは前記リーフノード、ツリーのノードが2つ以上のときは前記ブランチノードであり、
前記ブランチノードは、ビット列検索を行う検索キーの弁別ビット位置とリンク先のノード対の一方のノードである代表ノードの位置を示す位置情報を含み、前記リーフノードは検索対象のビット列からなるインデックスキーを含み、
前記ツリーの任意のノードを検索開始ノードとして前記ブランチノードにおいて、該ブランチノードに含まれる弁別ビット位置の検索キーのビット値に応じてリンク先のノード対の代表ノードかあるいはそれと隣接した記憶領域に配置されたノードにリンクすることを順次前記リーフノードに至るまで繰り返すことにより、前記リーフノードに格納されたインデックスキーを、前記検索開始ノードをルートノードとする前記ツリーの任意の部分木の前記検索キーによる検索結果である検索結果キーとするように構成されたカップルドノードツリーをコンピュータが分割する、カップルドノードツリーの分割方法において、
分割対象である処理元カップルドノードツリーを分割する分割キーを取得するステップと、
該分割キーを前記検索キーとし、前記処理元カップルドノードツリーのルートノードを前記検索開始ノードとして、前記処理元カップルドノードツリーから検索結果キーとして前記分割キーを得るとともに、前記ルートノードの位置情報及び該ルートノードから前記分割キーを含むリーフノードに至るリンク先のノードの位置情報をスタックに順次格納する検索ステップと、
前記スタックに格納された位置情報を、前記代表ノードの格納された記憶領域の位置情報となるまで、あるいは前記代表ノードと対をなすノードの格納された記憶領域の位置情報となるまで順次読み出し、該読み出した前記代表ノードの格納された記憶領域の位置情報あるいは前記代表ノードと対をなすノードの格納された記憶領域の位置情報の記憶領域に格納されたノードを分割ノードとして求める分割ノード取得ステップと、
前記分割ノードをルートノードとする部分木である分割ノードツリーを挿入する処理先カップルドノードツリーが存在していない場合は、該分割ノードツリーを処理先カップルドノードツリーとして処理先カップルドノードツリーを生成し、前記処理先カップルドノードツリーが存在している場合は、該分割ノードツリーを該処理先カップルドノードツリーに挿入することにより新たな処理先カップルドノードツリーを生成するする生成ステップと、
前記分割ノードツリーを前記処理元カップルドノードツリーから削除する削除ステップ
を含むことを特徴とするカップルドノードツリーの分割方法。 - 請求項9に記載のカップルドノードツリーの分割方法において、
前記スタックに格納された、前記分割ノードの格納された記憶領域の位置情報より前に格納された記憶領域の位置情報を、前記代表ノードと対をなすノードの格納された記憶領域の位置情報となるまで、あるいは前記代表ノードの格納された記憶領域の位置情報となるまで順次読み出し、該読み出した前記代表ノードと対をなすノードの格納された記憶領域の位置情報あるいは前記代表ノードの格納された記憶領域の位置情報の記憶領域に格納されたノードと対をなすノードを次の分割ノードとして取得する次分割ノード取得ステップを備え、
前記分割ノードを前記次の分割ノードとして前記生成ステップと前記削除ステップを実行することを特徴とするカップルドノードツリーの分割方法。 - 請求項9又は請求項10に記載のカップルドノードツリーの分割方法において、
前記カップルドノードツリーは、配列に記憶され、前記位置情報は、該位置情報に対応するノードが格納された前記配列の配列要素の配列番号であることを特徴とするカップルドノードツリーの分割方法。 - ルートノードと、隣接した記憶領域に配置されるブランチノードとリーフノードまたはブランチノード同士またはリーフノード同士のノード対、からなるビット列検索に用いるツリーであって、
前記ルートノードは、ツリーの始点を表すノードであって、該ツリーのノードが1つのときは前記リーフノード、ツリーのノードが2つ以上のときは前記ブランチノードであり、
前記ブランチノードは、ビット列検索を行う検索キーの弁別ビット位置とリンク先のノード対の一方のノードである代表ノードの位置を示す位置情報を含み、前記リーフノードは検索対象のビット列からなるインデックスキーを含み、
前記ツリーの任意のノードを検索開始ノードとして前記ブランチノードにおいて、該ブランチノードに含まれる弁別ビット位置の検索キーのビット値に応じてリンク先のノード対の代表ノードかあるいはそれと隣接した記憶領域に配置されたノードにリンクすることを順次前記リーフノードに至るまで繰り返すことにより、前記リーフノードに格納されたインデックスキーを、前記検索開始ノードをルートノードとする前記ツリーの任意の部分木の前記検索キーによる検索結果である検索結果キーとするように構成された2つのカップルドノードツリーをコンピュータが結合する、カップルドノードツリーの結合方法において、
前記2つのカップルドノードツリーの一方の処理元カップルドノードツリーのインデックスキーの最大値あるいは最小値を求める処理元最大値あるいは最小値取得ステップと、
前記2つのカップルドノードツリーの他方の処理先カップルドノードツリーのインデックスキーの最小値あるいは最大値を求める処理先最小値あるいは最大値取得ステップと、
前記処理元最大値あるいは最小値取得ステップで求めた処理元カップルドノードツリーのインデックスキーの最大値と前記処理先最小値あるいは最大値取得ステップで求めた処理先カップルドノードツリーのインデックスキーの最小値の差分ビット位置、あるいは前記処理元最大値あるいは最小値取得ステップで求めた処理元カップルドノードツリーのインデックスキーの最小値と前記処理先最小値あるいは最大値取得ステップで求めた処理先カップルドノードツリーのインデックスキーの最大値の差分ビット位置を求める差分ビット位置取得ステップと、
前記差分ビット位置取得ステップで求めた差分ビット位置に基づき前記処理元から分割して処理先に結合する部分木のルートノードである分割結合ノードを求める分割結合ノード取得ステップと、
前記差分ビット位置取得ステップで求めた差分ビット位置に基づき分割結合ノード取得ステップで求めた分割結合ノードを結合する処理先の結合位置を求める結合位置取得ステップと、
前記分割結合ノード取得ステップで求めた分割結合ノードを前記結合位置取得ステップで求めた処理先の結合位置に挿入する挿入ステップと、
前記分割結合ノード取得ステップで求めた分割結合ノードを前記処理元カップルドノードツリーから削除する削除ステップと、
を備え、
前記分割結合ノードを削除した前記処理元カップルドノードツリーを新たな処理元カップルドノードツリーとした前記処理元最大値あるいは最小値取得ステップ、前記処理先最小値あるいは最大値取得ステップ、前記差分ビット位置取得ステップ、前記分割結合ノード取得ステップ、前記結合位置取得ステップ、前記挿入ステップ及び前記削除ステップを、前記処理元カップルドノードツリーがすべて削除されるまで繰り返すことを特徴とするカップルドノードツリーの結合方法。 - 請求項12に記載のカップルドノードツリーの結合方法において、
前記処理元最大値あるいは最小値取得ステップは、前記処理元カップルドノードツリーのルートノードを検索開始ノードとして前記ノード対のうち、該ノード対を構成する2つのノードのうちの代表ノードのみあるいは代表ノードと隣接した記憶領域に配置されたノードのみをリンクしてリーフノードに至ることにより、前記処理元カップルドノードツリーのインデックスキーの最大値あるいは最小値を求めるステップであり、
前記処理先最小値あるいは最大値取得ステップは、前記処理先カップルドノードツリーのルートノードを検索開始ノードとして前記ノード対のうち、該ノード対を構成する2つのノードのうちの代表ノードのみあるいは代表ノードと隣接した記憶領域に配置されたノードのみをリンクしてリーフノードに至ることにより、前記処理先カップルドノードツリーのインデックスキーの最小値あるいは最大値を求めるステップであることを特徴とする
カップルドノードツリーの結合方法。 - 請求項13に記載のカップルドノードツリーの結合方法において、
前記処理元カップルドノードツリー及び処理先カップルドノードツリーは、配列に記憶され、前記位置情報は、該位置情報に対応するノードが格納された前記配列の配列要素の配列番号であり、
前記処理元最大値あるいは最小値取得ステップ及び前記処理先最小値あるいは最大値取得ステップにおける前記検索開始ノードの格納された配列要素の配列番号及び前記検索開始ノードから前記リーフノードに至るリンク先のノードの格納された配列要素の配列番号は、順次それぞれ処理元のスタック及び処理先のスタックに保持されていくことを特徴とするカップルドノードツリーの結合方法。 - 請求項14に記載のカップルドノードツリーの結合方法において、
前記分割結合ノード取得ステップは、前記処理元のスタックに格納された配列番号の1つ前に格納された配列番号から、該配列番号の配列要素に格納されたブランチノードの弁別ビット位置が前記差分ビット位置より上位になるまで読み出し、該読み出した配列要素の次に前記処理元のスタックに格納された配列番号の配列要素に格納されたノードを前記分割結合ノードとして求め、
前記結合位置取得ステップは、前記処理先のスタックに格納された配列番号の1つ前に格納された配列番号から、該配列番号の配列要素に格納されたブランチノードの弁別ビット位置が前記差分ビット位置より上位になるまで読み出し、該読み出した配列要素の次に前記処理先のスタックに格納された配列番号の配列要素に格納されたノードを前記結合位置として求めることを特徴とするカップルドノードツリーの結合方法。 - 請求項1〜15のいずれか1つに記載のカップルドノードツリーの分割方法あるいはカップルドノードツリーの結合方法をコンピュータに実行させるためのプログラム。
- 請求項1〜15のいずれか1つに記載のカップルドノードツリーの分割方法あるいはカップルドノードツリーの結合方法をコンピュータに実行させるためのプログラムを記憶したことを特徴とするコンピュータ読み取り可能な記憶媒体。
Priority Applications (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007169459A JP4379894B2 (ja) | 2006-11-28 | 2007-06-27 | カップルドノードツリーの分割/結合方法及びプログラム |
CN2007800440419A CN101542485B (zh) | 2006-11-28 | 2007-10-19 | 配对节点树的分割/结合方法和程序 |
EP07827921A EP2098965A4 (en) | 2006-11-28 | 2007-10-19 | DIVISION / CONNECTION METHOD FOR A COUPLED N UDS TREE AND PROGRAM |
PCT/JP2007/001142 WO2008065735A1 (fr) | 2006-11-28 | 2007-10-19 | Procédé de division/connexion pour un arbre de nœuds couplé et programme |
TW096143047A TW200834356A (en) | 2006-11-28 | 2007-11-14 | Splitting/connecting method for coupled node tree, and program |
US12/453,907 US8224861B2 (en) | 2006-11-28 | 2009-05-27 | Coupled node tree splitting/conjoining method and program |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006319407 | 2006-11-28 | ||
JP2007169459A JP4379894B2 (ja) | 2006-11-28 | 2007-06-27 | カップルドノードツリーの分割/結合方法及びプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2008159025A JP2008159025A (ja) | 2008-07-10 |
JP4379894B2 true JP4379894B2 (ja) | 2009-12-09 |
Family
ID=39467538
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007169459A Expired - Fee Related JP4379894B2 (ja) | 2006-11-28 | 2007-06-27 | カップルドノードツリーの分割/結合方法及びプログラム |
Country Status (6)
Country | Link |
---|---|
US (1) | US8224861B2 (ja) |
EP (1) | EP2098965A4 (ja) |
JP (1) | JP4379894B2 (ja) |
CN (1) | CN101542485B (ja) |
TW (1) | TW200834356A (ja) |
WO (1) | WO2008065735A1 (ja) |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4527753B2 (ja) * | 2007-07-03 | 2010-08-18 | 株式会社エスグランツ | ビット列検索装置、検索方法及びプログラム |
JP4527807B2 (ja) * | 2007-09-14 | 2010-08-18 | 株式会社エスグランツ | ビット列検索装置、検索方法及びプログラム |
JP4502223B2 (ja) * | 2007-12-05 | 2010-07-14 | 株式会社エスグランツ | ビット列のマージソート装置、方法及びプログラム |
JP4498409B2 (ja) * | 2007-12-28 | 2010-07-07 | 株式会社エスグランツ | データベースのインデックスキー更新方法及びプログラム |
US7882138B1 (en) * | 2008-03-27 | 2011-02-01 | Sonoa Networks India (PVT) Ltd. | Progressive evaluation of predicate expressions in streaming XPath processor |
CN102654842B (zh) * | 2011-03-02 | 2014-07-30 | 深圳市金蝶中间件有限公司 | 一种判断流程图中是否存在循环回路的方法和装置 |
CN102184165B (zh) * | 2011-04-22 | 2013-01-02 | 烽火通信科技股份有限公司 | 一种节省内存的lcs算法 |
US8818971B1 (en) * | 2012-01-30 | 2014-08-26 | Google Inc. | Processing bulk deletions in distributed databases |
CN102750328B (zh) * | 2012-05-29 | 2018-08-10 | 北京城市网邻信息技术有限公司 | 一种数据结构的构造和存储方法 |
US9501506B1 (en) | 2013-03-15 | 2016-11-22 | Google Inc. | Indexing system |
US9483568B1 (en) | 2013-06-05 | 2016-11-01 | Google Inc. | Indexing system |
JP2015075830A (ja) * | 2013-10-07 | 2015-04-20 | 富士通株式会社 | 並列処理管理プログラム、並列処理管理方法、及び、並列処理管理装置 |
JP5959068B2 (ja) * | 2014-02-26 | 2016-08-02 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | 接続関係の可視化を支援する装置及び方法 |
CN105913848A (zh) * | 2016-04-13 | 2016-08-31 | 乐视控股(北京)有限公司 | 一种基于最小堆的路径存储方法、系统和语音识别器 |
US10963301B2 (en) * | 2019-07-17 | 2021-03-30 | Google Llc | Scheduling operations on a computation graph |
CN115374124B (zh) * | 2022-08-29 | 2023-05-12 | 钟士平 | 基于a+树数据结构存储的数据查询方法 |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5261088A (en) * | 1990-04-26 | 1993-11-09 | International Business Machines Corporation | Managing locality in space reuse in a shadow written B-tree via interior node free space list |
JPH07210569A (ja) | 1994-01-19 | 1995-08-11 | Oki Electric Ind Co Ltd | 情報検索方法および情報検索装置 |
US6175835B1 (en) * | 1996-07-26 | 2001-01-16 | Ori Software Development, Ltd. | Layered index with a basic unbalanced partitioned index that allows a balanced structure of blocks |
US6266706B1 (en) * | 1997-09-15 | 2001-07-24 | Effnet Group Ab | Fast routing lookup system using complete prefix tree, bit vector, and pointers in a routing table for determining where to route IP datagrams |
GB9811574D0 (en) * | 1998-05-30 | 1998-07-29 | Ibm | Indexed file system and a method and a mechanism for accessing data records from such a system |
US6438562B1 (en) * | 1999-08-24 | 2002-08-20 | Oracle Corporation | Parallel index maintenance |
US6532476B1 (en) * | 1999-11-13 | 2003-03-11 | Precision Solutions, Inc. | Software based methodology for the storage and retrieval of diverse information |
EP1107126A2 (en) * | 1999-12-08 | 2001-06-13 | Hewlett-Packard Company, A Delaware Corporation | A fast, efficient, adaptive, hybrid tree |
US6614789B1 (en) * | 1999-12-29 | 2003-09-02 | Nasser Yazdani | Method of and apparatus for matching strings of different lengths |
US6675163B1 (en) * | 2000-04-06 | 2004-01-06 | International Business Machines Corporation | Full match (FM) search algorithm implementation for a network processor |
JP3601416B2 (ja) | 2000-06-13 | 2004-12-15 | 日本電気株式会社 | 情報検索方法及び装置 |
JP3691018B2 (ja) * | 2002-01-31 | 2005-08-31 | 日本電信電話株式会社 | 最長一致検索回路および方法およびプログラムおよび記録媒体 |
US6694323B2 (en) * | 2002-04-25 | 2004-02-17 | Sybase, Inc. | System and methodology for providing compact B-Tree |
FI118062B (fi) * | 2003-04-30 | 2007-06-15 | Nokia Corp | Pienimuistinen päätöspuu |
JP2006187872A (ja) | 2004-12-28 | 2006-07-20 | Canon Inc | インクジェット記録装置およびインクジェット記録方法 |
JP2006187827A (ja) | 2005-01-05 | 2006-07-20 | Toyo Tire & Rubber Co Ltd | 研磨パッド |
JP2006293619A (ja) | 2005-04-08 | 2006-10-26 | Toshiba Tec Corp | コンピュータ装置及びログ出力プログラム |
JP4271227B2 (ja) | 2006-10-30 | 2009-06-03 | 株式会社エスグランツ | ビット列検索装置、検索方法及びプログラム |
JP4271214B2 (ja) | 2006-07-07 | 2009-06-03 | 株式会社エスグランツ | ビット列検索装置、検索方法及びプログラム |
JP4933222B2 (ja) * | 2006-11-15 | 2012-05-16 | 株式会社日立製作所 | インデックス処理方法及び計算機システム |
-
2007
- 2007-06-27 JP JP2007169459A patent/JP4379894B2/ja not_active Expired - Fee Related
- 2007-10-19 WO PCT/JP2007/001142 patent/WO2008065735A1/ja active Application Filing
- 2007-10-19 EP EP07827921A patent/EP2098965A4/en not_active Withdrawn
- 2007-10-19 CN CN2007800440419A patent/CN101542485B/zh not_active Expired - Fee Related
- 2007-11-14 TW TW096143047A patent/TW200834356A/zh unknown
-
2009
- 2009-05-27 US US12/453,907 patent/US8224861B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
WO2008065735A1 (fr) | 2008-06-05 |
US8224861B2 (en) | 2012-07-17 |
JP2008159025A (ja) | 2008-07-10 |
TW200834356A (en) | 2008-08-16 |
EP2098965A4 (en) | 2010-04-14 |
CN101542485B (zh) | 2011-07-27 |
US20090234802A1 (en) | 2009-09-17 |
EP2098965A1 (en) | 2009-09-09 |
CN101542485A (zh) | 2009-09-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4379894B2 (ja) | カップルドノードツリーの分割/結合方法及びプログラム | |
JP4402120B2 (ja) | ビット列検索装置、検索方法及びプログラム | |
JP4271227B2 (ja) | ビット列検索装置、検索方法及びプログラム | |
JP4498409B2 (ja) | データベースのインデックスキー更新方法及びプログラム | |
JP4527753B2 (ja) | ビット列検索装置、検索方法及びプログラム | |
EP2048584B1 (en) | Bit sequence search device, search method, and program | |
JP4514771B2 (ja) | カップルドノードツリーの最長一致/最短一致検索装置、検索方法及びプログラム | |
JP4502223B2 (ja) | ビット列のマージソート装置、方法及びプログラム | |
JP5165662B2 (ja) | ビット列キー分類・分配装置、分類・分配方法及びプログラム | |
JP4439013B2 (ja) | ビット列検索方法及び検索プログラム | |
JP4545231B2 (ja) | カップルドノードツリーの分割/結合方法及びプログラム | |
JP4417431B2 (ja) | カップルドノードツリーの分割/結合方法及びプログラム | |
JP4567754B2 (ja) | ビット列検索装置、検索方法及びプログラム | |
JP4813575B2 (ja) | ビット列検索装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20080702 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20090420 |
|
A871 | Explanation of circumstances concerning accelerated examination |
Free format text: JAPANESE INTERMEDIATE CODE: A871 Effective date: 20090420 |
|
A975 | Report on accelerated examination |
Free format text: JAPANESE INTERMEDIATE CODE: A971005 Effective date: 20090526 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20090602 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20090721 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20090911 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20090911 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121002 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20151002 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20151002 Year of fee payment: 6 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313111 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20151002 Year of fee payment: 6 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
LAPS | Cancellation because of no payment of annual fees |