JPH08278894A - ハッシュ法による情報処理方法および情報処理装置 - Google Patents

ハッシュ法による情報処理方法および情報処理装置

Info

Publication number
JPH08278894A
JPH08278894A JP7081136A JP8113695A JPH08278894A JP H08278894 A JPH08278894 A JP H08278894A JP 7081136 A JP7081136 A JP 7081136A JP 8113695 A JP8113695 A JP 8113695A JP H08278894 A JPH08278894 A JP H08278894A
Authority
JP
Japan
Prior art keywords
hash
hash table
data
information processing
program
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
JP7081136A
Other languages
English (en)
Inventor
Hironobu Takano
弘伸 高野
Mitsuaki Ishikawa
満章 石川
Hiroshi Suzuki
弘 鈴木
Hisatoshi Kobayashi
久敏 小林
Shuichi Ishikawa
周一 石川
Hideki Sato
秀樹 佐藤
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.)
Hitachi Ltd
Hitachi Information and Control Systems Inc
Original Assignee
Hitachi Ltd
Hitachi Process Computer Engineering Inc
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 Hitachi Ltd, Hitachi Process Computer Engineering Inc filed Critical Hitachi Ltd
Priority to JP7081136A priority Critical patent/JPH08278894A/ja
Publication of JPH08278894A publication Critical patent/JPH08278894A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

