• Tidak ada hasil yang ditemukan

計算機概論Computer Concepts

N/A
N/A
Protected

Academic year: 2023

Membagikan "計算機概論Computer Concepts"

Copied!
6
0
0

Teks penuh

(1)CK6126 康秩群. 計算機概論 Computer Concepts - Algorithms, Data Structure 演算法,就是解決問題的方法,而在資訊科學中,特指能夠讓電腦來運算的一套方法; 資料結構則是在電腦中適當地存放資料,讓程式有效率地處理。某個電腦科學家曾經說過: 「程 式 = 資料結構 + 演算法」 ,所以唯有使用好的資料結構和演算法,才能設計出好的程式。. Algorithms 演算法 演算法的的必備條件 1. 輸入(Input):接受零或數個輸入。(若輸入資料寫死於演算法中為 Output only) 2.. 輸出(Output):至少產生一個以上的輸出。. 3.. 明確性(Definiteness):演算法的每個步驟必頇清楚且明確。. 4. 有限性(Finiteness):能在有限的步驟內結束,即有時間複雜度的上界。 5. 有效性(Effectiveness):每個步驟都是可實行的,且能用人工推算出結果(不管時間…)。. 演算法表示法 多用虛擬碼或流程圖來表示。前者平常想必經常看到;下列則是常見的流程圖圖形: 圖片來源 http://140.111.1.12/senior/computer/ks_ks/book/algodata/algorithm/algo3.htm. 時間複雜度 時間複雜度是指完成演算法所需的時間,一般為輸 入資料量 n 的函數 T(n),以「漸進式表示法」表示。 • O(Big-O):演算法時間上界。可找到 f(n)的某個 常數倍, n 大於某數時皆≧T(n),則 T(n)=O(f(n))。 • Ω(毆買尬):演算法時間下界。可找到 f(n)的某個 常數倍,n 大於某數時皆≦T(n),則 T(n)=Ω(f(n))。 • Θ(西塔):上界+下界。n 大於某數時,f(n)某個常 數倍≦T(n),另一常數倍≧T(n)則 T(n)=Θ(f(n))。 Θ 是最為精確的表示法,但 O 較常使用,因為我們 關心的是它的上限。 O(1)<O(logn)<O(n)<O(nlogn)<O(n2)<O(n3)<O(2n)<O(n!) ※在此 log 以 2 為底. 空間複雜度 空間複雜度為演算法執行過程中瞬間使用的最大存儲空間,通常也使用漸進式表示法。 這樣考: 1.請問平常一個演算法如果有. 的運算時間複雜度可以用下列何者表示. 【97 軟設】. (A) Θ(n ) (B) O(n ) (C) Θ(n ) (D) Θ(n ) 4. 3. 2. 5. 【95 全國】. 2.以下等式哪一項是錯的: (A) 3n2 – n + 16 = O(n2). (B) 3n2 = O(n3). (C) 2nlogn = O(n1.5). (D) 2n1.001 = O(nlogn). 答案:1.(A) 2.(D) 97 建中資訊科校內培訓講義-計算機概論-9.

