JP2000517086A - オフセット表を使用する完全ハッシュの生成 - Google Patents

オフセット表を使用する完全ハッシュの生成

Info

Publication number
JP2000517086A
JP2000517086A JP11502955A JP50295599A JP2000517086A JP 2000517086 A JP2000517086 A JP 2000517086A JP 11502955 A JP11502955 A JP 11502955A JP 50295599 A JP50295599 A JP 50295599A JP 2000517086 A JP2000517086 A JP 2000517086A
Authority
JP
Japan
Prior art keywords
page
range
value
values
pages
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.)
Granted
Application number
JP11502955A
Other languages
English (en)
Other versions
JP2000517086A5 (ja
JP4965009B2 (ja
Inventor
ベネット,ジョン,アール.
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.)
Microsoft Corp
Original Assignee
Microsoft Corp
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 Microsoft Corp filed Critical Microsoft Corp
Publication of JP2000517086A publication Critical patent/JP2000517086A/ja
Publication of JP2000517086A5 publication Critical patent/JP2000517086A5/ja
Application granted granted Critical
Publication of JP4965009B2 publication Critical patent/JP4965009B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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

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)

Abstract

(57)【要約】 選択されたユニコード符号点のような大きい範囲の値の不連続部分集合を、完全ハッシュを用いて、連続またはほぼ連続したより小さい範囲に変換する方法および機構を提供する。大きい範囲をページとそのページ内へのオフセットの二次元ビットマップ行列(38)に編成する。値が部分集合に含まれるならば、行列内のビットは1になり、含まれなければ0になる。次に、各ページを他のページの値との衝突を避けるために必要に応じてシフトすることによって、ページを次々に一次元ビットマップ(40)にオーバレイする。シフト量を記録し、ハッシュ計算に使用する。ここで、大きい範囲の値を最初にページ番号とそのページ内へのオフセットに分離する。次に、そのページのシフト量を探索し、シフト量をページ内へのオフセットに加算することによって、大きい範囲の値を密な部分集合範囲の値にハッシュ化する。

Description

