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

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

1-前言

为了升到自己目标的大学院,所作的努力和学习,这里是线性代数和数据结构部分。

2-线性代数-题目



3-线性代数-参考答案



4-数据结构-题目

【問題1】ハッシュ法と衝突処理

要素数 (n) 個のデータ (x_1, x_2, \ldots, x_n) を管理するために,

配列サイズ (m) のハッシュ表を用い,

ハッシュ関数

h(x) = x \\bmod m

によってデータを格納するものとする。

衝突処理として チェイン法を用いる場合について,次の問いに答えよ。

(1)ハッシュ関数に衝突が発生していない場合の探索に要する最悪時間計算量を,

要素数 (n) を用いてオーダー記法で答えよ。

(2)すべての要素が同一のハッシュ値を取る場合の探索に要する最悪時間計算量を,

要素数 (n) を用いてオーダー記法で答えよ。

(3)上記(2)の場合において,ハッシュ法が探索アルゴリズムとして有効であると言えない理由を簡潔に説明せよ。

※ 陷阱:**「平均」ではなく「最悪」**を正しく答えられるか


【問題2】連結リストの実装と操作

単方向連結リストを用いて,

要素 (x_1, x_2, \ldots, x_n) を格納する線形リストを実装する。

以下の 2 つの実装方法を考える。

  • 実装方法A:先頭要素へのポインタのみを保持する。
  • 実装方法B:先頭要素および末尾要素へのポインタを保持する。

次の問いに答えよ。

(1)実装方法Aにおいて,末尾に新しい要素を追加する操作の最悪時間計算量を,

要素数 (n) を用いてオーダー記法で答えよ。

(2)実装方法Bにおいて,末尾に新しい要素を追加する操作の最悪時間計算量を,

要素数 (n) を用いてオーダー記法で答えよ。

(3)実装方法Bが,キューの実装に適している理由を簡潔に説明せよ。

※ 陷阱:「連結リストの種類」ではなく「操作コスト」を問う


【問題3】再帰処理と連結リスト

先頭要素へのポインタをそれぞれ list1list2 として保持する

2 つの単方向連結リストがある。

両リストは,要素の値が降順に整列されているものとする。

次の擬似コードが与えられた。

复制代码
function merge(list1, list2) {
  if (list1 == NULL) return list2
  if (list2 == NULL) return list1
  if (list1.val >= list2.val) {
    list1.next = merge(list1.next, list2)
    return list1
  } else {
    list2.next = merge(list1, list2.next)
    return list2
  }
}

(1)この関数の処理内容を簡潔に説明せよ。

(2)list1 の要素数を (n),list2 の要素数を (m) としたとき,

この関数の最悪時間計算量をオーダー記法で答えよ。

※ 陷阱:再帰=指数時間と誤解しやすい


【問題4】ソートアルゴリズムと安定性

要素数 (n) の配列をソートするアルゴリズムについて考える。

次の問いに答えよ。

(1)ソートアルゴリズムが「安定である」とはどういう性質を持つことか,簡潔に説明せよ。

(2)最悪時間計算量が (O(n^2)) であり,かつ安定なソートアルゴリズムの例を 1 つ挙げ,その理由を簡潔に説明せよ。

(3)最悪時間計算量が (O(n \log n)) であり,かつ安定なソートアルゴリズムの例を 1 つ挙げよ。

※ 陷阱:計算量だけ合っていて安定性を間違える


5-数据结构-参考答案

問題1:ハッシュ法


(1)O(1)

判定

正确

模范答案(保持即可)

衝突が起きていない場合,探索に要する最悪時間計算量は O(1) である。


(2)O(n)

判定

正确

模范答案

すべての要素が同一のハッシュ値を取る場合,探索に要する最悪時間計算量は O(n) である。


(3)理由说明

你的原答案(问题点)

  • 思路
  • ❌ 日语不够学术
  • ❌ 没有明确说「ハッシュ法の利点が失われる」

