108 年 國立清華大學音樂學系碩士班(音樂工程及應用音樂組)《電腦科學概論》

📄 試題原卷 免費註冊後即可對照原始考卷 PDF免費註冊

第 1 題10 分

A perceptron unit has an input weight corresponding to each of its input (which can be either 0 or 1) and will output 1 if the overall weighted sum of inputs be greater than or equal to a threshold, otherwise outputs 0. Design a perceptron model using a three-by-three (3x3) input to distinguish the following two patterns (a) and (b) (each dark square cell represents a sensor input as 1 or 0), justify your design. (10%)

(a)
🖼️【此處有附圖,請對照原卷】

(b)
🖼️【此處有附圖,請對照原卷】

🖼️ 本題含圖表,以下為原卷對應頁面:
原卷第 2 頁

登入後即可作答並保存紀錄。

這一題的完整詳解

核心觀念

感知器(perceptron)以輸入的加權總和與閾值比較:

z=∑i=19wixiz=\sum_{i=1}^{9}w_i x_i y={1,z≥θ0,z<θy= \begin{cases} 1, & z\geq \theta\\ 0, & z<\theta \end{cases}

其中 xi∈{0,1}x_i\in\{0,1\},黑色方格為 11,白色方格為 00。本題未指定兩類的輸出標籤,以下設定圖形 (a) 輸出 11、圖形 (b) 輸出 00。

圖形編碼

依照原卷圖形,兩個 3×33\times3 輸入矩陣為:

Xa=[111101111]X_a= \begin{bmatrix} 1&1&1\\ 1&0&1\\ 1&1&1 \end{bmatrix} Xb=[101010101]X_b= \begin{bmatrix} 1&0&1\\ 0&1&0\\ 1&0&1 \end{bmatrix}

圖形 (a) 有 88 個黑色方格,圖形 (b) 有 55 個黑色方格。

解題方法

因為兩個圖形的差異可由黑色方格數量區分,因此令每個輸入的權重均為 11:

wij=1(1≤i,j≤3)w_{ij}=1\qquad (1\leq i,j\leq3)

並設定閾值 θ=7\theta=7。感知器的加權總和為:

🔒

後續完整解題步驟與【答案】

免費註冊,享三天全站完整詳解閱覽。

免費註冊

第 2 題10 分

a. An integer number N, N≡1(mod5)N \equiv 1 \pmod{5}, N≡2(mod7)N \equiv 2 \pmod{7}, N≡3(mod11)N \equiv 3 \pmod{11} respectively, what is the second smallest positive integer for N? (10%)

b. Find in the following list of numbers that produce the sum of 3023: (10%)
624, 57, 1541, 771, 2184, 388, 391, 782, 2206, 304

c. Design a public key encryption system based on the list 2, 3, 6, 12, 14 and the fact that 30 and 38 are multiplicative inverses in modular system with modular 67. (10%)

登入後即可作答並保存紀錄。

這一題的完整詳解

此題共包含三個小題,分別考驗中國餘數定理、數列求和以及公鑰密碼系統的設計。

核心觀念:
a. 中國餘數定理 (Chinese Remainder Theorem, CRT)
b. 數列求和與組合搜尋
c. 公鑰密碼系統(RSA 相關概念)

小題 a:中國餘數定理

題目給定一個整數 N 滿足以下同餘方程組:
N≡1(mod5)N \equiv 1 \pmod{5}
N≡2(mod7)N \equiv 2 \pmod{7}
N≡3(mod11)N \equiv 3 \pmod{11}

我們要找出 N 的第二小的正整數解。

根據中國餘數定理,如果模數 m1,m2,…,mkm_1, m_2, \ldots, m_k 兩兩互質,則對於任意的整數 a1,a2,…,aka_1, a_2, \ldots, a_k,同餘方程組:
x≡a1(modm1)x \equiv a_1 \pmod{m_1}
x≡a2(modm2)x \equiv a_2 \pmod{m_2}
…\ldots
x≡ak(modmk)x \equiv a_k \pmod{m_k}
存在唯一解模 M=m1m2…mkM = m_1 m_2 \ldots m_k。

在此題中,m1=5,m2=7,m3=11m_1=5, m_2=7, m_3=11。它們兩兩互質,所以存在唯一解模 M=5×7×11=35×11=385M = 5 \times 7 \times 11 = 35 \times 11 = 385。

我們可以用多種方法求解,這裡採用逐步代入法:
從第一個方程 N≡1(mod5)N \equiv 1 \pmod{5},我們知道 NN 可以寫成 N=5k+1N = 5k + 1,其中 kk 是整數。

將此代入第二個方程:
5k+1≡2(mod7)5k + 1 \equiv 2 \pmod{7}
5k≡1(mod7)5k \equiv 1 \pmod{7}
為了解出 kk,我們需要找到 5 在模 7 下的乘法逆元。
5×1≡5(mod7)5 \times 1 \equiv 5 \pmod{7}
5×2≡10≡3(mod7)5 \times 2 \equiv 10 \equiv 3 \pmod{7}
5×3≡15≡1(mod7)5 \times 3 \equiv 15 \equiv 1 \pmod{7}
所以 5 的乘法逆元是 3。
將方程兩邊同乘以 3:
3×5k≡3×1(mod7)3 \times 5k \equiv 3 \times 1 \pmod{7}
k≡3(mod7)k \equiv 3 \pmod{7}
所以 kk 可以寫成 k=7j+3k = 7j + 3,其中 jj 是整數。

將 k=7j+3k = 7j + 3 代回 N=5k+1N = 5k + 1:
N=5(7j+3)+1N = 5(7j + 3) + 1
N=35j+15+1N = 35j + 15 + 1
N=35j+16N = 35j + 16
這個形式滿足前兩個方程。現在將此代入第三個方程:
35j+16≡3(mod11)35j + 16 \equiv 3 \pmod{11}
35j≡3−16(mod11)35j \equiv 3 - 16 \pmod{11}
35j≡−13(mod11)35j \equiv -13 \pmod{11}
35≡2(mod11)35 \equiv 2 \pmod{11} (因為 35=3×11+235 = 3 \times 11 + 2)
−13≡−13+2×11≡−13+22≡9(mod11)-13 \equiv -13 + 2 \times 11 \equiv -13 + 22 \equiv 9 \pmod{11}
所以方程變成:
2j≡9(mod11)2j \equiv 9 \pmod{11}
為了解出 jj,我們需要找到 2 在模 11 下的乘法逆元。
2×1≡2(mod11)2 \times 1 \equiv 2 \pmod{11}
2×2≡4(mod11)2 \times 2 \equiv 4 \pmod{11}
2×3≡6(mod11)2 \times 3 \equiv 6 \pmod{11}
2×4≡8(mod11)2 \times 4 \equiv 8 \pmod{11}
2×5≡10(mod11)2 \times 5 \equiv 10 \pmod{11}
2×6≡12≡1(mod11)2 \times 6 \equiv 12 \equiv 1 \pmod{11}
所以 2 的乘法逆元是 6。
將方程兩邊同乘以 6:
6×2j≡6×9(mod11)6 \times 2j \equiv 6 \times 9 \pmod{11}
j≡54(mod11)j \equiv 54 \pmod{11}
54≡54−4×11≡54−44≡10(mod11)54 \equiv 54 - 4 \times 11 \equiv 54 - 44 \equiv 10 \pmod{11}
所以 j≡10(mod11)j \equiv 10 \pmod{11}。
jj 可以寫成 j=11m+10j = 11m + 10,其中 mm 是整數。

將 j=11m+10j = 11m + 10 代回 N=35j+16N = 35j + 16:
N=35(11m+10)+16N = 35(11m + 10) + 16
N=385m+350+16N = 385m + 350 + 16
N=385m+366N = 385m + 366

這是 N 的通解。
最小的正整數解發生在 m=0m=0 時,即 N=366N = 366。
第二小的正整數解發生在 m=1m=1 時,即 N=385×1+366=385+366=751N = 385 \times 1 + 366 = 385 + 366 = 751。

驗證:
N=751N = 751
751÷5=150751 \div 5 = 150 餘 1 (751=5×150+1751 = 5 \times 150 + 1)   ⟹  751≡1(mod5)\implies 751 \equiv 1 \pmod{5} (正確)
751÷7=107751 \div 7 = 107 餘 2 (751=7×107+2751 = 7 \times 107 + 2)   ⟹  751≡2(mod7)\implies 751 \equiv 2 \pmod{7} (正確)
751÷11=68751 \div 11 = 68 餘 3 (751=11×68+3751 = 11 \times 68 + 3)   ⟹  751≡3(mod11)\implies 751 \equiv 3 \pmod{11} (正確)

【答案】751

小題 b:數列求和

題目要求從給定的數列中找出若干個數,使其總和為 3023。
數列:624, 57, 1541, 771, 2184, 388, 391, 782, 2206, 304

這是一個組合問題,需要嘗試不同的組合。由於數列中的數字大小差異較大,可以先觀察目標總和 3023,並尋找較大的數字作為起點。

目標總和 = 3023

觀察數列中的數字:
2206, 2184, 1541, 782, 771, 624, 391, 388, 304, 57

嘗試包含最大的數字 2206:
3023−2206=8173023 - 2206 = 817
需要在剩餘數字中找總和為 817 的組合。
剩餘數字:624, 57, 1541, 771, 2184, 388, 391, 782, 304

我們需要找到總和為 817 的組合。
觀察數字:782, 771, 624, 391, 388, 304, 57
如果包含 782: 817−782=35817 - 782 = 35。在剩餘數字中無法找到 35。
如果包含 771: 817−771=46817 - 771 = 46。在剩餘數字中無法找到 46。
如果包含 624: 817−624=193817 - 624 = 193。在剩餘數字中無法找到 193。

看來 2206 可能不是解的一部分,或者需要更複雜的組合。
讓我們嘗試不包含 2206。

嘗試包含第二大的數字 2184:
3023−2184=8393023 - 2184 = 839
需要在剩餘數字中找總和為 839 的組合。
剩餘數字:624, 57, 1541, 771, 388, 391, 782, 2206, 304 (我們暫時不考慮 2206,因為它比 839 大很多)
剩餘數字(較小):624, 57, 771, 388, 391, 782, 304

我們需要找到總和為 839 的組合。
觀察數字:782, 771, 624, 391, 388, 304, 57
如果包含 782: 839−782=57839 - 782 = 57。
Bingo! 57 在數列中。
所以,一個組合是 2184 + 782 + 57。

驗證:
2184+782+57=2966+57=30232184 + 782 + 57 = 2966 + 57 = 3023。

這是一個有效的組合。
數列中的數字是:624, 57, 1541, 771, 2184, 388, 391, 782, 2206, 304。
我們找到的組合是 2184, 782, 57。

【答案】2184, 782, 57 (或者任何包含這三個數字的組合)

小題 c:公鑰加密系統設計

題目要求設計一個公鑰加密系統,基於以下資訊:
列表:2, 3, 6, 12, 14
Fact: 30 和 38 是模 67 下的乘法逆元。

公鑰加密系統通常基於數學上的困難問題,例如大數分解或離散對數問題。RSA 是最常見的公鑰加密算法,它基於大數分解的困難性。

RSA 的基本原理:

  1. 選擇兩個大質數 pp 和 qq。
  2. 計算模數 n=pqn = pq。
  3. 計算歐拉函數 ϕ(n)=(p−1)(q−1)\phi(n) = (p-1)(q-1)。
🔒

後續完整解題步驟與【答案】

免費註冊,享三天全站完整詳解閱覽。

免費註冊

第 3 題10 分

Network routing has different types. How does static routing differ from dynamic routing? When will you use static routing? When will you use dynamic routing? (10%)

登入後即可作答並保存紀錄。

這一題的完整詳解

此題考驗對網路路由(Network Routing)基本概念的理解,特別是靜態路由(Static Routing)與動態路由(Dynamic Routing)的區別、適用場景。

核心觀念:
網路路由是決定資料封包在網路中從來源到目的地路徑的過程。路由表(Routing Table)儲存了網路中的路由資訊,路由器根據路由表來轉發封包。

靜態路由 (Static Routing) vs. 動態路由 (Dynamic Routing)

1. 靜態路由 (Static Routing):

  • 定義: 由網路管理員手動配置和維護的路由。網路管理員必須明確地在路由器上指定到達特定目的網路的下一跳位址(Next Hop Address)或出埠介面(Outgoing Interface)。
  • 特性:
    • 手動配置: 所有路由條目都由管理員手動輸入。
    • 不可學習: 路由器不會自動學習新的路由或網路拓撲的變化。
    • 穩定性高: 只要網路拓撲不變,路由就保持不變,不易受網路波動影響。
    • 安全性高: 不會傳輸路由更新資訊,較不易被惡意攻擊。
    • 資源消耗低: 路由器不需要額外的 CPU 和記憶體來運行路由協議,也不需要頻寬來交換路由更新。
    • 擴展性差: 在大型或複雜的網路中,手動配置和維護大量路由條目非常困難且容易出錯。
    • 無法自動適應變更: 當網路拓撲發生變化(例如線路中斷、新設備加入)時,靜態路由無法自動更新,需要管理員手動干預。

2. 動態路由 (Dynamic Routing):

  • 定義: 使用路由協議(Routing Protocol),讓路由器之間能夠自動交換路由資訊,從而動態地學習和維護路由表。
  • 特性:
    • 自動學習: 路由器透過路由協議(如 RIP, OSPF, EIGRP, BGP)與鄰近路由器交換資訊,自動建立和更新路由表。
    • 適應性強: 當網路拓撲發生變化時(例如某條路徑中斷),動態路由協議可以偵測到變化,並計算出新的最佳路徑,自動更新路由表。
    • 擴展性好: 適合於大型、複雜或經常變動的網路環境。
    • 資源消耗較高: 需要 CPU 和記憶體來運行路由協議,並佔用網路頻寬來傳輸路由更新資訊。
    • 安全性相對較低: 路由更新資訊可能被攔截或偽造,需要額外的安全機制。
    • 配置相對複雜: 需要理解和配置相應的路由協議。

兩者差異總結:

特性靜態路由 (Static Routing)動態路由 (Dynamic Routing)
🔒

後續完整解題步驟與【答案】

免費註冊,享三天全站完整詳解閱覽。

免費註冊

第 4 題10 分

Answer the questions based on the following tree. (10%)
🖼️【此處有附圖,請對照原卷】
The tree structure is as follows:
The root is an operator '+'.
Its left child is an operator ''.
The right child of '
' is '3'.
The left child of '*' is '1'.
The left child of '+' is the root of the subtree above.
The right child of '+' is an operator '/'.
The left child of '/' is '5'.
The right child of '/' is '20'.

a) [5%] Which binary tree traversal method can derive an infix expression? Write down this infix expression (Hint: Remember to add proper parentheses for clarification.)
b) [5%] Which binary tree traversal method can derive a postfix expression? Write down this postfix expression.