(2) CK6126 康秩群. Sort 排序 詳見皮神講義,頇熟悉各種排序法,了解其時間複雜度(平均、最差、如何避免最差)、 是否穩定(Stable),並親自撰寫。看到某種排序法的虛擬碼或 Code 能推出是何種排序。 • 平均 O(n2):Bubble(氣泡/泡沫 )、Insertion(插入)、Selection(選擇)、Exchange(交換)。 • 平均 O(nlogn):Quicksort(快速)、Merge(合併)、Heap(堆積)、Shell(謝爾/希爾)。 • 其他(O(n)或接近):Counting(計數)、Radix(基數)、Bucket(桶子)。 ※斜體標記者為穩定排序法,排序鍵值相同時,排序後元素順序與原順序相同。. 氣泡排序法平常要讓氣泡怎麼飄隨便你,但出現在題目一律如下運作(以由小到大為例): for i ← 1 to length[A] do for j ← 1 to length[A] – i do if A[j] > A[j+1] then exchange A[j] ↔ A[j+1]. {這虛擬碼長得好像Pascal XDD}. 也就是每一循環都把未排序陣列裡的最大值推到最後面(若遞減排序則為最小值)。 這樣考: 1.使用氣泡排序法將陣列資料分別為 3,5,6,2,4 按遞增順序排列,經第二次循環後陣列各元素之值分 別為何? (A) 6,5,4,2,3 (B) 2,3,4,5,6 (C) 3,2,4,5,6 (D) 6,5,4,3,2. 【95 軟設】. 2.以下是某種排序方法的虛擬碼,A 代表一含有 n 個整數元素的陣列(A[1],A[2],…,A[n]),請問 X_Sort 是何種排序法?. 【93 北市】. 答案:1.(C) 2.插入排序(Insertion Sort). Binary Search 二分 /二元搜尋 詳見皮神講義,常考「在 n 筆資料中搜尋最多需比較幾次」 。 Ans: [log2n]+1 次 (不必背,用 1、2、3、4、5 推一下即可) 這樣考: 1.在 250 筆排序完成的資料當中,以二元搜尋法(binary search)尋找某一筆資料時,至多只要比較幾 次即可找到? (A) 6 次 (B) 7 次 (C) 8 次 (D) 9 次. 【96 軟設】. 2.若某排序好的資料(sorted data)用二分搜尋法(binary search)最多比較 k 次就可以找到指定的資料, 則此排序好的資料最多會有. 項。. 【93 北市】. k. 答案:1.(C) 2. 2 - 1 97 建中資訊科校內培訓講義-計算機概論-9.

(3) CK6126 康秩群. 其他演算法 可能會丟給你一些奇怪的演算法,或從虛擬碼判斷是何種演算法。 這樣考: 1.蒙地卡羅(Monte Carlo)演算法是一種速度較快的解題方法,但得到的結果卻有可能是錯的。若現 在有一個含有 1000 個實數元素(A[1],A[2],…,A[1000])的陣列 A,我們想要在這之中挑出一個元 素,其值 Max 要比其中 500 個元素來得大,以下是一個蒙地卡羅演算法的虛擬碼:. 此程式所求之 Max 其錯誤的機率是. 【93 北市】. 。 【93 北市】. 2.請問以下這一段虛擬碼在求什麼?. 答案:1. 1/220 2.最大公因數(GCD). Data Structure 資料結構 Stack 堆疊 詳見姜神講義。資料先進後出,遞迴函數會使用系統堆疊,欲取代遞迴也使用堆疊。 這樣考: 1.堆疊運作包含了 push (輸入)及 pop(輸出)兩個函數,若依序 push 1、2、3、4、5 等五個數字,輸 入過程中亦可 pop,則一個可能的輸出順序是 (A) 14235 (B) 42531 (C) 23154 (D) 35412 【96 北市】 2.已知有一堆疊的初始內容為{A, P},頂端指向 A,請問經一連串的動作【pop(), push(E),. pop(), push(B), push(R)】且無發生錯誤,最後堆疊的內容為何?. 【95 軟設】. (A) {E, B, P} (B) {R, B, P} (C) {E, B, R, P} (D) {B, R, A, P} 答案:1.(C) 2.(B). Queue 佇列 詳見姜神講義。資料先進先出,排隊等待(輸入串流、印表機工作等)皆屬於佇列。 這樣考: 1.有一個佇列 Queue 初始時為空的,接著執行以下動作:AddQ A; AddQ B; AddQ C; DeleteQ;. AddQ D; AddQ E; DeleteQ 請問最後一個 DeleteQ 會取出何值? (A) E (B) D (C) C (D) B 答案:1.(D). 【95 軟設】 97 建中資訊科校內培訓講義-計算機概論-9.

