ハッシュ関数の動作がわかりません。

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
たかし
記事: 48
登録日時: 12年前

ハッシュ関数の動作がわかりません。

#1

投稿記事 by たかし » 12年前

大学でハッシュ法を習いました。
動作の仕組みは何となく理解できたのですが、ハッシュ関数内でのハッシュ値をどのようにして決めているのかわかりません。
学校で習ったハッシュ関数は以下のものとなっています。

コード:

#define M 257

int hash(char *v)
{
  int x;
  x = 0;
  while(*v){
    x = 256 * x + (*v++);
  }
  if(x < 0){
    x = (-x);
  }
  return(x % M);
}
この関数はどういう方法でハッシュ値を決めているのですか?
よろしくお願いします。

YuO
記事: 947
登録日時: 14年前
住所: 東京都世田谷区

Re: ハッシュ関数の動作がわかりません。

#2

投稿記事 by YuO » 12年前

どういう方法,と問われてもコードそのものが方法なのですが……。
何がわからないのでしょうか。
# ハッシュ関数としての性質はよくないです。最後の数文字だけが結果に影響を及ぼすため。

アバター
usao
記事: 1889
登録日時: 12年前
連絡を取る:

Re: ハッシュ関数の動作がわかりません。

#3

投稿記事 by usao » 12年前

>どういう方法
と問われても,コードそのものがその答えだと思うので,質問をより具体的にすると良いかと思います.
(授業ではこのコードに関する説明などは無かったのでしょうか?
 何かしらあったのであれば「XXXだといわれたがその意味がわからん」みたいな聞き方をすれば
 詳しい人が解説してくれるかもしれません)

#signedで計算してるのは何かしらぐちゃぐちゃと値が混じることを期待している…のかなぁ??

たかし
記事: 48
登録日時: 12年前

Re: ハッシュ関数の動作がわかりません。

#4

投稿記事 by たかし » 12年前

みなさん、ありがとうございます。
質問があいまいだったため皆さんが答えにくくなってしまい、すみませんでした。
今回の課題ではハッシュ関数の中身は説明しなくてもいいみたいなので、とりあえず保留にしておきます。
皆さんありがとうございました。

閉鎖

“C言語何でも質問掲示板” へ戻る