BOM 表為一棵樹的結構,描述一產品P 的製作過程,其每一節點N 描
述P 之某一零組件C 的製程;而其所連結之子樹,描述組合該零組件
C,所需的所有零組件之製程。如圖範例所示,零組件
0
C是由零組件
11
12
13
C
C
C
、
及
所組合製作而成;零組件
12
C 是由零組件
21
22
C
C
及
所組合製
作而成。而零組件
21
22
C
C
及
何者先製作完成是無所謂;同樣地零組件
11
12
13
C
C
C
、
及
何者先製作完成也是無所謂。但在製作過程中,需先製作完
成零組件
21
22
C
C
及
後,才能製作零組件
12
C ;且需先製作完成零組件
11
12
13
C
C
C
、
及
後,才能製作零組件
0
C。(每小題10 分,共20 分)
圖BOM 之範例
試寫一最快速演算法,列印出某一BOM 表所對應之產品P 之零組件
製程的製作順序。列印之順序為需先被生產之零組件的製程,需先被
列印出來。例如對範例圖所示,零組件
11
12
13
C
C
C
、
及
,皆需比零組件
0
C
早被列印出來;而零組件
21
22
C
C
及
,皆需比零組件
12
C 早被列印出來。
若每一節點N,都有紀錄欲生產一件產品P 時,所需該節點之零組件
的製程時間Tc。且假設有充足機器及原物料,可供其隨時生產該節點
之零組件;即可忽略等待機器及原物料的準備時間。請寫一最快速演
算法,以計算當欲生產完一件產品P 之最快生產時間。
MS SQL Server 或MySQL 都屬於關聯式資料庫系統(RDBMS),請問:
(每小題10 分,共30 分)
何謂Transaction?並舉例說明使用時機。
Transaction 具備的4 個特性ACID 為何?
何謂SQL Injection?並舉例說明。
最小生成樹(Minimum Spanning Tree)在網路設計中有重要的用途。如下
圖,請依要求找出最小生成樹,須清楚說明每一步驟加入的點或邊。若需
起點,以A 點為起點。(每小題10 分,共20 分)
請以Prim 演算法找出最小生成樹,並詳述每一步驟加入的點或邊。
請以Kruskal 演算法找出最小生成樹,並詳述每一步驟加入的點或邊。
C
E
F
H
A
D
B
G
I
K
J
在資料庫中,建有資料表「CompanyA」與「CompanyB」,其分別為A與
B兩家電腦公司本身販賣的產品,內容如下表所示,表格有兩個欄位,欄
位分別代表ID與產品品項名稱。請回答下列問題:
CompanyA
CompanyB
寫一個SQL指令查詢上述兩家公司販售的所有產品品項,重複的品項不
要刪除,且產品品項名稱按字母順序排序,查詢結果如下表所示。(10分)
Item
CPU
GPU
Keyboard
Monitor
Mouse
Mouse
NB
NB
PC
PC
Router
Tablet
Tablet
寫一個SQL指令查詢上述兩家公司販賣的相同產品品項,且產品品項名
稱按字母順序反項排序,查詢結果如下表所示。(15分)
Item
Tablet
PC
NB
Mouse
寫一個SQL指令查詢CompanyB公司有販售但CompanyA公司沒有販售
的產品品項名稱,查詢結果如下表所示。(15分)
Item
CPU
Router
ID
Product
1
CPU
在人工智慧與機器學習領域,狀態空間表示一個問題的所有可能解的集
合,如下圖所示。請從狀態A 開始,以字母排序的先後順序,用兩種常
用的演算法:廣度優先搜尋(Breadth-First Search, BFS)與深度優先搜尋
(Depth-First Search, DFS),分別列舉搜尋的結果。(25 分)
K
H
L
D
G
A
B
F
C
E
J
I
P4
NB
請列舉“This is a book”中間有空格的連續字串,經過下列程式執行後,
兩個printf 的輸出內容。(25 分)
#include <stdio.h>
#include <string.h>
void reverse(char str[], int start, int end) {
char temp;
while (start < end) {
temp = str[start];
str[start] = str[end];
str[end] = temp;
start++;
end--;
}
}
int main() {
char str[] = "This is a book";
int len = strlen(str);
reverse(str, 0, len - 1);
printf("%s\n", str);
int word_start = 0;
for (int i = 0; i < len; i++) {
if (str[i] == ' ') {
reverse(str, word_start, i - 1);
word_start = i + 1;
}
}
reverse(str, word_start, len - 1);
printf("%s\n", str);
return 0;
}
兩個資訊設備互連溝通,端賴使用相同的通訊協定(Protocol),國際標
準組織(ISO)定義了開放式系統互聯模型(Open System Interconnection
Model, OSI 模型),OSI 模型從實體層(Physical Layer)到應用層(Application
Layer)共分為七層架構,請針對下列TCP/IP 通訊協定,試述其功能、舉
出實際應用,並指出屬於OSI 模型的那一層:(每小題15 分,共30 分)
ICMP
UDP
主副程式的參數傳遞,主要可區分為傳值呼叫(call by value)和傳址呼
叫(call by address),請說明此兩種方法何種的計算效率較高及其較高的
原因?下列主副程式,請分別依照傳值呼叫和傳址呼叫寫出輸出的答案。
(15 分)
主程式
副程式
A=1
B=2
C=3
F(A, B, C)
PRINT A, B, C
Function F(X, Y, Z)
Z=X
X=Y
Y=Z
END
有一個數列其第n 項,an,可以由前兩項計算得到,公式為:
1
1
2
(
)
n
n
n
n
a
a
a
a
,其中a1=1 且a2=2。
請使用C 語言完成以遞迴(recursion)方式完成函數int newseq(int n),
函數回傳值為該數列第n 項an。(10 分)
使用上述函數,寫一個C 語言程式,計算該數列中滿足大於10 且小
於108條件的數共有幾項,且其和為多少。(15 分)