JP2009512099A - トライでの再始動可能なハッシュの方法及び装置 - Google Patents

トライでの再始動可能なハッシュの方法及び装置 Download PDF

Info

Publication number
JP2009512099A
JP2009512099A JP2008536855A JP2008536855A JP2009512099A JP 2009512099 A JP2009512099 A JP 2009512099A JP 2008536855 A JP2008536855 A JP 2008536855A JP 2008536855 A JP2008536855 A JP 2008536855A JP 2009512099 A JP2009512099 A JP 2009512099A
Authority
JP
Japan
Prior art keywords
hash
patricia
restartable
data sequence
value
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
JP2008536855A
Other languages
English (en)
Inventor
ロジャー デラン
Original Assignee
ライトオーダー インコーポレイテッド
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 ライトオーダー インコーポレイテッド filed Critical ライトオーダー インコーポレイテッド
Publication of JP2009512099A publication Critical patent/JP2009512099A/ja
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/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9014Indexing; Data structures therefor; Storage structures hash tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2246Trees, e.g. B+trees
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2255Hash tables

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)

Abstract

パトリシア・トライのインデックスは、非常に小さい。しかし、このインデックスは、効率的にナビゲートするのが非常に困難であり、横断エラーを生じやすい。再始動可能なハッシュ・アルゴリズムを使用して、発明的な方法及び装置が、パトリシア・トライノードでのキーハッシュの計算について検討される。本発明は、パフォーマンスを高め、かつパトリシア・トライで使用されるその他のハッシングシステムの限界を克服するので、ハッシュの長いチェーンを一緒に構成できる。これにより、介在する複数のハッシュ・セクションとマッチするキー文字列について論理的判断が可能になる。

Description