🖼️ 本題含圖表,以下為原卷對應頁面:
原卷第 3 頁

登入後即可作答並保存紀錄。

這一題的完整詳解

此題考驗對二元樹(Binary Tree)及其各種遍歷(Traversal)方法的理解,特別是如何從樹結構生成中序(Infix)和後序(Postfix)表達式。

核心觀念:
二元樹遍歷方法:

  1. 前序遍歷 (Preorder Traversal): 根節點 -> 左子樹 -> 右子樹 (Root -> Left -> Right)。
  2. 中序遍歷 (Inorder Traversal): 左子樹 -> 根節點 -> 右子樹 (Left -> Root -> Right)。
  3. 後序遍歷 (Postorder Traversal): 左子樹 -> 右子樹 -> 根節點 (Left -> Right -> Root)。

對於表達式樹,運算符節點代表運算,葉節點代表運算數。

題目提供的樹結構:
讓我們根據文字描述重建樹的結構。
根節點是 +。
根節點 + 的左子節是 *。
根節點 + 的右子節是 /。

節點 *:
* 的左子節是 1。
* 的右子節是 3。

節點 /:
/ 的左子節是 5。
/ 的右子節是 20。

所以,整個樹結構是:
+
/
* /
/ \ /
1 3 5 20

小題 a:中序表達式 (Infix Expression)