【発明の詳細な説明】 オフセット表を使用する完全ハッシュの生成 発明の分野 本発明は、一般的にコンピュータシステムの記憶装置に関し、さらに詳しくは 、表に対応づけられるデータを格納するための改良された方法およびシステムに 関する。 発明の背景 大きさ64キロバイトで16ビットのキーにより索引付けされる表のようなエ ントリの大きい表は、特定の用途によってサポートされる不連続エントリの比較 的小さい部分集合を含むことができる。例えば、ユニコードは、16ビットの符 号化単位を基礎にする世界的な文字符号化標準である。特定の言語で使用される 符号点しかサポートしないユニコード構成製品では、その言語の符号点のより小 さい不連続部分集合が使用される。例を挙げると、日本語の場合、製品は、通常 日本工業規格(JIS)コードを使用しており、ユニコードによってサポートさ れる64キロバイトの可能な記号のうち、約6,000個の記号しか使用されな い。この6000個ほどの記号は、ユニコードの範囲全体の様々な位置に広く分 散され、残りの符号点は、その製品にとって無意味である。 より少数の文字属性または類似物をフルサイズ64キロバイトの表に格納する と、多くの未使用のエントリ値が残る。この格納方法は、ユニコード値をキーと して使用して簡単な索引付け作業を可能にし、したがって、格納された情報を検 索する最高速の方法であるが、表は、属性のサイズの64000倍であり、空間 の多くが無駄になる。多くのシステムや用途では、高速検索速度は、この方法を 実現するために要求されるメモリの量に値せず、したがって他の格納方法が試み られてきた。 フルサイズのエントリ表に代わるものとして、二分探索を使用する方法がある 。そのような二分表ではスロットの無駄が無いが、各エントリと共にキーを格納 し なければならず、関心対象のエントリを格納するために使用する空間の量は増大 する。さらに、表の大きさをNとした場合、探索を実行するためにO(log( N))の演算を行い、したがって平均すると、他の格納方法に比べて比較的遅い 検索になる。 ハッシュ表を使用して、符号点から計算したハッシュ値によって索引付けされ る属性を格納することもできる。ハッシュ表の1つの型として、衝突解消付きの ハッシュ表がある。この型のハッシュ表は、通常各エントリと共にキーを格納す ることによって達成される、衝突を処理するための情報を格納しなければならな い。衝突の有無を試験するために余分な時間を必要とし、また衝突が検知された ときに衝突を解消するためにさらに多くの時間を必要とする。最後に、この型の ハッシュ表は、一般的にしばしば、多数の余分な未使用のエントリで終わってし まう。つまり、表は必ずしも密にパックされるとは限らない。 最後に、完全ハッシュアルゴリズム(衝突が無い)は、メモリの使用と速度の 間の優れた調和をもたらすことができるので、多くの用途で望ましい性能を達成 する。さらに、完全ハッシュアルゴリズムでは、エントリと共にキーを格納しな いので空間が節約される。しかし、完全ハッシングでは、一般的に余分な未使用 のエントリが存在するので空間が無駄になる。また、検索時間は各探索作業にお ける重要な要素であるので、ハッシュ値を計算するために必要な費用(例えば処 理時間の量)にも重要な考慮を払わなければならない。さらに、比較的大きい範 囲の値の1つの部分集合のハッシングにうまく働いたものが、別の部分集合では うまく働かない。したがって、完全ハッシュアルゴリズムの大きな問題は、一般 的に、共に非常に高速である値の任意の部分集合の完全ハッシュを見つけ、およ びハッシュ値を一緒に密にパックするための優れた迅速な首尾一貫した方法が存 在しないことである。 発明の目的および概要 したがって、本発明の一般的目的は、大きい範囲の不連続値の任意の部分集合 に関する完全ハッシュを生成する方法および機構(装置)を提供することにある 。 さらに別の目的は、ハッシュ値を密にパックする、上述の特徴を持つ方法およ び機構を提供することにある。 別の目的は、ハッシュ値の非常に高速な計算を実行できる上述の種類の方法お よび機構を提供することにある。 関連目的は、自動的に作動する方法および機構を提供することにある。 これらの目的を達成する上での別の関連目的は、不連続ユニコード符号点の部 分集合でうまく機能する、上述の特徴を持つ方法および機構を提供することにあ る。 さらに別の目的は、高速であり、信頼でき、費用効果が高く、柔軟性があり、 様々な用途に拡張可能な上述の方法および機構を提供することにある。 簡単に言うと、本発明は、大きい範囲の値の不連続部分集合を、完全ハッシュ による連続したまたは大部分が連続したより小さい範囲に変換するための方法お よび機構を提供するものである。値の部分集合は、範囲内の値の中から選択され 、範囲は二次元行列に編成される。行列の1つの次元は、ページを表し、別の次 元はページ内へのオフセットを表す。行列は、ページとページ内へのオフセット との各交叉位置に、その交叉位置によって表される値が部分集合の選択値である か否かを示すビットなどの写像情報を含む。例えば、部分集合に選択される場合 、ビットは1であり、選択されない場合は零である。 次に、各ページを選択し、各ページの写像情報(例えば1のビット)に一次元 配列内の写像情報との衝突が無いかを検査し、衝突が検知されなくなるまで各ペ ージをある量づつ移動(シフト)することによって、行列は一次元配列(例えば ビットマップ)に変換される。衝突が検知されなければ、ページ写像情報がシフ ト位置における一次元配列にオーバレイされ、シフト量がページオフセット表に 記録される。 不連続範囲の値を受け取ると、その値は、ページ番号とそのページ内へのオフ セットとに分割される。値はそれにより、そのページのシフト量を探索し、その ページ内へのオフセットにシフト量を加算することによって、サブセット範囲の 値にハッシュ化される。 他の目的および利点は、図面に関連して取り上げる以下の詳細な説明から明ら かになるであろう。図面の簡単な説明 図1は、本発明に従って完全ハッシュを生成するためのコンピュータシステム を表すブロック図である。 図2は、可能なエントリの表の典型例を表すブロック図である。 図3から図4は、図2の表の選択されたエントリを示す代替的方法を表すブロ ック図である。 図5から図6は、選択されたエントリに関する情報を格納するためのビットマ ップ行列を表すブロック図である。 図7から図10は、本発明の一態様に従ってビットマップ行列から一次元合成 ビットマップへページをオーバレイする過程を順次に示すブロック図である。 図11から図14は、本発明の一態様に従ってビットマップ行列のページが相 互にオーバレイされるときのページオフセット表におけるオフセット値を示す図 である。 図15から図18は、エントリ情報が充填されていくハッシュ表を表す図であ る。 図19は、本発明に従って完全ハッシュを生成するための過程を一般的に表す 流れ図である。 図20は、本発明に従って完全ハッシュを生成するためにビットマップ行列の ページをオーバレイするための過程を一般的に表す流れ図である。 図21は、本発明の一態様に従ってキーからハッシュ値を計算するためのコン ピュータシステムを表すブロック図である。 図22は、キーからハッシュ値を計算するための過程を一般的に表す流れ図で ある。 好ましい実施形態の詳細な説明 図面を参照しながら説明する。まず最初に図1であるが、本発明に従ってオフ セット表を使用して不連続値を再写像するためのコンピュータシステムが、全体 的に符号20で表されている。コンピュータシステム20は、記憶装置24に効 果的に接続されたプロセッサ22を含み、該記憶装置はランダムアクセスメモリ (RAM)と、ハードディスクドライブ、光ドライブまたは類似物などの不揮発 性記憶装置とを含む。ご理解いただけるとおり、不揮発性記憶装置28は、よく 知られたスワップ技術を介して、RAMと一緒に使用して比較的大量の仮想メモ リを形成することができる。明らかになるであろうが、本発明では、読取り専用 メモリ(ROM)または同様の不揮発性システムを使用することができる。また 、埋込みシステムは本発明から利益を得ることができる。 コンピュータシステム20はまた、ユーザコマンドをプロセッサ22に伝える ために、入出力回路機構(I/O)32を介して接続された少なくとも1つの入 力装置30、通常はキーボードおよび/またはマウスなどのユーザポインティン グ装置を含む。同様に、コンピュータディスプレイモニタおよびスピーカなど、 少なくとも1つの局所出力装置34が、グラフィカルユーザインタフェースなど を介して、プロセッサ22からシステム20のユーザへ情報を伝えるために、I /O32に接続される。 本発明の一態様では、値の大きい範囲内の不連続な位置にある値の部分集合が 与えられると、再写像プロセス36がこの部分集合を、連続した、またはほぼ連 続した、零を基底とする範囲に変換する。例えば、大きい値の範囲は、文字属性 の大きい表38に索引を付けるための0000h(16進数)から0ffffh までの範囲の索引に対応するかもしれない。例えば索引は、ユニコード符号点で ある。容易に理解できるように、表38にかなりの量の空間を割り当てる必要が ある。しかし、特定の用途にとっては、表38のエントリのうち、特定のものだ けが関心の対象である。例えば、用途またはオペレーティングシステムによって サポートされる文字に対応する符号点だけが、その用途またはオペレーティング システムにとって重要である。典型的な用途では、再写像プロセス36は、基本 的に、関心のあるエントリを取り出し、それらを、元の表のキーを受け取り、ほ とんど密なハッシュ表40に対するハッシュ値索引に変換することができる方法 で、ほとんど密なハッシュ表40に再パックする。再写像プロセスの一部として オフセットの表42が生成され、これを、以下で述べるように、元の索引値と一 緒に使用して、ほとんど密なハッシュ表40のハッシュ値が計算される。 したがって、本発明には区別される2つの態様があることに注意する必要があ る。第一態様は、大きい表38のキーなどの不連続値の部分集合をオフセット表 42へ変換することを含む。本発明の第二態様は、その後にオペレーティングシ ステム、ドライバ、アプリケーションプログラムまたは類似物がオフセット表4 2を使用して、大きい表38のキーをハッシュ値、例えばほとんど密なハッシュ 表40に対するハッシュ値索引にハッシュ化することを含む。典型的な使用法で は、ほとんど密なハッシュ表40は、ユニコード文字属性または類似物の表を提 供するために、コンピュータを使用する事実上どのような種類の装置にでもロー ドすることができる。大きいユニコード表38における位置に対応するユニコー ド符号点を受け取ると、ハッシュ表40のハッシュ値が計算され、そこから属性 が見つけ出される。 本発明の動作の説明に移ると、本発明は、65536のユニコード符号点の範 囲内における日本語の文字の部分集合にかなりの利益をもたらす。それにもかか わらず、本発明は、ユニコード符号点の部分集合に限定されず、明らかになると おり、いつでも大きい範囲のより小さい不連続部分集合を取り扱うときに、多く の潜在的用途がある。 簡素な例として、図2に16個のエントリの表38を示す。そのうち特定のエ ントリだけが、ほとんど密なハッシュ表40に再写像される。さらに詳しくは、 0000b、0001b、0010b、0110b、1000b、および111 1bによって索引付けされたエントリが、アプリケーションプログラムの関心対 象である。例えば、図3に概念的に示すように、(多少異なる配列法で)、00 00bは、図形的に文字「A」を表示するための属性を索引付けし、0001b は文字「B」を索引付けし、以下1111bが「P」を表すまで繰り返される。 これらのうち、A、B、C、G、I、およびPだけがサポートされる。容易に理 解いただけるとおり、これは一般に、可能なユニコード文字の65536個のエ ントリの表から文字(例えば日本語の文字)の不連続集合を選択することに対応 する。 変換を実行するために、ステップ800〜804で、大きい表38の索引が選 択され、行(ページ)と列のビットマップ行列に展開される。図5は、16個の エントリの表に対する4行×4列の行列44を示す。図3において、対応して関 心のあるエントリの索引は、ビットマップにおいて対応するビットが1にセット され、図5のビットマップ行列44では「X」で示される。(見易さのため、お よび索引の1および0との混同を避けるため)一方、他のビットは全て0(すな わち空白)である。64kのユニコード索引のように16ビットで索引付けされ る表の場合、初期行列は、例えば256行(8ビット)および256列(8ビッ ト)で構成することができる。したがって、行0は、0000hから00FFh の間の任意の所望のユニコード文字に対するビットが1にセットされ、行1は、 0100から01ffhまでの範囲の所望の文字に対するビットが1にセットさ れ、等々と繰り返される。 表38の索引が図5のビットマップ行列44に展開される本実施例の説明を続 けると、各行は、00bから11bまでの番号が付けられたページと考えること ができ、それによって列番号は、00bから11bのページ内へのオフセットと なる。あるいは、列をページとして使用し、行番号がページ内へのオフセットを 表すこともできる。実際、64キロバイトの可能なユニコード文字の集合の部分 集合を取り扱う場合、列をページとし、行をオフセットとして使用すると、大抵 の場合、さらにいっそう密なパッキングが得られることが明らかになっている。 しかし、以下で説明するとおり、両方の方法を試し、最良の結果(ほとんど密な パッキング)を選択することができる。 本実施例では、図6に最もよく示すとおり、図5の元の4×4の行列44は、 新しい行列45に概念的に再構成され、図5の列はページになり、(図6では水 平方向に示す)、行はページ内へのオフセットになる(図6では垂直方向に示す )。 本発明の一態様に従って、ページは一度に1枚づつ、次々に上に重ねられ(オ ーバレイ)、密な、またはほとんど密な一次元合成ビットマップ46になる。選 択された索引(ビットマップで1のビットで表される)は不連続であり、一般的 に幅広く分散しているので、幾つかのページのビットが衝突することなく、また は少なくともほとんど衝突せずにインタレースする傾向がある。索引を表すビッ トが別のビットと衝突するときはいつでも、合成ビットマップ46にオーバレイ される現在のページが、一文字分だけ右にシフトする。ページが衝突無く完全に インタレースする場合、シフト量が、ページオフセット表42にそのページのオ フ セットとして記録される。 ページが次々にオーバレイされる順序は、ページがいかによくインタレースす るか、したがってどれだけのシフトが必要になるかに影響し、これが最終的にハ ッシュ表40の大きさを決定することに注意する必要がある。したがって、最良 のパッキングを見つけ出す1つの方法は、ページ順序付けの全ての組合せを試し て、最良の結果を選択することであろう。理解いただけるように、これは極めて 高価になる(例えば、256行および256列に分割された16ビットの索引で は、256の階乗の組合せが可能である)。 ページをオーバレイする適正な順序を得るためのより安価な方法は、より多く の1ビットをそのうえに含むページが、1ビットの数がより少ないページより前 に合成ビットマップ46にオーバレイされるように、ページを順位付けすること である(つまり、最多から最少への順位付け)。この目的のために、順位付けプ ロセスがステップ806で呼び出され、様々なページにおける1ビットの数を計 数し、その計数に従ってページを順位付けする。そうした1ビット加重順位付け プロセスは、極めて密なパッキングを達成することが明らかになっている。実際 、他の最適化(以下で説明する)をこの順位付けプロセスと結合したときに、1 00%の(または100%に非常に近い)パッキングが高速で達成される。 しかし、一般的な順位付け技術にもかかわらず、ハッシュ表を開始する最初の ページが、そこの文字数に関係なく、ビットマップ行列45の最初のページとな るように選択することが好ましい。本発明に必要というわけではないが、明らか になるとおり、所望の索引として零を選択し、零としてこのページから始めるこ とにより、大きい表38の零索引が常に零に写像されることが確実になり、これ は空白で終了する文字列および類似物を取り扱うときに有用である。 図7は、図20の流れ図に対応し、Page00は零索引を含むので、ステップ 900で図6の第1ページPage00から始まるオーバレイプロセスを示す。図 7に示すように、合成一次元ビットマップ46aは、単にこのページになるだけ であり、このページのシフトは行われないので、ステップ910で零のオフセッ トがページオフセット表42に書き込まれる。第1ページの場合、この時点で衝 突はなく、零が選択されることを前提として、第1ページに先行する零はないの で、ステップ900から直接ステップ908に続くことに注意されたい。このプ ロセスが最終的に終了したときに、この特定のビットスプリットが選択された場 台、page00の各1ビットに対応する表データが、ハッシュ表40に書き込ま れる(ステップ814のように)ことに注意されたい。例えば、図15に示すよ うに、零によって索引付けられた位置に「A」属性データが書き込まれ、2によ って索引付けられた位置に「I」が書き込まれる。ステップ914は、別のペー ジを検査し、1が得られるので、ステップ900に戻り、そこで次のページpa ge10が選択される。 図8は、次のページpage10の前の合成ビットマップ46aへのオーバレイ を表し、これにより新しい合成ビットマップ46bが生成される。page10が 次にオーバレイされるのは、ステップ806の順位付けプロセスで、この行が残 りの行に比べて、1にセットされたビットが最も多い(2個)ことが決定された ためであることに注意されたい。 page10をオーバレイするために、ステップ902でpage10は、最初に 、先行する零ビットの数に等しい量だけ左にシフトされる。この位置で、衝突の 検査がステップ904で実行される。1つのそうした衝突の検査は、現行ページ (page10)のビットと前の合成ビットマップ46aのAND(論理積)を取り 、結果が零かどうかを検査することによって達成される。零になれば、衝突は無 い。零でなければ、衝突が検知され、それによりステップ906でページは、1 ビット右にシフトされ、衝突検査が繰り返される。衝突が検知されなくなるまで 、必要なだけシフト操作が続く。 本実施例では、ステップ904〜906の衝突検知および解消プロセスにより 、page10は、このページが前のビットマップ46aに結合される前に、零の 右に3位置分シフトする(図8に最もよく表す)。このページの3のオフセット が、図12に最もよく示すように、ページオフセット表42に記録される。しば らく後で(ステップ814で行われるように)、このビット分割(スプリット) が選択されたと仮定して、配列データ、例えば「C」および「G」の属性は、図 16に示すようにハッシュ表40の適切な位置に追加されることに注意されたい 。図8に示すように、合成ビットマップ46bは、今5ビットの長さであり、ハ ッシュ 表40は、少なくとも五個のエントリに割り当てられる空間を持たなければなら ないことに注意されたい。したがって、合成ビットマップ46は、ハッシュ表4 0と同様に、シフトされたビットを収容するために必要なだけ成長するが、1だ けが関心のあるエントリを表す(索引付ける)ので、後続零ビット(空白)は、 合成ビットマップ46の一部と考慮されない。ハッシュ表40の最終的大きさを 決定する合成ビットマップ46が成長する量は、値の部分集合のパッキングがど の程度密であるかによって異なる。 合成ビットマップ46にオーバレイされる次のページ(ステップ914および 900)は、page11である。page11およびpage01は各々1ビットが そこにセットされているが、この実施例では、ステップ806の順位付けプロセ スで、page11がpage01より前に配置されるように順位付けられたと仮定 していることに注意されたい。図6の行列45および図9に示すように、pag e11には3個の先行する零ビット(空白)がある。したがって、オーバレイプロ セスを試みる前に、ステップ902で、page11は、衝突を検査する前に、最 初に3回左にシフトされる。明らかなとおり、ステップ904で、この(マイナ ス3の)オフセットに衝突が存在することが決定され、したがってステップ90 6でページは1つ右にシフトされ(オフセットが増分される)、衝突試験が繰り 返される。今度はステップ904で、衝突が無いと決定され、したがってステッ プ908でpage11はマイナス2のオフセットで前の合成ビットマップ46b に結合され、新しい合成ビットマップ46c(図9)になる。ステップ910で 、このページのマイナス2のオフセットが、図13に最もよく示すように、ペー ジオフセット表42の適切な位置(位置3)に記録される。後で、ステップ81 4で行われるように、この索引に対応するデータ、例えば「P」の属性が図17 に示すように、ハッシュ表40における合成ビットマップ46cの索引位置に対 応する位置に格納されることに注意されたい。 合成ビットマップ46にオーバレイされる最後に残った1枚のページは、pa ge01である。図6の行列45および図10に示すように、page01には先行 する零ビット(空白)が無い。したがって、page01は、衝突検査の前に、ス テップ902で左にシフトされない。明らかなように、ステップ904で零オフ セットに衝突が存在し、したがってこのpageは、ステップ906で1つ右に シフトし、オフセットが増加され、ステップ904の衝突検査が繰り返される。 容易に理解できるように、ステップ904で衝突が検出され続け、page01が プラス5の位置分オフセットされるまで、ページはステップ906でシフトされ る。その結果、page01は、プラス5のオフセットで前の合成ビットマップ4 6cに結合され、新しい最終合成ビットマップ46が形成される(図10)。p age01前の合成ビットマップの大きさ全体分シフトしたことに注意されたい。 さらに詳しくは、前のビットマップ46cが100%パッキングされていたので 、page01は、前の合成ビットマップの終わりの位置からオーバレイされた。 100%パッキングを検査し、検知された場合には、ビットマップの先頭から始 めて終わりまで繰り返しシフトするのではなく、すぐに最後に次のページをオー バレイすることが可能であることに注意されたい。 ステップ910で、このページの5のオフセットが、図14に最もよく示すよ うに、ページオフセット表42に記録される。プロセスは次に図19に戻る。再 び、少し後のステップ814で、この索引に対応する属性データ、例えば「B」 の属性が、図18に示すように、合成ビットマップ46の索引位置に対応する位 置ハッシュ表40に格納されることに注意されたい。 この時点で、初期の16個のエントリの表38の6個の分散索引および対応す るデータを、4個のエントリ(例えばバイト)のページオフセット表42と共に 、0から5までの範囲の値によって索引付けされた密にパックされたハッシュ表 40に再写像することができる。このような小さい例でも、メモリの節約が顕著 になることに注目されたい。例えば、初期の16個のエントリの表38に各索引 ごとに1キロバイトが割り当てられた場合、この表は16キロバイトのメモリを 必要とする。しかし、同じデータを6キロバイトのハッシュ表+ページオフセッ ト表のための4個の格納単位(例えば語またはバイト)に保存することができる 。実際、以下で説明するように、初期の大きい表38に対するキーを密なハッシ ュ表40のハッシュ値索引に変換するために必要なものは、ページオフセット表 42だけである。さらに大きい配列の大きい部分集合でも同様の節約が達成され 、自動再写像プロセスから特に利益を得られる。 本発明に必要というわけではないが、最適に高密なパッキングを見つけ出すた めに,行と列に同じ番号を持たないものを含めて、様々なビットマップ行列を試 すことができる。例えば、16ビットの索引の場合、8ビット×8ビット以外の 分割を使用して、上述のような方法で値を再写像することができる。最適分割の 発見を達成するために、ステップ808では、合成ハッシュ表40の大きさおよ びページオフセット表42を、ハッシュ表40に対応する統計として保存する。 次に、プロセスはステップ802にループバックし、その都度値を行と列に分割 する方法を変えながら、別の行列を構成する。例えば、16ビットの索引は、5 12列の128ページ(7×9ビット)、128列の512ページ(9×7ビッ ト)1024列の64ページ(6×10ビット)等々のように分割することがで きる。特定のループ反復により、以前の最良の分割が改善される場合には、その ページオフセット表および付随する統計を前のものと置換し、それによって全て の(適正な)分割を試みた後、最少量の空間を使用する分割が最終的に残る(ス テップ812)。上述の写像動作は充分に高速であるので、この方法により得ら れる最適写像法が認識されるまで、全ての実際的な組合せを試みることができる ことに注目されたい。さらに、上述のとおり、いったん行と列に分割した上で、 重ねられるページを垂直方向および水平方向から観察して、最適可能なパッキン グを見つけだすことができる。最適写像が見つかったら、そのためのオフセット 表42を使用して、ステップ814において元の表エントリを密な、またはほと んど密なハッシュ表40に書き込むことができる。 ページオフセット表を使用してハッシュ表に対するハッシュ値索引を計算する 方法について説明する。図21に別のコンピュータシステムが示されている。図 21では、図1の場合と同様の構成要素に対しては、図1における符号より10 00高い符号を使用した。例えば比較的パワーの低いハンドヘルドコンピュータ 装置とすることができるこのシステム1020では、記憶装置1024は、ユニ コード文字などのような選択された文字を表示する目的などのために、完成した ハッシュ表1040およびページオフセット表1042を含む。したがって、本 発明の第二態様は、元の大きい表38のキーから、密なハッシュ表1040に対 する索引として機能するハッシュ値1044への変換を取り扱う。表1040 および1042は一般的に、ROMまたは類似物にバーンインするなど、不揮発 性メモリに格納される。 ハッシュ計算を達成するために、アプリケーションプログラム1048または 類似物が最初に、ページオフセット表1042およびハッシュ表1040を記憶 装置1024にロードする(またはすでにロードされている場合には、探し出す )(図22のステップ1100)。キー1046(入力値)をアプリケーション プログラム1048または類似物が受け取り、ハッシュ計算プロセス1050に 渡し、それによりステップ1104(図22)で、値は最初に同一ビットグルー プに分割され、これはページオフセット表1042を構成するために使用される 。ビット分割は、ページオフセット表1042の大きさから明らかである。すな わち、ページオフセット表1042のエントリの数がページの数に等しく、した がってページのオフセット情報を格納するために使用されるビット数を表す。例 えば、128個のエントリは7ビットに対応する。いうまでもなく、分割および その他の情報(例えば、対応するハッシュ表のファイル名)もまた、ページオフ セット表1042によりヘッダ情報または類似物に維持することができる。 いかなる場合でも、初期の大きい表38に対応する入力値を受け取ると(垂直 方向の列がページになる場合)、値の高位部分がステップ1104の一ステップ として計算プロセス1048によってマスクされ、ページ番号を表す適切な数の 有効な低位ビットが残される。簡単な例で、4つの可能なビットのうち2つのビ ットが高位部分に当たり、したがって上位の2ビットがマスクされる。残りの2 ビットは、オフセット表1042への零を基底とする索引として使用される。例 えば「G」文宇を表示する目的などのために、0110bを受け取ると、上位ビ ットがマスクされ、10bが残る。同様に、ステップ1104内で、マスクされ ない上位ビットをページ番号内のビットの数と同数だけ右にシフトすることによ って、ページ内へのオフセットを表す上位ビットが得られる。 ステップ1106で、ページ番号は、ページオフセット表1042への索引と して使用され、それによって対応するページのオフセット値を決定するために探 索動作が実行される。本実施例では、10bから3のオフセット値が得られる。 ステップ1108で、この値はページ内へのオフセットに追加される(ステップ 1104における上位ビットのマスキングおよびシフトから決定される01bに 等しい)。結果(3+1=4)がハッシュ表1040に対する計算されたハッシ ュ値索引であり、ステップ1110でアプリケーションプログラム1048に返 され、アプリケーションプログラムは次にハッシュ表1040から適切なデータ を獲得する。お分かりのように、図18のハッシュ表40の4個(100b)の エントリは、適切に「G」文字を索引付けする。下表は全ての有効な計算の結果 を示すが、これについて本書ではそれ以上詳しく説明しない。 ご理解いただけるように、計算はAND(論理和)(マスキングのため)、シ フト、配列の索引付け(ページオフセット表1042)、および加算のみで構成 され、きわめて高速である。 正確な結果を出すために、ハッシュ計算は有効な入力値、すなわちハッシュ表 を使用するアプリケーションプログラムによってサポートされる入力値を必要と することに注意すべきである。ハッシュ計算を実行する前に、有効性検査(ステ ップ1102で表されるような)を値に実行して、有効な入力に対応することを 確認することができる。入力値が有効であれば、有効なキーから衝突の無い一意 の結果が得られるので、ハッシュは完全である。 さらに、ハッシュ表データ自体以外に、ハッシュ値を計算し続けるために必要 なものはオフセット表だけである。したがって、合成ビットマップおよび統計な ど、オフセット表の作成中に蓄積されたその他の情報は廃棄することができる。 いうまでもなく、例えば2つ以上をシステムで利用できる場合には、アプリケー ションプログラムが適切なハッシュ表および対応するオフセット表をロードでき るようにするために、必要とあらば、幾つかのメタデータおよび/またはその他 の情報をオフセット表および/またはハッシュ表と共に維持することもできる。 以上の詳細な説明から分かるように、より大きい範囲の不連続値の任意の部分 集合に対する完全なハッシュを生成する方法および機構を提供する。この方法お よび機構は、ハッシュ値の非常に高速な計算を可能にしながら、ハッシュ値を一 緒に密にパックするものである。この方法および機構は、自動的に作動し、不連 続ユニコード点の部分集合で特によく機能する。この方法および機構は、高速で あり、信頼でき、費用効果が高く、柔軟であり、拡張性がある。 本発明は、様々な変更および代替構成が可能であるが、その特定の例示的実施 形態を図面に示し、以上に詳細に記述した。しかし、本発明を開示した特定の形 態に限定する意図はなく、反対に、本発明は、本発明の精神および範囲に該当す る全ての変更、代替構成、および均等物を網羅するものであることを理解された い。
───────────────────────────────────────────────────── フロントページの続き (81)指定国 EP(AT,BE,CH,CY, DE,DK,ES,FI,FR,GB,GR,IE,I T,LU,MC,NL,PT,SE),OA(BF,BJ ,CF,CG,CI,CM,GA,GN,ML,MR, NE,SN,TD,TG),AP(GH,GM,KE,L S,MW,SD,SZ,UG,ZW),EA(AM,AZ ,BY,KG,KZ,MD,RU,TJ,TM),AL ,AM,AT,AU,AZ,BA,BB,BG,BR, BY,CA,CH,CN,CU,CZ,DE,DK,E E,ES,FI,GB,GE,GH,GM,GW,HU ,ID,IL,IS,JP,KE,KG,KP,KR, KZ,LC,LK,LR,LS,LT,LU,LV,M D,MG,MK,MN,MW,MX,NO,NZ,PL ,PT,RO,RU,SD,SE,SG,SI,SK, SL,TJ,TM,TR,TT,UA,UG,UZ,V N,YU,ZW

