參考答案 / 清大 / 106 年 計算機概論

國立清華大學資訊系統與應用研究所

清大 106 年資應所 計算機概論 參考答案

共 19 題

參考答案 PDF各校參考答案的 PDF,訂閱考試資源分享信後會寄到您的信箱。訂閱領取 PDF

參考答案由作者與 AI 討論後逐題確認,不是各校公布的標準答案;若與各校公布不同,以各校為準。
最後更新:2026 年 11 月 3 日。發現錯誤歡迎來信。

1奇同位檢查找出必定出錯的字串

考點:同位元檢查(Parity Check)與基本位元邏輯運算(AND/OR/XOR)

1 的個數為偶數、不符合奇同位的字串必定有錯:

  • 第 2 組 11011(4 個 1)
  • 第 4 組 00000(0 個 1)
  • 第 6 組 10001(2 個 1)

2(1)第一道指令執行後暫存器 3 的內容

考點:Brookshear 簡易機器語言:Op-code 與運算元格式、程式追蹤

0F(00001111):第一道指令 13B8 把位址 B8 的內容 0F 載入暫存器 3。

2(2)程式停止時記憶體 B8 的內容

考點:Brookshear 簡易機器語言:Op-code 與運算元格式、程式追蹤

C3(11000011)。

位址 指令 執行結果
B0 13B8 R3 ← 記憶體 B8 = 0F
B2 A302 R3 向右旋轉 2 位:00001111 → 11000011 = C3
B4 33B8 記憶體 B8 ← R3 = C3
B6 C000 停止

3多元程式環境下兩個行程的 I/O-bound 與 CPU-bound 組合

考點:CPU 排程基本概念:CPU/I/O Burst 週期與排程衡量標準

一個 I/O-bound 加一個 compute-bound 較高。前者等 I/O 時 CPU 可執行後者,CPU 與 I/O 重疊運作;兩個都是 I/O-bound 時 CPU 常閒置,且可能競爭同一個 I/O 裝置。

4(1)Deadlock 與 Starvation 的相同處

考點:執行緒同步機制:鎖與 Starvation

都是行程拿不到所需資源而無限期等待,工作無法完成。

4(2)Deadlock 與 Starvation 的相異處

考點:執行緒同步機制:鎖與 Starvation

Deadlock Starvation
成因 一組行程各自持有資源,又等待彼此持有的資源,形成循環等待 排程或資源分配一直偏向其他行程,某個行程持續被延後
涉及範圍 循環中的行程全部停滯 其他行程照常執行,只有被延後的行程停滯
解除方式 不會自行解除,要由系統終止行程或搶回資源 情況改變時仍可能取得資源;可用老化(aging)提高等待者的優先權
題號考點主題答案
5OSI 七層與 TCP/IP 四層對照、Switch、Router、Gateway 三種網路設備比較(1) D (2) F (3) B (4) J (5) E
6OSI 七層與 TCP/IP 四層對照(1) D (2) B (3) C (4) A (5) B (6) A

7(1)第一組命題的一致性判斷

考點:命題邏輯基礎:恆真式(Tautology)判定與常見有效推論規則

一致:P、Q、S、T 皆為真時四個命題都成立。

7(2)第二組命題的一致性判斷

考點:命題邏輯基礎:恆真式(Tautology)判定與常見有效推論規則

不一致。

題號考點主題答案
8電腦圖學基礎:3D 繪圖流程(Modeling/Rendering/Displaying)、光線反射類型與平面法向量(A)(B)

9至少兩個輸入為 1 才輸出 1 的神經元權重與門檻值

考點:類神經網路(ANN)基礎:神經元結構、激勵函數與網路架構(FNN/CNN/RNN)

三個權重皆為 1,門檻值 1.5(加權和大於門檻值時輸出 1)。

10兩個水桶問題的產生式系統與狀態圖

考點:產生式系統(Production System)與狀態圖:狀態、規則與控制系統