(4) CK6126 康秩群. Linked List 鏈結串列 有順序的串列,每個節點包含本身的資料和指向下一個節點的指標,尾端則指向 NULL。 便於插入和刪除資料,通常使用動態配置 struct 來實作(或 STL…),走訪時只能順著鏈結移動。 • 單向鏈結串列:. 圖片來源:英文維基百科. • 雙向鏈結串列:. • 環狀鏈結串列:. 這樣考: 【94 軟設】. 1.對於單向鏈結串列(singly linked list)而言,下列何種操作最沒有效率?. (A)在鏈結指標所指節點與上一節點間插入一新的節點 (B)在鏈結指標所指節點與下一節點間插入 一新的節點 (C)存取目前指標所指向之節點 (D)將鏈結指標移動到下一個節點 2.考慮如下圖所示的單連結串列,其中 h 指到的是第一項,而 t 所指到的是最後一項,請問下列哪 些運算時間和整個串列的長度有關?. 【91 全國】. (A)刪除第一項 (B)在第一項前面再加一項 (C)刪除最後一項 (D)在最後一項後面再加一項. 答案:1.(A) 2.(C). h. t. Tree 樹 詳見皮神講義。長得像一棵樹的東西,不能繞圈圈,通常考的是二元樹,所以都很二元。 這樣考: 1.在一棵包含 1024 個節點的二元樹中,一定會有 (2). (1). 個邊(edge),且該樹的高度最少為. 。(僅有根節點的樹高度為 0). 【94 北市】. 2.下圖 A 代表兩個「樹」的「森林」 ,利用左子右弟(Leftmost-Child-Right-Next-Sibling)方法,可將 森林轉換為圖 B 的二元樹,則(1)、(2)、(3)、(4)、(5)分別代表 A. B. C. D. E. G. H. I 圖A. 答案:1.(1)1023 (2)10 2.CBDHF. 。 【94 北市】 A. F. (1). G. (2). E. (3) (4). I. (5). 圖B. 97 建中資訊科校內培訓講義-計算機概論-9.

