考點分析 / 交大 / 108

108 交大資工所軟體考點分析

交大改為全選擇題的第一年。16 個題組、38 小題,規則是「同一題組全對才給分、錯一小題整組零分」,是十年間最嚴苛的計分方式。

題型與配分

科目「資料結構與演算法(1101)」,系所班別資訊聯招,考試日期 108 年 2 月 13 日第 1 節,全卷 9 頁、16 個題組、38 小題、100 分,不可使用計算機,請使用答案卡作答。

這份考卷最關鍵的規則:

「For each problemset, if your answer is correct for all the questions in the problemset, you receive the full points; or otherwise ... you receive 0 point.」

也就是說 —— 一個題組內只要錯一小題,整個題組就是零分。第 9 題組有 3 小題共 10 分、第 13 題組有 3 小題共 8 分,任何一小題失手就全數歸零。

另外,題號旁有 † 記號的題組代表「該題組的每一小題可能有一個以上的答案」,且必須全部選到才算對。

這是交大第一年改成全選擇題,但用「題組全對制」維持了鑑別度。

題組主題小題數配分
1Queue/stack 程式輸出15
2Linked list pseudo-code 判讀15
3 †Heap 性質15
4二維陣列記憶體位址15
5Max heap 刪除根節點15
6MST(Kruskal/Prim)35
7AVL 插入36
8B-tree(order 3)插入36
9Dijkstra 程式追蹤310
10Quicksort 變形的機率分析36
11 †加括號最小化中間和36
12 †Scaling max flow36
13 †Maximum adjacency ordering38
14 †BFS tree 性質36
15Knapsack 特例複雜度38
16 †Hamiltonian cycle 歸約38

逐題考點

基礎程式與資料結構(1–5,各 5%)

  • 第 1 題組|queue 與 stack 各推入四個數後,輸出 que.front()、que.back()、stk.top()
  • 第 2 題組|給一段操作 prev/next 指標的 pseudo-code,判斷它的功能是插入、刪除還是交換
  • 第 3 題組(†)|heap 的五個敘述哪些為真:heap sort 是否 O(n log n)、最壞情況是否快於 quick sort、陣列實作時節點 i 的右子節點是否在第 2i 個位置、max heap 的父節點是否小於子節點、樹高是否 O(log n)
  • 第 4 題組|int x[5][5],已知 &x[0][0] 與 &x[0][1] 的位址,推出 &x[1][2] —— 考的是 row-major 記憶體配置
  • 第 5 題組|給一棵 binary max heap,移除根節點並重整後,陣列的第 4 個數字是多少

樹與圖(6–9)

  • 第 6 題組(5%,3 小題)|同一張圖問三件事:MST 的總成本、Kruskal 最後加入的邊權、從 F 出發的 Prim 最後加入的邊權
  • 第 7 題組(6%,3 小題)|依序插入 20, 30, 40, 50, 60, 70, 10, 5, 25, 45 到空 AVL 樹:最左節點的值、根節點的值、最後兩次旋轉的型態(LL/RR/LR/RL)
  • 第 8 題組(6%,3 小題)|同一組數字插入 order-3 的 B-tree:最右節點的數字總和、根節點的數字總和、共發生幾次節點分裂
  • 第 9 題組(10%,3 小題)|給一支完整的 C 程式(其實是 Dijkstra,START = 4、N = 8、用 1000 代表無限大),問陣列 d 的最小值、最大值、以及程式的時間複雜度。這是配分最高的題組,且三小題全對才給 10 分

演算法分析(10–13)

  • 第 10 題組(6%,3 小題)|Quicksort 的變形:不斷重做隨機 partition 直到較大的一半不超過子陣列的 2/3。問平均複雜度、repeat 迴圈恰好執行一次的機率(答案 1/3)、以及平均執行次數(答案 3)
  • 第 11 題組(†,6%,3 小題)|n 個正數要加 n−1 對括號,最小化所有中間和的總和。給輸入 4, 4, 8, 5, 4, 3, 5,問最小總和 X 的 X mod 10、⌊X/10⌋,以及關於此問題的敘述何者正確。這其實是 Huffman/最佳二元合併樹
  • 第 12 題組(†,6%,3 小題)|Scaling max flow 演算法(K 從 2⌊lg C⌋ 開始逐次減半):最小割的唯一性、演算法的執行時間、以及最大流與最小割的性質判斷
  • 第 13 題組(†,8%,3 小題)|Maximum adjacency ordering(Magic Order):補完演算法第 5 行缺少的 key 更新式、判斷用陣列/binary heap/Fibonacci heap 實作各行的成本、以及整體攤銷複雜度。這是最小割演算法(Stoer-Wagner)的核心步驟,超出一般課本範圍

BFS、Knapsack 與歸約(14–16)

  • 第 14 題組(†,6%,3 小題)|BFS tree 的深度性質:若 (x,y) 是 G 的邊且 x 深度為 2,y 可能的深度有哪些;兩個深度都是 2 的節點,其最短路徑可能有幾條邊;根節點在 G 中度數為 5 時,在 T 中可能的度數
  • 第 15 題組(8%,3 小題)|Knapsack 在三種特例下的最佳已知複雜度:m = Θ(n2)、m = Θ(n2) 且所有 wi = 1、m = Θ(n2) 且 wi ∈ {1,2}
  • 第 16 題組(†,8%,3 小題)|給 HamC(G) 當黑盒子,補完 HamC3(G,x,y,z) 演算法(判斷是否存在讓 x、y、z 連續出現的 Hamiltonian cycle)的三個空格。與 107 第 10 題、109 第 3 題是同一系列的歸約題

這份考卷的難點

  1. 題組全對制放大了一切錯誤。 第 9 題組(Dijkstra,10 分)要手動追蹤 8 個節點的完整鬆弛過程,三小題全對才有分;第 7、8 題組要各建一次 AVL 與 B-tree,也是全對才給分。
  2. † 題組是複選且必須選全。 第 11、12、13、14、16 五個題組(合計 34 分)都是這種計分,漏選一個正確選項就整組零分。
  3. 第 13 題組的 maximum adjacency ordering 屬於進階圖論演算法,一般資料結構課本不會教。
  4. 第 10 題組的機率分析要算出「pivot 落在中間 1/3 的機率」,需要一點推導而不是背誦。

準備建議

  • 交大 108 起採題組全對制,策略上要「先確保會的題組全對」,而不是每個題組都填一點。不確定的題組本身沒有倒扣,但也拿不到分
  • AVL 的四種旋轉、B-tree 的分裂規則要練到能穩定手繪,交大 106、108、109 連三年都考
  • Dijkstra 的程式碼追蹤(108 第 9 題組)與 Johnson 演算法(107 第 7 題)顯示交大很愛把最短路徑以「看程式」的方式出題
  • Huffman/最佳合併樹的變形(106 第 11 題、108 第 11 題組)連兩年出現,要能認出來
  • 107、108、109 連三年的 Hamiltonian cycle/path 歸約題是同一位出題者的風格,建議三年一起練

想看完整逐題詳解?

國立陽明交通大學 106–115 全年度完整詳解共 463 頁,逐題推導。

購買 · NT$ 850 先看試閱

其他年度與考科