本発明は、全般的にパトリシア・トライのインデックスハッシングに関する。より詳細には、本発明は、パトリシア・トライでの再始動可能なハッシングの仕組みに関する。
パトリシア(PATRICIA: Practical Algorithm To Retrieve Information Coded In Alphanumeric)は、1968年にD.R.モリソンにより示されたトライである。パトリシアは、インデックスのコンパクトな方法としてこの業界では周知であり、かつデータ・ベース及びネットワーク技術において一般に使用されている。基本的に、パトリシアの実施の場合、子を1つしか持たないトライノードは排除される。残りのノードには、この非圧縮トライでのノードの深さを示す文字位置番号がラベルされる。
図1は、アルファベットの場合について、このようなパトリシア・トライの実施の一例を示す。保存される単語は、「greenbeans」、「greentea」、「grass」、「corn」及び「cow」である。最初の3つの単語は、後の2つの単語と第1文字目で異なる。すなわち、これら3つは、文字「g」で始まるが、他の2つは、文字「c」で始まるので、第1位置で相違する。したがって、「g」の単語と「c」の単語を分けるノードは、深さ「0」に存在する。
「g」から移動して、次に相違が見つかるのは第3位置である。これは、2つの単語「greenbeans」及び「greentea」においては、「e」であるが、単語「grass」では、「a」である。したがって、このレベルでのノードは、深さレベル「2」を示す。
左のパスを下方に移動すると、次に、第6位置で異なる文字が見つかることが判る。それは、1方の単語「greenbeans」では、「b」であるが、他方の単語「greentea」では、「t」である。したがって、ノードは、深さ「5」に存在する。
この実施での1つの問題は、キーが検索パスにより一意に指定されなくなってしまうことである。したがって、キー自体は、適切なリーフに保存させる必要がある。このアプローチの利点は、k*nのポインタしか要求されないことである(ここで「k」は、アルファベットのサイズであり、かつ「n」は、ポインタ数である)。k=2を有するアルファベットは、2つの記号(可能性としては「0」及び「1」)のみを有する2値のアルファベットであることは、当業者には容易に認識されるであろう。図2は、このようなアルファベットに対するトライの実施のサンプルである。
パトリシア・トライは、キー
Figure 2009512099
を含むリーフ
Figure 2009512099
、又はビットオフセット
Figure 2009512099
及び左サブツリー
Figure 2009512099
及び右サブツリー
Figure 2009512099
を含むノード
Figure 2009512099
の何れかである。これは、パトリシア・ツリーのノードの再帰的記述である。ノード
Figure 2009512099
から辿り着くリーフは、最初の
Figure 2009512099
ビットでは必ず一致する。パトリシア・トライの説明は、コンパクトBツリー(Bumbulis及びBowman)(データ管理に関する2002年ACM SIGMOD国際会議報告、p.533〜541)に紹介されたもので、これは、参照として、その全体が本願に組み込まれている。ここでポインタのブロックは、パトリシア・トライのアーキテクチャを使用して作成してもよく、このブロックは、データの効率よい呼び出しを可能にするポインタを有することになる。ポインタ数又はブロックのファン・アウトは、複数のパラメータに基づいて計算される可能性がある。
パトリシア・トライでは、図3に示すように、如何なるノードにもハッシングが使用されないため、その文献に記されるように、トライを通るナビゲーションは、困難かつ非効率となる可能性があり、さらには横断エラーを引き起こしやすい。別の従来技術の解決策であるサフィックス・ハッシングは、図4に示すように、サフィックス・バイトの使用を提案している。サフィックス・バイトは、パトリシア・トライのすべてのノードに直接先行する8ビットを使用する。これは、ハッシングが全くないよりは、確かにインデックス上、有利である。しかし、複雑性及び横断エラーの両方において、パフォーマンス改善は、限られている。ある典型的な例の場合、横断エラー数は、75%低減した。しかしながら、ハッシングが全くない場合のエラー数は、膨大であるので、この低減でも意義深い。
さらにもう1つの解決策は、図5に示すような、バリュー・ハッシングの使用である。バリュー・ハッシングの場合、各ノードは、チェーン全体を表すハッシュ値をパトリシア・トライのルートから受理する。このため、ノード510は、そのルート・ノードからのパス(実線)を表すハッシュ値515を受理し、ノード520は、そのルート・ノードからのパス(破線)を表す別のハッシュ値525を受理し、ノード530は、そのルート・ノードからのパス(二点鎖線)を表すハッシュ値535を受理する。各ハッシュ値515、525及び535は、固有であり、かつ独立している。このハッシュは、サフィックス・ハッシングよりも大幅に計算が高額になり、かつ、しかも、ノードがパトリシア・トライをさらに下がるにつれて複雑さが増す。しかし、バリュー・ハッシングにより、横断エラーは大幅に低減でき、可能性としては、ハッシングが全くないパトリシア・トライと比較して0.15%まで下げることができる。
米国特許出願番号10/912,872 コンパクトBツリー(A Compact B-Tree)(Bumbulis及びBowman)(データ管理に関する2002年ACM SIGMOD国際会議報告、p.533〜541)
従来技術の限界を考えると、計算を高速に行うハッシングの仕組みを提供する解決策があれば、有益であろう。また、このような計算が、前段階のハッシュ計算を活用することができれば、さらに有益であろう。また、このようなハッシングの仕組みが、検索文字列におけるギャップに対処できれば、さらにもっと有益であろう。
パトリシア・トライのインデックスは、非常に小さい。しかし、このインデックスは、効率的にナビゲートするのが非常に困難であり、横断エラーを生じやすい。再始動可能なハッシュ・アルゴリズムを使用して、発明的な方法及び装置が、パトリシア・トライノードでのキーハッシュの計算について検討される。本発明は、パフォーマンスを高め、かつパトリシア・トライで使用されるその他のハッシングシステムの限界を克服するので、ハッシュの長いチェーンを一緒に構成することを可能にする。これにより、介在する複数のハッシュ・セクションとマッチするキー文字列について論理的判断が可能になる。
従来技術の限界を克服するため、パトリシア・トライ又はキーをインデックスする他のスパースツリー、特にレイヤード・パトリシア、のインデックスをサポートするハッシングの仕組みを導入することにより、横断エラーの頻度が低減する。
さらには、検索文字列中のギャップ、すなわち、未知値、をサポートできる再始動可能なハッシングの仕組みが、導入される。また、キーハッシュの高速計算を提供する再始動可能なハッシングを使用する手段も、開示される。再始動可能なハッシングを使用するハッシュのキャッシング方法も、示される。さらには、新規性のあるセグメント化されたキー・ハッシング手法も、開示される。レイヤード・パトリシアの詳細な説明は、本出願人に譲渡された米国特許出願番号10/912,872、発明の名称「カスケード・インデックス法及びその装置」"A Cascading Index Method and Apparatus"により提供されるが、これは、参照として、その全体が本願に組み込まれている。
図6は、代表例であり、かつこれに限定されない、再始動可能なハッシングの仕組みを使用するパトリシア・トライである。ハッシング構造、すなわち、ノード起点に戻ることは、図5のものと同様であるが、重要な相違点は、実際のハッシングの仕組み自体に存在する。詳細には、図5及び図6のトライが、瓜二つであるとしても、それぞれのハッシュ値、例えば、ハッシュ値615が、値515とは異なり、かつ同様に、ハッシュ値635が、ハッシュ値535とは異なる。しかし、ハッシュ値615、625及び635は、それぞれがルート・ノードからノード610、620及び630への特定のパスに対応する。このハッシング関数の特質を図7に示し、ここでは、ハッシュ値625をノード620とノード630間で計算されるハッシュ値720とともに使用することにより、ノード630にハッシュ値635を生成する能力があることを実演している。したがって、ルート・ノードからハッシュ全体を計算する必要がない。そのため、本発明の実施例は、トライのハッシュ値計算を大幅に簡略化する。より詳細には、非常に長いインデックス文字列から、ハッシュ値を計算する必要性を回避する。代表例ではあるが、これに限定されないハッシュとしては、例えば、あるノード、ノード730に先行するノード数を数える単純な8ビット若しくはモジュロ256、又はあるノードに先行するバイトと部分バイトのXOR若しくは和でもよい。提案される再始動可能なハッシングのアルゴリズムのより詳細な検討は、以下に説明される。
各ノードに対するハッシュ計算の速度化を提供するのに加えて、本発明は、たとえギャップがあるとしても、ある文字列が検索文字列とマッチするかどうかを正確に予測する能力も提供する。検索文字列として次の例を考察する。
????????????????????00110
この場合、例えば、「1」又は「0」の何れにもマッチすることができる20個の「?」マークがあり、この後には、「00110」が続く。すなわち、このクエリでは、最初の20ビット(ビット0〜19)のマッチは問わずに、位置20〜24の「00110」がマッチするものはすべて、マッチと考える。ハッシングは、使用されるすべてのビットに依存するため、再始動不可能なハッシングの仕組みでは、通常、役に立たない答えになってしまう。
これとは対照的に、本発明で開示される再始動可能なハッシングは、有効な情報を提供する。すなわち、本発明で開示される再始動可能なハッシングの仕組みの利点は、ハッシュの中に包まれたキー文字列の一部を評価することである。これは、キー文字列のプレフィックスを知らなくても完了できる。
上記の例に戻り、文字列「00110」が、シーケンス732として記されるノード730からノード740に導く文字列であるかどうかを確認したい場合がある。再始動可能なハッシングの仕組みを使用して、ノード740の期待ハッシュが、ノード730の値、ノード730のハッシュ、ノード740の値及び文字列「00110」を使用して計算できる。これは、ノード740の期待ハッシュを生成し、この期待ハッシュをハッシュ735の実際値と比較することを可能にする。計算されたハッシュが、735のハッシュとマッチする場合、インデックスでマッチする確率は高い。計算されたハッシュが、735でのハッシュとマッチしない場合、マッチは存在しない。本発明者により実施されたシミュレーションは、横断エラーの大幅な低下を示す。そのため、システムの全体的なパフォーマンスが、改善される。実際に、そのパフォーマンスは、ハッシング計算を大幅に低減し、しかもキー・ハッシングのものに匹敵することがシミュレーションにより示され、さらには、上記のようなギャップ又は部分マッチ検索を提供する。図8は、代表例であり、かつこれに限定されないパフォーマンス比較を示す。
さらに、当業者には、再始動可能なハッシング関数の本特性が構成可能であることが、分かるであろう。したがって、ハッシュの長いチェーンを一緒に構成して、介在する複数のハッシュ・セクションとマッチするキー文字列について論理的判断をすることが可能になる。これは、以下のように記述することができる。
Figure 2009512099
図9は、開示される本発明の代表例であり、かつこれに限定されない再始動可能なハッシングを示す。当業者は、このJava(登録商標)言語の例を、あらゆるコンピュータ言語、ファームウェア、ハードウェア又はこれらを組み合わせたものに変換して、開示される本発明の範囲から逸脱することなく、実施することが可能であろう。ハッシュを再始動するには、先頭ビット文字列のハッシュ・コードが、アルゴリズムに再び差し込まれ、かつ末尾ビット文字列のビットが、そのポイントから注入される。これにより、先頭及び末尾のビット文字列を一度にハッシュして計算されるであろう値と同じハッシュ値が、取得し直される。このため、本発明で開示される再始動可能なハッシュは、如何なるポイントでも、ハッシュ・コードの値に全体の状態が含まれている特性を有する。
開示される本発明を明確にし、かつ一般性を高める目的で、図10は、代表例であり、かつこれに限定されない再始動可能なハッシングのフローチャートを示す。本発明では、Java(登録商標)言語での実施が、示されているが、別のプログラミング言語を使用したものが、本発明の開示から逸脱するものと考えるべきでなく、かつこのようなプログラムが、本発明の範囲内にあることは、当業者には認識されるであろう。
再始動可能なハッシュは、いくつかの文字列内ノード(及びそれらのサブトライ)、すなわち、その位置が相対キー文字列の中にあるノード、をスキップすることを可能にする。左端の文字列内ノードはチェック出来ないが、右側(より大きな位置)のものはスキップしてよい。このアルゴリズムは、左端の文字列内ノードの前の相対キー文字列ビットを無視するが、これらのビットが反復キーとマッチするものと仮定する。そして、ハッシュ・アルゴリズムは、この左端ノードのハッシュ・コードを使用して再始動され、その位置から右方向の相対文字列からのビットが注入される。この注入が、相対キー文字列を介して進行するので、ハッシュ・コードは、ノードが通過した場合にアルゴリズムから抽出することが出来、かつ抽出されたハッシュ・コードは、この通過したノードのハッシュ・コードと比較することができる。ノードのハッシュ・コードとアルゴリズムのハッシュ・コードとの間に相違がある場合、マッチは「誤」を返す。そうでない場合、パスは、マッチする可能性があり、「正」を返す。
再始動可能性に関してさらに新規性のある使用は、キーハッシュ・コードのキャッシングにある。単調に位置を増加させる局部的なパターンを有するハッシュの計算は、低減させることができる。ハッシュのキャッシュを保存するための、好適ではあるが、これに限定されない方法は、キー文字列自体にある。図11が、代表例でありかつこれに限定されないフローチャート1100を示す。現在の位置及び現在のハッシュ・コードは、維持される。現在の位置が前回の位置より大きい場合には常に、前回のハッシュ・コードを使用して、その位置でハッシングを再始動し、かつそれを新しい位置に前進させる。次いで、新しい位置が、キャッシュされたハッシュ及び位置としての新しいハッシュ・コードと共に保存される。操作の結果として、この新しいハッシュ・コードは、そのキャッシングが使用されなかったものとして、返される。より詳細には、ステップS1110において、データ・シーケンス及び位置が受理される。ステップS1120では、再始動可能なハッシュが、前回のハッシュ、前回の位置、受理されたデータ・シーケンス及び受理された位置に基づいて計算される。ステップS1130では、S1120で計算された再始動可能なハッシュ値が、返される。ステップS1140及びS1150において、前回の位置は、受理された位置で置き換えられ、かつ前回のハッシュは、計算された新しいハッシュにより置き換えられる。
位置を増加させるパターンは、ノードにキーハッシュを含むトライでのほとんどの操作の検索局面では、非常に一般的であり、かつ多くの場合、位置の増加は、非常に小さいので、それに応じて計算時間の低減も、大きくなる。各ノードが、下方横断中に検査される場合、別のハッシュ計算を実行しなければならないことは、一般的である。トライが二値である、好適な実施例の場合、ノードが50以上にまでなるトライの深さは、珍しくない。そのため、計算スピードを増大させることは、非常に重要である。トライが、各ノードで、可能性のある小さな組合せのラベルを有する場合、より多くのノードが存在するので、その計算時間は、さらに重要となる。
トライのノードでの再始動可能又はその他のハッシュへのさらに新規性のある改善は、セグメンテーションである。この仕組みの場合、キーは、セグメントに分割され、そのセグメント内でハッシュ・コードが計算されるので、如何なる位置のハッシュ・コードも、直前のセグメント終了後のキーでのデータにしか依存しない。本方法のこれに限定されない例が、図9A及び9Bに示される。ここには、代表例であり、かつこれに限定されないJava(登録商標)コードが、示される。ハッシュ・コードをこのようなセグメントに分割することは、再始動可能なハッシングのみならず、あらゆるタイプのトライで使用されるハッシングにも適用可能であり、かつこの手法は、如何なるプログラミング言語を使用しても容易に適用できることは、当業者には認識されるであろう。このようなアプローチの利点には、ハッシュ計算時間の低減、及びキーの既知の部分が生じるセグメントが始まる前に生じるギャップで、パターンマッチを実行する能力が含まれる。実施の代表例は、再始動可能性とセグメンテーションを組み合わせているが、セグメンテーションは、再始動可能性なしで使用することも可能である。
開示される本発明の教示内容を活用する目的で、本発明を、データ・ベース・システム、より詳細には、データ・ベース・ファイル管理システムの一部として統合してもよいことは、当業者には、直ちに理解されるであろう。さらに、本発明の教示内容は、複数の命令が含まれるコンピュータソフトウェア製品に実装してもよい。これらの命令が実行されると、本発明の教示内容が実行される結果が得られる。
本発明は、好適な実施例を参照して説明されたが、本発明の精神と範囲から逸脱することなく、他のアプリケーションも、本発明で開示されるものに代えて用いることができることは、当業者には直ちに理解されるであろう。したがって、本発明は、添付の請求の範囲によってのみ制限されるべきである。
アルファベットの場合についてのパトリシア・トライの代表例である(従来技術)。 数値の場合についてのパトリシア・トライの代表例である(従来技術)。 インデックスハッシュを使用しないパトリシア・トライの代表例である(従来技術)。 サフィックス・バイトを使用するパトリシア・トライの代表例である(従来技術)。 キー・ハッシングを使用するパトリシア・トライの代表例である(従来技術)。 再始動可能なハッシングを使用するパトリシア・トライの代表例である。 再始動可能なハッシングの利点を実演するパトリシア・トライの代表例である。 再始動可能なハッシングの仕組みと従来技術の解決策とのパフォーマンスの比較例である。 及び 再始動可能なハッシュ関数についてのJava(登録商標)コードの代表例である。 再始動可能なハッシュ関数のフローチャートの代表例である。 ハッシュ・コードをキャッシュするフローチャートの代表例である。
符号の説明
510、520、530、610、620、630 ノード
515、525、535、615、625、635、720 ハッシュ値
S1110、S1120、S1130、S1140、S1150 ステップ

