大学院-筆記試験練習:线性代数和数据结构(3)
- 1-前言
- 2-线性代数-题目
- 3-线性代数-参考答案
- 4-数据结构-题目
- 【問題1】ハッシュ法(衝突・順序トラップ)
- 【問題2】ハッシュ法と計算量(概念理解)
- [【問題3】連結リスト × ハッシュ(構造理解)](#【問題3】連結リスト × ハッシュ(構造理解))
- 【問題4】実装理解(超高频)
- 5-数据结构-参考答案
- 【問題1】ハッシュ法(衝突・順序)
- 【問題2】ハッシュ法と計算量
- [【問題3】連結リスト × ハッシュ(チェイン法)](#【問題3】連結リスト × ハッシュ(チェイン法))
- 【問題4】記述問題(「常に」の罠)
1-前言
为了升到自己目标的大学院,所作的努力和学习,这里是线性代数和数据结构部分。

2-线性代数-题目


3-线性代数-参考答案




4-数据结构-题目
【問題1】ハッシュ法(衝突・順序トラップ)
次のデータ列
S = {18, 7, 4, 15, 9, 12}
に対して,
ハッシュ関数
h(a) = a \\bmod 5
を用い,先頭の要素から順に ハッシュ表に格納する。
(1) 最初に 衝突(collision) が発生する要素の値を答えよ。
(2) 上記の格納操作において,衝突が一切発生しなかった場合の探索に要する最悪時間計算量を,オーダー表記で答えよ。
※ ただし,衝突解決法は考慮しないものとする。
・「先頭から順に」
・「最初の衝突」=2回目に同じ添字が出た瞬間
【問題2】ハッシュ法と計算量(概念理解)
ハッシュ法を用いたデータ探索に関して,以下の問いに答えよ。
(1) 衝突が発生していない場合における探索の最悪時間計算量を,理由とともに述べよ。
(2) すべての要素が同一のハッシュ値に写像された場合,探索の最悪時間計算量はどのようになるか。オーダー表記で答えよ。
・「平均」ではなく 最悪時間
・「理由とともに」=一文説明必須
【問題3】連結リスト × ハッシュ(構造理解)
チェイン法(連結リスト)を用いて衝突を解決するハッシュ表を考える。
ハッシュ表の各要素は 単方向連結リスト で構成されている。
このとき,
(1) 各リストの先頭要素のアドレスのみを保持している場合,
ある要素を探索する際の最悪時間計算量を,ハッシュ表の要素数 (n) を用いて答えよ。
(2) 上記の方法が,衝突が多発した場合に性能低下を引き起こす理由を簡潔に説明せよ。
・ハッシュ表サイズではなく データ数 n
・「簡潔に」= 2行以内想定
【問題4】実装理解(超高频)
ハッシュ法を用いたデータ管理において,
次の文が正しいかどうかを判断し,正しくない場合はその理由を述べよ。
「ハッシュ関数が適切であれば,
データの探索・挿入・削除はいずれも常に (O(1)) で実行できる。」
・「常に」・削除も含まれている点
5-数据结构-参考答案
【問題1】ハッシュ法(衝突・順序)
(1) 最初に衝突が発生する要素
解答
最初に衝突が発生する要素の値は 15 である。
理由
先頭の要素から順に
18 → 7 → 4 → 15 → 9 → 12
をハッシュ関数 ( h(a)=a \bmod 5 ) により格納する。
h(18)=3,\\quad h(7)=2,\\quad h(4)=4,\\quad h(15)=0
ここで,すでに ( h(15)=0 ) に対応する添字には要素 18 が格納されているため,
15 を格納する際に最初の衝突が発生する。
(2) 衝突が発生しない場合の探索の最悪時間計算量
解答
探索に要する最悪時間計算量は (O(1)) である。
理由
衝突が発生しない場合,
ハッシュ関数により探索対象の要素が格納されている位置を直接計算できるため,
定数時間で探索が可能である。
【問題2】ハッシュ法と計算量
(1) 衝突が発生していない場合
解答
最悪時間計算量は (O(1)) である。
理由
衝突が存在しない場合,
探索対象の要素はハッシュ関数によって一意に配列の添字へ写像され,
配列の直接参照により定数時間で探索できるためである。
(2) すべての要素が同一のハッシュ値に写像された場合
解答
最悪時間計算量は (O(n)) である。
理由
すべての要素が同一の添字に格納されると,
探索は連結リストを先頭から順に走査することになり,
要素数 (n) に比例した時間が必要となるためである。
【問題3】連結リスト × ハッシュ(チェイン法)
(1) 探索の最悪時間計算量
解答
最悪時間計算量は (O(n)) である。
理由
衝突が集中した場合,
すべての要素が同一の連結リストに格納される可能性があり,
その場合は先頭から順に (n) 個の要素を探索する必要があるためである。
(2) 性能低下が起こる理由
解答
衝突が多発すると,各ハッシュ値に対応する連結リストが長くなり,
探索処理が配列アクセスではなく線形探索となるため,
探索性能が低下する。
【問題4】記述問題(「常に」の罠)
判断
誤りである。
理由
ハッシュ関数が適切であっても,
衝突が完全に回避されるとは限らず,
衝突が発生した場合には探索・挿入・削除において
線形時間 (O(n)) を要する可能性があるためである。