Claims (1)

  1. 【特許請求の範囲】 1.ある範囲の値を含むコンピュータシステムで、前記範囲の値の不連続部分集 合を完全なハッシュを用いて連続した、またはほとんど連続したより小さい範囲 に変換する方法において、 前記範囲の値の中から値の部分集合を選択するステップと、 前記範囲を二次元行列に編成するステップであって、前記行列の1つの次元が ページを表し、他の次元が前記ページ内へのオフセットを表し、前記行列のペー ジと該ページ内へのオフセットとの各交叉位置に、その交叉によって表される値 が部分集合に選択された値であるか否かを示す写像情報を含むようにするステッ プと、 各ページを選択し、各ページの写像情報を検査して一次元配列内の写像情報と の衝突が無いかを調べ、衝突が検知されなくなるまで各ページをある量だけシフ トし、ページの写像情報を一次元配列のシフト後の位置にオーバレイし、シフト 量を記録することによって、前記行列を一次元配列に変換するステップと、 を具えたことを特徴とする方法。 2.前記行列および一次元配列がビットマップであり、写像情報がビットの値に 格納されることを特徴とする請求項1に記載の方法。 3.前記方法がページを順序付けの順番に並べるステップをさらに含み、各ペー ジを選択する前記ステップが順序付けの順番に従って各ページを選択するステッ プを含むことを特徴とする請求項1に記載の方法。 4.ページを順序付ける前記ステップが、ページにおける値が部分集合に選択さ れた値であることを写像情報が示す回数を計数するステップと、最も高い回数か ら最も低い回数への順番にページを順序付けるステップとを含むことを特徴とす る請求項3に記載の方法。 5.ページを順序付ける前記ステップが、行列内の第1ページを順序付けの順番 における第1ページとして選択するステップを含むことを特徴とする請求項3に 記載の方法。 6.値の範囲の値が複数のビットで構成される二進数に等しく、行列の次元が前 記値を表すビットの分割に対応することを特徴とする請求項1に記載の方法。 7.複数のビット分割を選択するステップと、各々のビット分割を用いて編成お よび変換のステップを繰り返すステップと、各ビット分割について部分集合の連 続範囲に対応する統計情報を獲得するステップと、その統計と他の部分集合範囲 の統計を比較して部分集合値の範囲を選択するステップとをさらに具えたことを 特徴とする請求項6に記載の方法。 8.値の範囲が情報の表に対応し、前記方法は、表からの情報を、ハッシュ表の 、記録されたページシフト情報とそれに対応する選択された値のそのページ内へ のオフセットとに対応する位置に書き込むステップをさらに具えたことを特徴と する請求項1に記載の方法。 9.不連続範囲の値を受け取るステップと、前記値をページ番号とそのページ内 へのオフセットとに分離し、そのページのシフト量を探索し、そのページ内への オフセットに前記シフト量を加算することによって前記値を部分集合範囲の値に ハッシュ化するステップをさらに具えたことを特徴とする請求項1に記載の方法 。 10.値の範囲が0から65535までの範囲であることを特徴とする請求項1 に記載の方法。 11.値により可能なユニコード符号点を表し、値の部分集合により選択された ユニコード符号点を表すことを特徴とする請求項10に記載の方法。 12.ある範囲の値を含むコンピュータシステムにおいて、前記範囲の値の不連 続部分集合を完全なハッシュを用いて連続した、またはほとんど連続したより小 さい範囲に変換する機構において、 前記範囲の値の中から値の部分集合を選択する手段と、 前記範囲を二次元行列に編成する手段であって、前記行列の1つの次元がペー ジを表し、他の次元が前記ページ内へのオフセットを表し、前記行列のページと 該ページ内へのオフセットとの各交叉位置に、その交叉によって表される値が部 分集合に選択された値であるか否かを示す写像情報を含むようにする手段と、 各ページを選択することによって前記行列を一次元配列に変換する手段であっ て、該手段が各ページの写像情報を検査して一次元配列内の写像情報との衝突が 無いかを調べる手段と、衝突が検知されなくなるまで各ページをある量だけシフ トする手段と、ページの写像情報を一次元配列のシフト後の位置にオーバレイす る手段と、シフト量を記録する手段とから構成される手段と、 を具えたことを特徴とする機構。 13.前記行列および一次元配列がビットマップであり、写像情報がビットの値 に格納されることを特徴とする請求項12に記載の機構。 14.ページを順序付けの順番に並べる手段をさらに具え、各ページを選択する 前記手段が順序付けの順番に従って各ページを選択する手段を含むことを特徴と する請求項12に記載の機構。 15.ページを順序付ける前記手段が、ページの値が部分集合に選択された値で あることを写像情報が示す回数を計数する手段と、最も高い回数から最も低い回 数への順番にページを順序付ける手段とを含むことを特徴とする請求項14に記 載の機構。 16.ページを順序付ける前記手段が、行列内の第1ページを順序付けの順番に おける第1ページとして選択する手段を含むことを特徴とする請求項14に記載 の機構。 17.値の範囲の値が複数のビットで構成される二進数に等しく、行列の次元が 前記値を表すビットの分割に対応することを特徴とする請求項12に記載の機構 。 18.複数のビット分割を選択する手段と、各々のビット分割を用いて編成およ び変換のステップを繰り返す手段と、各ビット分割について部分集合の連続範囲 に対応する統計情報を獲得する手段と、各々の部分集合の統計を比較して部分集 合値の範囲を選択する手段とをさらに具えたことを特徴とする請求項17に記載 の機構。 19.値の範囲が情報の表に対応し、前記機構がハッシュ表と、表からの情報を 、ハッシュ表の、記録されたページシフト情報とそれに対応する選択された値の そのページ内へのオフセットとに対応する位置に書き込む手段とをさらに具えた 請求項12に記載の機構。 20.不連続範囲の値を受け取る手段と、前記値をページ番号とそのページ内へ のオフセットとに分離する手段と、そのページのシフト量を探索する手段、およ びそのシフト量をそのページ内へのオフセットに加算する手段を含み、前記値を 部分集合範囲の値にハッシュ化する手段とをさらに具えたことを特徴とする請求 項12に記載の機構。 21.値の範囲が0から65535までの範囲であることを特徴とする請求項1 2に記載の機構。 22.値により可能なユニコード符号点を表し、値の部分集合により選択された ユニコード符号点を表すことを特徴とする請求項21に記載の機構。