中序表達式是「左子樹 -> 根節點 -> 右子樹」。對於運算符節點,我們需要在其左右子表達式之間放置運算符,並為了確保運算順序,需要添加括號。

遍歷過程:

  1. 遍歷根節點 + 的左子樹(子樹以 * 為根)。

    • 遍歷 * 的左子樹(葉節點 1)。
      • 遍歷 1 (葉節點,直接輸出):1
    • 遍歷根節點 *。
      • 添加括號 (。
      • 輸出運算符 *。
    • 遍歷 * 的右子樹(葉節點 3)。
      • 遍歷 3 (葉節點,直接輸出):3
    • 添加括號 )。
    • 到目前為止,左子樹的中序表達式是:(1 * 3)
  2. 遍歷根節點 +。

    • 輸出運算符 +。
  3. 遍歷根節點 + 的右子樹(子樹以 / 為根)。

    • 遍歷 / 的左子樹(葉節點 5)。
      • 遍歷 5 (葉節點,直接輸出):5
    • 遍歷根節點 /。
      • 添加括號 (。
      • 輸出運算符 /。
    • 遍歷 / 的右子樹(葉節點 20)。
      • 遍歷 20 (葉節點,直接輸出):20
    • 添加括號 )。
    • 到目前為止,右子樹的中序表達式是:(5 / 20)

