109 年 國立清華大學奈米工程與微系統研究所《基礎計算機科學》
第 1 題10 分
Consider and the statement
Write the statement of (the negation of ).
Hint: ____ integer string ____ ____ ____
登入後即可作答並保存紀錄。
核心觀念
本題的核心觀念為述詞邏輯(Predicate Logic)中的量詞否定法則(Negation of Quantifiers),以及形式語言中 Pumping Lemma(泵躍引理)敘述的邏輯結構。
- 量詞否定法則(De Morgan's Laws for Quantifiers):
- 存在量詞與全稱量詞的相互轉換:
- 帶有範圍限制條件的蘊含式否定:
在敘述形式語言引理時, 常簡寫條件句,其否定即為存在一個屬於 且長度滿足 的字串,使得後續條件不成立。
- 存在量詞與全稱量詞的相互轉換:
- 隸屬關係(Membership)的否定:
解題方法
題目給定的原命題為:
對命題 進行否定操作 ,依由外而內的順序逐層將否定符號 推入各量詞範圍中:
-
第一層(最外層量詞):
原式為 。
否定後,存在量詞 轉為全稱量詞 :
-
第二層(第二個量詞):
內部為「對所有 且 」。
否定後,轉為存在量詞 :
(此部分題目 Hint 已給出提示) -
第三層(第三個量詞):
內部為「(存在字串拆解 滿足 )」。
否定後,存在量詞 轉為全稱量詞 :
-
第四層(第四個量詞):
內部為「(對所有非負整數 )」。
否定後,全稱量詞 轉為存在量詞 :
第 2-(a) 題5 分
What is a spanning tree?
登入後即可作答並保存紀錄。
核心觀念
生成樹(spanning tree)是連通無向圖的一個子圖,必須包含原圖的所有頂點,且本身是一棵樹。樹的特性是連通且沒有環路。
若原圖有 個頂點,生成樹恰有 條邊。它保留了連接所有頂點所需的結構,並且不含多餘的環路。
解題方法
判斷一個子圖是否為生成樹,檢查兩項條件:
- 子圖包含原圖的每一個頂點。
- 子圖連通且無環。
Given an undirected, weighted graph as shown in Figure 1 below.
🖼️【此處有附圖,請對照原卷】
Figure 1: A weighted Graph. Vertices: A, B, C, D, E, F, G. Edge weights: A–B = 7, A–D = 5, B–C = 8, B–D = 9, B–E = 7, C–E = 5, D–E = 15, D–F = 6, E–F = 8, E–G = 9, F–G = 11.
第 2-(b) 題5 分
Given an undirected, weighted graph in Figure 1, what is the minimum spanning tree (MST)?
登入後即可作答並保存紀錄。
核心觀念
最小生成樹(MST)是包含圖中所有頂點、沒有迴圈且總邊權重最小的生成樹。若圖有 個頂點,生成樹恰有 條邊;本題有 7 個頂點,因此 MST 要選 6 條邊。
解題方法
使用 Kruskal 演算法:將邊依權重由小到大排列,逐一加入;若加入某邊會形成迴圈,就略過。
依權重檢查本題的邊:
- :加入。
- :加入。
- :加入。
- :加入,將 接入目前的連通部分。
- :加入,連接兩個連通部分。
第 2-(c) 題5 分
Describe the sequence of adding edges to form the MST of the graph in Figure 1 using the greedy Kruskal's algorithm.
Hint: (1) AD (2) ____ (3) ____ (4) ____ (5) ____ (6) ____
登入後即可作答並保存紀錄。
核心觀念
Kruskal 演算法依邊權重由小到大檢查,每次加入一條不會形成環的邊。對含有 個頂點的連通圖,最小生成樹(MST)恰有 條邊;本題有 個頂點,因此要選 條邊。
解題方法
將邊依權重排序:
由小到大加入不會形成環的邊:
第 3 題8 分
Use the Euclidean algorithm to find the greatest common divisor of 167,076 and 1,928,737.
登入後即可作答並保存紀錄。
核心觀念
本題評量離散數學/基礎計算機科學中數論基礎的歐幾里得演算法(Euclidean Algorithm,俗稱輾轉相除法)。
- 除法定理(Division Algorithm):
對於任意整數 與正整數 ,存在唯一的整數商 與餘數 ,滿足: - 歐幾里得定理(Euclidean Property):
兩正整數的最大公因數等於「較小數」與「兩數相除之餘數」的最大公因數: 透過反覆進行除法替換,餘數數列嚴格遞減(),當最後一步餘數為 時,最後一個非零餘數即為兩數的最大公因數 。 - 時間複雜度:
依據拉梅定理(Lamé's Theorem),歐幾里得演算法執行除法的總次數不超過較小數十進位位數的 5 倍,時間複雜度為 ,在大數求最大公因數時遠比質因數分解有效率。
解題方法
題目指定使用 Euclidean algorithm 求 。設較大數為 ,較小數為 。
依序執行帶餘除法運算如下:
-
第 1 步:
餘數為 。
-
第 2 步:
餘數為 。
-
第 3 步:
餘數為 。
-
第 4 步:
餘數為 (因為 )。
-
第 5 步:
餘數為 (因為 )。
-
第 6 步:
餘數為 。
-
第 7 步:
餘數為 (因為 )。
第 4 題5 分
Five people occupy five seats. If five seats are arranged in a circle, how many different ways can the five people select their seats?
登入後即可作答並保存紀錄。
核心觀念
本題考查離散數學(組合數學)中的環狀排列(Circular Permutations)。
在一般的直線排列中, 個相異物體排成一列的方法數為:
而在環狀排列中,由於圓桌或環狀座位具有旋轉對稱性,任何一個排列只要透過旋轉能與另一種排列完全重合,兩者即視為同一種相對排法。每個由 個人形成的環狀排列,沿同一個方向旋轉 次會對應到 種不同的直線排列(即每種環狀排列在直線上有 種重複計數)。
因此, 個相異物體排成一圈的相異環狀排列數公式為:
解題方法
本題共有 5 位相異的人()要分配到圍成一圈的 5 個座位中。標準切入點有以下兩種方式,均能迅速求出正解:
方法一:相對固定法(最推薦的直觀思維)
- 為了破除圓形的「旋轉對稱性」,先讓第 1 個人隨意入座。
- 由於在空圓桌上,任何座位相對於其他人都沒有差異(純由旋轉即可重合),因此第 1 個人入座僅有 種實質排法(用來作為基準點,定義出其他座位的相對位置:如左手邊第 1 位、對面等)。
- 當第 1 個人固定後,其餘剩下的 個座位便轉變為具有特定相對方位(相異)的直線排列問題。
- 剩下的 4 個人依序入座,方法數為:
第 5 題4 分
Let be a graph. If has twelve members, in which four members each has a degree of three, and the degree of each remaining member is five, how many members does have?
登入後即可作答並保存紀錄。
核心觀念
本題考查圖論(Graph Theory)中的基本計數定理:握手引理(Handshaking Lemma)。
- 頂點個數與邊數:
設 是一個無向圖,其中 為頂點集合(Vertices), 為邊集合(Edges)。其頂點數記為 ,邊數記為 。 - 握手引理(Handshaking Lemma):
在任意無向圖中,所有頂點的分支度(Degree,亦稱度數)之總和等於邊數的兩倍: 此定理的直觀意義在於:每條邊連接著兩個頂點,因此每增加一條邊,圖中所有頂點的度數總和便增加 2。
解題方法
- 列出題目已知條件:
- 頂點總數 。
- 其中有 4 個頂點的分支度各為 3,即:
- 其餘剩餘頂點數為 個,其分支度各為 5,即:
第 6 題8 分
A class at a college consists of 19 students who sit at a circular table. The instructor wants each student to sit next to two different classmates each day. For how many days can they do this?
登入後即可作答並保存紀錄。
核心觀念:圖論中的完全圖與漢米爾頓環分解(Hamiltonian Cycle Decomposition)
本題源自離散數學(Discrete Mathematics)與圖論(Graph Theory)中的經典排程與圓桌會議問題,其數學模型為完全圖的邊不相交漢米爾頓環分解(Edge-Disjoint Hamiltonian Cycle Decomposition):
-
圖論模型對應:
- 將全班 位學生視為無向圖中的 個頂點(Vertices)。
- 任意兩位學生之間相鄰就坐,視為兩頂點之間連有一條邊(Edge)。
- 由於任何學生都可能與其他任何學生相鄰,這 位學生所有可能的相鄰關係構成了完全圖 (Complete Graph)。
- 每一天的圓桌座位安排,等價於在圖中尋找一個包含所有 19 個頂點且不重複的環,即漢米爾頓環(Hamiltonian Cycle)。
-
限制條件分析:
- 題目要求「每位學生每天都要坐在兩位不同的同學身旁」(each student to sit next to two different classmates each day),表示任何兩位同學在所有天數中最多只能相鄰一次,即任何一條邊在所有天數中不得重複使用。
- 因此,天數的最大值等價於「完全圖 最多能分解出幾個彼此邊不相交(edge-disjoint)的漢米爾頓環」。
-
瓦萊基定理(Walecki's Theorem):
- 對於奇數個頂點的完全圖 ( 為奇數),其所有邊可以被完全分解為 個邊不相交的漢米爾頓環。
解題方法
步驟一:計算總邊數與每日所需邊數
在完全圖 中:
- 頂點數 。
- 完全圖 的總邊數為:
- 每天 19 位學生圍坐成一個圓圈,形成一個長度為 19 的環(Cycle ),每天剛好消耗 19 條相鄰的邊。
步驟二:推導天數的理論上限
因為任何兩位學生不能再次相鄰,每天所使用的 19 條邊彼此互斥(邊不相交)。天數 的理論最大值受限於圖的總邊數:
第 7-(a) 題5 分
Please find the tight asymptotic upper bound of the following recurrence in big-O notation and also justify your answer.
登入後即可作答並保存紀錄。
核心觀念
本題評量遞迴關係式(Recurrence Relation)之漸近複雜度分析與漸近記號(Asymptotic Notation)之定義證明。
- 遞迴展開法(Substitution Method / Iteration Method):適用於可逐層化簡的線性遞迴關係,展開後觀察其規律,並轉化為有限級數求和。
- 算術級數公式(Arithmetic Series):
- 漸近緊密上界(Tight Upper Bound / Big-O Notation)的正式定義:
若存在正實數常數 與正整數 ,使得對所有 ,不等式 皆成立,則 。在此要求「tight」代表求出階數最緊的 記號上界(即本質上的 緊密界)。
解題方法
步驟一:展開遞迴關係式(Iteration Method)
題目未顯式給定基本情況(base condition),一般計算機演算法中假設基本情況為常數時間,設 (或 ),其中 為常數。
將遞迴式連續展開:
步驟二:閉式解(Closed Form)推導
利用等差級數公式化簡總和:
第 7-(b) 題5 分
Please find the tight asymptotic upper bound of the following recurrence in big-O notation and also justify your answer.
登入後即可作答並保存紀錄。
核心觀念
- 遞迴關係式求解(Solving Recurrence Relations):
本題之遞迴形式為 ,此類每次規模僅減少固定常數(減 1)而非依比例縮小的遞迴,不適用 Master Theorem(主定理),通常採用**反覆展開法(Iteration / Unrolling Method)**進行展開推導。 - 差比數列求和(Sum of Arithmetico-Geometric Sequence):
在展開後的非齊次項加總過程中,會形成「等差乘等比」的級數 ,需利用差比級數求和公式或求和技巧推導出閉合形式(Closed-form)。 - 緊密漸近上界(Tight Asymptotic Upper Bound):
題目要求以 Big- 表示之緊密上界(即漸近緊密界線 所對應的最小上界 )。假設基本情況(Base Case)為常數時間,即存在常數 使得 。
解題方法
本題採用**反覆展開法(Unrolling / Iteration Method)**逐步展開遞迴式,歸納通式後計算級數和。
步驟一:逐步反覆展開
已知遞迴式:
將 代入:
將 代入:
依此規律展開 次後,可歸納出通式:
步驟二:代入終止條件(Base Case)
令 ,即 ,且設 (常數):
將後方求和項拆解為兩部分:
步驟三:計算各項級數和
- 等比級數項:
因此:
- 差比級數項 :
第 8 題8 分
Given a sequence of integers , the longest increasing subsequence problem is to find a longest subsequence of such that and .
For example, is a longest increasing subsequence of .
Please use the dynamic programming technique to design an time algorithm for solving the longest increasing subsequence problem. Please also justify your algorithm and its time complexity.
登入後即可作答並保存紀錄。
核心觀念
本題考查經典演算法題目:最長遞增子序列問題(Longest Increasing Subsequence, LIS)。
要求使用**動態規劃(Dynamic Programming, DP)**技巧,設計並證明一個時間複雜度為 的演算法。
在動態規劃的設計中,最關鍵的兩個要素為:
- 最佳子結構(Optimal Substructure):問題的最佳解包含其子問題的最佳解。若一個以 結尾的遞增子序列是最長的,則去掉 後的前綴子序列,必然也是以其前一個元素 (滿足 且 )結尾的最長遞增子序列。
- 重疊子問題(Overlapping Subproblems):計算不同位置結尾的 LIS 時,會重複使用到前面較短前綴的 LIS 長度與結果。
解題方法
1. 狀態定義(State Definition)
令陣列 。
定義 DP 狀態陣列 :
- :代表以 作為最後一個元素(結尾)的最長遞增子序列(LIS)的長度。
- 若需要重建出具體的子序列,可額外維護一個前驅指標陣列 ,其中 記錄在最長遞增子序列中, 的前一個元素索引(若 為起點則設為 或 )。
2. 轉移方程式(Recurrence Relation)
對於每一個位置 (從 到 ):
- 基礎情況(Base Case):任何元素自己本身都可以構成長度為 的遞增子序列,故初始值 。
- 狀態轉移:檢查所有位於 前方的元素 (即 )。若滿足嚴格遞增條件 ,則 可以接在以 結尾的子序列之後,長度變為 。因此取所有可能中的最大值:
若同時要記錄路徑:
- 當找到使 的 時,更新 ,並令 。
3. 最終結果(Final Answer)
整個序列 的 LIS 長度即為所有 的最大值:
令最大值發生的索引為 (即 ),透過前驅陣列 ,從 開始沿著 往前回溯,再將收集到的元素反轉,即可重構出完整的 LIS 序列。
演算法虛擬碼(Algorithm & Pseudocode)
第 9 題7 分
Given a set of numbers, the k-partition problem is to determine whether or not can be partitioned into subsets of the same sum. For example, let . Then for the two-partition problem, we indeed can partition into two subsets and such that the sum of all elements in equals to the sum of all elements in .
It can be proved that the two-partition problem is NP-complete. In the situation where the two-partition problem is already NP-complete, please prove that the three-partition problem is also NP-complete.
登入後即可作答並保存紀錄。
核心觀念
本題的核心觀念為**計算複雜度理論(Computational Complexity Theory)**中的 NP-Complete(NPC,NP 完全)證明。
要證明一個判定問題(Decision Problem) 屬於 NP-Complete,必須滿足兩個基本條件:
- :存在一個非確定性多項式時間演算法,或給定一個候選解(Certificate / Witness),能在確定性多項式時間(Polynomial Time)內驗證其正確性。
- 是 NP-Hard:選定一個已知的 NP-Complete 問題 ,證明存在多項式時間歸約(Polynomial-Time Reduction),記作:
即任何 的輸入實例(Instance),皆可在多項式時間內轉換為 的實例,且兩者的「YES / NO」答案具備充分必要關係。
本題已知 2-Partition 問題(將集合劃分為 2 個總和相等的子集)為 NP-Complete,欲證明 3-Partition 問題(將集合劃分為 3 個總和相等的子集)亦為 NP-Complete。
解題方法
證明分為兩大部分:證明 3-Partition NP,以及證明 2-Partition 3-Partition。
第一部分:證明 3-Partition NP
- 候選解(Certificate):
給定集合 ,提供一個由 3 個子集組成的劃分 。 - 多項式時間驗證器(Polynomial-Time Verifier):
- 檢查 且 兩兩互斥()。此步驟需時 。
- 計算各子集元素之總和:、 與 。此步驟需時 。
- 驗證三者是否相等:。此步驟需時 。
以上驗證程序可在 多項式時間內完成,故 3-Partition NP。
第二部分:證明 2-Partition 3-Partition(NP-Hardness)
令 2-Partition 問題的給定實例為正數集合:
其全體元素總和記為:
2-Partition 問題即是詢問:是否存在劃分 使得:
1. 構造轉換(Reduction Construction)
我們在多項式時間內建構一個 3-Partition 的實例集合 :
- 將 中所有元素放大 2 倍,並額外加入一個新元素 :
此時集合 共有 個元素。
計算集合 的全體元素總和 :
若 可以被等和劃分為 3 個子集 ,則每個子集的目標總和必須剛好為:
此構造過程僅需對 個數字乘 2 並求和,可在 多項式時間內完成。
2. 正確性證明(雙向等價性)
第 10-(a) 題2 分
True or False. If your answer is False, please briefly justify. (No point is given without justification if the answer is False.)
If , we can say that for .
登入後即可作答並保存紀錄。
核心觀念
本題評量演算法複雜度分析中 Big- 漸近符號(Asymptotic Notation)的嚴格數學定義與基本性質。
依據 Big- 定義:
若 ,代表存在兩個正實數常數 與 ,使得對所有 ,皆滿足:
關鍵概念包含兩點:
- 常數倍數關係(Constant Factor):定義中為 ,而非單純的 。只要存在某個常數倍數 ,即使 依然成立。
- 漸近閾值(Threshold ):不等式僅要求在「足夠大」的 時成立,不要求在任意特定的固定下界(如本題要求的 )立即成立。
解題方法
要判定全稱命題(對所有符合 的函數,在 時皆滿足 )是否正確,最直接且嚴謹的方法是提出反例(Counterexample)。
只需構造出一組函數 與 ,使其滿足 ,但在 時存在 ,即可證明該命題為 False。
反例構造推導:
令 且 。
- 驗證 :
選取常數 及 。
對所有 ,皆滿足: 因此根據定義, 完全成立。 - 檢驗題設結論 對 是否成立:
當 (例如 )時: 明顯可得 ,亦即 對所有 恆成立。
第 10-(b) 題2 分
True or False. If your answer is False, please briefly justify. (No point is given without justification if the answer is False.)
Merge Sort has worst-case time complexity , while the worst-case time complexity of Insertion Sort is . One weakness of Merge Sort is that it requires additional space. Therefore, if space allows, we should always use Merge Sort for better efficiency.
登入後即可作答並保存紀錄。
核心觀念
本題評量對經典排序演算法(Sorting Algorithms)的適用情境與實際效能特性之理解,特別是 合併排序法(Merge Sort) 與 插入排序法(Insertion Sort) 的優缺點對比:
- 大 漸近時間複雜度與常數常數項(Constant Factors):
- 漸近複雜度衡量的是資料量 時的成長趨勢。
- 實務執行時間為 與 。當資料量 極小時,由於 Insertion Sort 的常數項 遠小於 Merge Sort 的常數項 (Merge Sort 涉及遞迴呼叫與額外陣列複製的開銷),Insertion Sort 的實際執行速度反而更快。
- 資料的原始排序狀態(Nearly Sorted Data):
- Insertion Sort 在「幾乎已排序(nearly sorted)」的情境下具備最佳時間複雜度 。
- Merge Sort 不論輸入資料的初始順序為何,其時間複雜度皆固定為 。
- 混合排序演算法(Hybrid Sort)的工程實踐:
- 現代標準函式庫常見的排序演算法(如 Timsort、Introsort)在子問題規模小於特定閾值(例如 )時,皆會切換至 Insertion Sort。
解題方法
切入點在於識別題目結論中的絕對字眼:「always use Merge Sort for better efficiency(若空間允許,我們總是應該使用 Merge Sort 以獲得更佳效率)」。
反駁此命題時,只需指出存在「空間完全充裕,但使用 Insertion Sort 效率反而顯著高於 Merge Sort」的具體合理情境:
- 小規模資料集(Small ):
當資料筆數 很小時,Insertion Sort 程式邏輯極為精簡,指令週期短、無遞迴額外負載(overhead)、具備優秀的快取局部性(Cache Locality),執行效率高於 Merge Sort。 - 幾乎已排序資料(Nearly Sorted Data):
當資料序列已經或接近完全排序時,Insertion Sort 僅需進行相鄰比較,耗時為 ,表現遠優於 Merge Sort 的 。
因此,「無論何種情況都應使用 Merge Sort」在計算機科學實務與理論上皆不成立。
選項分析
- 題幹陳述:
"Merge Sort has worst-case time complexity , while the worst-case time complexity of Insertion Sort is . One weakness of Merge Sort is that
第 10-(c) 題2 分
True or False. If your answer is False, please briefly justify. (No point is given without justification if the answer is False.)
Searching a specific key in a binary search tree takes time, where is the number of keys in the binary search tree.
登入後即可作答並保存紀錄。
核心觀念
- 二元搜尋樹(Binary Search Tree, BST)的定義與搜尋特性:
- 設樹中節點數為 、樹高為 。
- 在 BST 中搜尋一個特定的鍵值(key),每一層最多只會比對一個節點,因此走訪的路徑長度至多為樹高 。
- 搜尋操作的時間複雜度取決於樹的高度,即 。
- 樹高 與節點數 的關係:
- 最佳情況 / 平均情況(Best / Average Case):當樹呈現平衡狀態(Balanced)時,樹高 ,搜尋時間為 。
- 最差情況(Worst Case):若輸入資料為已排序序列(如依序插入 ),BST 會退化成一條單向鏈結串列(Skewed Tree / Degenerate Tree),此時樹高 ,搜尋時間為 。
- 大 符號(Big-O Notation)的嚴謹性:
- 題目敘述宣稱「在二元搜尋樹中搜尋耗時 」,若未特別指明情況,在演算法分析中預設指最差情況(Worst-case upper bound),或涵蓋該資料結構所有可能構型的通則。由於最差情況為 ,不符合 的上界,因此敘述為非。
解題方法
本題為是非題(若為 False 需附上理由)。切入點在於舉出反例(Counterexample),說明一般二元搜尋樹在未保證平衡的情況下,搜尋時間可能退化至線性時間:
- 指出搜尋時間複雜度本質上是 ,其中 為樹高。
- 指出當 BST 退化成傾斜樹(Skewed Tree)時,。
- 結論:最差情況下的搜尋時間為 ,而非 。唯有在自平衡二元搜尋樹(如 AVL Tree、Red-Black Tree)中,搜尋時間才保證為 。
選項分析
- 題目敘述:「Searching a specific key in a binary search tree takes time, where is the number of keys in the binary sea
第 10-(d) 題2 分
True or False. If your answer is False, please briefly justify. (No point is given without justification if the answer is False.)
Given the pre-order and level-order traversal sequences, we can construct a unique binary tree.
登入後即可作答並保存紀錄。
核心觀念
前序走訪(pre-order)依序記錄「根、左子樹、右子樹」;層序走訪(level-order)則從根開始,逐層由左至右記錄節點。若兩種走訪序列能唯一決定二元樹,任何符合相同序列的樹都必須具有相同結構。
解題方法
以三個節點 構造兩棵結構不同的二元樹,並比較它們的走訪序列:
樹一: 樹二:
A A
/ / \
B B C
/ \
C
Given the AVL tree below, please answer the following sub-problems.
🖼️【此處有附圖,請對照原卷】
Figure 2: The given AVL tree. Structure: root = 15; left child of 15 = 4; right child of 15 = 20; left child of 4 = 12; right child of 20 = 25.
第 11-(a) 題4 分
Please sequentially insert the following keys into the given AVL tree: 17, 19, 18. Please show the final result of the AVL tree after all the keys are inserted. Only the final result is needed, no step-by-step illustration is required.
登入後即可作答並保存紀錄。
核心觀念
AVL 樹在每次插入後,都要檢查受影響節點的平衡因子。採用
當 時,必須旋轉調整。若失衡節點的新增方向是「右子樹的左側」,屬於右左(RL)型,需先對右子節點右旋,再對失衡節點左旋。
解題方法
原圖中的樹為:根節點 ,左子節點 、右子節點 ;節點 的右子節點是 ,節點 的右子節點是 。依序插入 ,每次都先依二元搜尋樹規則找插入位置,再檢查平衡因子。
-
插入 : 且 ,所以插入為 的左子節點。此時各節點的平衡因子仍在 到 之間,不需旋轉。
-
插入 : 、 且 ,所以插入為 的右子節點。節點 的左子樹較高一層,仍符合 AVL 平衡條件。
第 11-(b) 題4 分
Continue with the previous sub-problem. After the keys in sub-problem (a) are inserted, please sequentially delete keys 25 and 17 (when deleting a non-leaf node from the AVL tree, please replace it by the node with the largest key in its left subtree). Please show the final AVL tree only (no step-by-step illustration is required).
登入後即可作答並保存紀錄。
核心觀念
AVL 樹除了符合二元搜尋樹的大小順序外,每個節點的平衡因子都必須介於 與 。平衡因子定義為
空子樹高度取 ,葉節點高度取 。刪除節點後若出現 ,便依失衡節點與較高子樹的方向選擇旋轉;左右型(RL)須先對右子節點右旋,再對失衡節點左旋。
解題方法
依原圖讀取初始樹:根節點為 ;左子節點 的右子節點為 ;右子節點 的右子節點為 。接著承接 (a) 依序插入 ,再依題意依序刪除 。
以下以 表示節點 的左、右子樹;「」代表空子樹。
-
插入 ,成為 的左子節點;再插入 ,成為 的右子節點。接著插入 ,成為 的左子節點。此時節點 的平衡因子為 ,其右子節點 的平衡因子為 ,因此對 做 RL 旋轉。完成 (a) 後的樹為
Given a connected and weighted graph , where all the edge weights are positive integers. The eccentricity of a vertex is the greatest shortest path distance between and any other vertex. That is, , where denotes the shortest path distance between vertices and .
For example, in the following figure, .
🖼️【此處有附圖,請對照原卷】
Figure: Example graph with vertices . Edge weights: – = 4, – = 6, – = 5, – = 4.
A center of a graph is a vertex that incurs the minimum eccentricity. That is, a center is defined as: .
An absolute center is a point that can be on an edge or on a vertex, such that its maximum shortest path distance to all vertices is minimum. Given the definition of the absolute center, there may be multiple absolute centers in a graph.
第 12-(a) 題3 分
A center of a graph is a vertex that incurs the minimum eccentricity. That is, a center is defined as: . Is it possible for a graph to have more than one center? If yes, please provide an example; If no, please provide a proof.
登入後即可作答並保存紀錄。
核心觀念
圖的中心是頂點中偏心度最小者。偏心度 是頂點 到其他所有頂點的最短路徑距離中的最大值;若多個頂點同時達到最小偏心度,它們都可以是中心。
解題方法
使用題目附圖中的加權圖:– 權重為 、– 為 、– 為 、– 為 。先求各頂點到其他頂點的最短距離,再取最大值:
| 頂點 | 到其他頂點的最短距離 | 偏心度 |
|---|---|---|
第 12-(b-i) 題3 分
If there are multiple absolute centers in a graph, can all of them be on vertices, i.e., no absolute center is on an edge? If yes, please provide an example; If no, please provide a proof.
登入後即可作答並保存紀錄。
核心觀念
絕對中心可以位於頂點,也可以位於邊的內部。要證明「多個絕對中心都在頂點上」是可能的,只要找出一個圖,使多個頂點達到最小最大距離,而每條邊的內部點都比這個最小值差。
解題方法
取一個三角形圖 ,三個頂點為 ,每條邊的權重都設為 。
在任一頂點,例如 ,到另外兩個頂點的最短距離都是 ,因此
再看邊 上距離 為 的內部點 ,其中 。到第三個頂點 的最短距離為
第 12-(b-ii) 題3 分
If there are multiple absolute centers in a graph, can some of them be on vertices, and some of them be on edges at the same time? If yes, please provide an example; If no, please provide a proof.
登入後即可作答並保存紀錄。
核心觀念
頂點的中心性以離它最遠頂點的最短路徑距離衡量;絕對中心則允許位置落在邊的內部。令圖上任意點 的半徑為 ,題目要找一個例子,使某個頂點與某個邊內點同時達到最小半徑。
解題方法
原頁圖中的示意圖有邊長 、、、;圖上 位於 的中點,至 、 各為 。以下另建一個圖,讓一個頂點和一個邊內點的半徑相同,並用一對相距最遠的頂點證明此半徑已是最小值。
構造頂點 ,只設以下邊:
- 、、
- 、
令 為邊 的中點,因此 到 、 各為 。圖中所有邊長都是正整數。
距離與半徑驗算
由上述邊長得到各頂點間的最短距離:
| 0 | 2 | 4 | 6 | 3 | |
| 2 | 0 | 2 | 4 | 1 | |
| 4 | 2 | 0 | 2 | 1 |