Claims (26)

  1. コンピュータで読み取り可能なメディア上でパトリシア構造に並んだ複数のノードと、
    当該パトリシア構造のノードに関連したハッシュ値と、を備えるトライであって、
    当該ハッシュ値が、
    開始ハッシュ値と、
    当該パトリシア構造での開始位置と、
    当該開始位置から当該ノードまでのデータ・シーケンスと、
    当該パトリシア構造内での当該ノードの位置と、
    から導出される値を有する再始動可能なハッシュ値を備える、トライ。
  2. 当該複数のノードが、少なくとも1つのノードを備え、その1つのノードが、少なくとも2つのセグメントを有するキーを備える、請求項1に記載のトライ。
  3. 当該再始動可能なハッシュ値の前記生成を可能にするための予め計算されているハッシュ値をさらに備える、請求項1に記載のトライ。
  4. 当該パトリシア構造が、
    パトリシア・トライ、パトリシア・トライを組み込んだブロック・インデックス、及びレイヤード・パトリシア・トライ、のうちの1つを備える、請求項4に記載のトライ。
  5. 請求項1に記載のトライを備える、メモリー。
  6. 少なくともトライを1つ有するデータ・ベース・ファイル管理システムにおける記憶メディアであって、
    当該トライが、パトリシア構造に並んだ複数のノードと、当該パトリシア構造のノードに関連したハッシュ値とを備え、
    当該ハッシュ値が、再始動可能なハッシュ値を備え、
    当該再始動可能なハッシュ値が、
    開始ハッシュ値と、
    当該パトリシア構造での開始位置と、
    当該開始位置から当該ノードまでのデータ・シーケンスと、
    当該パトリシア構造内での当該ノードの位置と、
    から導出される値を備える、記憶メディア。
  7. 当該複数のノードが、少なくとも1つのノードを備え、その1つのノードが、少なくとも2つのセグメントを有するキーを備える、請求項6に記載の記憶メディア。
  8. 当該再始動可能なハッシュ値の生成を可能にするための予め計算されているハッシュ値をさらに備える、請求項6に記載の記憶メディア。
  9. 当該パトリシア構造が、
    パトリシア・トライ、パトリシア・トライを組み込んだブロック・インデックス、及びレイヤード・パトリシア・トライ、のうちの1つを備える、請求項8に記載の記憶メディア。
  10. パトリシア構造に並んだ複数のノードと、
    再始動可能なハッシュ値を少なくとも1つ発生するための手段であって、
    当該再始動可能なハッシュ値が、当該複数のノードの少なくとも1つのキ
    ーから導出される値を備え、
    当該再始動可能なハッシュ値が、始動ハッシュ値と、当該パトリシア構造
    における始動位置と、当該始動ポイントから当該ノードへのデータ・シー
    クエンスと、当該パトリシア構造内の当該ノードの位置とから導出された
    値を備える、
    手段と、
    当該ハッシュ値を当該複数のノードの1つと関連させるための手段と、
    を備える、トライのインデックス・システム。
  11. 当該キーが2つ以上のセグメントに分割される、請求項10に記載のシステム。
  12. パトリシア構造のための再始動可能なハッシュを計算するための方法であって、
    開始ハッシュ、開始位置、データ・シーケンス及び終了位置を受理するステップと、
    全体ハッシュを計算するステップであって、当該全体ハッシュが、当該開始ハッシュと、当該開始位置で開始しかつ当該終了位置で終了する当該データ・シーケンスのセグメントとの関数であり、当該全体ハッシュは、第1ハッシュ及び第2ハッシュを計算することにより取得される計算されたハッシュに等しく、当該第1ハッシュは、当該開始位置と、当該データ・シーケンスと、中間位置との入力を有して、かつ中間ハッシュを結果とし、当該第2ハッシュは、当該中間ハッシュと、中間位置と、当該データ・シーケンスと、当該終了位置との入力を有し、当該第1ハッシュ及び当該第2ハッシュの前記組み合わせが、当該全体ハッシュに等しい、計算ステップと、
    当該パトリシア構造のための当該全体ハッシュを返すステップと、
    を備える方法。
  13. 現在の値を初期値に初期化するステップと、
    新しい現在の値を生み出すために、当該現在の値を、当該開始位置と当該終了位置との間の当該データ・シーケンスの要素と組み合わせるステップと、
    新しい現在の値を生み出すために、当該現在の値を、当該開始位置と当該終了位置との間の当該データ・シーケンスの第2要素と組み合わせるステップと、
    当該新しい現在の値を当該パトリシア構造のための当該全体ハッシュとして返すステップと、
    をさらに備える、請求項12に記載の方法。
  14. 当該データ・シーケンスが、インデックスにおけるキーである、請求項13に記載の方法。
  15. パトリシア構造のための再始動可能なハッシュを計算するための命令シーケンスを含むコンピュータソフトウェア製品であって、
    前記命令シーケンスが、
    開始ハッシュ、開始位置、データ・シーケンス及び終了位置を受理するステップと、
    全体ハッシュを計算するステップであって、当該全体ハッシュが、当該開始ハッシュと、当該開始位置で開始しかつ当該終了位置で終了する当該データ・シーケンスのセグメントとの関数であり、当該全体ハッシュは、第1ハッシュ及び第2ハッシュを計算することにより取得される計算されたハッシュに等しく、当該第1ハッシュは、当該開始位置と、当該データ・シーケンスと、中間位置との入力を有して、かつ中間ハッシュを結果とし、当該第2ハッシュは、当該中間ハッシュと、中間位置と、当該データ・シーケンスと、当該終了位置との入力を有し、当該第1ハッシュ及び当該第2ハッシュの前記組み合わせが、当該全体ハッシュに等しい、計算ステップと、
    当該パトリシア構造のための当該全体ハッシュを返すステップと、
    を備える方法、をさらに備える、コンピュータソフトウェア製品。
  16. 当該方法が、さらに、
    現在の値を初期値に初期化するステップと、
    新しい現在の値を生み出すために、当該現在の値を、当該開始位置と当該終了位置との間の当該データ・シーケンスの要素と組み合わせるステップと、
    新しい現在の値を生み出すために、当該現在の値を、当該開始位置と当該終了位置との間の当該データ・シーケンスの第2要素と組み合わせるステップと、
    当該新しい現在の値を当該パトリシア構造のための当該全体ハッシュとして返すステップと、
    を備える、請求項15に記載のコンピュータソフトウェア製品。
  17. 当該データ・シーケンスが、インデックスにおけるキーである、請求項16に記載のコンピュータソフトウェア製品。
  18. パトリシア構造のための再始動可能なハッシュ・コードをキャッシュするための方法であって、
    データ・シーケンス及び位置を受理するステップと、
    保存された前回のハッシュ、保存された前回の位置、当該データ・シーケンス及び当該位置に少なくとも基づいて再始動可能なハッシュを計算するステップと、
    当該位置を当該前回の位置として保存するステップと、
    当該再始動可能なハッシュを当該前回のハッシュとして保存するステップと、
    当該ハッシュを結果として返すステップと、
    を備える方法。
  19. 請求項18に記載の方法により生成された再始動可能なハッシュ・コードを含む、メモリー。
  20. パトリシア構造として組織された複数のノードを含むメモリーであって、少なくとも1つのノードが関連したハッシュ・コードを有し、請求項24に記載の方法により再始動可能なハッシュ・コードが生成される、メモリー。
  21. パトリシア構造のための再始動可能なハッシュ・コードをキャッシュするための命令シーケンスを含むコンピュータソフトウェア製品であって、
    前記命令シーケンスが、
    データ・シーケンス及び位置を受理するステップと、
    少なくとも、保存された前回のハッシュ、保存された前回の位置、当該データ・シーケンス及び当該位置に基づいて再始動可能なハッシュを計算するステップと、
    当該位置を当該前回の位置として保存するステップと、
    当該再始動可能なハッシュを当該前回のハッシュとして保存するステップと、
    当該ハッシュを結果として返すステップと、
    を備える方法をさらに備える、コンピュータソフトウェア製品。
  22. 所定位置で、トライでのキーについてハッシュ・コードを計算するための方法であって、
    データ・シーケンス及び位置を受理するステップと、
    固定位置で開始しかつ当該位置で終了する当該データ・シーケンスのハッシュ・コードを計算するステップと、
    当該計算されたハッシュ・コードを返すステップと、
    を備え、
    当該トライが、パトリシア、レイヤード・パトリシア、及びブロック・インデックストライ、のうちの1つを備える、方法。
  23. 請求項25に記載の方法により生成されたキーについてのハッシュ・コードを含む、メモリー。
  24. パトリシア構造として組織された複数のノードを含むメモリーであて、少なくとも1つのノードがキーについて関連したハッシュ・コードを有し、 請求項22に記載の方法により前記キーについて前記ハッシュ・コードが生成される、メモリー。
  25. 所定位置で、トライでのキーについてハッシュ・コードを計算するための命令シーケンスを含むコンピュータソフトウェア製品であって、
    前記命令シーケンスが、
    データ・シーケンス及び位置を受理するステップと、
    固定位置で開始しかつ当該位置で終了する当該データ・シーケンスのハッシュ・コードを計算するステップと、
    当該計算されたハッシュ・コードを返すステップと、
    を備える方法、をさらに備え、
    当該トライが、パトリシア、レイヤード・パトリシア、及びブロック・インデックストライ、のうちの1つを備える、コンピュータソフトウェア製品。
  26. パトリシア構造において、トライでのキーについて再始動可能なハッシュ・コードを計算するための方法であって、
    当該キーを、当該再始動可能なハッシュ・コードが計算されるセグメントに分割するステップを備え、
    如何なる位置の当該再始動可能なハッシュ・コードも、直前のセグメント終了後の当該キー内でのデータにのみ依存する、方法。