⭐ 满分标准答案(直接背)

すべてのデータが同一のハッシュ値に写像される場合,

すべての要素が 1 つのチェインに格納されるため,

探索は連結リストと同様の処理となる。

その結果,探索時間は O(n) となり,

ハッシュ法の高速な探索という利点が失われる。


問題2:連結リストとキュー


(1)O(n)

判定

正确

模范答案

実装方法Aでは末尾要素への直接的な参照を持たないため,

末尾に要素を追加するには先頭から探索する必要があり,

最悪時間計算量は O(n) である。


(2)O(1)

判定

正确


(3)理由说明

你的原答案(问题点)

  • ❌「同じ方法です」不够
  • ❌ 没明确提 enqueue / dequeue

⭐ 满分标准答案

キューは先入先出(FIFO)のデータ構造であり,

末尾への追加と先頭からの削除を効率的に行う必要がある。

実装方法Bでは,先頭および末尾の両方へのポインタを保持するため,

これらの操作を O(1) で実現できる。


問題3:再帰と連結リスト


(1)処理内容说明

你的原答案(严重扣分点)

  • ❌ 说明太模糊
  • ❌ 没说这是「整列済みリストのマージ」
  • ❌「算法」是中文

⭐ 满分标准答案(非常重要)

この関数は,

降順に整列された 2 つの単方向連結リストを比較しながら,

要素の値が大きい方を先頭とする新たな連結リストを再帰的に生成する処理である。

すなわち,2 つの整列済み連結リストを 1 つの整列済み連結リストに統合する。


(2)O(n + m)

判定

正确

模范答案

各要素は 1 回ずつ比較されるため,

最悪時間計算量は O(n + m) である。


問題4:ソート


(1)安定性的定义

你的原答案(❌ 错)

  • ❌ 题目问的是定义
  • ❌ 你回答成了某种算法的特征

⭐ 正确答案(必背)

ソートアルゴリズムが安定であるとは,

値が等しい要素が複数存在する場合において,

ソート前後でそれらの要素の相対的な順序が保持される性質をいう。


(2)O(n²) & 安定

判定

选择正确(挿入ソート)

表达升级版

挿入ソートは,

要素を順に挿入する際に等しい値の要素の順序を変更しないため安定であり,

最悪時間計算量は O(n²) である。


(3)O(n log n) & 安定

判定

正确

模范答案

マージソート


🎯 总评(立命馆视角)

项目 评价
思路 ✅ 非常扎实
计算量判断 ✅ 全对
扣分点 ❌ 日语定义表达
当前得分 70~75%
修正后 稳 90%+

6-总结

训练成长。!!

相关推荐
奔波霸的伶俐虫1 小时前
windows docker desktop 安装修改镜像学习
学习·docker·容器
BullSmall1 小时前
《逍遥游》
学习
奔波霸的伶俐虫1 小时前
spring boot集成kafka学习
spring boot·学习·kafka
CCPC不拿奖不改名1 小时前
面向对象编程:继承与多态+面试习题
开发语言·数据结构·python·学习·面试·职场和发展
GHL2842710901 小时前
通义千问的 Function Call - demo学习
学习·ai·ai编程
知识分享小能手1 小时前
Ubuntu入门学习教程,从入门到精通,Ubuntu 22.04 中的服务器 —— 知识点详解 (22)
服务器·学习·ubuntu
慎独4131 小时前
记忆力革命:学习力的核心与其目脑力的科技探索
科技·学习
_Kayo_1 小时前
Node.js 学习笔记6
笔记·学习·node.js
汽车通信软件大头兵1 小时前
Autosar--ETAS Isolar能够自由学习啦!
网络·学习·安全·汽车·etas·uds·isoalr
好奇龙猫1 小时前
【人工智能学习-AI-MIT公开课第 17.-学习:boosting 算法】
人工智能·学习·boosting