將所有部分組合起來,並在根節點 + 的兩側添加括號:
( + (左子樹表達式) + + + (右子樹表達式) + )
( + (1 * 3) + + + (5 / 20) + )
最終中序表達式:((1 * 3) + (5 / 20))

哪個遍歷方法可以生成中序表達式?
中序遍歷 (Inorder Traversal)。

驗證:
中序遍歷順序:左 -> 根 -> 右

  1. 訪問 + 的左子樹 (*)。
    • 訪問 * 的左子樹 (1)。
      • 訪問 1,輸出 1。
    • 訪問 * 節點,輸出 *。
    • 訪問 * 的右子樹 (3)。
      • 訪問 3,輸出 3。
    • 到此 * 的子樹遍歷完成,輸出為 1 * 3。
  2. 訪問 + 節點,輸出 +。
  3. 訪問 + 的右子樹 (/)。
    • 訪問 / 的左子樹 (5)。
🔒

後續完整解題步驟與【答案】

免費註冊,享三天全站完整詳解閱覽。

免費註冊

第 5 題10 分

Consider the following ER model fragment (10%):
🖼️【此處有附圖,請對照原卷】
The ER diagram shows two entities: Employee and Department.
Employee entity has attributes: Emp_ID (Primary Key), Name.
Department entity has attributes: Dept_ID (Primary Key), Dept_Name, Dept_Location.
There is a relationship "Works_In" between Employee and Department.
The relationship "Works_In" has an attribute: Dept_Location.

