大学院-筆記試験練習:线性代数和数据结构(2)
- 1-前言
- 2-线性代数-题目
-
- 【問1】一次独立・一次従属の判定
- 【問2】点と平面
-
- [(1) 平面に垂直な直線](#(1) 平面に垂直な直線)
- [(2) 交点と距離](#(2) 交点と距離)
- [【問3】行列の固有値・固有ベクトルと C n C^n Cn](#【問3】行列の固有値・固有ベクトルと C n C^n Cn)
-
- [(1) 固有値と固有ベクトル](#(1) 固有値と固有ベクトル)
- [固有方程式は $$ \det(C-\lambda I)](#固有方程式は $$ \det(C-\lambda I))
-
-
- [(2) C n C^n Cn の計算](#(2) C n C^n Cn の計算)
- [🔎 大学院入試で評価されやすいポイント](#🔎 大学院入試で評価されやすいポイント)
-
- 3-线性代数-参考答案
- 4-数据结构-题目
- 5-数据结构-参考答案
- [问1:二分搜索树(Binary Search Tree, BST)](#问1:二分搜索树(Binary Search Tree, BST))
-
- 已给条件在干什么?
-
- [① `insert` 函数](#①
insert函数) - [② `visit` 函数](#②
visit函数)
- [① `insert` 函数](#①
- [(1)依次插入 S = {3, 7, 1, 5}](#(1)依次插入 S = {3, 7, 1, 5})
-
- [插入 3](#插入 3)
- [插入 7](#插入 7)
- [插入 1](#插入 1)
- [插入 5](#插入 5)
- [(2)对这棵树执行 `visit(root)` 输出顺序](#(2)对这棵树执行
visit(root)输出顺序) -
- [✅ 输出结果:](#✅ 输出结果:)
- [(3)`insert` 的时间复杂度](#(3)
insert的时间复杂度) -
- [✅ 最好情况(完全平衡)](#✅ 最好情况(完全平衡))
- [❌ 最坏情况(完全退化成链表)](#❌ 最坏情况(完全退化成链表))
- (4)对根节点做「右单旋转」
- 问2:排序算法
-
- [先看 Step 在干嘛(这是关键)](#先看 Step 在干嘛(这是关键))
-
- [Step 2:](#Step 2:)
- [Step 3:](#Step 3:)
- [(1)A = {3, 4, 2, 1} 排序过程](#(1)A = {3, 4, 2, 1} 排序过程)
-
- [i = 0](#i = 0)
- [i = 1](#i = 1)
- [i = 2](#i = 2)
- [i = 3](#i = 3)
- (2)算法名称
-
- [✅ 正式答案:](#✅ 正式答案:)
- [(3)平均 & 最坏时间复杂度](#(3)平均 & 最坏时间复杂度)
- (4)是不是稳定排序?
- (5)最坏时间复杂度更小的排序算法
-
- [✅ 最稳妥写法:](#✅ 最稳妥写法:)
- [📌 给你一个「考试速记总结」](#📌 给你一个「考试速记总结」)
- 6-总结
1-前言
为了升到自己目标的大学院,所作的努力和学习,这里是线性代数和数据结构部分。

2-线性代数-题目
【問1】一次独立・一次従属の判定
解答
3 つのベクトル
( 0 1 4 ) , ( 2 − 1 0 ) , ( 1 0 2 ) \begin{pmatrix} 0\ 1\ 4 \end{pmatrix}, \quad \begin{pmatrix} 2\ -1\ 0 \end{pmatrix}, \quad \begin{pmatrix} 1\ 0\ 2 \end{pmatrix} (0 1 4),(2 −1 0),(1 0 2)
が一次独立か一次従属かを判定する。
これらを列ベクトルとする行列を考える。
A = ( 0 2 1 1 − 1 0 4 0 2 ) A= \begin{pmatrix} 0 & 2 & 1\ 1 & -1 & 0\ 4 & 0 & 2 \end{pmatrix} A=(021 1−10 402)
行列式を計算すると,
det A = 0 ⋅ ∣ − 1 0 0 2 ∣ − 2 ⋅ ∣ 1 0 4 2 ∣ + 1 ⋅ ∣ 1 − 1 4 0 ∣ \det A =0\cdot \begin{vmatrix} -1 & 0\ 0 & 2 \end{vmatrix} -2\cdot \begin{vmatrix} 1 & 0\ 4 & 2 \end{vmatrix} +1\cdot \begin{vmatrix} 1 & -1\ 4 & 0 \end{vmatrix} detA=0⋅ −10 02 −2⋅ 10 42 +1⋅ 1−1 40
= − 2 ( 2 ) + 4 = 0 =-2(2)+4=0 =−2(2)+4=0
よって,これらのベクトルは 一次従属である。
1 2 ( 0 1 4 ) + 1 2 ( 2 − 1 0 ) = ( 1 0 2 ) \frac{1}{2}\begin{pmatrix}0\\1\\4\end{pmatrix} +\frac{1}{2}\begin{pmatrix}2\\-1\\0\end{pmatrix} =\begin{pmatrix}1\\0\\2\end{pmatrix} 21 014 +21 2−10 = 102
【問2】点と平面
(1) 平面に垂直な直線
点
A ( 7 , 1 , − 3 ) A(7,1,-3) A(7,1,−3)
および平面
β : ; x + 2 y − 3 z + 10 = 0 \beta:;x+2y-3z+10=0 β:;x+2y−3z+10=0
が与えられている。
平面 β \beta β の法線ベクトルは
n ⃗ = ( 1 , 2 , − 3 ) \vec n=(1,2,-3) n =(1,2,−3)
である。
したがって,点 A A A を通り平面 β \beta β に垂直な直線は,
( x , y , z ) = ( 7 , 1 , − 3 ) + t ( 1 , 2 , − 3 ) (x,y,z)=(7,1,-3)+t(1,2,-3) (x,y,z)=(7,1,−3)+t(1,2,−3)
と表される。
(2) 交点と距離
直線と平面の交点を P P P とする。
直線の式を平面の方程式に代入すると,
( 7 + t ) + 2 ( 1 + 2 t ) − 3 ( − 3 − 3 t ) + 10 = 0 (7+t)+2(1+2t)-3(-3-3t)+10=0 (7+t)+2(1+2t)−3(−3−3t)+10=0
整理して,
28 + 14 t = 0 ⇒ t = − 2 28+14t=0 \Rightarrow t=-2 28+14t=0⇒t=−2
よって交点 P P P は
P = ( 5 , − 3 , 3 ) P=(5,-3,3) P=(5,−3,3)
である。
距離 A P AP AP は
A P = ∣ t ∣ ⋅ 1 2 + 2 2 + ( − 3 ) 2 = 2 14 AP=|t|\cdot\sqrt{1^2+2^2+(-3)^2} =2\sqrt{14} AP=∣t∣⋅12+22+(−3)2 =214
となる。
【問3】行列の固有値・固有ベクトルと C n C^n Cn
行列
C = ( 2 − 1 3 6 ) C= \begin{pmatrix} 2 & -1\ 3 & 6 \end{pmatrix} C=(2−1 36)
について考える。
(1) 固有値と固有ベクトル
固有方程式は
\\det(C-\\lambda I) \\begin{vmatrix} 2-\\lambda \& -1 3 \& 6-\\lambda \\end{vmatrix} =(2-\\lambda)(6-\\lambda)+3
= λ 2 − 8 λ + 15 =\lambda^2-8\lambda+15 =λ2−8λ+15
よって,
( λ − 5 ) ( λ − 3 ) = 0 (\lambda-5)(\lambda-3)=0 (λ−5)(λ−3)=0
より,
λ = 5 , ; 3 \lambda=5,;3 λ=5,;3
が固有値である。
-
λ = 5 \lambda=5 λ=5 のとき,
( C − 5 I ) x ⃗ = 0 ⇒ y = − 3 x (C-5I)\vec{x}=0 \Rightarrow y=-3x (C−5I)x =0⇒y=−3xより,固有ベクトルは
( 1 − 3 ) \begin{pmatrix} 1\ -3 \end{pmatrix} (1 −3) -
λ = 3 \lambda=3 λ=3 のとき,
( C − 3 I ) x ⃗ = 0 ⇒ y = − x (C-3I)\vec{x}=0 \Rightarrow y=-x (C−3I)x =0⇒y=−xより,固有ベクトルは
( 1 − 1 ) \begin{pmatrix} 1\ -1 \end{pmatrix} (1 −1)
(2) C n C^n Cn の計算
行列 C C C は異なる 2 つの固有値をもつため,対角化可能である。
C = P D P − 1 C=PDP^{-1} C=PDP−1
とすると,
C n = P D n P − 1 C^n=PD^nP^{-1} Cn=PDnP−1
計算の結果,
C n = 1 2 ( 3 ⋅ 3 n − 5 n 3 n − 5 n − 3 ⋅ 3 n + 3 ⋅ 5 n − 3 n + 3 ⋅ 5 n ) C^n= \frac{1}{2} \begin{pmatrix} 3\cdot3^n-5^n & 3^n-5^n\ -3\cdot3^n+3\cdot5^n & -3^n+3\cdot5^n \end{pmatrix} Cn=21(3⋅3n−5n3n−5n −3⋅3n+3⋅5n−3n+3⋅5n)
となる。
🔎 大学院入試で評価されやすいポイント
- 「よって」「したがって」「である」を明確に使う
- 定義・方針 → 計算 → 結論 の順を守る
3-线性代数-参考答案
和题目在一起
4-数据结构-题目


問1.
図1は与えられた整数値を2分探索木に追加する
insert 関数と,2分探索木の各頂点を訪問し頂点に
格納された値を表示する visit 関数の疑似コードで
ある。create 関数は2分探索木の頂点を作成し,
print 関数は格納された値を表示する。さらに,頂
点 node に対し,node.key で格納された値を,
node.left で頂点に対する左の子を,node.right で
右の子を参照できるものとする。以下の問いに答え
よ。
(1)数列 S = {3, 7, 1, 5} を先頭から順に insert 関数
に与えたときに最終的に得られる 2 分探索木
を,図2の 2 分探索木の表記を参考に図示せよ。
(2)図2の 2 分探索木の根にあたる頂点を visit 関数
に与えたときに表示される値を順に示せ。
(3)insert 関数の時間計算量は,与えられる数列のデ
ータの並び順に依存する。任意のデータに対する
最善時間計算量と最悪時間計算量を,データ数 n
を用いてオーダー表記でそれぞれ答えよ。
(4)2 分探索木のすべての頂点の左右の部分木の高さの
差が 1 以内になるよう木の構造を変更するために
提案された操作に回転がある。図2の 2 分探索木
の根にあたる頂点を右に単回転して得られる 2 分
探索木を図示せよ。
図1:2分探索木に関する疑似コード
1: function insert(Node node, int key):
2: if node = null then
3: return create(key)
4: end
5: else if key < node.key then
6: node.left ← insert(node.left, key)
7: end
8: else if key > node.key then
9: node.right ← insert(node.right, key)
10: end
11: end
14: function visit(Node node):
15: if node != null then
16: print(node.key)
17: visit(node.left)
18: visit(node.right)
19: end
20: end
図2:2分探索木の例
(图中为一棵二分探索树,节点标号为 5, 3, 6, 2, 4, 1)
問2.
n 個の整数値が格納された配列 A が与えられたとき,
ステップ1から3により昇順にソートするアルゴリズ
ムに関し,以下の問いに答えよ。なお,配列の要素数
を n とし,i 番目の添字の要素を A[i] で参照でき,
i = 0,1,...,n−1 とする。
Step 1:以下の Step 2 と 3 を i = 0 から n−1 まで繰り返す。
Step 2:A[i]〜A[n−1] の中から最小値の要素の添字 p を探索する。
Step 3:A[i] と A[p] を交換する。
(1)配列 A = {3, 4, 2, 1} をソートする過程をすべて図示せよ。
(2)本アルゴリズムの名称を答えよ。
(3)任意の配列に対する平均時間計算量と最悪時間計算量を,
要素数 n を用いてオーダー表記でそれぞれ答えよ。
(4)値が同じである要素が 2 つ以上存在するデータをソート
した場合にソート前後でそれらの要素順序が変わら
ないようなソートを安定なソート(stable sort)と呼ぶ。
本アルゴリズムは安定なソートと言える場合は「はい」,
そうでない場合は「いいえ」と答えよ。
(5)本アルゴリズムよりも最悪時間計算量が小さいソート
アルゴリズムの名称を 1 つ答えよ。
5-数据结构-参考答案
问1:二分搜索树(Binary Search Tree, BST)
已给条件在干什么?
① insert 函数
这是标准二分搜索树插入算法:
规则只有一句话:
左子树 < 根 < 右子树
- key 小 → 往左插
- key 大 → 往右插
- 空节点 → 新建节点
② visit 函数
访问顺序是:
print(自己)
visit(左)
visit(右)
👉 这是 先序遍历(Preorder Traversal)
(1)依次插入 S = {3, 7, 1, 5}
我们一步一步来(考试必须这样脑内模拟)
插入 3
3
插入 7
7 > 3 → 右边
3
\
7
插入 1
1 < 3 → 左边
3
/ \
1 7
插入 5
-
5 > 3 → 右
-
5 < 7 → 左
3 / \ 1 7 / 5
👉 这就是最终的二分搜索树
(2)对这棵树执行 visit(root) 输出顺序
visit 是 先序遍历:根 → 左 → 右
按顺序:
- 访问 3
- 左子树 → 1
- 右子树 → 7
- 7 的左 → 5
✅ 输出结果:
3, 1, 7, 5
(3)insert 的时间复杂度
重点一句话:
BST 的效率取决于"树高"
✅ 最好情况(完全平衡)
- 树高 ≈ log n
- 插入一次:O(log n)
👉 最优时间复杂度:
O(log n)
❌ 最坏情况(完全退化成链表)
比如:1,2,3,4,5 这样插
- 树高 = n
- 插入要一路走到底
👉 最坏时间复杂度:
O(n)
(4)对根节点做「右单旋转」
这一步是 AVL 树 / 平衡二叉树的核心思想
原树(图2):
5
/ \
3 6
/ \
2 4
/
1
对根 5 做「右旋」
规则口诀(必背):
A B
/ \ / \
B C → D A
/ \ / \
D E E C
套用到本题:
- A = 5
- B = 3
旋转后结果:
3
/ \
2 5
/ / \
1 4 6
👉 这就是答案
问2:排序算法
先看 Step 在干嘛(这是关键)
Step 2:
在 A[i] ~ A[n-1] 中找最小值
Step 3:
把它和 A[i] 交换
👉 这是标准的:选择排序(Selection Sort)
(1)A = {3, 4, 2, 1} 排序过程
i = 0
找最小:1
交换 A[0] 和 A[3]
{1, 4, 2, 3}
i = 1
找 {4,2,3} 最小:2
交换 A[1] 和 A[2]
{1, 2, 4, 3}
i = 2
找 {4,3} 最小:3
交换 A[2] 和 A[3]
{1, 2, 3, 4}
i = 3
只剩一个 → 不变
(2)算法名称
✅ 正式答案:
選択ソート(Selection Sort)
(3)平均 & 最坏时间复杂度
重点结论(必须背):
- 无论什么输入
- 比较次数都一样
👉 所以:
平均时间复杂度:O(n²)
最坏时间复杂度:O(n²)
(4)是不是稳定排序?
稳定排序定义:
相同值的元素,排序前后相对顺序不变
选择排序的问题:
- 会把后面的元素「直接交换到前面」
- 会破坏相同元素的原始顺序
👉 不是稳定排序
✅ 答案:
いいえ
(5)最坏时间复杂度更小的排序算法
你只要写一个即可,常见正确答案:
- クイックソート(平均 O(n log n))
- マージソート(最坏 O(n log n))✅ 推荐
- ヒープソート(最坏 O(n log n))
✅ 最稳妥写法:
マージソート
📌 给你一个「考试速记总结」
问1关键词
-
insert → BST
-
visit:print → left → right = 先序遍历
-
BST 时间复杂度:
- 最好 O(log n)
- 最坏 O(n)
-
右旋:左孩子上位
问2关键词
- Step2 找最小 + Step3 交换 → 选择排序
- 时间复杂度:永远 O(n²)
- 稳定性:❌ 不稳定
- 更快算法:Merge Sort
6-总结
训练成长。!!