大学院-筆記試験練習:线性代数和数据结构(17)
- 1-前言
- 2-线性代数-题目
- 3-线性代数-参考答案
- 4-数据结构-题目
- 5-数据结构-参考答案
- 【問題1:二分探索木】解答
-
-
- [(1) 解答](#(1) 解答)
- [(2) 解答](#(2) 解答)
- [(3) 解答](#(3) 解答)
- [(4) 解答](#(4) 解答)
-
- 【問題2:探索アルゴリズム(BFS)】解答
-
-
- [(1) 解答](#(1) 解答)
- [(2) 解答](#(2) 解答)
- [(3) 解答](#(3) 解答)
- [(4) 解答](#(4) 解答)
- [(5) 解答](#(5) 解答)
-
- 【問題3:ソートアルゴリズム】解答
-
-
- [(1) 解答](#(1) 解答)
- [(2) 解答](#(2) 解答)
- [(3) 解答](#(3) 解答)
- [(4) 解答](#(4) 解答)
-
- 【問題4:連結リスト】解答
-
-
- [(1) 解答](#(1) 解答)
- [(2) 解答](#(2) 解答)
- [(3) 解答](#(3) 解答)
- [(4) 解答](#(4) 解答)
-
- 6-总结
1-前言
为了升到自己目标的大学院,所作的努力和学习,这里是线性代数和数据结构部分。

2-线性代数-题目


3-线性代数-参考答案





4-数据结构-题目
【問題1:二分探索木】(模拟)
整数値を格納する二分探索木に対し,以下の条件で挿入を行う。
- 各節点は 1 つの整数値を保持する
- 左部分木には自分より小さい値,右部分木には大きい値のみを格納する
- 同じ値は挿入されないものとする
(1)
数列
S={12, 5, 18, 2, 9, 15, 19, 8}
を先頭から順に挿入したとき,最終的に得られる二分探索木を図示せよ。
(2)
(1) で得られた二分探索木の根に対して,
「節点 → 左部分木 → 右部分木」の順で訪問する関数を適用したとき,表示される値を順に示せ。
(3)
挿入される数列が昇順に整列されている場合の,
二分探索木への挿入処理全体の最悪時間計算量を,要素数 (n) を用いてオーダー表記で答えよ。
(4)
(1) の二分探索木を AVL 木とするために必要な回転操作をすべて行った後の木構造を図示せ。
⚠ 立命馆常见陷阱
- visit の順序は「中順」ではない
- 回転が「不要」な場合もあり得る
- 高さ差は各節点ごとに判定する
【問題2:探索アルゴリズム(BFS)】(模拟)
連結な有向グラフ (G=(V,E)) に対して幅優先探索(BFS)を行う。
探索にはキューを用い,隣接する頂点が複数存在する場合は,頂点番号の昇順に処理するものとする。
(1)
グラフを隣接行列で表現したとき,
2 つの頂点が隣接しているかどうかを判定するのに要する時間計算量を答えよ。
(2)
同じグラフを隣接リストで表現したときの空間計算量を,
(|V|=n, |E|=m) を用いてオーダー表記で答えよ。
(3)
始点を頂点 1 として BFS を実行したとき,
訪問される頂点の順序をすべて示せ。
(4)
探索中に用いられるキューに格納される要素数の最大値を,
n を用いてオーダー表記で答えよ。
(5)
この BFS のアルゴリズムを深さ優先探索(DFS)に変更するために,
探索に用いるデータ構造をどのように変更すればよいか,簡潔に述べよ。
⚠ 立命馆常见陷阱
- 「昇順処理」を無視すると誤答
- キューの最大サイズ ≠ 辺数
- DFS は再帰・スタックのどちらでも可
【問題3:ソートアルゴリズム】(预测)
要素数 (n) の配列 (A) をソートする。
(1)
選択ソートの平均時間計算量および最悪時間計算量を,
それぞれオーダー表記で答えよ。
(2)
マージソートが安定なソートである理由を,
同じ値をもつ要素の順序に着目して説明せよ。
(3)
クイックソートにおいて最悪時間計算量が発生する入力の特徴を述べよ。
(4)
以下の条件をすべて満たすソートアルゴリズムを 1 つ挙げよ。
- 最悪時間計算量が (O(n \log n))
- 安定である
⚠ 立命馆常见陷阱
- 平均と最悪を混同
- 安定性の定義が曖昧
- クイックソート=常に高速,は誤り
【問題4:連結リスト】(预测)
整数値を格納する単方向連結リストを考える。
先頭要素のアドレスは変数 top が保持しているものとする。
(1)
この連結リストの末尾に要素を追加する操作の最悪時間計算量を,
要素数 (n) を用いてオーダー表記で答えよ。
(2)
先頭要素を削除する操作の時間計算量を答えよ。
(3)
この連結リストを用いてキューを実現するために,
新たに保持すべき情報を 1 つ挙げよ。
(4)
双方向連結リストを用いることで効率が改善される操作を 1 つ挙げ,
その理由を簡潔に述べよ。
⚠ 立命馆常见陷阱
- 末尾探索は常に (O(n))
- 双方向=万能,ではない
- キュー実装に必要な情報を 1 つに絞る
5-数据结构-参考答案
【問題1:二分探索木】解答
(1) 解答
数列
S={12, 5, 18, 2, 9, 15, 19, 8}
を先頭から順に挿入したとき,得られる二分探索木は次のとおりである。
12
/ \
5 18
/ \ / \
2 9 15 19
/
8
(2) 解答
訪問順が
「節点 → 左部分木 → 右部分木」
であるため,表示される値の順序は次のとおりである。
12,\\ 5,\\ 2,\\ 9,\\ 8,\\ 18,\\ 15,\\ 19
(3) 解答
挿入される数列が昇順に整列されている場合,
二分探索木は片側にのみ伸び,高さが (n) となる。
このとき挿入処理を n 回行うため,最悪時間計算量は
O(n\^2)
である。
(4) 解答
(1) の二分探索木において,各節点の左右部分木の高さ差はすべて 1 以下である。
したがって AVL 木の条件をすでに満たしており,回転操作は不要である。
よって,回転後の木構造は (1) と同一である。
12
/ \
5 18
/ \ / \
2 9 15 19
/
8
【問題2:探索アルゴリズム(BFS)】解答
(1) 解答
隣接行列では,行列の 1 要素を参照することで隣接判定が可能である。
したがって時間計算量は
O(1)
である。
(2) 解答
隣接リストでは,各頂点分のリストと,各辺分の要素を保持するため,
空間計算量は
O(n+m)
である。
(3) 解答
訪問順序は,与えられたグラフの構造に依存するため,一意に定まらない 。
(隣接頂点が複数存在する場合は,頂点番号の昇順で探索を行う。)
(4) 解答
探索中にキュー Q に格納される要素数は,
最悪の場合でも頂点数を超えない。
したがって最大要素数は
O(n)
である。
(5) 解答
BFS を DFS に変更するには,
探索に用いるデータ構造を キュー(FIFO)からスタック(LIFO)に変更 すればよい。
または,再帰呼び出しによりスタックを暗黙的に利用すればよい。
【問題3:ソートアルゴリズム】解答
(1) 解答
選択ソートの平均時間計算量および最悪時間計算量はいずれも
O(n\^2)
である。
(2) 解答
マージソートでは,分割後の配列を統合する際に,
同じ値をもつ要素の相対的な順序を保持したまま結合するため,安定なソートである。
(3) 解答
クイックソートにおいて,
常に最大または最小の要素が基準(ピボット)として選ばれる場合,
分割が偏り,最悪時間計算量が発生する。
(4) 解答
条件を満たすソートアルゴリズムの一例として マージソート が挙げられる。
【問題4:連結リスト】解答
(1) 解答
単方向連結リストでは,末尾要素を探索する必要があるため,
最悪時間計算量は
O(n)
である。
(2) 解答
先頭要素の削除は,参照の付け替えのみで行えるため,
O(1)
である。
(3) 解答
キューを実現するためには,
末尾要素への参照(rear) を新たに保持する必要がある。
(4) 解答
双方向連結リストを用いることで,
末尾要素の削除操作を (O(1)) で行うことが可能となる。
これは,各要素が前の要素への参照を保持しているためである。


6-总结
训练成长。!!