• 締切済み

H17秋 問2

この問題を解く前に何を言っているのかが分かりません。教えてください。その次に解き方を教えてください。 0000 ~ 4999 のアドレスをもつハッシュ表があり,レコードのキー値からアド レスに変換するアルゴリズムとして基数変換法を用いる。キー値が 55550 のとき, アドレスはどれか。ここで,基数変換法ではキー値を 11 進数と見なし,10 進法 に変換した後,下 4 けたに対して 0.5 を乗じた結果(小数点以下は切捨て)を レコードのアドレスとする。  ア 0260  イ 2525  ウ 2775  エ 4405

みんなの回答

noname#50176
noname#50176
回答No.4

メモリアドレスが以下のようにあります。 0000(番地): 0(0000番地のデータ) 0001(番地): 1(0001番地のデータ) : : 4999(番地): 255(4999番地のデータ) ※本来アドレスは16進数で表示するので、0000h~1387h です。 (問題文では一度10進に変換してその後、16進変換していないので 必然的にアドレスは10進数です) 上のカッコの説明は理解しなくても大丈夫ですができるだけ 理解してみてください。 ここでキー値をハッシュ値変換プログラム(以後プログラムと言う) に渡してプログラムが専用の計算で実アドレスを算出します。 (パスワードを入力して目的の何かを得る感覚と考えてください) ≪流れ≫ 1.ユーザーがキー値 55550 をプログラムに入力 2.プログラムがキー値を実アドレス すなわち実際に欲しいデータが格納されているアドレスに変換 ・11進数の 55000 を 10進数にするので 11(桁-1)乗の重みを かければよく、 5*11(5-1)乗+5*11(4-1)乗+5*11(3-1)乗+5*11(2-1)乗+0*11(1-1)乗 =73205+6655+605+55+0=80520 下4桁は、0520=520 これに 0.5 をかけて、520*0.5=260=0260 (先頭の0は4桁合わせのものです) 冒頭のメモリアドレス内に存在する、0260番地 に目的のデータ があります。 ハッシュ法はハッシュ編成形式のファイルなどで使われ ハッシュ探索を用います。 キー値から直接アドレスを導くので探索法の基礎である 線形探索法、二分探索法、ブロック探索法と違い理論上1回で探索 できる(目的データを取得できる)わけです。 ただしハッシュではあくまで一意外計算(計算の答えがダブる)で 例えば、キー値の10進上4桁と下4桁の和の下4桁が答えなら (実際はこんな簡単な計算はありませんが考え方として) 41000=4100+1000=5100 95546=9554+5546=15100=5100 と重なりますね。 これが「シノニム現象」(衝突する、重複すると言うこと)です。

  • ymmasayan
  • ベストアンサー率30% (2593/8599)
回答No.3

解き方はNo.1さんの書かれたとおりです。 なぜこんな面倒なことをするのかですが。 ハッシュというのは非常に多くのキーの種類が存在する可能性があるが 同時に存在するものは非常に少ないと言うときテーブルのレコード数を節約しようとするものです。 できるだけバラバラに入れたいので凝ったことをやるわけです。 この問題では少なくとも55550種類のキーが存在する可能性が有りますが マックス同時存在キー数を5000(実際はその何割か)としています。

回答No.2

答えのみ書いてしまったので説明を。 0000 ~ 4999 にデータが記録されています。 記録されているアドレスを教えたくないが、他の人にもデータが見れるようにしたいときに、キー値を使います。 この例の場合は、利用者はキー値「55550」をいれると「0260」に記録してあるデータを読めます。 この使い方は一例なので、他にも記録するときに使用したりなど、使い道は多様です。

回答No.1

11進数[55550] ↓ 10進数[80520] ↓ 下4桁[0520] ↓ ×0.5[260] ↓ 答え[ア 0260]