(5) CK6126 康秩群. 樹的走訪 詳見皮神講義。前序:中→左→右;中序:左→中→右;後序:左→右→中。(中的位置) 這樣考: 1.若一棵二元樹用中序(inorder)的方式拜訪每一個節點所得到的結果為 D、B、A、E、C、F,用前 序(preorder)拜訪的方式得到的結果為 A、B、D、C、E、F,則用後序(postorder)的方式拜訪同一棵 樹所得到的結果應為. 。. 【95 北市】. 2.下圖顯示的二元樹(binary tree),其中序(in-order)與後序(post-order)探訪(traversal)結果分別為: 中序. (1). 。後序. (2). 。. 【94 北市】. A B D F. C E. G I. H J. 答案:1. D、B、E、F、C、A 2.(1) FDIGBAEJHC (2) FIGDBJHECA. 運算樹 也有可能,給你的是一串算式,要你找出前序中序後序。不要慌,就跟平常的一樣,把 它轉換成運算樹,再走一遍即可,記得運算樹是唯一的,且所有運算元都在葉子上喔。 亦可利用括號法,將優先順序高的運算式括起來,用運算子取代左括號為前序,放到右 括號即後序啦!如: 1 + 2 * 3 - 4 / 5 → ( ( 1 + ( 2 * 3 ) ) - ( 4 / 5 ) ) →前序:- + 1 * 2 3 / 4 5 →後序:1 2 3 * + 4 5 / 這樣考: 1.下列何者為中置式(infix expresion)A-(B+C)*(D/E)的後置式(postfix expressions)? (A) A-BC+DE/*. (B) ABC+*DE/-. (C) ABC+DE/*-. 【95 北市】. (D) ABC+D/*E-. 2.一算式的前序表示法(prefix expression)為:-a/*b+cde,請問當 a=10, b=5, c=3, d=1, e=4 時的運算結 果為何? (A) 3 (B) 4 (C) 5 (D) 6。. 【92 軟設】. 答案:1.(C) 2.(C). Heap 堆積 詳見姜神講義。父節點恆大於等於 (Max-Heap)或小於等於 (Min-Heap)子節點,便於尋找極值。 這樣考: 1.有一種資料結構其為樹狀結構且在任何位置中其父節點的值恆大於子節點的值? 【97、96 軟設】 (A)二元樹(Binary Tree) (B)二元搜尋樹(Binary Search Tree) (C)堆(Heap) (D)堆疊(Stack)。 2.將一個元素 x 加入一個具有 7 個元素的堆積(heap)至多需要幾次比較?(A)1(B)2(C)3(D)4【94 全國】 【91 軟設】. 3.下列資料結構何者最適合用來挑選最小(或最大)的資料 (A)堆疊(stack) (B)佇列(queue) (C)錐形結構(heap) (D)樹狀結構(tree) 答案:1.(C) 2.(C) 3.(C). 97 建中資訊科校內培訓講義-計算機概論-9.

(6) CK6126 康秩群. Graph 圖 詳見姜神講義。圖由點和邊所組成,要熟悉各種名詞定義及性質。 這樣考: 1.某學校的校園網路連接情形如下圖所示,有些單位間有直接的網路線相連(如:校長室與教務處), 有些單位則需透過其他單位間接相連(如:總務處室與圖書館)。在校長室可以與各個單位直接或間 接相連的前提下,最多只能有__________條網路線不通(即斷線)。. 【93 北市】. 2.在一個圖形(graph)中,從任何一個頂點出發,每一個邊各經過一次後,又能夠回到原頂點的條件 是:每個頂點的分支度(degree)都是? (A)奇數 (B)3 的倍數 (C)偶數 (D)質數。. 【92 軟設】. 3.下圖中每個邊上的數字代表兩個點之間的距離, 請問 A 點到 J 點之間最短的距離為何?【91 軟設】 (A) 22. (B) 23. (C) 26. (D) 28. 答案:1.5 2.(C) 3.(A). Hash 雜湊 /哈希 一種將資料經某函數轉換後丟到表格中的方法(碰撞時有各種處理),搜尋時十分迅速。 這樣考: 1.宣告一個環狀陣列 a[13],使用雜湊函數(hash function)來存放數字,函數為 h(k)=k%13,如果有碰 撞(collision)就往下找空間放置,請問如果輸入順序為 53,46,37,20,44,13,77,27,4,84,68,65,47,則置於 a[8]的數字為何? (A) 13 (B) 20 (C) 44 (D) 47. 【96 全國】. 2.在資訊安全技術中常用的雜湊(hash)函數,下列敘述何者錯誤?. 【96 軟設】. (A)雜湊值的大小通常是固定的 (B)相同資料所產生的雜湊值必相同 (C)不同資料所產生的雜湊值一定不會相同 (D)無法由所得的雜湊值反向得到原始的資料。 3.欲於 N 筆資料中搜尋是否有 x 存在,若採用雜湊法(Hashing),最佳狀況下,需要比對幾次才能找 到答案? (A) 1 次 (B) 2 次 (C) 3 次 (D) 4 次. 【91 軟設】. 答案:1.(B) 2.(C) 3.(A). 97 建中資訊科校內培訓講義-計算機概論-9.

(7)

Referensi

Dokumen terkait

結構化程式設計 所謂的結構化程式設計是指一個程式可以透過由上而下top-down的過程,將複雜的程式 分解成許多小單元如 C 語言中的函數,這些單元稱為模組Module,每個模組有各自的功 能。一個結構化的程式僅能有單一入口及單一出口,而 goto 跳躍指令易破壞結構,不應使用。 結構化程式設計的優點為:撰寫較容易、減少程式維護的時間和成本、提高程式的可讀性。

Minimum vertex cover & Maximum independent set 最小點覆蓋跟最大獨立集,在一般圖中都是 NPH 問題。他們的判定性問 題則是 NPC。然而,在二分圖中,這些問題是非常簡單的。 Minimum vertex cover 最小點覆蓋之意義乃是找出一個子點集,使得每一條邊至少有一端頂點