ハッシュ衝突の対策
前回の授業で説明したハッシュ法は、データから簡単な計算(ハッシュ関数)で求まるハッシュ値をデータの記憶場所とする。しかし、異なるデータでも同じハッシュ値が求まった場合、どうすれば良いか? ハッシュ法を簡単なイメージで説明 […]
ハッシュ法(導入)
前半は中間試験の返却と解説を行う。後半は次のテーマのハッシュ法の導入話。 ここまでの授業では、配列(データ検索は、登録順保存ならO(N)、2分探索ならO(log N)となる、2分探索ができるのは配列がランダムアクセスがで […]
B木とデータベース
2分探索木の考え方を拡張したもので、B木がある。 B木の構造 2分木では、データの増減で木の組換えの発生頻度が高い。そこで、1つのノード内に複数のデータを一定数覚える方法をとる。B木では、位数=Nに対し、最大2N個のデー […]
演算子と2分木による式の表現
2分木の応用として式の表現の説明を行うけど、その前に計算式の一般論の説明を行う。 逆ポーランド記法 一般的に 1*2 + 3*4 と記載すると、数学的には演算子の優先順位を考慮して、(1*2)+(3*4) のように乗算を […]
意思決定木と構文解析
前回までの授業で2分探索木の説明をしてきたが、このデータ構造は他のデータを扱う際にも用いられる。ここで、意思決定木と構文木を紹介する。 意思決定木 意思決定木の説明ということで、yes/noクイズの例を示しながら、2分木 […]
AVLと2分ヒープ
前回、2分探索木へのデータ追加の説明と、演習課題を行っていたが、演習時間としては短いので、今日も前半講義で残り時間は演習とする。 2分探索木へのデータ追加と不均一な木の成長 先週の講義で説明していた、entry() では […]
2分探索木の処理とデータ追加処理
前回の授業では、当初予定に加え、この後に示すデータの追加処理の説明を行った。その代わり、簡単な2分木の演習が抜けていたので少し演習を追加。 2分木の簡単な処理 int count( struct Tree* p ) { […]
深さ優先探索と幅優先探索
2分探索木の説明で、深さ優先探索、幅優先探索の話をしたので、補足説明。 幅優先探索(breadth-first search)は、待ち行列を使って実装可能なことを示すサンプルコード。待ち行列は授業で説明したFIFOでは、 […]
2分探索木
配列やリスト構造のデータの中から、目的となるデータを探す場合、配列であれば2分探索法が用いられる。これにより、配列の中からデータを探す処理は、O(log N)となる。(ただし事前にデータが昇順に並んでいる必要あり) // […]
双方向リスト
最初に、前期期末試験で「メモリの番地の理解が怪しい」人が多かったので、その確認のための Forms による小テストを行う。 情報構造論の10/5(火)小テスト 実施してみらた、各問題とも50%程度の正解率。ひとまず解説を […]