---
# System prepended metadata

title: 台大 103 軟體
tags: [NTU, '103', 軟體]

---

# 台大 103 軟體
###### tags: `NTU` `103` `軟體`
1. (a) O(lgnlglgn) (b) O(n) \(c\) O(lgn)
2. (a) $\binom{k}{i}$
:::info
用數學歸納法證
在 k = 0 時，$\binom{0}{0} = 1$
假設在 k = n - 1 時，命題成立
則 $B_k$ 深度為 i 的點數量 = $\binom{k-1}{i}+\binom{k-1}{i-1}=\binom{k}{i}$
:::
(b) lgn
:::info
假設深度為 k，則根據 (a)，$\sum_{i=0}^{k} \binom{k}{i}=2^k=n$，得 $k=lgn$

樹中的每一個點都是某個 $B_i$ 的根，$i\le k$，而根的 degree 為 $\binom{i}{0}$，因此 degree 最大即為 $\binom{k}{0}=k=lgn$
:::

3.
(a) 令 $G'= (V\cup\{c\}, E\cup \{\{a,c\},\{b,c\}\})$。若 $G'$ 有 Hamilton Cycle $C$，則 $C$ 必包含 $\{a,c\}$ 與 $\{b,c\}$，將這兩條邊拿掉，即為 given endpoint hamilton path。因此，若 hamilton cycle problem 具備多項式時間解，則 given endpoint hamilton path 即可利用上述轉換在多項式時間內求解。但 given endpoint hamilton path 已知為 NPC，因此 hamilton cycle problem 必為 NPC

(b) 令 $G'=(V,E'),\ E'=\{\{a,b\}|\ \forall a,b\in V\}$。$c(a,b)=0$ if $\{a,b\}\in E$, $c(a,b)=1$ if f$\{a,b\}\notin E$。對 $G'$ 求 bound = 0 的 TSP 解，所得即為 hamilton cycle。

\(c\) degree = 2 的 bounded degree spanning tree problem 即為 any endpoint hamilton path problem

4. 利用 Dijkstra 計算最短路徑時，需要考量的東西，除了「點」本身外，還得考量通過了多少條 thick edge、多少條 thin edge。因此很容易想出以下擴展：令 $d[v_i][a][b]$ 為 $A$ 到 $v_i$、通過 a 條 thick edge、b 條 thin edge 的最短路徑。對於任意 $v_i,v_j$，在 relax $e=\{v_i,v_j\}$ 時，若 $e$ 為 thick edge，則要更新的狀態是 $d[v_j][a+1][b]$，反之則為 $d[v_j][a][b+1]$。所求即為 $d[F][k][n]$
5. 楓葉本裡有，我就懶。