• ベストアンサー

SW:ハッシュ法によるデータの探索に関する問題

SW受験予定者です。 問題の解法として理解できない点がありましたので、ご理解のある方はご教授のほどお願い致します。 問.ハッシュ法によるデータの探索に関する記述のうち、最も適切なものはどれか。 答.ウ ハッシュ関数h(x)がh(x)=x mod n (xはキー、nはハッシュ表の大きさ)である場合、キー値がaであるデータと、キー値がbであるデータの間にシノニムが発生するときには、a-bがnの倍数であるという関係が成り立つ。 解答 キーaとキーbを a=s・n+c 、 b=t・n+cとする(s、t、cはともに整数) a-b=(s・n+c)-(t・n+c)=(s-t)・nとなり、これはnの倍数となっているので ウ が正解である。 以上の部分で、a=s・n+c 、 b=t・n+c をどのように導いたのかが理解できません。宜しくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • hilow1
  • ベストアンサー率53% (7/13)
回答No.1

x mod n を式変形すれば求めることができます。 x mod n の値というのは「xをnで割った余り」ということですよね? 例えば、15 mod 7 の値は 1 です。このことから、15 = 2・7 + 1 という式が導けます。2という値は、(15-1)/7で求められますよね。 これを"a = s・n + c"に当てはめてみると、a=15、s=2、n=7、c=1です。 同様に、36 mod 7 の値も 1 です。よって、36 = 5・7 + 1 となります。 これを"b = t・n + c"に当てはめると、b=36、t=5、n=7、c=1です。 結局、a-b = (s-t)n という結果になり、nの倍数であることが分かります。 わかりにくかったらすみません。

g_jellyfish
質問者

お礼

有難うございます。 1つずつ説明を目で追っていきノートに書き出してみると導くことができました。

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • jjon-com
  • ベストアンサー率61% (1599/2592)
回答No.2

a,b,n,cなどの変数ではなく,イメージしやすい具体的な数値の例とともに回答したことがあります。よろしければどうぞ。

参考URL:
http://okwave.jp/qa2796133.html
g_jellyfish
質問者

お礼

ありがとうございます。 よく理解できました。

すると、全ての回答が全文表示されます。

関連するQ&A