0

次の問題にハッシュを使用するJavaプログラムを作成しようとしています。自然言語のテキストが与えられた場合、テキスト内の各単語の出現回数を含む個別の単語のリストを生成します。プログラムに適切なカウンターを挿入して、ハッシュの経験的効率を対応する理論的結果と比較します。

ハッシュとハッシュテーブルの基本原理は理解していますが、それをコンピュータプログラムに実装する方法がわかりません。私の教科書には例がありませんし、私の教授は私のクラスの特定の例を決して調べませんでした。

プログラムは最初にファイルからテキストをスキャンする必要があると思いますが、その後どこに行くべきかわかりません。

お手伝いありがとう。

4

2 に答える 2

1

これが私が解釈するもの、あなたの割り当てが何であるかです。

HashMap<String,Integer>単純にファイルを単語に分割し、それらを(またはハッシュテーブル実装のあるマップ)に挿入するとします。また、挿入、ランダム検索の時間を計り、マップ上でメンバーシップテストを行うこともできます。

次に、(異なるサイズの)異なるファイルに対して同じことを繰り返し、かかった時間が理論的な結果に反するかどうかを確認します。

于 2012-11-16T03:49:39.963 に答える
0

ハッシュを調べる必要があるようです。一般に、ハッシュはある範囲の値を取り、それらをいくつかのより小さな範囲にマップします。したがって、単純なハッシュ関数は次のようになります。

 public int hash(int value)
 {
   assert value >= 0 && value < 1000;
   return value % 10;
 }

したがって、私のハッシュ関数は(0から999)の範囲の数値を取得し、それらを(0から9)にマップします。優れたハッシュ関数は、結果の範囲に値を均等に分散します。

あなたの目標は、各単語をハッシュテーブルのインデックスにマッピングすることですが、これは私の例ほど簡単ではありません。文字列のハッシュについて調査する必要があります。

幸運を!

于 2012-11-16T03:30:48.310 に答える