(57)【要約】 【目的】ハッシュ法によるデータ管理で、あらかじめ想
定した以上のデータ数が入力されても処理が継続でき、
且つ、主メモリの消費量を低減する。 【構成】主メモリ110上に、複数のハッシュテーブル
112〜114と、各ハッシュテーブルに1対1に対応
するハッシュ管理テーブル115〜117を設ける。主
メモリ上のプログラム111(アプリケーションプログ
ラム122にハッシュ管理プログラム121を含む又は
呼出す)の実行により、ハッシュテーブル112へのデ
ータの格納または取出しが指示され、ハッシュ管理プロ
グラム121がハッシュ値の計算による探索を行なう。
所定の検索回数に達しても目的の検索位置(バケット)
が見つからない場合、ハッシュ管理テーブル115を参
照し、次のハッシュテーブル113が存在していれば、
該テーブルに探索をシフトする。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、コンパイラや所定のア
プリケーション等の情報処理装置に係わり、特にそれら
のプログラムでのハッシュ法によるデータ管理方式に関
する。
【0002】
【従来の技術】コンパイラ等のプログラムにおける識別
子などのデータ管理方法として、ハッシュ法が用いられ
ることが多い。
【0003】ハッシュ法は、データの個数によらずに挿
入、検索、削除の走査を実質的にO(1)、つまり一定
時間で行えるデータ構造を持つ。その原理は、キーが特
定の範囲内に収まる性質を利用して、キーの値とデータ
が格納される位置(配列の添字の値)を直接、関連づけ
ることにある。例えば、ある範囲内に収まる整数(0〜
99)をキーにもつ一連のデータXを、表に登録して検
索する場合を考える。大きさ100の配列aを用意し
て、キーの値xをこの配列の添字とすると、キーが0の
データはa[0]に、キーが37のデータはa[37]
に対応させることができる。
【0004】このキーの値xと配列の添字の関係を一般
化するために、ハッシュ関数f(x)を導入し、キーの
値xを配列の添字へ写像したハッシュ関数の値,n=f
(x)をハッシュ値と呼んでいる。また、データXを格
納する配列をハッシュテーブル、その各要素をバケット
と呼ぶ。これにより、キーの値xからハッシュ値nを求
め、ハッシュテーブルの特定のバケット(たとえば、n
番目)に結び付ける。これにより、あるデータXのキー
xに対してハッシュ関数fをほどこし、ハッシュテーブ
ルのn番目にデータXに関する情報を格納する。あるい
は、ハッシュテーブルのn番目からデータXに関する情
報を検索する処理を、全て一定時間で行えるようにして
高速処理を実現する。
【0005】ハッシュ関数として、文字列をキーとする
データを大きさが100の配列に格納する場合の一例を
数1に示す。
【0006】
【数1】 このハッシュ関数は、文字列の中の全ての文字コードを
加算し、最後に100で除した余りをハッシュ値として
いる。これにより、ハッシュ値は必ず0〜99の範囲に
収まる。この数1のハッシュ関数に、one,tw
o,...tenの文字列を与えて計算すると、表1に
示すハッシュ値が得られる。
【0007】
【表1】
【0008】ハッシュ関数fが、異なるキーに対して同
一の値を返す場合を衝突と呼ぶ。表1の文字列five
とnineのハッシュ値はともに26で、このままでは
使いものにならない。この衝突を回避する方法として、
連鎖法(チェイン法)や開番地法(オープンアドレス
法)が知られている。
【0009】連鎖法は、同じハッシュ値をもつデータを
連結リストにつないでおくもので、ハッシュテーブルに
は連結リストへのポインタを入れ、データをポインタで
つないでいる。データの格納または読出し位置の探索に
は、ハッシュ値を計算してバケットを決めてから、連結
リストを線形探索する。
【0010】開番地法は、ハッシュ値f(x)に対応す
るバケットが塞がっていたら(登録の場合)あるいは、
そのバケットのデータが同じキーをもっていなかったら
(読出しの場合)、再ハッシュ手順に従って別のバケッ
トを探すものである。再ハッシュの手順は、例えば数2
によって、再ハッシュ値f1(x)、f2(x)、f
3(x)...と順次計算し、そのつど対応するバケッ
トが空いているか、または、目的のデータか調べる。
【0011】
【数2】fk(x)=(f(x)+k) mod B ここで、fk(x):k回目の再ハッシュ値、B:探索
バケット個数である。この開番地法では、再ハッシュを
B回まで繰り返しても目的のバケットが見つからなけれ
ば、ハッシュテーブルへのデータ登録やデータ探索は中
止される。
【0012】以上、従来のハッシュ法によるデータ管理
方式を説明したが、ハッシュ法のアルゴリズムについて
は、例えば、「Cプログラマのためのアルゴリズムとデ
ータ構造(著者:近藤嘉雪、発行所:ソフトバンク
(株)、1992年刊)」に詳しい。
【0013】
【発明が解決しようとする課題】従来のハッシュ法で、
衝突時の回避処理に開番地法を用いる場合には、プログ
ラムが扱うデータの個数が入力によって大きく変り、予
め想定した以上のデータを入力すると、ハッシュテーブ
ルがあふれ、プログラムを中断することになる。このた
め、予め大きなハッシュテーブルを主メモリ上に確保
し、実際に扱うデータ個数が少ない場合でも主メモリの
消費サイズが増大する問題があった。
【0014】ハッシュ法に連鎖法を用いる場合には、論
理的には無限のデータを扱うことが可能であるが、線形
探索には連結リストの長さに比例した計算時間がかか
り、扱うデータ数が多くなると計算機の処理時間が増加
し、処理効率が低下する。また、各データには次データ
へのポインタが必要となるのでデータ量が増え、主メモ
リの消費量が増加する。
【0015】また、外部からハッシュテーブルのサイズ
を変更できる手段をもつものもあるが、ハッシュテーブ
ルがあふれた場合に、大きなサイズを指定して再度プロ
グラムを起動し、これを成功するまで試行錯誤的に繰り
返すことが必要となるために、扱うデータ数が多くなる
と計算機の処理時間が増加し、処理効率が低下する。
【0016】本発明の目的は、予め想定した以上のデー
タがプログラムから入力されても、衝突時には短時間の
回避処理でプログラムの継続処理が可能になる、ハッシ
ュ法によるデータ管理方法と、それによる情報処理装置
を提供することにある。
【0017】本発明の目的は、主メモリの消費量を必要
最小限にできるハッシュ法によるデータ管理方法と、そ
れによる情報処理装置を提供することにある。
【0018】
【課題を解決するための手段】本発明の目的は、プログ
ラムにおける識別子等のデータを、ハッシュ法によって
管理する情報処理方法において、複数のハッシュテーブ
ルがある場合に、自己のハッシュテーブルのアドレスと
後続のハッシュテーブルの有無を管理し、一つのハッシ
ュテーブル内で目的の探索が達成できなかった場合に、
後続のハッシュテーブルに対して探索を継続することに
より達成される。
【0019】または、最初は0または最小限(例えば
1)のハッシュテーブルを設け、前記プログラムによる
ハッシュテーブルへのデータの格納が指示された場合お
よび/または既設のハッシュテーブルの使用状態が所定
条件となったときに、ハッシュテーブルを動的に新設な
いし増設することにより達成される。
【0020】あるいは、プログラムにおける識別子等の
データを、ハッシュテーブルに格納して管理する情報処
理装置において、前記ハッシュテーブルが、ハッシュ値
の最大値に相応するバケットの後に、再ハッシュ処理の
みに使用され、その上限回数に相当するバケットを確保
してなることを特徴とする。
【0021】
【作用】本発明の構成によれば、一つのハッシュテーブ
ル内で目的の探索が達成できない場合に、簡単に後続の
ハッシュテーブルに探索をシフトできるので、複数のハ
ッシュテーブルをあたかも一つの大きなハッシュテーブ
ルのように扱え、処理時間や主メモリ容量を増大するこ
となく、ハッシュテーブルのあふれによる処理中断を回
避できる。さらに、データ登録またはデータ取り出しの
ための探索は、一つのハッシュテーブルでの再ハッシュ
処理が一定回数以上となると、次ハッシュテーブルにシ
フトするので、探索のヒット率が向上して再ハッシュ処
理数が低減し、探索処理が高速化できる。
【0022】また、本発明の構成によれば、最初、主メ
モリ上に確保するハッシュテーブルを0または必要最小
限にし、必要に応じて動的に増設するようにしているの
で、ハッシュ管理に要する主メモリの消費量を最小限に
抑えることができると共に、情報処理装置のスループッ
トを向上できる。
【0023】さらに、本発明の構成によれば、ハッシュ
テーブルのハッシュ値の範囲の後に、ハッシュ値の最大
値の再ハッシュ処理に対応可能な再ハッシュ専用のエリ
アが付加されるので、再ハッシュ処理でハッシュテーブ
ルの先頭に戻ることがなく、テーブル終端の判定処理が
不要となるので、プログラムの実行ステップが削減で
き、ハッシュテーブルによるデータの格納と検索をより
高速化できる。また、一つのハッシュテーブル内の検索
範囲を比較的狭い範囲とすることができるので、主メモ
リ上のハッシュテーブルのアクセスが容易になる。
【0024】
【実施例】以下、本発明の実施例を図面を参照しながら
詳細に説明する。
【0025】図1は、本発明の一実施例による情報処理
装置の概略の構成図である。情報処理装置は、CPU1
00と主メモリ110と補助記憶装置120を、システ
ムバス130で接続している。補助記憶装置120は、
本実施例によるハッシュ管理プログラム121と、コン
パイルあるいはアプリケーションなどの情報処理装置の
所定処理を実行するプログラム122を格納している。
プログラム122はハッシュ処理時にプログラム121
を呼び出す。もちろん、ハッシュ管理プログラム121
は、初めからコンパイラあるいはアプリケーションなど
のプログラム122に組み込まれても良い。
【0026】主メモリ110上には、プログラム121
とプログラム122を複製したプログラム111と、ハ
ッシュテーブル112、113、114、ハッシュテー
ブルと1対1に構成されるハッシュ管理テーブル11
5、116、117を設けている。ハッシュテーブル1
12〜114は、コンパイラやアプリケーションのプロ
グラム122における文字列や識別子等のデータを格納
している。ハッシュ管理テーブル115〜117は、ハ
ッシュテーブルのポインタを管理している。
【0027】CPU100は、アプリケーションプログ
ラム122の実行中に、ハッシュテーブルで管理するデ
ータの登録や探索あるいは削除が指示されると、ハッシ
ュ管理プログラム121を起動する。
【0028】ハッシュ管理プログラム111は、ハッシ
ュ管理テーブル115を参照して、ハッシュテーブル1
12に対するデータの探索、または、データの登録のた
めの空バケットの検索を実施する。ハッシュテーブル1
12に目的のデータまたは空がない場合には、ハッシュ
管理テーブル116を参照して、ハッシュテーブル11
3の場合と同様の検索を行う。さらに、ハッシュテーブ
ル114に対しても同様の検索を行う。
【0029】図7は、コンパイラにおけるハッシュ法の
使用例を示したものである。ハッシュ管理プログラムを
組み込むコンパイラのプログラムは、ソースプログラム
に識別子が現れた場合、ハッシュ値を計算し、その識別
子の情報(データ)をハッシュテーブルに格納する。識
別子は変数名、関数名、GO TOの飛び先のラベル名など
である。識別子の情報は、名称、型、サイズ、識別子の
格納場所などで、識別子の情報を格納しているエリアの
ポインタの場合もある。
【0030】識別子が最初に現れた場合は、その識別子
の宣言(定義)であり、ハッシュテーブルへの情報の格
納となる。2回目以降は、その識別子の使用であり、ハ
ッシュテーブル内での検索となる。コンパイラでは、情
報を格納せずに識別子を使用していれば、プログラムの
誤りとして処理する。
【0031】ハッシュテーブル700が図示の状態で、
ソースプログラム中で識別子xyzが使用された場合、
ハッシュ値x"=f("xyz")を計算する。このx”が、識
別子defのハッシュ値x’と衝突する場合、このx"
のバケットには"def"の情報が格納されているので、再
ハッシュ値x'"=f'("xyz")を計算し、x'"から目的の
情報を取り出す。コンパイラは、取りだした情報を使用
してオブジェクト(機械語)を作成する。
【0032】図2は、本実施例におけるハッシュテーブ
ルの管理方法を説明する概念図である。複数のハッシュ
管理テーブル201a、201b及び201cは、それ
ぞれハッシュテーブル204a、204b及び204c
を管理している。ハッシュ管理テーブル201aは、ハ
ッシュ管理テーブルポインタ202aと、ハッシュテー
ブルポインタ203aを記憶し、前者は次段の管理テー
ブル201bを示すアドレス、後者はハッシュテーブル
204aを示すアドレスを格納している。他のハッシュ
管理テーブル201b、201cも同様に構成されてい
る。ただし、ハッシュ管理テーブル201cが終端の場
合は、そのポインタ202cに、続くハッシュ管理テー
ブル(従って、次ハッシュテーブル)の無いことを示す
情報、例えば0を格納しておく。
【0033】次に、本実施例の情報処理装置によるデー
タ管理方法を説明する。
【0034】図3は、本実施例によるハッシュテーブル
のデータ登録方法を示すフローチャートである。まず、
ステップs301で、使用するハッシュテーブル、例え
ば204aを、ハッシュ管理テーブル201aのポイン
タ203aから決定する。次に、ステップs302で、
登録するデータXに対するキーxのハッシュ値、n=f
(x)を求め、ハッシュ値に相当するハッシュテーブル
204a内の検索位置、例えばバケット205aを決定
する(s303)。次に、ステップs304で、バケッ
ト205aの使用状態を調べ、空いていればステップs
305で、バケット205aにデータXを登録して終了
する。
【0035】一方、検索位置205aを他の別のキーを
もつデータが使用していれば、ステップs306に移行
し、検索回数が予め設定されている規定数に達したかチ
エックする。規定数未満であれば、ステップs302に
戻って再計算し、新たなハッシュ値(再ハッシュ値)に
よる検索位置を繰返し求めて、空きバケットを探す。
【0036】処理回数が規定数に達しても、ハッシュテ
ーブル内に空きバケットが見つからない場合は、ステッ
プs307に進み、他のハッシュテーブルの有無を、ポ
インタ202aの情報でチエックする。次ハッシュテー
ブルの有る場合、すなわち、ポインタ202aに、ハッ
シュ管理テーブル201bのアドレスが示されている
と、ステップs101に戻る。そして、管理テーブル2
01bのポインタ203bから、次に使用するハッシュ
テーブル204bを決定し、上記s302〜s306の
処理を繰り返す。
【0037】一方、ステップs307で、次ハッシュテ
ーブルがない場合、すなわち、現在検索中のハッシュテ
ーブルが204cでポインタ203cが0のとき、当該
データの登録未了を報告して(s308)終了する。
【0038】図4は、本実施例によるハッシュテーブル
のデータ検索方法を示すフローチャートである。データ
検索は、基本的には前述のデータ登録のための空き検索
と同様の手順で行われる。
【0039】まず、ステップs401で、最初に検索す
るハッシュテーブル204aを、最前段のハッシュ管理
テーブル201aのハッシュテーブルポインタ203a
のアドレスから決定する。次に、ステップs402で、
データXに対するキー値xからのハッシュ値を計算し、
ハッシュテーブル204bの検索位置を決定する(s4
03)。次に、ステップs404で、決定した検索位置
のバケットの空き状態を判定し、空ていれば検索データ
xが未登録であることを報告(s409)して終了す
る。
【0040】一方、検索位置が空ていなければ、ステッ
プs405で、格納されているデータが目的のデータか
否かを、データに含まれているキー値により判定し、目
的のデータであれば取り出して(s410)、終了す
る。しかし、他のデータであれば、ステップs406
で、それまでの検索回数が規定数に達しているかチエッ
クし、達していなければステップs402に戻って上記
処理を繰り返す。規定数に達している場合は、ステップ
s407で、次ハッシュ管理テーブルの有無を判定し、
次ハッシュテーブルが有れば、ステップs401に戻っ
て上記処理を繰り返す。この処理は、ハッシュテーブル
がいくつ存在しても同様に行われる。次ハッシュテーブ
ルが無ければ、ステップs409に移行し、未登録を報
告して終了する。
【0041】本実施例によれば、複数のハッシュテーブ
ルと1対1に設けられるハッシュ管理テーブルによっ
て、自己のハッシュテーブルのアドレスと、後続のハッ
シュテーブルの有無を管理し、後続のテーブルの有無を
確認するのみで、複数のハッシュテーブルをあたかも一
つの大きなハッシュテーブルのように扱うことができ
る。これによって、処理時間や主メモリ容量を増大する
ことなく、ハッシュテーブルのあふれによる処理中断が
回避できる。さらに、データ登録と登録されたデータの
検索は、一つのハッシュテーブルでの再ハッシュ処理が
一定回数以上となると、次ハッシュテーブルに移行する
ので、検索のヒット率が向上して再ハッシュ処理数が低
減し、検索処理が高速化できる。
【0042】なお、本実施例では、ハッシュテーブルと
ハッシュ管理テーブルを1対1構成として、主メモリ上
に設けている。しかし、ハッシュ管理テーブルは小さな
領域であり、ハッシュ管理プログラム121に記述する
ことも十分可能である。また、本実施例では、データ登
録とデータ検索の処理を分けて説明したが、目的のデー
タまたは他のデータに「空き」を示すデータを含め、ハ
ッシュ値による検索位置に、目的のデータ/他のデータ
のいずれが使用しているかを調べながら、目的のデータ
を検索するデータ探索処理として把握できる。
【0043】次に、本発明の第二の実施例を説明する。
本実施例の情報処理装置は、ハッシュテーブルやその管
理テーブルは、初めは必要最小限を主メモリ上に備え、
処理中の必要に応じて増設する。すなわち、図1おい
て、最初、ハッシュテーブル112とその管理テーブル
115だけが設けられて、ハッシュテーブル112だけ
では不足が生じた場合に、ハッシュテーブル113とそ
の管理テーブル116を増やし、さらに不足が生じた場
合に、ハッシュテーブルや117とその管理テーブル1
17を増設する。
【0044】ハッシュテーブルの増設は、例えば204
bを新設する場合、所定の手順で主メモリ110上に新
たな領域を確保し、ハッシュテーブル204bとその管
理テーブル201bを登録する。さらに、既設の管理テ
ーブル201aのポインタ202aに管理テーブル20
1bのアドレスを設定し、新設のポインタ202bには
0、ポインタ203bにはハッシュテーブル204bの
アドレスを設定する。
【0045】図5は、第二の実施例による登録処理を示
すフローチャートである。図示のように、ステップs5
01〜s507の手順は、第一の実施例による図3のs
301〜s307と同じである。
【0046】ステップs506において、既設のハッシ
ュテーブル204aに対する検索回数が規定数に達し、
ステップs506において、次ハッシュテーブルがない
と判定された場合、本実施例ではステップs508に移
行し、新たなハッシュテーブル204bとその管理テー
ブル201bを主メモリ上に確保する。この後、ステッ
プs501に戻ると、データ登録に使用するハッシュテ
ーブルとして、新設のハッシュテーブル204bが決定
され、ステップs502以降の処理が実行される。この
場合、新設のハッシュテーブル204bのバケットは全
て空いているので、ハッシュ計算による検索位置に、直
ちにデータ登録ができる。このハッシュテーブル204
bの登録数も増加して、再び検索回数が規定数に達する
と、同様にして、ハッシュテーブル204cを増設す
る。なお、初期設定のハッシュテーブル数や増設時のハ
ッシュテーブル数は1つだけでなく、複数でもよい。ま
た、初期設定のハッシュテーブルを0とし、ハッシュテ
ーブル管理プログラムの起動によって、設けるようにし
てもよい。
【0047】本実施例によれば、最初、主メモリ上に確
保するハッシュテーブルを0または必要最小限にし、必
要に応じて動的に増設するようにしているので、ハッシ
ュ管理に要する主メモリの消費量を最小限に抑えること
ができる。
【0048】次に、本発明の第三の実施例を説明する。
図6は、ハッシュテーブルを示し、同図(a)に従来の
構成、同図(b)に本実施例による構成である。
【0049】あるデータに対するハッシュ値の計算結果
が最大値の場合、同図(a)ではハッシュテーブルのバ
ケット611が検索される。このバケット611が他の
データによって使用されている場合、再ハッシュ値は前
述の数2でk=1とすると、ハッシュテーブルの先頭バ
ケット612になり、以後、613、614と検索され
る。このような再ハッシュ処理では、常に検索位置が終
端であるかチエックし、終端であれば、テーブルの先頭
エリアに戻る処理が追加されるので、ハッシュテーブル
管理プログラム121の実行ステップが増大する。
【0050】本実施例では、データxに対するハッシュ
値nを数3により求め、ハッシュ値の衝突があった場合
には、ハッシュ値に1を加算してその直後を検索するよ
うにする。
【0051】
【数3】n=f(x)+y ここで、y:一つのハッシュテーブル内での衝突回数
で、その最大値は前述の最大検索回数Bに相当する。
【0052】一方、同図(b)では、ハッシュテーブル
620のように、ハッシュテーブルの大きさを、本来の
終端エリア621に、最大検索回数B(=4)−1だけ
余分に追加している。これによれば、ハッシュ値の計算
結果が最大値、すなわち、バケット621が検索位置と
なる場合、その再ハッシュ処理では最大、追加したエリ
ア624まで検索が行われる。従って、ハッシュテーブ
ルの先頭に戻ることがなくなり、テーブル終端の判定処
理が不要となるので、プログラムの実行ステップが削減
でき、ハッシュテーブルによるデータの格納と検索をよ
り高速化できる。また、一つのハッシュテーブル内の検
索範囲を比較的狭い範囲とすることができるので、主メ
モリ上のハッシュテーブルのアクセスが容易になる。
【0053】なお、数3の変数yの最大値は、比較的小
さな整数zと一つのハッシュテーブル内での衝突回数の
最大値の積とし、その分だけハッシュテーブルのエリア
を付加するようにしてもよい。さらに、ハッシュテーブ
ルを余分にもつのではなく、ハッシュ関数を変更し、再
ハッシュ値が最大検索回数までハッシュテーブルの最大
値を超えないようにしても、同等の効果が得られる。
【0054】
【発明の効果】本発明によれば、各ハッシュテーブルが
次テーブルの有無を管理し、あたかも一つの大きなハッ
シュテーブルのように扱えるので、ハッシュテーブル間
の処理シフトが簡単に行え、ハッシュテーブルのあふれ
による処理中断を回避できる効果がある。また、テーブ
ル間の処理シフトは、一つのテーブル内での再ハッシュ
処理が一定回数以上になると行われるので、探索のヒッ
ト率が向上して探索処理が高速化できる効果がある。
【0055】また、本発明によれば、主メモリ上に確保
するハッシュテーブルを必要に応じて動的に増設できる
ので、ハッシュ管理に要する主メモリの消費量を最小限
に抑える効果がある。これにより、ハッシュ法を使用す
る情報処理装置のスループットも向上できる。
【0056】さらに、本発明によれば、ハッシュテーブ
ルのハッシュ値範囲の後に、再ハッシュ専用のエリアが
確保されるので、再ハッシュ処理の実行ステップが削減
でき、ハッシュテーブルによるデータの格納と検索をよ
り高速化できる効果がある。
【図面の簡単な説明】
【図1】本発明の一実施例による情報処理装置の構成
図。
【図2】本発明の一実施例によるハッシュテーブルの管
理方法を示す説明図。
【図3】本発明の第一の実施例によるデータ登録処理を
示すフローチャート。
【図4】本発明の第一の実施例によるデータ検索処理を
示すフローチャート。
【図5】本発明の第二の実施例によるデータ登録処理を
示すフローチャート。
【図6】本発明の第三の実施例によるハッシュテーブル
を説明する説明図。
【図7】コンパイラでのハッシュ法の使用方法を示す説
明図。
【符号の説明】
100…CPU、110…主メモリ、111…プログラ
ム、112〜114…ハッシュテーブル、115〜11
7…ハッシュ管理テーブル、120…補助記憶装置、1
21…ハッシュ管理プログラム、122…アプリケーシ
ョンプログラム、201a〜201c…ハッシュ管理テ
ーブル、202a〜202c…ハッシュ管理テーブルポ
インタ、203a〜203c…ハッシュテーブルポイン
タ、204a〜204c…ハッシュテーブル、205a
〜208c…バケット(データ格納エリア)。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 石川 満章 茨城県日立市大みか町五丁目2番1号 日 立プロセスコンピュータエンジニアリング 株式会社内 (72)発明者 鈴木 弘 茨城県日立市大みか町五丁目2番1号 日 立プロセスコンピュータエンジニアリング 株式会社内 (72)発明者 小林 久敏 茨城県日立市大みか町五丁目2番1号 日 立プロセスコンピュータエンジニアリング 株式会社内 (72)発明者 石川 周一 茨城県日立市大みか町五丁目2番1号 日 立プロセスコンピュータエンジニアリング 株式会社内 (72)発明者 佐藤 秀樹 茨城県日立市大みか町五丁目2番1号 株 式会社日立製作所大みか工場内