c) (6%) Convert this ER model into relational model.
d) (4%) Which normal form does this model violate? State your reasons.

🖼️ 本題含圖表,以下為原卷對應頁面:
原卷第 3 頁

登入後即可作答並保存紀錄。

這一題的完整詳解

此題考驗對實體關聯模型 (Entity-Relationship Model, ER Model) 的基本概念,以及如何將 ER 模型轉換為關聯模型 (Relational Model),並識別正規化 (Normalization) 問題。

核心觀念:

  • ER 模型: 描述實體(Entities)、屬性(Attributes)和實體間的關聯(Relationships)。
  • 關聯模型: 以表格(Table)形式表示資料,每個表格稱為一個關係(Relation),包含欄位(Columns)和記錄(Rows)。
  • 正規化: 關聯資料庫設計中的一個過程,用於減少資料冗餘、避免資料更新異常(插入、刪除、更新異常)。常見的正規化形式有第一正規化 (1NF)、第二正規化 (2NF)、第三正規化 (3NF) 等。

題目 ER 模型分析:

  • 實體 (Entities):
    • Employee:屬性有 Emp_ID (Primary Key), Name。
    • Department:屬性有 Dept_ID (Primary Key), Dept_Name, Dept_Location。
  • 關聯 (Relationship):
    • Works_In:連接 Employee 和 Department。
    • Works_In 屬性:Dept_Location。

關聯性分析:
Works_In 關聯描述了員工在哪個部門工作。

  • 員工與部門的關聯:一個員工通常只在一個部門工作(假設,這是常見的簡化模型),但一個部門可以有多個員工。所以,這是 Employee (1) -- Works_In -- (N) Department 的多對一(Many-to-One)關聯。
  • 關聯屬性 Dept_Location:這個屬性與 Works_In 關聯綁定。這意味著,對於一個員工和一個他工作的部門,會有一個部門位置的記錄。

小題 c:轉換為關聯模型 (Relational Model)

將 ER 模型轉換為關聯模型時,通常遵循以下規則:

  1. 實體轉換為關係 (表格): 每個實體集轉換為一個關係,實體的屬性成為關係的欄位。實體的主鍵成為關係的主鍵。
  2. 一對一 (1:1) 關聯: 可以將關聯的屬性合併到其中一個實體的關係中,或者創建一個獨立的關係,並包含兩個實體的主鍵作為外鍵。
  3. 一對多 (1:N) 關聯: 將「多」方實體的主鍵作為外鍵(Foreign Key)加入到「一」方實體的關係中。
  4. 多對多 (N:M) 關聯: 創建一個新的關係(關聯表),包含兩個實體的主鍵作為複合主鍵(或分別作為外鍵),並包含關聯的屬性。
  5. 多值屬性 (Multi-valued Attributes): 轉換為一個新的關係,包含原實體的主鍵作為外鍵,以及多值屬性本身。

在此題中,Works_In 是一個關聯,並且它有一個屬性 Dept_Location。

  • Employee 實體:轉換為 Employee 關係。
    • 欄位:Emp_ID (PK), Name。
  • Department 實體:轉換為 Department 關係。
    • 欄位:Dept_ID (PK), Dept_Name, Dept_Location。
  • Works_In 關聯:
    • 它連接 Employee 和 Department。
    • 它有一個屬性 Dept_Location。