JP2008536855A 2005-10-18 2006-10-18 トライでの再始動可能なハッシュの方法及び装置 Pending JP2009512099A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/253,774 US20060036627A1 (en) 2004-08-06 2005-10-18 Method and apparatus for a restartable hash in a trie
PCT/US2006/041199 WO2007048015A2 (en) 2005-10-18 2006-10-18 Method and apparatus for a restartable hash in a trie

Publications (1)

Publication Number Publication Date
JP2009512099A true JP2009512099A (ja) 2009-03-19

Family

ID=37963363

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008536855A Pending JP2009512099A (ja) 2005-10-18 2006-10-18 トライでの再始動可能なハッシュの方法及び装置

Country Status (4)

Country Link
US (1) US20060036627A1 (ja)
EP (1) EP1941347A4 (ja)
JP (1) JP2009512099A (ja)
WO (1) WO2007048015A2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012230493A (ja) * 2011-04-25 2012-11-22 Toshiba Corp 検索装置、検索方法およびプログラム

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102725737B (zh) * 2009-12-04 2016-04-20 密码研究公司 可验证防泄漏的加密和解密
WO2011109996A1 (zh) 2010-08-19 2011-09-15 华为技术有限公司 一种哈希表存储方法、查找方法及其装置
US9152661B1 (en) * 2011-10-21 2015-10-06 Applied Micro Circuits Corporation System and method for searching a data structure
WO2013061680A1 (ja) * 2011-10-26 2013-05-02 インターナショナル・ビジネス・マシーンズ・コーポレーション 情報処理装置、データ・アクセス方法およびプログラム
US10417209B1 (en) * 2013-03-14 2019-09-17 Roger Lawrence Deran Concurrent index using copy on write
CN107291785A (zh) 2016-04-12 2017-10-24 滴滴(中国)科技有限公司 一种数据查找方法及装置
US10841097B2 (en) * 2016-07-08 2020-11-17 Mastercard International Incorporated Method and system for verification of identity attribute information
GB2562079B (en) * 2017-05-04 2021-02-10 Arm Ip Ltd Continuous hash verification
CN108874880B (zh) * 2018-05-04 2021-11-23 昆明理工大学 一种基于Trie的空间关键词查询方法及装置
CN108846013B (zh) * 2018-05-04 2021-11-23 昆明理工大学 一种基于geohash与Patricia Trie的空间关键词查询方法及装置
CN109768853A (zh) * 2018-12-29 2019-05-17 百富计算机技术(深圳)有限公司 一种密钥组分验证方法、装置及终端设备
KR102648501B1 (ko) * 2020-12-16 2024-03-19 한국전자통신연구원 네트워크 환경 동기화 장치 및 방법

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030204513A1 (en) * 2002-04-25 2003-10-30 Sybase, Inc. System and methodology for providing compact B-Tree

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5058144A (en) * 1988-04-29 1991-10-15 Xerox Corporation Search tree data structure encoding for textual substitution data compression systems
US5799311A (en) * 1996-05-08 1998-08-25 International Business Machines Corporation Method and system for generating a decision-tree classifier independent of system memory size
US5911144A (en) * 1997-04-23 1999-06-08 Sun Microsystems, Inc. Method and apparatus for optimizing the assignment of hash values to nodes residing in a garbage collected heap
US6041053A (en) * 1997-09-18 2000-03-21 Microsfot Corporation Technique for efficiently classifying packets using a trie-indexed hierarchy forest that accommodates wildcards
US6675173B1 (en) * 1998-01-22 2004-01-06 Ori Software Development Ltd. Database apparatus
US6226743B1 (en) * 1998-01-22 2001-05-01 Yeda Research And Development Co., Ltd. Method for authentication item
US6047283A (en) * 1998-02-26 2000-04-04 Sap Aktiengesellschaft Fast string searching and indexing using a search tree having a plurality of linked nodes
JP3930138B2 (ja) * 1998-02-27 2007-06-13 株式会社東芝 情報解析方法および情報解析プログラムを記憶した媒体
US6122644A (en) * 1998-07-01 2000-09-19 Microsoft Corporation System for halloween protection in a database system
US6279007B1 (en) * 1998-11-30 2001-08-21 Microsoft Corporation Architecture for managing query friendly hierarchical values
US6449613B1 (en) * 1999-12-23 2002-09-10 Bull Hn Information Systems Inc. Method and data processing system for hashing database record keys in a discontinuous hash table
EP1143658A1 (en) * 2000-04-03 2001-10-10 Canal+ Technologies Société Anonyme Authentication of data transmitted in a digital transmission system
US6804677B2 (en) * 2001-02-26 2004-10-12 Ori Software Development Ltd. Encoding semi-structured data for efficient search and browsing
US7167471B2 (en) * 2001-08-28 2007-01-23 International Business Machines Corporation Network processor with single interface supporting tree search engine and CAM
US20030084031A1 (en) * 2001-10-31 2003-05-01 Tarquini Richard P. System and method for searching a signature set for a target signature
US6640294B2 (en) * 2001-12-27 2003-10-28 Storage Technology Corporation Data integrity check method using cumulative hash function
US20040133590A1 (en) * 2002-08-08 2004-07-08 Henderson Alex E. Tree data structure with range-specifying keys and associated methods and apparatuses

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030204513A1 (en) * 2002-04-25 2003-10-30 Sybase, Inc. System and methodology for providing compact B-Tree

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012230493A (ja) * 2011-04-25 2012-11-22 Toshiba Corp 検索装置、検索方法およびプログラム