Claims (10)

    【特許請求の範囲】
  1. 【請求項1】 プログラムにおける識別子等のデータ
    を、ハッシュ法によって管理する情報処理方法におい
    て、 複数のハッシュテーブルがある場合に、自己のハッシュ
    テーブルのアドレスと後続のハッシュテーブルの有無を
    管理し、複数のハッシュテーブルをあたかも一つの大き
    なハッシュテーブルのように探索することを特徴とする
    ハッシュ法による情報処理方法。
  2. 【請求項2】 プログラムにおける識別子等のデータ
    を、ハッシュ法によって管理する情報処理方法におい
    て、 複数のハッシュテーブルがある場合に、自己のハッシュ
    テーブルのアドレスと後続のハッシュテーブルの有無を
    管理し、一つのハッシュテーブル内で目的の探索が達成
    できなかった場合に、後続のハッシュテーブルに対して
    探索を継続することを特徴とするハッシュ法による情報
    処理方法。
  3. 【請求項3】 請求項2において、 前記一つのハッシュテーブル内での探索回数が所定数に
    達したとき、前記後続のハッシュテーブルの有無を判定
    することを特徴とするハッシュ法による情報処理方法。
  4. 【請求項4】 プログラムにおける識別子等のデータ
    を、ハッシュ法によって管理する情報処理方法におい
    て、 最初は0または最小限(例えば1)のハッシュテーブル
    を設け、前記プログラムによるハッシュテーブルへのデ
    ータの格納が指示された場合および/または既設のハッ
    シュテーブルの使用状態が所定条件となったときに、ハ
    ッシュテーブルを動的に新設ないし増設することを特徴
    とするハッシュ法による情報処理方法。
  5. 【請求項5】 請求項4において、 前記使用状態は、既設のハッシュテーブル内での探索回
    数が所定数に達したときであることを特徴とするハッシ
    ュ法による情報処理方法。
  6. 【請求項6】 プログラムにおける識別子等のデータ
    を、ハッシュ法によって管理する情報処理方法におい
    て、 予め一つのハッシュテーブル内における最大探索回数が
    定められている場合に、再ハッシュ値の計算結果が前記
    最大検索回数まで、ハッシュテーブルの終端エリアを示
    す最大値を超えないように管理することを特徴とするハ
    ッシュ法による情報処理方法。
  7. 【請求項7】 請求項1〜請求項6のいずれか1項にお
    いて、 前記探索は、ハッシュテーブルにデータを登録するため
    の空きの検索および/またはハッシュテーブルから所望
    のデータを取り出すための検索であることを特徴とする
    ハッシュ法による情報処理方法。
  8. 【請求項8】 プログラムにおける識別子等のデータ
    を、ハッシュテーブルに格納して管理する情報処理装置
    において、 複数のハッシュテーブルと、各ハッシュテーブルに対応
    してハッシュテーブルのアドレスと後続のハッシュテー
    ブルの有無を管理し、一つのハッシュテーブル内で目的
    の探索が達成できなかった場合に、後続のハッシュテー
    ブルに対して探索を移行するハッシュテーブル管理手段
    を備えたことを特徴とするハッシュ法による情報処理装
    置。
  9. 【請求項9】 プログラムにおける識別子等のデータ
    を、ハッシュテーブルに格納して管理する情報処理装置
    において、 最初は0または最小限(例えば1)のハッシュテーブル
    と、前記プログラムによるハッシュテーブルへのデータ
    の格納が指示された場合および/または既設のハッシュ
    テーブルの使用状態が所定条件となったときに、ハッシ
    ュテーブルを新設ないし増設するハッシュテーブル管理
    手段を備えたことを特徴とするハッシュ法による情報処
    理装置。
  10. 【請求項10】 プログラムにおける識別子等のデータ
    を、ハッシュテーブルに格納して管理する情報処理装置
    において、 前記ハッシュテーブルが、ハッシュ値の最大値に相応す
    るバケットの後に、再ハッシュ処理のみに使用され、そ
    の上限回数に相当するバケットを確保してなることを特
    徴とするハッシュ法による情報処理装置。