関連するQ&A

  • 問題の解き方

    基本情報技術者の、この問題がよくわかりません。 この問題はどうやって解くのでしょうか?解く前に問題の意味もあまり理解できなく、解説をお願いいたします。 ●0000~4999のアドレスを持つハッシュ表があり、レコードのキー値からアドレスに変換するアルゴリズムとして基数変換法を用いる。キー値が55550のときのアドレスはどれか。ここで、基数変換法ではキー値を11進数と見なし、10進数に変換した後、下4けたに対して0.5を乗じた結果(小数点以下は切捨て)をレコードのアドレスとする。

  • この問題がわかりません

    基本情報試験の過去問をやっているのですが、よく理解できなかったので、解説をお願いします。 ●負数を2の補数で表す 16 ビットの符号付き固定小数点数の最小値を表すビット列を, 16 進数として表したものはどれか。 ア 7FFF    イ 8000    ウ 8001    エ FFFF これの答えはイだそうで、説明では「ア~エの16進数をそれぞれ、2進数、10進数、10進数の絶対値に変換して評価する。」とあり表が載っています。 ア・0111111111111111・・・+32767・・・絶対値が32767 イ・1000000000000000・・・ー32768・・・絶対値が32768 ウ・1000000000000001・・・ー32767・・・絶対値が32767 エ・1111111111111111・・・-1・・・・・・・絶対値が1 これでは、イとウ、エがーの符合になっていますが、なぜそうなるのか、基数変換した時の値はどうやって出しているんでしょうか? 回答よろしくお願いします。

  • ハッシュ法について

    今、アルゴリズムの教科書を読んでるんですが、ハッシュ法の意味が分かりません。 教科書にはハッシュ法はキーの検索をレコードの数によらずほとんど一定時間で行えるキー検索であると書いてあるんですが、レコードって何ですか? キー検索って何ですか? 回答よろしくお願いします。

  • 17年秋の過去問で

    問66 商品有高帳から,期末在庫品を先入先出法で評価した場合の在庫評価額は何千円か。       数量(個) 単価(千円) 期首有高   10 10 仕入高       4月   1 11 6月   2 12 7月   3 13 9月   4 14 期末有高   12   ア 123    イ 138    ウ 150    エ 168 なぜ、4月~9月までの売り上げが8個であるとわかるのでしょうか? 教えてください。よろしくお願いいたします。

  • 基本情報技術者 平成18春期 午前問9

    次の表は、入力文字列を検査する為の状態遷移表である。この検査では、初期状態をaとし、文字列の入力中に状態がeになれば不合格とする。 回答群で示される文字列のうち、この検査で符号家屋となるものはどれか。ここで、回答群中の△は空白を表す。               入力文字          空白 数字 符号 小数点 その他 現在の状態a   a   b   c   d     e         b   a   b   e   d    e         c   e   b   e   d    e         d   a   e   e   e    e 選択肢 ア+0010 イ-1  ウ12.2  エ9.△     答えウ12.2 がよくわかりません。参考書説き方の欄で、ウは、abbdeとなるのは理解できるのですが、その他の選択肢も、アcbbeでeになって、エもbdeでeになると思うのですが。ちなみに参考書にはアはacbbbb、エはabdaとなっています。 よろしくお願いします。

  • 基本情報試験の問題で

    基本情報試験の勉強で、この問題がよく意味がわかりません。答えはエだそうですが、どうしてこうなるんでしょうか?解説をお願いいたします。 ●2進の浮動小数点表示で誤差を含まずに表現できる10進数はどれか。 ア 0.2  イ 0.3 ウ 0.4       エ 0.5

  • 基本情報技術者試験の過去問で分からない問題があります

    http://情報処理試験.jp/FE17a-am/k35.html クラスCの IP アドレスで,サブネットマスクを 255.255.255.252 としたとき,使用できるホスト数は幾つか。 ア 1     イ 2     ウ 3     エ 4 【答 イ】  解説  252 を2進数にすると 1111 1100 である。サブネットマスクを 255.255.255.252 にすると、ホスト部のアドレスは、 00, 01, 10, 11 の4つであるが、 00 と 11 は、使用できないので、ホスト数は2つである。 ********************************* この問題の核であり、根本だとは思いますが、「00と11は使用できない」とはどういうことですか?なぜ使用できないのですか?

  • 基本情報、過去問について

    こんにちは、2010年10月の基本情報技術者試験を受験して 午後試験で 50.50点だったものです。 趣味でプログラミングをしていて、 JavaScriptでポーカーを再現し、 同じくJavaScriptで音声は出ませんが、 http://sdin.jp/browser/casino/blackjack/ と同様の動作をするブラックジャックを作るくらいです。 ( CGI, サーバーのことはよくわかりません。) 現在 暇な時間をみて、4月の同試験の受験に向けて勉強しているのですが、 わからないことが出てきましたので、質問させていただきます。 下記の問題についてなのですが、 シノニムレコードの発生する可能性があるファイルアクセスはどれか。 ア 区分編成ファイルへのレコードの追加 イ 索引順編成ファイルのレコードの更新 ウ 順編成ファイルのレコードの更新 エ 直接編成ファイルへのレコードの追加 初見でこの問題を解いたところ間違えてしまったのですが、 正解は エ らしいのですが、いくつか質問させていただきます。 (1) インターネットで調べてみたのですが、、 直接編成ファイルは「間接アドレス方式」で ハッシュ関数などでアドレスを変換した場合 同じハッシュ値になる場合にシノニムレコードが発生する、 上記の理解でよろしいでしょうか? (2) それと、索引編成ファイルについても調べたのですが、 索引領域ファイルは階層構造になっている目次  (マスタ索引、シリンダ索引、トラック索引の索引領域) と、 データを格納する基本データ領域 の二つで構成されている、 とありましたが、(詳しいことはわかりません) 調べたところによりますと、 索引編成ファイルも直接アクセス可能とあったのですが、 シノニムレコードは発生しないのでしょうか。 データへのアクセスの方法がハッシュ関数などを使わない 別の方法なのでしょうか? それは二分探索のようなものなのでしょうか? (3) これらのファイル編成の方法に出てくる「ファイル」とは データベースのファイルを指すのでしょうか。 ほかのファイルのこともいうのでしょうか? どなたかご存知の方教えていただけないでしょうか? よろしくお願いします。

  • クラスCのIPアドレス

    ア)192.0.0.255 イ)192.0.256.17 ウ)192.128.0.0 エ)192.128.0.155   以上の内、クラスCのIPアドレスとしてコンピュータに付与できるものをおしえてください。 どうして付与できるか、できないかの解説もお願いします。

  • 情報数学の宿題助けてください。

    問6 8ビットのデータの下位4ビットを0にし、他のビットは変化させない論理演算はどれか。 ア 16進数F0と論理和をとる。 イ 16進数0Fと論理和をとる ウ 16進数F0と論理積をとる  エ 16進数0Fと論理積をとる 問7 8ビットのデータの左から4ビット目を1、他のビットは変化させない論理演算はどれか ア 16進数01と論理和をとる。 イ 16進数10と論理和をとる ウ 16進数01と論理積をとる  エ 16進数10と論理積をとる 問11 丸め誤差に関する記述として、適切なものはどれか。 ア 演算結果がコンピュータの扱える最大値を超えることによって生じる誤差である。 イ 絶対値のほぼ等しい数値の加減算において、上位の有効数字が失われることによって生じる誤差である。 ウ 浮動小数点数の下位部分が失われることにおいて、指数部が小さい方の数値の仮数部の下位部分が失われることによって生じる誤差である。 エ 数表現のけた数に限度があることによって、最小けたより小さい部分について四捨五入や切り上げ、切捨てを行うために生じる誤差である。 過程もお願い致します。

専門家に質問してみよう