處理關聯 Works_In 的屬性 Dept_Location:
問題在於,Dept_Location 是 Works_In 關聯的屬性,但 Department 實體本身也有一個 Dept_Location 屬性。這可能導致冗餘或混淆。

情況一:假設 Dept_Location 指的是員工「在該部門工作時」的部門位置。
然而,從 ER 圖來看,Dept_Location 似乎是 Department 實體的一個屬性,同時也被放在 Works_In 關聯上。這通常意味著 Dept_Location 應該屬於 Department 實體。如果 Works_In 關聯上的 Dept_Location 是多餘的,或者與 Department 實體上的 Dept_Location 是相同的,那麼我們只需要在 Department 表中保留 Dept_Location。

標準轉換方法(假設 Dept_Location 屬於 Department):

  1. Employee 關係:
    • Emp_ID (PK)
    • Name
    • 外鍵: 需要將員工與部門關聯起來。由於是 1:N 關聯(一個員工對應一個部門,一個部門有多個員工),我們將部門的主鍵 Dept_ID 加入到 Employee 關係中作為外鍵。
  2. Department 關係:
    • Dept_ID (PK)
    • Dept_Name
    • Dept_Location (這個屬性是部門的位置)

轉換後的關聯模型:

1. Employee 關係

  • Emp_ID (INT, PRIMARY KEY)
  • Name (VARCHAR)
  • Dept_ID (INT, FOREIGN KEY REFERENCES Department(Dept_ID))

2. Department 關係

  • Dept_ID (INT, PRIMARY KEY)
  • Dept_Name (VARCHAR)
  • Dept_Location (VARCHAR)

為什麼這樣轉換?

  • Employee 實體和 Department 實體分別轉換為 Employee 和 Department 兩個關係。
  • Works_In 關聯是員工與部門之間的聯繫。由於是一個員工屬於一個部門(1:N),我們將 Department 的主鍵 Dept_ID 作為外鍵添加到 Employee 表中,表示該員工屬於哪個部門。
  • Dept_Location 屬性直接歸屬於 Department 實體,因此放在 Department 關係中。ER 圖中將 Dept_Location 也標在 Works_In 關聯上,這可能是一個設計上的冗餘或筆誤,在標準轉換中,它應歸於實體。如果題目嚴格要求按照圖示,那麼 Works_In 關聯需要一個獨立的表,並且包含 Emp_ID, Dept_ID, Dept_Location。但這種設計會導致 Dept_Location 的冗餘(例如,如果一個員工換部門,Works_In 表的記錄會改變,但如果部門的位置不變,Department 表中的 Dept_Location 就不需要變動)。我們採用更常見且正規化的轉換方式。

更嚴格的根據 ER 圖的轉換(如果 Dept_Location 確實是關聯屬性,且與 Department 實體上的 Dept_Location 不同,或者需要記錄員工在某個部門時的位置):
如果 Works_In 上的 Dept_Location 是指「員工在該部門工作時的那個地點」,而 Department 表中的 Dept_Location 是部門本身登記的「官方地點」,這時才需要獨立的關聯表。
3. Works_In 關係

  • Emp_ID (INT, PRIMARY KEY, FOREIGN KEY REFERENCES Employee(Emp_ID))
  • Dept_ID (INT, PRIMARY KEY, FOREIGN KEY REFERENCES Department(Dept_ID))
  • Dept_Location (VARCHAR)
    • 注意:這裡 (Emp_ID, Dept_ID) 構成複合主鍵。
🔒

後續完整解題步驟與【答案】

免費註冊,享三天全站完整詳解閱覽。

免費註冊

第 6 題10 分

Is 2n+1=O(2n)2n+1 = O(2n)? Is 22n=O(2n)2^{2n} = O(2n) (Note that you should reason your answers) (10%)

登入後即可作答並保存紀錄。

這一題的完整詳解

核心觀念

本題評量演算法複雜度分析中的**大 OO 符號(Big-OO notation,漸進上界 Asymptotic Upper Bound)**的嚴格數學定義與性質。

大 OO 符號的正式定義:
設 f(n)f(n) 與 g(n)g(n) 為非負函數。若存在正實數常數 c>0c > 0 與正整數常數 n0≥1n_0 \ge 1,使得對所有 n≥n0n \ge n_0,皆滿足:

f(n)≤c⋅g(n)f(n) \le c \cdot g(n)

則記為 f(n)=O(g(n))f(n) = O(g(n))。