狀態 (b1, b2),起始 (0, 0),目標 (x, 4)。規則:R1/R2 裝滿 B1/B2、R3/R4 倒空 B1/B2、R5 B1 倒入 B2、R6 B2 倒入 B1(倒入量取來源水量與目標剩餘容量的較小者)。控制系統以廣度優先搜尋套用規則。部分狀態圖:(0,0) →R1→ (3,0) →R5→ (0,3);(0,0) →R2→ (0,5) →R6→ (3,2) →R3→ (0,2) →R6→ (2,0) →R2→ (2,5) →R6→ (3,4)。

11(1)Josephus 數的疊代演算法

考點:Josephus Problem(約瑟夫問題):遞迴式與疊代解法

n 的二進位去掉最低位就是 \ensuremath{\lfloor}n/2\ensuremath{\rfloor},因此從最高位的 J(1) = 1 開始,往低位每多看一個位元,位元為 0 時 J ← 2J − 1,為 1 時 J ← 2J + 1。時間複雜度 O(log n)。

int josephus_iter(int n) {
    int k = 0, J = 1;
    while ((n >> (k + 1)) > 0) k++;        /* k 為 n 最高位 1 的位置 */
    for (int i = k - 1; i >= 0; i--)        /* 由高位往低位處理其餘位元 */
        J = ((n >> i) & 1) ? 2 * J + 1 : 2 * J - 1;
    return J;
}

11(2)Josephus 數的遞迴演算法

考點:Josephus Problem(約瑟夫問題):遞迴式與疊代解法

int josephus_rec(int n) {
    if (n == 1) return 1;
    if (n % 2 == 0) return 2 * josephus_rec(n / 2) - 1;   /* J(2m) = 2J(m) - 1 */
    return 2 * josephus_rec(n / 2) + 1;                   /* J(2m+1) = 2J(m) + 1 */
}

時間複雜度 O(log n)。

12(1)以單向鏈結串列實作 O(1) 的 Stack

考點:Stack 與 Queue 定義與應用場景

以串列的第一個節點為頂端,插入與刪除都在 head。

typedef struct Node {
    int data;
    struct Node *link;
} Node;
Node *top = NULL;

void push(int x) {                 /* O(1) */
    Node *p = malloc(sizeof(Node));
    p->data = x;
    p->link = top;
    top = p;
}

int pop(void) {                    /* O(1),假設 stack 非空 */
    Node *p = top;
    int x = p->data;
    top = p->link;
    free(p);
    return x;
}

12(2)以單向鏈結串列實作 O(1) 的 Queue

考點:Queue 的實作方式比較(Array/Linked List,Linear/Circular)、Stack 與 Queue 定義與應用場景

另外記錄 tail 指標,從 tail 插入、從 head 刪除。

typedef struct Node {
    int data;
    struct Node *link;
} Node;
Node *head = NULL, *tail = NULL;

void enqueue(int x) {              /* O(1) */
    Node *p = malloc(sizeof(Node));
    p->data = x;
    p->link = NULL;
    if (tail == NULL) head = tail = p;   /* 原本是空佇列 */
    else { tail->link = p; tail = p; }
}

int dequeue(void) {                /* O(1),假設 queue 非空 */
    Node *p = head;
    int x = p->data;
    head = p->link;
    if (head == NULL) tail = NULL;       /* 刪掉最後一個節點 */
    free(p);
    return x;
}

13(1)Turing machine

考點:不可計算問題(Undecidable Problem)與 Halting Problem:與 NP-Hard/NPC 的本質差異、圖靈機(Turing Machine):組成、狀態表與設計範例

由無限長紙帶、讀寫頭與有限狀態控制單元組成的計算模型;每步依目前狀態與讀到的符號決定寫入符號、移動方向與下一狀態,進入停止狀態即結束。Church–Turing thesis 主張凡能以演算法計算的都能由它計算。

13(2)將二進位數乘以 2 的 Turing machine

考點:圖靈機(Turing Machine):組成、狀態表與設計範例

乘以 2 等於二進位數左移一位,也就是在最低位右邊補一個 0。紙帶上的數寫在兩個 * 之間(如 101),機器從 START 開始,讀寫頭位於右端的 *。

目前狀態 讀到 寫入 移動 下一狀態
START * 0 右 MARK
MARK 任意 * 不動 HALT

例:101(5)變成 1010(10)。

清大其他年份