《ハッシュ》
Create:2002/02/11
[BACK] [NEXT] [メニュー]
【ハッシュ】

   例)
    下図に示す番号をキーとする10件のレコードを直接編成ファイルに記録することを考える。
      ┌──┬──┬──┬──┬──┬──┬──┬──┬──┬──┐
      │ 2│ 4│ 6│ 8│10│12│14│16│18│20│
      └──┴──┴──┴──┴──┴──┴──┴──┴──┴──┘
     ハッシング(アドレス変換)の方法として、7を除数とする除算法を用いたとき、
     シノニムレコードは何件か。
     尚、除算法によるハッシングでは
         キー値÷除数=X余りY
     としたときのYがレコードアドレスとなる。

   解説)
    まず10レコードそれぞれのレコードアドレスを計算する。

      キー アドレス
      ---- --------
       2    2 ( 2÷7=0余り2 より)
       4    4 ( 4÷7=0余り4 より)
       6    6 ( 6÷7=0余り6 より)
       8    1 ( 8÷7=1余り1 より)
      10    3 (10÷7=1余り3 より)
      12    5 (12÷7=1余り5 より)
      14    0 (14÷7=2余り0 より)
      16    2 (16÷7=2余り2 より)
      18    4 (18÷7=2余り4 より)
      20    6 (20÷7=2余り6 より)

    これを逆に見ると、

     アドレス レコードのキー
     -------- --------------
       0 14
       1  8
       2  2,16   →シノニムレコード
       3 10
       4  4,18   →シノニムレコード
       5 12
       6  6,20   →シノニムレコード

    シノニムレコード、すなわち重複しているレコードは3レコードである。

    なぜ、このようなキー項目の値に基づくアドレス変換を行うかといえば、処理が高速であるから
    である。
    つまり、キー項目をハッシュ関数(類題の場合は7で割った余り)でアドレスに変換すれば
    ダイレクトにそのレコードにアクセスできる。
    二分探索のようにデータを昇順又は降順に並べてなくても検索できる。
    ただし、ハッシュ関数の答えがキーの値によっては当然重複する。
    それをシノニムと呼んでいる。
    この「重複」が発生すると言うことがハッシュ法の特徴であり、試験でも出題される。

[BACK] [NEXT] [メニュー]

楽天モバイル[UNLIMITが今なら1円] ECナビでポインと Yahoo 楽天 LINEがデータ消費ゼロで月額500円〜!


無料ホームページ 無料のクレジットカード 海外格安航空券 解約手数料0円【あしたでんき】 海外旅行保険が無料! 海外ホテル