JP50295599A 1997-06-05 1998-06-04 オフセット表を使用する完全ハッシュの生成 Expired - Fee Related JP4965009B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US08/869,913 US6014733A (en) 1997-06-05 1997-06-05 Method and system for creating a perfect hash using an offset table
US08/869,913 1997-06-05
PCT/US1998/011680 WO1998055929A1 (en) 1997-06-05 1998-06-04 Creating a perfect hash using offset table

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2009122449A Division JP4717130B2 (ja) 1997-06-05 2009-05-20 オフセット表を使用する完全ハッシュの生成

Publications (3)

Publication Number Publication Date
JP2000517086A true JP2000517086A (ja) 2000-12-19
JP2000517086A5 JP2000517086A5 (ja) 2005-12-22
JP4965009B2 JP4965009B2 (ja) 2012-07-04

Family

ID=25354449

Family Applications (3)

Application Number Title Priority Date Filing Date
JP50295599A Expired - Fee Related JP4965009B2 (ja) 1997-06-05 1998-06-04 オフセット表を使用する完全ハッシュの生成
JP2009122449A Expired - Fee Related JP4717130B2 (ja) 1997-06-05 2009-05-20 オフセット表を使用する完全ハッシュの生成
JP2010211217A Expired - Fee Related JP4717154B2 (ja) 1997-06-05 2010-09-21 オフセット表を使用する完全ハッシュの生成