Also Published As

Publication number Publication date
EP1941347A4 (en) 2010-02-17
WO2007048015A3 (en) 2008-07-24
WO2007048015A2 (en) 2007-04-26
US20060036627A1 (en) 2006-02-16
WO2007048015B1 (en) 2008-09-12
EP1941347A2 (en) 2008-07-09

Similar Documents

Publication Publication Date Title
JP2009512099A (ja) トライでの再始動可能なハッシュの方法及び装置
JP4805315B2 (ja) データ構造によるコンピュータ表現及びそれに関連する符号化/復号化方法
US9407287B2 (en) Parallel history search and encoding for dictionary-based compression
US8554561B2 (en) Efficient indexing of documents with similar content
US8095526B2 (en) Efficient retrieval of variable-length character string data
US7756847B2 (en) Method and arrangement for searching for strings
KR20130062889A (ko) 데이터 압축 방법 및 시스템
EP3072076B1 (en) A method of generating a reference index data structure and method for finding a position of a data pattern in a reference data structure
JPH07297728A (ja) パターン一致を探索するための方法およびシステム
US20050187898A1 (en) Data Lookup architecture
Kempa et al. Dynamic suffix array with polylogarithmic queries and updates
CN111984732B (zh) 在区块链上实现去中心化检索的方法、节点及区块链网络
US11736119B2 (en) Semi-sorting compression with encoding and decoding tables
CN110795617A (zh) 一种搜索词的纠错方法及相关装置
CN112416431B (zh) 一种基于编码序列表示的源代码片段成对比较方法
CN114036371A (zh) 搜索词推荐方法、装置、设备和计算机可读存储介质
RU2473960C2 (ru) Способ нахождения максимальных повторяющихся участков последовательности символов конечного алфавита и способ вычисления вспомогательного массива
JPH09245045A (ja) 鍵検索方法および装置
KR101080898B1 (ko) 문자열 색인 방법 및 장치
JPH1097542A (ja) 全文検索装置及び全文検索方法

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20100927

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20101005

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20110426