114 年 國立臺北大學資訊工程研究所《資料結構與演算法》
第 Part I 1 題15 分
Run Dijkstra algorithm on the following graph to find the shortest distance from the source vertex to all vertices. The source vertex is . Run the algorithm step by step.
🖼️【此處有附圖,請對照原卷】
登入後即可作答並保存紀錄。
核心觀念
Dijkstra 演算法用來求解邊權重皆非負的有向圖中,從單一源點到各頂點的最短距離。每一步選出目前暫定距離最小、尚未確定的頂點,將其距離定案,再用該頂點的出邊更新鄰點距離:
解題方法
圖中源點為 。依箭頭方向讀取邊,可見 權重 、 權重 、 權重 ;其餘邊為 權重 、 權重 、 權重 、 權重 、 權重 、 權重 。
初始化 ,其他頂點距離設為 。每次定案目前距離最小的頂點,並依其出邊更新:
| 步驟 | 定案頂點 | 更新後的暫定距離 |
|---|---|---|
| 初始化 | — | |
| 1 | (距離 ) | |
| 2 | (距離 ) | 經 得 ,故更新 |
第 Part I 2 題5 分
Give an asymptotic upper bound for the function where satisfies the recurrent equation
登入後即可作答並保存紀錄。
第 Part I 3 題15 分
The following table shows dimensions of six matrices.
| Matrix | Dimension |
|---|---|
Please fully parenthesize the product in a way such that the number of scalar multiplications is minimum and compute this minimum number.
(For example, the number of scalar multiplications of is .)
登入後即可作答並保存紀錄。
核心觀念
這題考矩陣鏈乘法的動態規劃。矩陣相乘的先後順序不影響最終結果,但會影響純量乘法的次數。若 的維度為 ,則將 相乘的最少成本滿足:
其中 表示把矩陣鏈切成左右兩段的位置;最後一項是左右兩段相乘所需的純量乘法次數。
解題方法
依原卷表格讀得六個矩陣維度依序為 、、、、、,因此維度序列為 。由短鏈開始計算每一種切分的成本,並記下各鏈的最小成本。
長度為 的矩陣鏈:
長度為 的矩陣鏈:
第 Part I 4 題15 分
Find a feasible solution or determine that no feasible solution exists for the following system of difference constraints:
登入後即可作答並保存紀錄。
第 Part II 1 題18 分
請針對 Figure 1 所示的 AOE(Activity On Edge)網路,其中有向邊(directed edge)代表工作或活動,且邊上的數值代表工作或活動所需時間。
🖼️【此處有附圖,請對照原卷】
(a) 請算出每個邊的最早(earliest)開始時間 和最晚(latest)開始時間 與鬆散數(slack)時間,並寫出其臨界路徑(critical path)。
(b) 哪些活動,單獨的加速會導致專案長度的縮短?
活動所需時間如下:
登入後即可作答並保存紀錄。
核心觀念
AOE 網路以頂點表示事件、以有向邊表示活動,邊上的數值是活動工期。頂點最早發生時間 由起點向前計算,取所有前置活動完成時間的最大值;頂點最晚發生時間 由終點向後計算,取所有後續活動所允許時間的最小值。
對活動 ,其最早開始時間、最晚開始時間及鬆弛時間為
鬆弛時間為 的活動位於臨界路徑上。單獨加速某活動會縮短專案工期,該活動必須出現在每一條臨界路徑上。
解題方法
依圖讀得網路結構如下:起點分別經 到上、下兩個節點; 匯入同一節點,接著 匯入下一節點;其後分別經 通往右側節點。圖中 是右上節點到終點的活動; 匯入終點前的節點,再由 通往終點。
先由左向右計算各事件的最早發生時間。令起點為 ,按圖中位置將其餘事件稱為上方節點、左下節點、中央上節點、中央下節點、右上節點、右中節點、右下節點、終點前節點及終點:
因此專案最短完成時間為 。再由終點向左回推最晚發生時間:
第 Part II 2 題12 分
請依序利用下列數值 建一 Patricia(Practical Algorithm To Retrieve Information Coded In Alphanumeric)trie。
登入後即可作答並保存紀錄。
第 Part II 3 題10 分
請將下列數字 and 依序插入 Figure 2 AVL tree 並平衡之。
🖼️【此處有附圖,請對照原卷】
登入後即可作答並保存紀錄。
核心觀念
AVL 樹要求每個節點的平衡因子都介於 與 。本題採用
其中空子樹高度為 、葉節點高度為 。插入節點後,從插入位置往根節點檢查;若某節點的平衡因子變成 或 ,就依失衡方向進行單旋轉或雙旋轉。
解題方法
圖中的初始 AVL 樹根節點為 ;左子樹為 ,其子節點是 與 ,而 的右子節點是 。右子樹為 ,其右子節點是 。依序插入 ,每次插入後都立即檢查並平衡。
-
插入 :對節點 做 RL 雙旋轉
插入為 的左子節點,使 的平衡因子成為 ,而其右子節點 的平衡因子為 。因此對 做 RL 雙旋轉,該子樹調整為:
49 / \ 17 53此時全樹為:
14 / \ 7 49 / \ / \ 4 11 17 53 \ 13 -
插入 :不需旋轉
插入為 的右子節點。調整後,、、 的平衡因子都仍在 至 之間,因此不旋轉。
-
插入 :不需旋轉
插入為 的左子節點。此時 的左右子樹高度相同, 與 也仍符合 AVL 平衡條件,因此不旋轉。
-
插入 :對根節點 做 LR 雙旋轉
插入為 的右子節點。此時節點 的平衡因子為 ,其左子節點 的平衡因子為 ,屬於 LR 失衡。
第 Part II 4 題10 分
請利用 Bellman-Ford 演算法一步一步算出 Figure 3 從 node 到各點之最短距離。
🖼️【此處有附圖,請對照原卷】
登入後即可作答並保存紀錄。
核心觀念
Bellman–Ford 演算法可處理含負權重邊的有向圖。令 表示從起點 到節點 、且最多使用 條邊的最短距離,則:
圖中共有 個節點,因此最多考慮 條邊;若第 輪仍有距離改善,才表示存在從起點可到達的負權重環。
解題方法
圖中有向邊為 (權重 )、()、()、()、()、()、()、()、()。以節點 為起點,初始距離為 ,其餘節點距離皆為 。以下每一輪都用上一輪的距離計算,表示最多使用指定條數的邊。
| 最多使用邊數 | ||||||
|---|---|---|---|---|---|---|