【大学院-筆記試験練習:线性代数和数据结构(3))】

大学院-筆記試験練習:线性代数和数据结构(3)

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)) を要する可能性があるためである。


相关推荐
正在走向自律1 小时前
【3/5】人工智能训练师 三级/高级工 考证学习方向:从“独立执行”到“设计、归因与全链条负责”
人工智能·学习·人工智能训练师·注方案设计·数据质控负责人·模型评测与调优辅助·ai训练项目交付
CCIE-Yasuo3 小时前
网络安全-学习数据库-Mysql-2
数据库·学习·mysql
La Pulga4 小时前
【FreeRTOS源码学习笔记】任务切换
单片机·mcu·学习·嵌入式·freertos·实时操作系统
li星野4 小时前
【学习记录】逻辑分析仪完全入门:从品牌方案到采样率、存储深度的核心概念解析
学习
旖旎夜光5 小时前
【C++ 基础入门】类和对象(上):封装、对象模型与 this 指针
开发语言·c++·笔记·学习
WEI_YANG_JU6 小时前
初中数学教学中合作学习的研究与实践
学习
码农小韩6 小时前
FPGA学习(一)——LED点灯与开发流程
学习·fpga开发·入门·环境配置·仿真·点灯
李长渊哦6 小时前
Qoder 自定义子智能体(Subagent)学习笔记
chrome·笔记·学习
代码山河7 小时前
基本类型转换:自动类型转换与强制类型转换
java·学习·架构·教程·面向对象·项目
旖旎夜光8 小时前
【C++ 基础入门】命名空间、输入输出、缺省参数与函数重载
开发语言·c++·笔记·学习