極限判別法(Limit Test):
若極限 lim⁡n→∞f(n)g(n)\lim_{n \to \infty} \frac{f(n)}{g(n)} 存在:

  1. 若 lim⁡n→∞f(n)g(n)=L<∞\lim_{n \to \infty} \frac{f(n)}{g(n)} = L < \infty(LL 為有限常數,包含 L=0L = 0),則 f(n)=O(g(n))f(n) = O(g(n))。
  2. 若 lim⁡n→∞f(n)g(n)=∞\lim_{n \to \infty} \frac{f(n)}{g(n)} = \infty,則 f(n)≠O(g(n))f(n) \neq O(g(n))。

解題方法

本題包含兩個子問題,分別透過嚴格定義(尋找常數 cc 與 n0n_0)或極限法來進行完整推導與證明。

第一部分:判斷 2n+1=O(2n)2n+1 = O(2n)

  • 推導一:依定義尋找常數
    我們要尋找是否存在常數 c>0c > 0 與 n0≥1n_0 \ge 1,使得當 n≥n0n \ge n_0 時,恆有:

    2n+1≤c⋅(2n)2n + 1 \le c \cdot (2n)

    當 n≥1n \ge 1 時,1≤n≤2n1 \le n \le 2n,因此:

    2n+1≤2n+2n=4n=2⋅(2n)2n + 1 \le 2n + 2n = 4n = 2 \cdot (2n)

    此時取常數 c=2c = 2,n0=1n_0 = 1。對所有 n≥1n \ge 1,皆滿足:

    2n+1≤2⋅(2n)2n + 1 \le 2 \cdot (2n)

    符合大 OO 的正式定義,故 2n+1=O(2n)2n+1 = O(2n) 成立(亦即 2n+1=O(n)2n+1 = O(n))。

  • 推導二:極限判別法
    計算比值之極限:

    lim⁡n→∞2n+12n=lim⁡n→∞(1+12n)=1\lim_{n \to \infty} \frac{2n + 1}{2n} = \lim_{n \to \infty} \left( 1 + \frac{1}{2n} \right) = 1

    因為極限值為常數 1<∞1 < \infty,根據極限定理,確立 2n+1=O(2n)2n+1 = O(2n)。


第二部分:判斷 22n=O(2n)2^{2n} = O(2n)

  • 推導一:反證法(依定義)
    假設 22n=O(2n)2^{2n} = O(2n) 成立。
    依大 OO 定義,必存在常數 c>0c > 0 與 n0≥1n_0 \ge 1,使得對所有 n≥n0n \ge n_0,恆滿足: 22n≤c⋅(2n)2^{2n} \le c \cdot (2n) 兩邊同除以 2n2n(因為 n≥n0≥1>0n \ge n_0 \ge 1 > 0): 22n2n≤c\frac{2^{2n}}{2n} \le c
🔒

後續完整解題步驟與【答案】

免費註冊,享三天全站完整詳解閱覽。

免費註冊

第 7 題10 分

Describe and explain the kernel components in Operating System. (10%)

登入後即可作答並保存紀錄。

這一題的完整詳解

此題考驗對作業系統核心(Kernel)組成部分及其功能的理解。

核心觀念:
作業系統核心(Kernel)是作業系統中最基本、最核心的部分,負責管理電腦的硬體資源,並為上層應用程式提供服務。它處於記憶體中一個受保護的區域,以便防止普通應用程式的干擾。

作業系統核心的主要組成部分:

作業系統核心的功能非常廣泛,但可以歸納為以下幾個關鍵組成部分:

  1. 處理器管理 (Process Management / CPU Scheduling):

    • 功能: 核心負責創建、終止、暫停和恢復進程(Process),以及在 CPU 之間調度進程的執行。它決定哪個進程在什麼時間獲得 CPU 的使用權。
    • 組件: 進程控制塊 (Process Control Block, PCB) 用於儲存進程的狀態資訊(如進程 ID, 狀態, CPU 暫存器值, 記憶體資訊等)。調度器(Scheduler)負責根據一定的調度算法(如先到先服務 FCFS, 短期任務優先 SJF, 時間片輪轉 Round Robin, 優先權調度 Priority Scheduling)來選擇下一個執行的進程。
    • 解釋: 核心需要高效地在多個進程之間切換 CPU 使用權,以實現多任務處理(Multitasking)和多處理(Multiprocessing)。
  2. 記憶體管理 (Memory Management):

    • 功能: 核心負責分配和回收系統記憶體,確保每個進程都有足夠的記憶體空間,並防止進程之間互相干擾。它還需要管理虛擬記憶體(Virtual Memory)。
    • 組件: 記憶體分配器(Memory Allocator)負責為進程分配記憶體塊。分頁(Paging)和分段(Segmentation)是實現虛擬記憶體的常見技術,它們將物理記憶體和進程的邏輯記憶體空間進行映射和管理。核心維護頁表(Page Table)或段表(Segment Table)來追蹤記憶體映射。
    • 解釋: 現代作業系統通常使用虛擬記憶體,核心負責將程式的虛擬地址空間映射到物理記憶體或磁碟(交換空間 Swap Space),從而允許運行比物理記憶體更大的程式,或同時運行更多程式。
  3. 設備管理 (Device Management / I/O Management):

    • 功能: 核心負責與電腦的各種硬體設備(如硬碟、鍵盤、顯示器、網路介面卡、印表機等)進行互動。它透過設備驅動程式(Device Drivers)來控制這些設備。
    • 組件: 設備驅動程式是核心與特定硬體設備之間的介面。核心的 I/O 子系統負責管理對設備的請求,處理中斷(Interrupts),以及在應用程式和設備之間傳遞資料。
    • 解釋: 核心接收應用程式的 I/O 請求(例如讀取文件),將請求轉發給相應的設備驅動程式,驅動程式與硬體溝通,完成操作後,核心再將結果返回給應用程式。
  4. 系統呼叫介面 (System Call Interface):

    • 功能: 核心提供了一組系統呼叫(System Calls),這些是應用程式與核心之間進行互動的唯一途徑。
🔒

後續完整解題步驟與【答案】

免費註冊,享三天全站完整詳解閱覽。

免費註冊

第 8 題10 分

Modern computers can be considered as Von Neumann machines. Explain the major concepts of von Neumann architecture. (10%)

登入後即可作答並保存紀錄。

這一題的完整詳解

此題考驗對現代計算機體系結構基礎——馮·諾依曼結構(Von Neumann Architecture)的理解。

核心觀念:
馮·諾依曼結構是由數學家約翰·馮·諾依曼(John von Neumann)在 1945 年提出的計算機體系結構模型。該模型是現代絕大多數計算機的基礎,其核心思想是「儲存程式」概念。

馮·諾依曼結構的主要概念:

  1. 儲存程式(Stored-Program Concept):

    • 概念: 指令(程式)和數據都儲存在同一個記憶體中,並且可以被計算機的中央處理器(CPU)同時讀取和處理。這與早期的固定程式計算機(Hardwired Program Computers)不同,後者需要重新接線來改變程式。
    • 重要性: 這是馮·諾依曼結構最關鍵的貢獻。它使得計算機具有了通用性,可以通過載入不同的程式來執行不同的任務,而無需修改硬體。這也是現代軟體概念的基礎。
  2. 五大基本組成部分 (Five Basic Components):
    馮·諾依曼結構定義了計算機的五個主要組成部分:

    • 中央處理器 (Central Processing Unit, CPU): 負責執行指令。它包含:
      • 算術邏輯單元 (Arithmetic Logic Unit, ALU): 執行算術運算(加、減、乘、除)和邏輯運算(AND, OR, NOT, XOR 等)。
      • 控制單元 (Control Unit, CU): 負責從記憶體中取出指令,解碼指令,並產生控制信號來協調 CPU 內部以及 CPU 與其他組件之間的活動。
      • 暫存器 (Registers): CPU 內部的高速儲存單元,用於暫時存放指令、數據、地址和中間結果。常見的暫存器包括程式計數器 (Program Counter, PC)、指令暫存器 (Instruction Register, IR)、累加器 (Accumulator) 等。
    • 記憶體 (Memory): 用於儲存指令和數據。記憶體被組織成一系列的儲存單元,每個單元都有一個唯一的地址。CPU 可以通過地址讀取或寫入記憶體中的內容。
    • 輸入設備 (Input Devices): 負責將外部資訊(如鍵盤輸入、滑鼠操作、文件數據)傳輸到計算機系統。
    • 輸出設備 (Output Devices): 負責將計算機處理的結果(如螢幕顯示、印表機輸出、文件儲存)傳輸到外部。
    • 總線 (Buses): 負責連接計算機的各個組件,傳輸數據、地址和控制信號。常見的總線包括數據總線(Data Bus)、地址總線(Address Bus)和控制總線(Control Bus)。
  3. 順序執行指令 (Sequential Instruction Execution):

    • 概念: 程式的指令通常按照儲存在記憶體中的順序依次執行。CPU 透過程式計數器 (PC) 來追蹤下一條要執行的指令地址。
🔒

後續完整解題步驟與【答案】

免費註冊,享三天全站完整詳解閱覽。

免費註冊

其他考古題