JP7081136A 1995-04-06 1995-04-06 ハッシュ法による情報処理方法および情報処理装置 Pending JPH08278894A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP7081136A JPH08278894A (ja) 1995-04-06 1995-04-06 ハッシュ法による情報処理方法および情報処理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP7081136A JPH08278894A (ja) 1995-04-06 1995-04-06 ハッシュ法による情報処理方法および情報処理装置

Publications (1)

Publication Number Publication Date
JPH08278894A true JPH08278894A (ja) 1996-10-22

Family

ID=13737993

Family Applications (1)

Application Number Title Priority Date Filing Date
JP7081136A Pending JPH08278894A (ja) 1995-04-06 1995-04-06 ハッシュ法による情報処理方法および情報処理装置

Country Status (1)

Country Link
JP (1) JPH08278894A (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011215765A (ja) * 2010-03-31 2011-10-27 Nec Corp テーブル構成方法、データアクセス方法、コンピュータプログラム、テーブル構成装置及びデータ処理装置
JP2015079473A (ja) * 2013-10-18 2015-04-23 ウィンウェイ システムズ, インコーポレイテッドWinway Systems, Inc. データ運用方法及びこれを支援するシステム
JP2015187814A (ja) * 2014-03-27 2015-10-29 Kddi株式会社 複数のハッシュテーブルを用いて検索するプログラム、装置及び方法
JP2017073093A (ja) * 2015-10-09 2017-04-13 富士通株式会社 インデックス生成プログラム、インデックス生成装置、インデックス生成方法、検索プログラム、検索装置および検索方法
JP2020535510A (ja) * 2017-09-26 2020-12-03 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 開アドレス法探査バリア

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011215765A (ja) * 2010-03-31 2011-10-27 Nec Corp テーブル構成方法、データアクセス方法、コンピュータプログラム、テーブル構成装置及びデータ処理装置
JP2015079473A (ja) * 2013-10-18 2015-04-23 ウィンウェイ システムズ, インコーポレイテッドWinway Systems, Inc. データ運用方法及びこれを支援するシステム
JP2015187814A (ja) * 2014-03-27 2015-10-29 Kddi株式会社 複数のハッシュテーブルを用いて検索するプログラム、装置及び方法
JP2017073093A (ja) * 2015-10-09 2017-04-13 富士通株式会社 インデックス生成プログラム、インデックス生成装置、インデックス生成方法、検索プログラム、検索装置および検索方法
JP2020535510A (ja) * 2017-09-26 2020-12-03 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 開アドレス法探査バリア

Similar Documents

Publication Publication Date Title
US5519840A (en) Method for implementing approximate data structures using operations on machine words
JP3417984B2 (ja) キャッシュ競合削減コンパイル方法
US7647355B2 (en) Method and apparatus for increasing efficiency of data storage in a file system
US5896529A (en) Branch prediction based on correlation between sets of bunches of branch instructions
KR100555997B1 (ko) 메모리 엔진과, 데이터 조사 및 정정 방법
JPH06222903A (ja) 文字データを圧縮し圧縮済みデータを展開するための静的辞書構造を提供する方法および手段
JP3003915B2 (ja) 単語辞書検索装置
US5450561A (en) Cache miss prediction method and apparatus for use with a paged main memory in a data processing system
WO1999001817A1 (en) Defragmentation of stored data without pointer indirection
US5923837A (en) Method of accessing data using approximate data structures
US3964028A (en) System and method for evaluating paging behavior
JPH08278894A (ja) ハッシュ法による情報処理方法および情報処理装置
JP2954178B1 (ja) 可変式キャッシュ方式
US6397216B1 (en) Ordering keys in a table using an ordering mask
JP3062119B2 (ja) 文字列探索用テーブル、その作成方法及び文字列探索方法
JP2000020318A (ja) メモリアクセス命令削減装置および記録媒体
EP0170442A2 (en) A method for searching sparse databases using an associative technique
Welch An investigation of descriptor oriented architecture
JP2007004326A (ja) データアクセス方法及びそのプログラム
JP3012444B2 (ja) プロセスディスパッチ方法
JPH01259418A (ja) 文字列検索装置
JP2590866B2 (ja) データ検索装置
JPH04182828A (ja) 擬似乱数によるテーブル内エントリー選択方式
JP2002530785A (ja) ディジタル・メモリ構造と装置及びそれの管理方法
JPH0660192A (ja) 図形パターン格納装置