Family Applications After (2)

Application Number Title Priority Date Filing Date
JP2009122449A Expired - Fee Related JP4717130B2 (ja) 1997-06-05 2009-05-20 オフセット表を使用する完全ハッシュの生成
JP2010211217A Expired - Fee Related JP4717154B2 (ja) 1997-06-05 2010-09-21 オフセット表を使用する完全ハッシュの生成

Country Status (5)

Country Link
US (1) US6014733A (ja)
JP (3) JP4965009B2 (ja)
CN (1) CN1206604C (ja)
AU (1) AU7821198A (ja)
WO (1) WO1998055929A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009217839A (ja) * 1997-06-05 2009-09-24 Microsoft Corp オフセット表を使用する完全ハッシュの生成

Families Citing this family (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6591250B1 (en) * 1998-02-23 2003-07-08 Genetic Anomalies, Inc. System and method for managing virtual property
US6185552B1 (en) * 1998-03-19 2001-02-06 3Com Corporation Method and apparatus using a binary search engine for searching and maintaining a distributed data structure
DE69811477T2 (de) * 1998-05-01 2003-11-20 Hewlett-Packard Co. (N.D.Ges.D.Staates Delaware), Palo Alto Verfahren und Vorrichtung zur Hashkodierung
US6321192B1 (en) * 1998-10-22 2001-11-20 International Business Machines Corporation Adaptive learning method and system that matches keywords using a parsed keyword data structure having a hash index based on an unicode value
US6785278B1 (en) * 1998-12-10 2004-08-31 International Business Machines Corporation Methods, systems and computer program products for hashing address values
US6321232B1 (en) * 1998-12-18 2001-11-20 Xerox Corporation Method for creating a geometric hash tree in a document processing system
US6401185B1 (en) * 1999-05-27 2002-06-04 Oracle Corp. Method and apparatus for accessing paged objects using a fast division technique
US7080382B2 (en) * 2000-02-25 2006-07-18 Oracle International Corporation Accessing shorter-duration instances of activatable objects based on object references stored in longer-duration memory
US6928162B1 (en) * 2000-04-07 2005-08-09 International Business Machines Corporation Method and system for manipulating and telescoping a hash function
US7987217B2 (en) * 2000-05-12 2011-07-26 Oracle International Corporation Transaction-aware caching for document metadata
US7185005B1 (en) 2000-05-12 2007-02-27 Oracle International Corporation Nested transactions in a file system
US7725878B1 (en) 2000-05-12 2010-05-25 Oracle International Corporation Property bundles on a per instance basis
US7389493B1 (en) * 2000-05-12 2008-06-17 Oracle International Corporation Categories on a per instance basis
US6741990B2 (en) * 2001-05-23 2004-05-25 Intel Corporation System and method for efficient and adaptive web accesses filtering
US6801993B2 (en) 2001-09-28 2004-10-05 International Business Machines Corporation Table offset for shortening translation tables from their beginnings
US6748401B2 (en) 2001-10-11 2004-06-08 International Business Machines Corporation Method and system for dynamically managing hash pool data structures
US20050246330A1 (en) * 2004-03-05 2005-11-03 Giang Phan H System and method for blocking key selection
US7831908B2 (en) * 2005-05-20 2010-11-09 Alexander Vincent Danilo Method and apparatus for layout of text and image documents
US20060294126A1 (en) * 2005-06-23 2006-12-28 Afshin Ganjoo Method and system for homogeneous hashing
TWM288401U (en) * 2005-07-15 2006-03-01 Genesys Logic Inc Highly efficient data characteristics recognition device for flash memory
TW200705179A (en) * 2005-07-29 2007-02-01 Genesys Logic Inc Efficient data property identification method for a flash memory
US7382876B2 (en) * 2005-11-01 2008-06-03 Microsoft Corporation Hash function constructions from expander graphs
US7619623B2 (en) * 2006-04-17 2009-11-17 Microsoft Corporation Perfect multidimensional spatial hashing
US7965297B2 (en) * 2006-04-17 2011-06-21 Microsoft Corporation Perfect hashing of variably-sized data
JP4812508B2 (ja) * 2006-05-12 2011-11-09 富士通株式会社 プレゼンス情報を取り扱うシステム
US7424591B2 (en) * 2006-06-19 2008-09-09 International Business Machines Corporation Splash tables: an efficient hash scheme for processors
US7792877B2 (en) * 2007-05-01 2010-09-07 Microsoft Corporation Scalable minimal perfect hashing
US7872648B2 (en) * 2007-06-14 2011-01-18 Microsoft Corporation Random-access vector graphics
US9425825B2 (en) 2012-05-22 2016-08-23 International Business Machines Corporation Path encoding and decoding
GB2533392A (en) 2014-12-19 2016-06-22 Ibm Path encoding and decoding
GB2533391A (en) * 2014-12-19 2016-06-22 Ibm Wall encoding and decoding
GB2533393A (en) 2014-12-19 2016-06-22 Ibm Pad encoding and decoding
US9950261B2 (en) 2016-04-29 2018-04-24 International Business Machines Corporation Secure data encoding for low-resource remote systems
US10515064B2 (en) 2016-07-11 2019-12-24 Microsoft Technology Licensing, Llc Key-value storage system including a resource-efficient index
CN112732834B (zh) * 2021-01-11 2022-05-20 青岛大学 一种面向空间数据的区块网安全组织存储映射方法
CN114244817A (zh) * 2021-11-30 2022-03-25 慧之安信息技术股份有限公司 一种基于osip协议栈头域的哈希冲突处理方法和装置
WO2024107203A1 (en) * 2022-11-18 2024-05-23 Visa International Service Association System and method for performing an mph-based lookup of records in a database

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4115765A (en) * 1977-02-17 1978-09-19 Xerox Corporation Autonomous display processor
US4215402A (en) * 1978-10-23 1980-07-29 International Business Machines Corporation Hash index table hash generator apparatus
US4433389A (en) * 1978-12-26 1984-02-21 Burroughs Corporation Memory address translation system for accessing memory locations via job names
US4488256A (en) * 1981-11-23 1984-12-11 Motorola, Inc. Memory management unit having means for detecting and preventing mapping conflicts
US5111389A (en) * 1987-10-29 1992-05-05 International Business Machines Corporation Aperiodic mapping system using power-of-two stride access to interleaved devices
US5133061A (en) * 1987-10-29 1992-07-21 International Business Machines Corporation Mechanism for improving the randomization of cache accesses utilizing abit-matrix multiplication permutation of cache addresses
US5293593A (en) * 1990-10-11 1994-03-08 Hewlett-Packard Company Method and apparatus for the mapping of physically non-contiguous memory fragments to be linearly addressable
US5377340A (en) * 1991-06-18 1994-12-27 Hewlett-Packard Company Method and apparatus for memory interleaving using an improved hashing scheme
JPH06231047A (ja) * 1993-02-05 1994-08-19 Fujitsu Ltd アドレス変換方法および装置
US6014733A (en) * 1997-06-05 2000-01-11 Microsoft Corporation Method and system for creating a perfect hash using an offset table

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009217839A (ja) * 1997-06-05 2009-09-24 Microsoft Corp オフセット表を使用する完全ハッシュの生成

Also Published As

Publication number Publication date
JP2009217839A (ja) 2009-09-24
CN1236454A (zh) 1999-11-24
JP2011003214A (ja) 2011-01-06
JP4717154B2 (ja) 2011-07-06
JP4965009B2 (ja) 2012-07-04
WO1998055929A1 (en) 1998-12-10
JP4717130B2 (ja) 2011-07-06
CN1206604C (zh) 2005-06-15
US6014733A (en) 2000-01-11
AU7821198A (en) 1998-12-21

Similar Documents

Publication Publication Date Title
JP2000517086A (ja) オフセット表を使用する完全ハッシュの生成
JP2697830B2 (ja) デジタルデータの記憶及び検索方法並びに装置
US5680612A (en) Document retrieval apparatus retrieving document data using calculated record identifier
US4606002A (en) B-tree structured data base using sparse array bit maps to store inverted lists
US4118788A (en) Associative information retrieval
EP0304302A2 (en) Data retrieval system
JP3318834B2 (ja) データファイルシステム及びデータ検索方法
RU2005105582A (ru) База данных и система управления знаниями
US20080155171A1 (en) File system, and method for storing and searching for file by the same
CN113630123B (zh) 一种数据压缩系统及方法
US20140082021A1 (en) Hierarchical ordering of strings
JP2888188B2 (ja) 情報検索装置
JP4159761B2 (ja) Fftのためのインプレイスメモリ管理
JPH07210569A (ja) 情報検索方法および情報検索装置
JP3288063B2 (ja) 可変長データの格納および参照システム
KR920702514A (ko) 프로세서가 설비된 시스템과 시스템내에서의 어드레스 변환방법
US6901396B1 (en) Packed radix search tree implementation
KR20010109945A (ko) 비공간검색조건이 포함된 케이-최근접 질의를 위한알에스트리구조 및 점증적 최근접 방법
EP0649106B1 (en) Compactly stored word groups
JPS6220030Y2 (ja)
JP2708625B2 (ja) 均質ハッシング処理方式
Simon et al. On algorithms preserving neighborhood, to file and retrieve information in a memory
JP3896683B2 (ja) 使用者定義文字管理装置および記憶媒体
KR930011444B1 (ko) 한글조합형 코드의 변환방법
JPH0895749A (ja) 最適化コード変換装置

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050606

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20050606

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20050606

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080701

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20080930

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20081110

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20081201

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20090120

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090420

RD13 Notification of appointment of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7433

Effective date: 20090421

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20090421

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20090723

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20090806

RD13 Notification of appointment of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7433

Effective date: 20100604

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20100604

RD16 Notification of change of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7431

Effective date: 20110912

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20110912

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120229

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: 20120329

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: 20150406

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees
S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350