投影片 1

Size: px
Start display at page:

Download "投影片 1"

Transcription

1 Chapter 17 資料結構與演算法 1

2 學習目標 第 17 章資料結構與演算法 認識資料結構與演算法的定義 熟悉佇列與堆疊的原理與應用 熟悉二元樹的原理與應用 瞭解常用排序與搜尋方法的原理與應用 瞭解演算法的分析方法 瞭解基本演算法設計策略 2

3 大綱 17-1 虛擬碼 17-2 基礎資料結構 17- 基礎演算法 17-4 演算法分析與策略

4 CH17 資料結構與演算法 資料結構是指資料在電腦內的表示方式和存取方法 演算法就是電腦處理資料的詳細流程 資料結構與演算法要相互配合才能有效率的處理資料 每個資料結構都有其對應的存取使用方法, 演算法設計必須搭配資料結構設計才能達到最佳表現

5 17-1 虛擬碼 流程圖 (Flow Chart): 用來描繪虛擬碼動作 流程圖是由一些圖形所組成, 主要的圖形如下圖所示 動作 圖形 運算 / 處理 / 轉換 決策 判斷 條件 是 否 邏輯流向

6 17-1 虛擬碼 以下介紹幾個主要的 虛擬碼 (pseudo code) 指令 READ READ 讀入資料儲存於某變數 其語法格式如下 : READ 變數名稱 PRINT PRINT 指令用來輸出資料 語法格式如下 : PRINT 變數名稱或訊息

7 17-1 虛擬碼 IF-THEN IF-THEN 指令在選擇或決策使用 語法格式為 : IF 條件式 THEN 指令敘述 ENDIF 條件式 是 否 指令敘述

8 17-1 虛擬碼 範例 : 虛擬碼 流程圖 IF A>0 THEN B=C+D C=D+F ENDIF E=F+G A > 0 E=F+G 是 B = C + D C=D+F 否 8

9 17-1 虛擬碼 IF-THEN-ELSE 此指令在選擇或決策時使用 語法格式為 : IF 條件式 THEN 指令敘述 1 ELSE 指令敘述 2 ENDIF 條件式成立 是 否 指令敘述 1 指令敘述 2

10 17-1 虛擬碼 範例 : 虛擬碼 流程圖 IF A>0 THEN A=A+B ELSE B=C+D A > 0 是 A = A + B 否 B= C + D ENDIF C=C+D C = C+ D 10

11 17-1 虛擬碼 FOR-LOOP 此指令在需重複執行指令時使用 語法格式為 : FOR 控制變數 = 初值 TO 終值 SETP 累加值指令敘述 END FOR

12 17-1 虛擬碼 FOR-LOOP 累加值為正值或 0 時 : 累加值為負值或 0 時 : 控制變數 = 初值 控制變數 = 初值 控制變數 終值 否 控制變數 終值 否 是 是 指令敘述 指令敘述 控制變數 = 控制變數 + 累加值 控制變數 = 控制變數 + 累加值

13 17-1 虛擬碼 例如要重複印出五個 A, 利用 FOR-LOOP 寫出的虛擬碼如下 : 虛擬碼 流程圖 FOR I=1 TO 5 STEP 1 END FOR PRINT A I=1 I 5 是 PRINT A 否 I= I+1

14 17-1 虛擬碼 WHILE-LOOP 此指令在需重複執行指令時使用 語法格式為 : WHILE 條件運算式 指令敘述 END WHILE 可以把前面 FOR- LOOP 的例子改為 WHILE-LOOP: I=1 WHILE I<=5 PRINT A I=I+1 END WHILE WHILE 條件運算式 成立 指令敘述 不成立

15 17-1 虛擬碼 EXIT EXIT 指令表示停止執行虛擬碼 語法格式為 : EXIT EXIT FOR EXIT FOR 指令將停止執行目前的 FOR-LOOP, 並繼續執行目前 FOR-LOOP 後的第一個指令 語法格式為 : EXIT FOR

16 17-1 虛擬碼 EXIT WHILE EXIT WHILE 指令表示停止執行目前的 WHILE-LOOP, 並繼續執行目前 WHILE-LOOP 後的第一個指令 語法格式為 : EXIT WHILE

17 17-1 虛擬碼 本章演算法之格式 : 格式中的演算法描述可以虛擬碼敘述, 或以一步一步的步驟式方式敘述之 本章將演算法描述格式如下 : 演算法 : 名稱輸入 : 輸入資料輸出 : 輸出資料 BEGIN 演算法描述 END

18 17-2 基礎資料結構 陣列 (Array): 是最常見的資料結構之一 當一個資料需儲存到主記憶體時, 可以指定一個變數來儲存, 但若要同時處理 100 個同樣類型資料時, 指定 100 個不同變數名稱, 在使用上就相當不便了, 此時就能利用陣列來處理 陣列是記憶體的變數名稱, 它是一群具有相同性質的資料型態之集合, 而各個元素以不同的註標 (Index) 值來區分

19 17-2 基礎資料結構 一維陣列 : 欲儲存 10 個人的平均成績 79,80,55,75,99,65,70,68,90,74, 可以使用名稱為 SCORE 的陣列, 而各元素的變數名稱分別為 SCORE[1],SCORE[2],SCORE[],...,SCORE[10], 其陣列的表示如下 : SCORE[1] SCORE[2] SCORE[] SCORE[4] SCORE[5] SCORE[6] SCORE[7] SCORE[8] SCORE[9] SCORE[10]

20 17-2 基礎資料結構 上述以一個註標來存取元素的陣列稱為一維 (One Dimension) 陣列, 以 n 個註標來存取元素的陣列稱為 n 維陣列 第一個學生 第二個學生 第三個學生 第四個學生 第一次考試第二次考試第三次考試第四次考試第五次考試第六次考試第七次考試第八次考試第九次考試第十次考試

21 佇列與堆疊 當我們買票看電影時, 大家依據到達的先後次序排隊買票, 先來的先買票進場 ; 但是當我們清洗餐盤時, 常是把洗完的盤子直接就放在之前洗好的盤子的最上面, 等到要取用盤子時會先拿最上面的盤子, 反而是後放上去的盤子先使用 前者排隊買票是 先進先出 (First In First Out,FIFO) 的處理觀念, 而後者使用盤子是 後進先出 (Last In First Out,LIFO) 的處理觀念 接下來介紹的佇列和堆疊分別應用了 FIFO 和 LIFO 的處理觀念 21

22 佇列與堆疊 佇列 (Queue) 是一個有順序的資料列, 其資料列有兩端, 分別稱為 頭端 (Front) 和 尾端 (Rear) ( 如圖 17.4) 資料可 加入 (Add) 佇列中或從佇列中 刪除 (Delete), 但是加入的資料只能加在資料列的尾端, 而刪除資料卻是除去資料列頭端的資料 頭端 尾端 A B C D E F 圖

23 佇列與堆疊 假設 Q 是一佇列, 以 ADD (Q, a) 表示將 a 加入佇列 Q 中, 以 DELETE (Q) 表示從佇列 Q 刪除資料 若佇列 Q 內有, 9, 7, 8, 四個資料, 其資料列的頭端是, 尾端是 8 ( 見圖 17.5 (a)) 頭端 尾端 頭端 尾端 頭端 尾端 Q ADD(Q, 5) ADD(Q, 2) (a) (b) (c) DELETE(Q) 頭端 尾端 頭端 尾端 (e) DELETE(Q) (d)

24 佇列與堆疊 如果將 5 加入 Q 中, 則 5 將加在尾端 8 之後, 而使 5 成為新的尾端 ( 圖 17.5 (b)) 頭端 尾端 頭端 尾端 頭端 尾端 Q ADD(Q, 5) ADD(Q, 2) (a) (b) (c) DELETE(Q) 頭端 尾端 頭端 尾端 (e) DELETE(Q) (d) 24

25 佇列與堆疊 再加入 2, 則佇列 Q 的資料列成為, 9, 7, 8, 5, 2 ( 圖 17.5 (c)) 頭端 尾端 頭端 尾端 頭端 尾端 Q ADD(Q, 5) ADD(Q, 2) (a) (b) (c) DELETE(Q) 頭端 尾端 頭端 尾端 (e) DELETE(Q) (d) 25

26 佇列與堆疊 若此時從佇列 Q 刪除資料, 將會刪除其頭端資料, 而使 9 成為新的頭端 ( 圖 17.5 (d)) 頭端 尾端 頭端 尾端 頭端 尾端 Q ADD(Q, 5) ADD(Q, 2) (a) (b) (c) DELETE(Q) 頭端 尾端 頭端 尾端 (e) DELETE(Q) (d) 26

27 佇列與堆疊 再刪除一次, 則資料列成為 7, 8, 5, 2 ( 圖 17.5 (e)) 頭端 尾端 頭端 尾端 頭端 尾端 Q ADD(Q, 5) ADD(Q, 2) (a) (b) (c) DELETE(Q) 頭端 尾端 頭端 尾端 (e) DELETE(Q) (d) 27

28 佇列與堆疊 下面分別是 ADD 和 DEL 兩個演算法, 其中 ADD 將 ITEM 加入最多有 N 個資料的佇列 Q 中, 而 DEL 是從最多有 N 個資料的佇列 Q 中刪除一個資料, 並以 ITEM 紀錄此刪除的資料 此處以一維陣列來儲存佇列 Q, 並以 FRONT 及 REAR 分別表示頭端及尾端的位置 28

29 佇列與堆疊 演算法 :ADD (ITEM, Q[], N, REAR) 輸入 :ITEM, Q[], N, REAR 輸出 :Q[], REAR 1 BEGIN 2 IF REAR = N THEN PRINT QUEUE IS FULL 4 EXIT 5 END IF 6 REAR=REAR+1 7 Q[REAR] = ITEM 8 END 29

30 佇列與堆疊 演算法 :DEL (ITEM, Q[], FRONT, REAR) 輸入 :Q[], FRONT, REAR 輸出 :ITEM, Q[], FRONT 1 BEGIN 2 IF FRONT = REAR THEN PRINT QUEUE IS EMPTY 4 EXIT 5 END IF 6 FRONT = FRONT ITEM = Q[FRONT] 8 END 0

31 佇列與堆疊 佇列常使用於作業系統中, 如工作佇列 (Job Queue) 列印佇列 (Printer Queue) 等 1

32 佇列與堆疊 堆疊 (Stack) 也是一個有順序的資料列, 其資料列兩端的一端稱為頂端 (Top) ( 如圖 17.6) 資料一樣可以加入 (Push) 堆疊中或從堆疊中刪除 (Pop), 可是加入的資料只能放於資料列的頂端, 而刪除資料也是目前資料列頂端的資料 C B A 堆疊圖 17.6 頂端 2

33 佇列與堆疊 假設 S 是一堆疊, 以 PUSH (S, a) 表示將 a 加入堆疊 S 中, 以 POP (S) 表示從堆疊 S 刪除資料 若堆疊 S 內有 1, 5, 三個資料, 其資料列的頂端是 ( 見圖 17.7 (a)) 5 1 頂端 頂端 頂端 S PUSH(S,9) S PUSH(S, 2) S (a) (b) (c) POP(S) 頂端 9 頂端 5 1 POP(S) 5 1 S S (e) (d)

34 佇列與堆疊 如果將 9 加入 S 中, 則 9 將加在頂端 之上, 使 9 成為新的頂端 ( 圖 17.7 (b)) 5 1 頂端 頂端 頂端 S PUSH(S,9) S PUSH(S, 2) S (a) (b) (c) POP(S) 頂端 9 頂端 5 1 POP(S) 5 1 S S (e) (d) 4

35 佇列與堆疊 再加入 2, 則堆疊 S 的資料列成為 1, 5,, 9, 2 ( 圖 17.7 (c)), 其中 2 為頂端 5 1 頂端 頂端 頂端 S PUSH(S,9) S PUSH(S, 2) S (a) (b) (c) POP(S) 頂端 9 頂端 5 1 POP(S) 5 1 S S (e) (d) 5

36 佇列與堆疊 若此時從堆疊 S 刪除資料, 將會刪除其頂端資料 2, 而使 9 成為新的頂端 ( 圖 17.7 (d)) 5 1 頂端 頂端 頂端 S PUSH(S,9) S PUSH(S, 2) S (a) (b) (c) POP(S) 頂端 9 頂端 5 1 POP(S) 5 1 S S (e) (d) 6

37 佇列與堆疊 再刪除一次, 則資料列成為 1, 5, ( 圖 17.7 (e)), 其中 為頂端 5 1 頂端 頂端 頂端 S PUSH(S,9) S PUSH(S, 2) S (a) (b) (c) POP(S) 頂端 9 頂端 5 1 POP(S) 5 1 S S (e) (d) 7

38 佇列與堆疊 下面分別有 PUSH 和 POP 的演算法, 其中 PUSH 將 ITEM 加入最多有 N 個資料的堆疊 S 中, 而 POP 是從最多有 N 個資料的堆疊 S 中刪除一個資料, 並以 ITEM 紀錄此刪除的資料 此處以一維陣列來儲存堆疊 S 8

39 佇列與堆疊 演算法 : PUSH ( S[], ITEM, N, TOP) 輸入 :S[], ITEM, N, TOP 輸出 :S[], TOP 1 BEGIN 2 IF TOP >= N THEN PRINT "STACK IS FULL" 4 EXIT 5 END IF 6 TOP = TOP S[TOP] = ITEM 8 END 9

40 佇列與堆疊 演算法 : POP (ITEM, S[], TOP) 輸入 :S[], TOP 輸出 :ITEM, S[], TOP 1 BEGIN 2 IF TOP <= 0 THEN PRINT "STACK IS EMPTY" 4 EXIT 5 END IF 6 ITEM = S[TOP] 7 TOP = TOP 1 8 END 40

41 佇列與堆疊 堆疊的應用很多, 如程式執行 計算數學式等 以下以計算數學式為例說明堆疊的應用 假設我們要計算數學式 A + B*C 的值, 依四則運算的規則, 要先計算 B*C 的值後再加上 A 若用電腦計算 A + B*C, 不能單單地只從左至右計算, 需先將此算式轉換成 後序算式 (Postfix Expression), 亦即將運算符號放到其運算對象的後方 例如 A+B*C 的後序算式為 ABC*+ 41

42 佇列與堆疊 若給了一個後序算式, 我們就能利用堆疊算出其值 從左至右輸入後序算式, 當輸入的不是運算符號時, 就將其加入堆疊中 ; 若輸入的是運算符號, 就連續從堆疊中刪除兩個資料, 並以此二資料作為這運算符號的運算對象計算之, 然後將計算結果再加入堆疊中 如此這般直到算式輸入完畢, 最後位於堆疊頂端的資料就是此算式的值 42

43 佇列與堆疊 若現在要計算後序算式 52*+ 的值, 首先設定好一空堆疊 ( 圖 17.8 (a)) 當輸入 `' `5' `2' 時, 因為都不是運算符號, 所以都被加入堆疊中 ( 圖 17.8 (b), (c), (d)) 5 頂端 5 S 頂端 S S (a) (b) (c) 頂端 2 1 S (f) 頂端 + 10 S 4 (e) 頂端 * 2 5 S (d) 頂端

44 佇列與堆疊 當輸入 `*' 時, 從堆疊刪除 `2' 和 `5' 兩個資料, 然後作 `5*2' 的計算, 得結果 10, 再將 10 加入堆疊中 ( 圖 17.8 (e)) 5 頂端 5 S 頂端 S S (a) (b) (c) 頂端 2 1 S (f) 頂端 + 10 S (e) 頂端 44 * 2 5 S (d) 頂端

45 佇列與堆疊 最後輸入 `+' 時, 從堆疊刪除 `10' 和 `' 兩個資料, 然後作 `+10' 的計算, 得結果 1, 再將 1 加入堆疊中 ( 圖 17.8 (f)) 所以 52*+ 的值是位於堆疊頂端的 1 5 頂端 5 S 頂端 S S (a) (b) (c) 頂端 2 1 S (f) 頂端 + 10 S (e) 45 頂端 * 2 5 S (d) 頂端

46 樹與二元樹 下圖是一張具有樹狀結構的家譜 李一是大家的共同祖先, 其後有李二 李三和李四, 李二之後有李五, 李三之後有李六 李七和李八, 李四之後有李九, 而李七之後有李十 整張圖就像是以李一為樹根向外生長的一棵樹 46

47 樹與二元樹 樹 (Tree) 是一群有限個但至少一個 節點 (Node) 所成的集合, 其中某個節點被指定為樹根 (Root) 除了樹根以外的節點可分為 T 1,..., T n 等 n 個不相交的集合 (n 0), 而且每個集合也是一棵樹 T 1,..., T n 稱為樹根的 子樹 (Subtree) 若節點 N 沒有子樹, 則稱節點 N 為 樹葉 (Leaf) 節點 N 的子樹的樹根稱為節點 N 的 孩子 (Child), 而 N 稱為其孩子的 父母 (Parent) 47

48 樹與二元樹 以右圖為例 : 節點 有李一... 李十, 樹根是李一 T1, T 2, T 是李一的三棵子樹, 其樹根分別為李二 李三和李四 李五 李六 李十 李八和李九都是 樹葉 李一的孩子有李二 李三和李四, 李二 李三和李四的父母都是李一 48

49 樹與二元樹 二元樹 (Binary Tree): 是每個節點至多兩個孩子的樹 ( 如下圖 ) 我們稱節點左邊的孩子為左孩子, 右邊的為右孩子 49

50 樹與二元樹 用右圖的 LCHILD RCHILD 和 DATA 三個欄位表示節點 其中 LCHILD 和 RCHILD 分別是節點的左孩子和右孩子,DATA 是原來的節點資料 50

51 樹與二元樹 則可將圖 : 表示 改成 51

52 樹與二元樹 圖 17.1 是用所謂的 鏈結串列 (Linked List) 來表示二元樹 鏈結串列也可以用陣列表示 宣告 Data Lchild 和 Rchild 三個陣列, 先將節點資料存入陣列 Data 中, 然後一一將節點的左孩子及右孩子在位於陣列 Data 的註標值分別填入到陣列 Lchild 和 Rchild 中 圖 17.1 的陣列表示方式如圖 所示 52

53 樹與二元樹 追蹤 (Traversal) 樹上的節點是對樹狀結構相當重要的運算 追蹤樹上的節點, 就是拜訪每個節點恰好一次, 而其追蹤的結果就是拜訪節點的順序 追蹤方式可分 : 中序追蹤 後序追蹤 前序追蹤 以下將介紹二元樹的各種追蹤方式 5

54 樹與二元樹 中序追蹤 (Inorder Traversal): 若樹只有一個節點 a, 定義此樹之中序追蹤為 a 對二元樹的中序追蹤是先以中序追蹤拜訪樹根的左子樹, 再拜訪樹根, 然後以中序追蹤拜訪樹根的右子樹 各子樹又依此定義遞迴 (Recursive) 追蹤下去 54

55 樹與二元樹 以右圖的二元樹為例 樹根 `+' 的左子樹的中序追蹤為 A; 因為節點 `*' 的左 右子樹的中序追蹤分別為 B 和 C, 所以樹根 `+' 的右子樹的中序追蹤為 B*C 最後得知中序追蹤為 : A + B * C 55

56 樹與二元樹 以右圖的二元樹為例 : 以拜訪順序 : 左 中 右追蹤此樹 可知其中序追蹤是 DBEHAFCG 56

57 樹與二元樹 前序追蹤 (Preorder Traversal): 若樹只有一個節點 a, 定義其前序追蹤為 a 對二元樹的前序追蹤是先拜訪樹根, 再以前序追蹤拜訪樹根的左子樹, 然後以前序追蹤拜訪樹根的右子樹 各子樹又依此定義遞迴的追蹤下去 57

58 樹與二元樹 以右圖為例 : 以拜訪順序 : 中 左 右追蹤此樹 可得前序追蹤為 : ABDEHCFG 58

59 樹與二元樹 以右圖為例 : 以拜訪順序 : 中 左 右追蹤此樹 可得前序追蹤為 : +A*BC 59

60 樹與二元樹 後序追蹤 (Postorder Traversal): 若樹只有一個節點 a, 定義其後序追蹤為 a 對二元樹的後序追蹤是先以後序追蹤拜訪樹根的左子樹, 再以後序追蹤拜訪樹根的右子樹, 然後拜訪樹根 各子樹又依此定義遞迴的追蹤下去 60

61 樹與二元樹 以右圖為例 : 以拜訪順序 : 左 右 中追蹤此樹 可得前序追蹤為 : DHEBFGCA 61

62 樹與二元樹 以右圖為例 : 以拜訪順序 : 左 右 中追蹤此樹 可得前序追蹤為 : ABC*+ 62

63 樹與二元樹 二元樹還能用來表示廣泛使用的 Huffman 碼之 解碼樹 (Decode Tree) 以下圖為例 : 樹根 a 0 1 b 1 c d 6

64 樹與二元樹 下圖是 a b c d 四個字元的解碼樹 以 0 代表左分支, 以 1 代表右分支, 從樹根沿著分支走到各節點的路徑 可分別記為 : a:000 b:001 0 樹根 1 d c: d:1 c 以此路徑當作編碼, 當要傳送資料時, 依此編碼方式轉換資料, 而接收端在收到後利用此圖解碼之, 可還原成原始資料 0 a 1 b 64

65 樹與二元樹 如何找出解碼樹 : 假設字母 a b c d 出現的機率分別為 0.1, 0.2, 0., 0.4 首先產生 a b c d 四個樹葉節點, 設定其加權 (Weight) 分別為 0.1, 0.2, 0., 0.4, 並設集合 L = {a, b, c, d} ( 如下圖 ) L = {a, b, c, d} a b c d (a) 65

66 樹與二元樹 其後的每一步驟如右圖 (a)~ (d) 產生一新的節點並設定其加權為 L 中前兩個加權最低的節點之加權和 令新節點為此二節點的父母 然後將此二節點從 L 中刪除, 將新的節點加入 L 如此重複直到 L 只剩一加權為 1.0 的節點 最後指定 L 中的節點為樹根這樣就完成了 a b c d 的解碼樹 ( 如圖 (d)) L = {a, b, c, d} L = {ab, c, d} L = {abc, d} L = {abcd} 66 a b c d (a) ab 0. c d a b (b) abc 0.6 d ab c 0.4 a b (c) 1.0 abcd 0 1 abc 0.6 d 0 1 ab c 0 1 a b

67 17- 基礎演算法 本節將介紹以下兩個主題 : 排序 搜尋 67

68 17--1 排序 排序問題 (Sorting Problem) 是將資料依據其 大小 " 由小至大或由大至小排好, 例如將考卷依分數從高至低排好 以下將介紹四個排序法 1. 插入排序法 2. 氣泡排序法. 謝耳排序法 4. 兩兩合併排序法 68

69 插入排序法 插入排序法 (Insertion Sort) 利用下述技巧將資料排序好 假設 是一群由左至右依小至大順序排序好的整數資料 若 15 要在維持排序順序之條件下加入此群資料內, 可以將 15 直接插入 9 和 16 之間 如此 和 26 三個資料就要向右移一個位置, 使得 9 之後空出一個位置讓 15 填入, 最後得到 的排序結果 ( 如右圖 ) 69

70 插入排序法 如右圖將 五個整數資料依序放入陣列 D 中 一開始設定 I = 2,N = 5 將 D[I] 依排序順序插入 D[1] 至 D[I 1] 的資料群中, 完畢後將 I 加 1 重複上述動作, 直到 I >N 70

71 插入排序法 下圖是一個插入排序演算法 程式的 2~4 行讀取資料放於陣列 D 內,5~15 行的迴圈 I 是排序程式,16~18 行是輸出排序好的資料 迴圈 I 從 2 至 N 遞增, 內有一從 I 1 至 1 遞減的迴圈 J 迴圈 I 的目的是把 D[I] 逐一插入前 I 1 個資料內, 利用迴圈 J 自 D[I 1] 開始向左反方向找出 D[I] 應插入的位置 演算法 :InsertionSort (D[], N) 輸入 :D[], N 輸出 :D[] 1 BEGIN 2 FOR I=1 TO N STEP 1 READ D[I] 4 END FOR 5 FOR I=2 TO N STEP 1 6 K=D[I] 7 FOR J=I-1 TO 1 STEP -1 8 IF K >= D[J] THEN 10 ELSE 11 D[J+1]=D[J] 12 END IF 1 END FOR 14 D[J+1]=K 15 END FOR 16 FOR I=1 TO N STEP 1 17 PRINT D[I] 18 END FOR 19 END 9 EXIT FOR

72 氣泡排序法 氣泡排序法 (Bubble Sort) 是利用相鄰資料兩兩相比而完成資料的排序 如果給了 N 個資料, 其排序過程分為 N 1 回合, 第 I 回合將第 I 大的資料像氣泡般的 浮現 " 至其排序的位置 如下圖將 五個整數資料依序放入陣列 D 中

73 氣泡排序法 用氣泡排序法將這五個資料由小到大排序好 首先要把最大者從左向右推到到 D[5] 內 從 D[1] 開始, 讓兩個相鄰的資料相比, 若左方的資料比右方的大, 就將資料交換, 也就是讓較大者放到右方, 而較小者放到左方 先比較 D[1] 與 D[2], 因為 D[1]<D[2], 所以資料不交換 再比較 D[2] 與 D[], 因為 D[2]>D[], 所以交換 D[2] 和 D[] 的資料 如此繼續向右比較下去 最後在 D[5] 內的 49 就是這五個資料的最大者 D: 不交換交換不交換不交換不

74 氣泡排序法 找出最大數後, 然後就要找出次大數並放於 D[4] 內 同樣的, 從 D[1] 開始, 讓兩個相鄰的資料相比, 把較大者放到右方, 而較小者放到左方 最後在 D[4] 內的 8 就是這五個資料的次大者 D: 交換 交換 交換

75 氣泡排序法 右圖是浮現第三大數的過程 相同的, 利用前述的方法可找出第三大數並放於 D[] 最後將 0 放於 D[] 內 D: 不交換 交換不 交換不

76 氣泡排序法 最後就是找出第四大數並放於 D[2] 內 之後陣列 D 的內容為 , 是由小到大的順序 D: 交換不

77 氣泡排序法 下圖是一個氣泡排序演算法 5~18 行的迴圈 J 用 7~14 行的迴圈 I 比較 D[I] 與 D[I +1] 相鄰資料, 以使得第 N + 1 J 大數放於 D[J ] 中 9~11 行是交換 D[I] 和 D[I + 1] 的內容 FLAG 變數用來表示迴圈 I 內是否有交換資料, 若無資料交換, 代表資料都已經排序好了, 可以停止排序 演算法 :BubbleSort(D[],N) 輸入 :D[], N 輸出 :D[] 1 BEGIIN 2 FOR I=1 TO N STEP 1 READ D[I] 4 END FOR 5 FOR J=N TO 2 STEP 1 6 FLAG=0 7 FOR I=1 TO J-1 STEP 1 8 IF D[I] > D[I+1] THEN 9 TEMP=D[I] 10 D[I]=D[I+1] 11 D[I+1]=TEMP 12 FLAG=1 1 END IF 14 END FOR 15 IF FLAG=0 THEN 16 EXIT FOR 17 END IF 18 END FOR 19 FOR I=1 TO N STEP 1 20 PRINT D[I] 21 END FOR 22 END

78 兩兩合併排序法 兩兩合併排序法 (2-Way Merge Sort) 是先將資料分成幾個排序好的串列, 然後把串列兩兩合併成更大的已排序串列, 直到合併成包含所有資料的已排序串列為止

79 兩兩合併排序法 如右圖要排序 10 個整數資料 先分成 10 個只有一個資料的串列, 然後兩兩合併成擁有兩個資料的串列 接著又合併成有 4 個資料的串列, 依此做下去, 直到合併成包含 10 個資料的串列

80 兩兩合併排序法 合併方法是將兩個已排序好的資料串列 A 與 B 合併成為一排序好的串列 C 其方法是分別從 A 和 B 中依小到大的順序取出第一數, 比較此二數, 將較小數放入 C 中, 並從較小數的來源串列中取出下一個數, 然後再與先前的較大數比較 如此比較及讀取資料下去, 直到有一方的資料都已放入 C 中, 最後將另一方未放入 C 內的資料依序放入 C

81 兩兩合併排序法 如右圖, 陣列 A 和 B 的內容都是依小到大排序好的三個整數 現在我們要把這兩個資料串列合併到陣列 C 內, 還要保證陣列 C 的內容一樣是由小到大排序好的

82 兩兩合併排序法 一開始比較 A[1] 和 B[1] 因為 B[1] 較小, 所以將 B[1] 放入 C[1]( 如圖 17.28), 陣列 B 及 C 的索引指標向前推 1 接著比較 A[1] 與 B[2], 此時 A[1] 較小, 所以放入 C[2] ( 圖 17.29), 然後將陣列 A 及 C 的索引指標向前推進

83 兩兩合併排序法 再比較 A[2] 和 B[2] 因為 B[2] 較小, 所以將 B[2] 放入 C[]( 如圖 17.0), 陣列 B 及 C 的索引指標向前推進 然後比較 A[2] 與 B[], 此時 B[] 較小, 所以放入 C[4]( 如圖 17.1)

84 兩兩合併排序法 現在陣列 B 的資料都已放入 C, 所以把 A[2] 和 A[] 依序放入 C ( 如圖 17.2) 最後完成合併陣列 A 與 B 於陣列 C

85 兩兩合併排序法 下圖的演算法 MERGE 是將陣列 A( 有 N 個已排好的整數 ) 與陣列 B( 有 M 個已排好的整數 ) 以合併成排序序列並存於陣列 C 中 演算法 :MERGE (A[], N, B[], M, C[]) 輸入 :A[], N, B[], M, C[] 輸出 :C[] 1 BEGIN 2 I=1 J=1 4 K=1 5 WHILE I <= N AND J < = M 6 IF A[I] <= B[I] THEN 7 C[K]=A[I] 8 I=I+1 9 ELSE 10 C[K]=B[I] 11 J=J+1 12 END IF 1 K=K+1 14 END WHILE 15 IF I > N THEN 16 FOR L=J TO M STEP 1 17 C[K]=B[L] 18 K=K+1 19 END FOR 20 END IF 21 IF J > M THEN 22 FOR L=I TO N STEP 1 2 C[K]=A[L] 24 K=K+1 25 END FOR 26 END IF 27 END

86 17--2 搜尋 在一堆資料裏尋找某特定的資料謂之 搜尋 (Searching) 以下將陸續介紹 : 循序搜尋 二分搜尋 二元搜尋樹 等常用搜尋法

87 17--2 搜尋 循序搜尋 (Sequential Search) 又稱 線性搜尋 (Linear Search), 依據資料儲存順序從頭至尾尋找下去 如下圖, 陣列 D 中有六個整數資料 若要尋找的資料為 25, 從 D[1] 開始比對, 然後 D[2], 一直到 D[] 才找到 但如果要找的是 40, 就要經歷 D[1], D[2],..., D[6] 六次比對才找到

88 17--2 搜尋 右圖的演算法 SEQSEACH 是在有 NUM 個整數的陣列 D 中以循序搜尋找尋 KEY 執行完後, 若 INDEX = 0, 表示 KEY 不在陣列 D 內, 否則,KEY 在 D[INDEX) 內 演算法 :SEQSEACH (D[], NUM, KEY, INDEX) 輸入 :D[], NUM, KEY, INDEX 輸出 : INDEX 1 BEGIN 2 INDEX=0 FOR I=1 TO NUM 4 IF D[I]=KEY THEN 5 INDEX=I 6 EXIT FOR 7 END IF 8 END FOR 9 END

89 17--2 搜尋 使用 二分搜尋 (Binary Search) 的前題是資料要先排序好 假設陣列 D 中有 N 個已排序好的數, 要尋找的資料為 KEY 二分搜尋法是每比對一次後就把搜尋範圍縮小一半, 在 (log2n ) +1 次比對內就可判斷出 KEY 是否在資料中 一開始搜尋的範圍是 D[1] 至 D[N ], 將 KEY 與 D[1] 至 D[N ] 的中間數 D[(1 + N )/2] 相比, 若 KEY 較大, 就將搜尋範圍縮小為後半, 即 D[(1 + N )/2+1] 至 D[N ]; KEY 較小, 就將搜尋範圍縮小為前半, 即 D[1] 至 D[(1 + N )/2 1] 然後 KEY 再與新搜尋範圍的中間數比對, 如此遞迴地搜尋下去

90 17--2 搜尋 如下圖, 陣列 D 內有依小至大順序排好的七個整數 假設 KEY = 41, 第一次 KEY 與中間數 D[4] 比較 因 KEY > D[4], 所以繼續搜尋 D[5] 至 D[7] 第二次 KEY 與 D[6] 比較, 結果 KEY < D[6], 再搜尋 D[5] 至 D[5] 第三次 KEY 與 D[5] 比較, 因為 KEY = D[5], 所以 KEY 的確在陣列 D 中

91 17--2 搜尋 下圖的演算法 BINSEACH 是在有 NUM 個整數的陣列 D 中以二分搜尋法找尋 KEY 執行完後, 若 INDEX = 0, 表示 KEY 不在陣列 D 內, 否則,KEY 在 D [INDEX] 內 演算法 :BINSEACH (D[], NUM, KEY, INDEX) 輸入 :D[], NUM, KEY, INDEX 輸出 : INDEX 1 BEGIN 2 INDEX=0 LOWER=1 4 UPPER=NUM 5 WHILE LOWER <= UPPER 6 MIDDLE= (LOWER+UPPER)/2 7 IF KEY > D[MIDDLE] THEN 8 LOWER=MIDDLE+1 9 END IF 10 IF KEY < D[MIDDLE] THEN 11 UPPER=MIDDLE-1 12 END IF 1 IF KEY = D[MIDDLE] THEN 14 INDEX=MIDDLE 15 EXIT WHILE 16 END IF 17 END WHILE 18 END

92 二元搜尋樹 二元搜尋樹 (Binary Search Tree) 是二元樹的結構, 但是樹中的每一節點資料都不小於它的左孩子, 也不大於它的右孩子 將資料先存於此特殊的二元搜尋樹, 之後可利用此樹做資料的搜尋

93 二元搜尋樹 若有 等七個整數資料, 我們依據輸入順序建立一二元樹 第一個輸入的數 18 當作樹根 ( 如圖 17.6) 接下來輸入的數從樹根的節點資料開始與之相比 若比節點資料大, 就再和其右孩子相比 ( 如果沒有右孩子, 就將新輸入的數當作其右孩子 ) 若比節點資料小, 就再和其左孩子相比 ( 如果沒有左孩子, 就將新輸 入的數當作其左孩子 ) 18 圖 17.6

94 二元搜尋樹 圖 17.7 圖 17.8 圖 17.9 圖 圖 和圖 分別是輸入 和 1 後二元樹的變化 最後在圖 上得到的二元樹就是這七個資料的二元搜尋樹 圖 17.7 圖 圖 17.9 圖 圖 圖 17.42

95 二元搜尋樹 假設搜尋的資料為 KEY, 從二元搜尋樹之樹根的節點資料開始與 KEY 相比 若相等, 就找到了 ; 若 KEY 比節點資料大, 而且此節點又沒有右孩子, 表示 KEY 不在資料內, 否則就再和其右孩子相比 ; 若比節點資料小, 而且此節點又沒有左孩子, 表示 KEY 不在資料內, 否則就再和其左孩子相比

96 二元搜尋樹 例如在圖 的二元搜尋樹上找尋 KEY, 假設 KEY 為 1 開始時 KEY 與樹根 18 相比, 因為 KEY < 18, 所以再與其左孩子節點 11 相比 又因 KEY > 11, 再與節點 11 的右孩子節點 1 相比, 結果就找到了 KEY 的確在這些資料中 圖

97 二元搜尋樹 但當 KEY=12 時, 開始與樹根 18 相比, 因為 KEY < 18, 所以再與其左孩子節點 11 相比 又因 KEY > 11, 再與節點 11 的右孩子節點 1 相比 因為 KEY < 1, 而且節點 1 又沒有左孩子, 表示 KEY 不在這些資料中 圖

98 17-4 演算法分析與策略 演算法 (Algorithm) 就是解決問題的方法 例如兩個整數相加的問題, 其演算法是先做個位數字的相加, 再做十位數字的相加, 接著是百位數, 依此類推 完整的演算法包括明確的輸出入資料和詳細且有限的執行步驟 98

99 算法分析 圖 17.4 描繪出在電腦上解決問題的基本架構 演算法以程式描述後在電腦上執行, 資料輸入至程式後, 經過程式對資料的運算, 最後產生解答 資料 演算法 ( 程式 ) 圖 17.4 解答 99

100 算法分析 假設演算法 A 能解問題 P, 而問題 P 的輸入資料量為 N 假設資料量為 N 的資料樣本 (Data Instance) 有 D 1, D 2,..., D i,..., D m 共 m 種, 令 T (D i ) 表示當輸入資料為 D i 時演算法 A 要執行的運算或步驟的總次數 演算法 A 的 最好狀況時間複雜度 (Best-Case Time Complexity) 是 T (D i ) (1 i m) 中最小的值, 即 min 1 i m { T (D i )}, 而演算法 A 的 最差狀況時間複雜度 (Worst-Case Time Complexity) 是 T (D i ) (1 i m) 中最大者, 即 max 1 i m { T (D i )} 100

101 算法分析 而演算法 A 的 一般狀況時間複雜度 (Average- Case Time Complexity) 是 T (D i ) (1 i m) 的平均值或期望值 ( 在某機率假設下 ) 通常我們說演算法 A 的時間複雜度為 C 就是指其最差狀況時間複雜度為 C 例如問題 P 之輸入資料量為 N 的樣本有 D 1, D 2, D 三種, 而 T (D 1 ) =,T (D 2 ) = N,T (D ) = N, 則演算法 A 的最好狀況時間複雜度為, 最差狀況為 N, 而一般狀況為 ( + N + N ) / 稱演算法 A 的時間複雜度為 N 101

102 算法分析 時間複雜度常用 階次 (Order) 來表達 首先介紹表示 漸近上限 (Asymptotic Upper Bound) 的 O 階次 如果存在某固定正實數 c 及某個非負整數 m 使得對所有的 n m, 不等式 g (n) c f (n) 都成立, 則 g (n) = O ( f (n)), 稱 f (n) 為 g (n) 的漸近上限 例如 N 2 +10N = O (N 2 ), 因為當 n 10 時, N N 2N 2 稱 N 2 為 N N 的漸進上限 102

103 算法分析 接著介紹 Ω 階次 若存在某固定正變數 c 及某非負整數 m 使得對所有 n m, 不等式 g (n) c f (n) 都成立, 則 g (n) = Ω ( f (n)), 稱 f (n) 為 g (n) 的 漸近下限 (Asymptotic Lower Bound) 例如 n = Ω (n 2 ), 因為當 n 1 時,n 1 n 2, 所以 n 2 為 n 的漸近下限 10

104 算法分析 若 g (n) = O ( f (n)) 且 g (n) = Ω ( f (n)), 則稱 f (n) 為 g (n) 的 真正階次 (Exact Order), 記為 g (n) = θ ( f (n)) 104

105 算法分析 表 17.1 顯示多種 f (n) 函數的數值, 當 n 足夠大時,2 n > n > n 2 > nlogn > n > logn n f(n) 2 n n n 2 nlogn n logn E E E E

106 算法分析 如果 f (n) = c p (n), 其中 c 為常數,p (n) 為 n 的 多項式函數 (Polynomial Function) ( 如 n, n , log 2 n, nlog 2 n), 則稱 f (n) 為 指數函數 (Exponential Function) 例如 2 n n 4 logn 等函數都是指數函數 因為指數函數的數值上升速度相當快, 所以時間複雜度為指數函數階次的演算法, 在資料量足夠多時, 需要相當長的時間才能解得答案 106

107 算法分析 若演算法的時間複雜度是 O (p (n)), 其中 p (n) 為 n 的多項式函數, 則稱此演算法為 多項式時間演算法 (Polynomial-Time Algorithm) 若問題 P 能用多項式時間演算法解得答案, 則問題 P 就能用電腦在合理時間內求得答案, 在電腦上是 可解 (Tractable) 的問題 例如排序及搜尋等問題就是此類問題 107

108 算法分析 表 17.2 是各種排序法及搜尋法的時間複雜度 演算法 時間複雜度最好狀況最差狀況 插入排序 O(n) O(n 2 ) 氣泡排序 O(n) O(n 2 ) 兩兩合併排序 O(n) O (nlog 2 n) 循序搜尋 O(1) O(n) 二分搜尋 O(1) O (log 2 n) 108

109 算法分析 若可解問題 P 的演算法 A 的時間複雜度為 t, 而解問題 P 的演算法最少需要 t 時間, 則稱演算法 A 是解問題 P 的 最佳演算法 (Optimal Algorithm) 像排序 n 個數的問題已證明在 比較與交換模式 (compare-and-exchange model) 下最少需要 Ω (nlog 2 n) 時間, 而兩兩合併排序法的時間複雜度也是 O (nlog 2 n), 所以兩兩合併排序法是最佳排序演算法 109

110 算法分析 若問題 P 到目前為止仍無法以多項式時間演算法解得答案, 也就是無法於電腦上在合理時間內求得答案, 我們稱問題 P 為 難解問題 (Intractable Problem) 有許多的應用問題是屬於這類的問題, 舉例說明如下 : 1. 旅行推銷員問題 (Travelling Salesman Problem) 有各城市間的公路交通圖, 請找出一條從某城市出發, 經過每個城市一次再回到該城市的最小長度的交通路線 110

111 算法分析 2. 圖形塗色問題 (Graph-Coloring Problem) 給一由頂點 (Vertex) 及邊 (Edge) 構成的圖形, 在有邊相連的兩頂點不能有相同顏色的限制下來對頂點塗色, 請問所需的顏色個數最少是多少?. 裝箱問題 (Bin-Packing Problem) 有 n 個不可分解的貨物, 其大小分別為 S 1,..., S n, 0 < S i 1, 若每個箱子的容量為 1, 請問將這 n 個貨物放入箱子內所需的最小箱子個數為何? 111

112 算法分析 目前要找出難解問題的 真正解答 (exact solution) 是相當耗時的, 因為目前還沒有人能提出在當今電腦架構下任何快速的演算法以求得真正解答 然而有些難解問題是能以多項式時間演算法求得接近解答的 逼近解 (approximate solution) 112

113 個別擊破策略 個別擊破策略 (Divide-and-Conquer Method) 的主要精神是將原來的問題 P 分解成 2 個或多個子問題, 待個別解決這些子問題後再經由 合併 (Merge) 處理, 整理出原來問題的答案, 而分割後的子問題是資料量較小的問題 P 因此在解子問題時又可遞迴應用上述的方法, 經由分割及合併的過程得到解答 前一章介紹的二分搜尋法就是採用個別擊破策略 11

114 個別擊破策略 兩兩合併排序法也可視為是個別擊破的策略 如圖 所示, 一開始就將資料分割成兩部分處理, 然後再遞迴細分各資料直至不能細分為止, 接著就兩兩合併成排序的序列, 慢慢的將分割的資料合併成排序的序列, 最後得到所有資料的排序結果 分割分割分割合併合併合併 圖

115 個別擊破策略 讓我們回到排序的問題上 假設陣列 D 中依序放有 4,, 5, 2, 6, 7, 1 等七個整數, 我們的目的是將這些數依小到大順序排序 首先觀察第一個數 4 在最後排序好的序列中應是第四位, 即應放在 D [4] 如果能進一步將小於 4 的數放在 D [1] 至 D[] 中, 而大於 4 的數放在 D[5] 至 D [7] 中, 則只要再分別排序好 D [1] 至 D[] 的數及 D[5] 至 D[7] 內的數, 那原來排序問題就解決了 115

116 個別擊破策略 接著介紹如何將 4 放到 D[4] 及將小於 4 的數集中在 D[1] 至 D[] 內, 而大於 4 的數則集中在 D[5] 至 D[7] 內 116

117 個別擊破策略 令 i = 2,j = 7 從 D[i] 開始向右找到第一個比 D[1] 大的數, 以 i 紀錄其陣列的索引 從 D[ j] 開始向左找到第一個不大於 4 的數, 以 j 紀錄其陣列索引 117

118 個別擊破策略 若 i < j, 則交換 D[i] 與 D[ j] 的內容, 並繼續前述的左右搜尋 ; 若 i j, 則交換 D[1] 與 D[ j] 的內容, 並停止搜尋 118

119 個別擊破策略 雖然快速排序法的最差時間複雜度為 O (n 2 ) ( 其中 n 為資料個數 ), 因為其一般狀況時間複雜度為 O (nlog 2 n), 還是相當實用的排序方法 119

120 17-4- 貪婪策略 貪婪策略 (Greedy Method) 常用來解決 最佳化問題 (Optimization Problem) 貪婪法是最直接的解法, 每次的決策都是朝向目前 最好 " 的方向前進, 而且不回頭 120

121 17-4- 貪婪策略 舉例來說, 某一個銀行出納櫃檯要服務 n 個顧客, 銀行的目標是希望顧客在櫃檯等待的平均時間要最少 解決之道是每次都從尚未服務的顧客中, 選擇需要服務時間最短的顧客來服務, 如此就可達到預期目標 像這樣每次都選擇最小服務時間的策略就是一種貪婪策略 121

122 17-4- 貪婪策略 假設有 5 個顧客 A, B, C, D, E 幾乎同時到達銀行櫃檯, 其所需服務時間如表 17. 根據貪婪演算法, 銀行櫃檯將依序服務 B, D, E, C, A 顧客在櫃檯等待的平均時間為 [1 + (1 + 2) + ( ) + ( ) + ( ) ] / 5 = 7 顧客所需服務時間 A 5 B 1 C 4 D 2 E 122

123 17-4- 貪婪策略 再介紹一個可用貪婪策略解決的 背包問題 (Knapsack Problem) 假設有多個可分解的物件和一只限重 W 的背包, 每件物件有其重量及其被選取放入背包內的利益 請問要如何將物件放進背包內而使得獲得的利益最大? 解決的方法是每次在限重的情形下, 選取尚未放入的物件中擁有最大的利益與重量的比值之物件放入背包內 12

124 17-4- 貪婪策略 設背包限重 100, 有 A, B, C, D, E 共五個物件, 其資料如表 17.4 物件重量利益利益 / 重量 A B C D E

125 17-4- 貪婪策略 因為物件 C 的利益 / 重量最高, 所以將物件 C 放入背包內, 此時背包的重量為 0 物件個數累計利益重量 C

126 17-4- 貪婪策略 接著從物件 A, B, D, E 中挑出其利益 / 重量最高的物件 A 放入背包內, 這時背包的重量為 0+10=40 物件個數累計利益重量 C A

127 17-4- 貪婪策略 接下來, 從物件 B, D, E 中挑出其利益 / 重量最高的物件 B 裝入背包內, 之後背包的重量為 = 60 物件 個數 累計利益 重量 C A B

128 17-4- 貪婪策略 再從剩下的物件 D 和 E 中選出其利益 / 重量最高的物件 E 由於物件 E 整個放入背包內會超過重量 100, 所以物件 E 只能放入 0.8 個 物件 個數 累計利益 重量 C A B E 表

129 17-4- 貪婪策略 放入以後得總重量為 = 100 最後得到的利益為 = 164 物件裝入背包的情形整理於表 17.5 物件 個數 累計利益 重量 C A B E 表

130 17-4- 貪婪策略 接著介紹 最小擴展樹 (Minimum Spanning Tree) 問題 圖 是由 頂點 (Vertex) 及 邊 (Edge) 構成的圖形, 其中圓圈代表頂點, 連接兩頂點的線為邊, 而且每個邊都有非負 (nonnegtive) 的 加權 (Weight) ( 例如頂點 V 與頂點 V 5 間的邊之加權為 5) 4 V 1 V V V 4 V 8 10

131 17-4- 貪婪策略 由於圖 的邊都無方向, 稱圖 的圖形為 無向圖 (Undirected Graph) V V 4 4 V V 2 V 2 11

132 17-4- 貪婪策略 定義無向圖的 路徑 (Path) 為頂點的序列, 其中序列裡每個頂點與其後一個頂點之間必有邊相連 例如圖 中 [V 1, V 5, V 2 ] 是一條從頂點 V 1 到頂點 V 2 的路徑 4 V 1 V V V 4 V 8 12

133 17-4- 貪婪策略 若無向圖的任兩頂點都存在一條路徑, 則稱此圖為 聯通圖 (Connected Graph) 例如圖 就是聯通圖 從某頂點出發回到該頂點的路徑稱為 迴圈 (Cycle) 例如圖 的 [V 1, V 5, V 2, V 1 ] 路 6 徑就是迴圈 一個沒有迴圈的圖形稱為 無迴圈圖 (Acyclic Graph) 4 V V 5 5 V 4 8 V 2 V 2 1

134 17-4- 貪婪策略 定義 樹 (Tree) 為聯通的無迴圈圖 若圖形 G 的頂點所成的集合為 V, 邊所成的集合為 E, 以 G = (V, E) 表示圖形 G 定義圖形 G = (V, E) 的 擴展樹 (Spanning Tree) T = (V, E) 是包括所有 G 的頂點的樹, 其中 E' 是 E 的子集合 例如圖 (a) 及 (b) 都是圖 的擴展樹 V V 4 V V 4 V V 5 5 V 2 2 V 圖 V 2 2 V

135 17-4- 貪婪策略 接著介紹以貪婪策略設計的 Kruskal 演算法 假設要求圖形 G = (V, E) 的最小擴展樹 此演算法依據邊的加權由小到大的順序考慮該邊是否為最小擴展樹的邊 若邊 e 加入後不會產生迴圈, 則邊 e 為最小擴展樹的一員 ; 反之, 邊 e 就不是最小擴展樹的一員 如此重複直到建構出最小擴展樹 詳細的步驟分述於下 : 15

136 17-4- 貪婪策略 演算法 :Kruskal 方法 輸入 : 圖形 G = (V, E) 輸出 :G 的最小擴展樹 步驟 1: 將圖形 G = (V, E) 所有的邊依其加權由小到大排好, 依序為 e 1, e 2, e,, e m 步驟 2: 建立圖形 T = (V, E ), 其中 E = Φ 設 i = 1 步驟 : 若 e i 加入圖形 T 中不產生迴圈, 則將 e i 加入圖形 T, 即 E = E { e i }; 否則, i = i + 1 步驟 4: 若圖形 T 的邊數小於 V -1, 則重複步驟 ; 否則, 圖形 T 是圖形 G 的最小 擴展樹, 結束演算法執行 16

137 17-4- 貪婪策略 用 (a, b) 表示頂點 a 與頂點 b 的邊 以找圖 的最小擴展樹為例, 將圖 的邊依加權排序後得 e 1 = (V 1,V 5 ), e 2 = (V 2,V ), e = (V 2,V 5 ), e 4 = (V 1,V 2 ), e 5 = (V,V 5 ), e 6 = (V 1,V 4 ), e 7 = (V 4,V 5 ), e 8 = (V,V 4 ) V 1 V 4 V 5 V 2 V (a) T V 1 1 V 2 2 V (d) 加入 (V 2, V 5 ) V 1 1 V 4 V 5 V 5 V 2 2 V (g) 加入 (V 1, V 4 ) 6 V 4 V 1 1 V 2 V (b) 加入 (V 1, V 5 ) V 1 1 V 4 V 5 V 4 V 5 V 2 V 2 (e) 拒絕 (V 1, V 2 ) V 1 1 V 2 2 V (c) 加入 (V 2, V ) V 1 1 V 4 V 5 V 4 V 5 V 2 V 2 (f) 拒絕 (V, V 5 ) 17

138 17-4- 貪婪策略 一開始圖形 T 只有頂點但沒有邊 ( 圖 17.48(a)) 考慮 e 1 = (V 1,V 5 ), 因不產生迴圈, 就將 (V 1,V 5 ) 加入 T 內 ( 圖 17.49(b)) V 1 V 4 V 5 V 2 V (a) T V 1 1 V 4 V 5 V 2 V 2 V 1 1 V 2 V (b) 加入 (V 1, V 5 ) V 1 1 V 4 V 5 V 4 V 5 V 2 V 2 V 1 1 V 2 2 V (c) 加入 (V 2, V ) V 1 1 V 4 V 5 V 4 V 5 V 2 V 2 (d) 加入 (V 2, V 5 ) (e) 拒絕 (V 1, V 2 ) (f) 拒絕 (V, V 5 ) V V 4 V 5 V 2 2 V (g) 加入 (V 1, V 4 ) 18

139 17-4- 貪婪策略 同樣的, e 2 = (V 2,V ) 及 e = (V 2,V 5 ) 也依序加入 T 內 ( 圖 17.49(c) 和 (d)) V 1 V 4 V 5 V 2 V (a) T V 1 1 V 4 V 5 V 2 V (b) 加入 (V 1, V 5 ) V 1 1 V 4 V 5 V 2 2 V (c) 加入 (V 2, V ) V 1 1 V 4 V 1 1 V 4 V 1 1 V 4 V 5 V 5 V 5 V 2 V 2 (d) 加入 (V 2, V 5 ) V 2 V 2 (e) 拒絕 (V 1, V 2 ) V 2 V 2 (f) 拒絕 (V, V 5 ) V V 4 V 5 V 2 V 2 (g) 加入 (V 1, V 4 ) 19

140 17-4- 貪婪策略 當考慮 e 4 = (V 1,V 2 ) 時, 因加入後會產生 [V 1, V 5, V 2, V 1 ] 的迴圈, 所以拒絕 (V 1,V 2 ) 的加入 ( 圖 17.49(e)) V 1 V 4 V 5 V 2 V (a) T V 1 1 V 4 V 5 V 2 V 2 V 1 1 V 2 V (b) 加入 (V 1, V 5 ) V 1 1 V 4 V 5 V 4 V 5 V 2 V 2 V 1 1 V 2 2 V (c) 加入 (V 2, V ) V 1 1 V 4 V 5 V 4 V 5 V 2 V 2 (d) 加入 (V 2, V 5 ) (e) 拒絕 (V 1, V 2 ) (f) 拒絕 (V, V 5 ) V V 4 V 5 V 2 2 V (g) 加入 (V 1, V 4 ) 140

141 17-4- 貪婪策略 同樣的理由, 也拒絕 e 5 = (V,V 5 ) 的加入 ( 圖 17.49(f)) V 1 V 4 V 5 V 2 V V 1 1 V 4 V 5 V 2 V V 1 1 V 4 V 5 V 2 V 2 (a) T (b) 加入 (V 1, V 5 ) (c) 加入 (V 2, V ) V 1 1 V 4 V 1 1 V 4 V 1 1 V 4 V 5 V 5 V 5 V 2 V 2 (d) 加入 (V 2, V 5 ) V 2 V 2 (e) 拒絕 (V 1, V 2 ) V 2 V 2 (f) 拒絕 (V, V 5 ) V V 4 V 5 V 2 V 2 (g) 加入 (V 1, V 4 ) 141

142 17-4- 貪婪策略 而後因 e 6 = (V 1,V 4 ) 加入 T 後不產生迴圈, 所以將 (V 1,V 4 ) 加入 T 中 ( 圖 17.49(g)) 此時 T 為 G 的擴展樹, 停止演算法 最後得到的圖 17.49(g) 就是圖 的最小擴展樹 V 1 V 4 V 5 V 2 V (a) T V 1 1 V 2 2 V (d) 加入 (V 2, V 5 ) V 1 1 V 4 V 5 V 5 V 2 2 V (g) 加入 (V 1, V 4 ) 6 V 4 V 1 1 V 2 V (b) 加入 (V 1, V 5 ) V 1 1 V 4 V 5 V 4 V 5 V 2 V 2 (e) 拒絕 (V 1, V 2 ) V 1 1 V 2 2 V (c) 加入 (V 2, V ) V 1 1 V 4 V 5 V 4 V 5 V 2 V 2 (f) 拒絕 (V, V 5 ) 142

143 17-4- 貪婪策略 接著介紹 最短路徑問題 (Shortest Path Problem) 下圖是 S A B T 四個地點的交通路線, 各路線分別標上距離 : S 40 A 0 B 60 T

144 17-4- 貪婪策略 假設要求從 S 到 T 的最短路徑長度 令 D (a, b) 表示從 a 到 b 的最短路徑長度 從上圖, 可知 D (S, T) = D (S, A) +D (A, B) +D (B, T) = = 45 如此只要利用貪婪策略就能得到答案 但是此貪婪策略並不適用於所有的最短路徑問題 144

145 17-4- 貪婪策略 例如要找下圖的 D (S, T ), 則 D (S, T ) = = 44, 此結果不等於 D (S, A) + D (A, B) + D (B, T) = S 40 A 0 B 60 T 圖

146 動態規劃 先前介紹的個別擊破策略是遞迴地將問題分成較小的問題後分別求得解答, 然後合併每個小部分的答案成為完整的答案, 是屬於由上至下 (Top- Down) 的計算策略 例如要計算下面的 Fibonacci 函數 f (n): f (0) = 0 f (1) = 1 f (n) = f (n 1) + f (n 2), n 2 146

147 動態規劃 若要計算 f (5), 利用個別擊破方法的計算過程如下圖所示: f (5) f () f (4) f (1) f (2) f (2) f () f (0) f (1) f (0) f (1) f (1) f (2) f (0) f (1) 圖 其中 f (), f (2), f (1), f (0) 被重複計算許多次, 如果能先依序將 f (0), f (1),f (2), f (), f (4) 的結果計算出來並儲存於表格或陣列, 就可避免重複計算, 增進計算速度 147

148 動態規劃 以陣列 FIB 儲存 Fibonacci 函數, 可利用下面的方法計算 f (n): FIB[0] =0 FIB[1] =1 FOR I = 2 TO n STEP 1 FIB[I] = FIB[I-1] + FIB[I-2] END FOR 將問題分成小問題, 然後直接解小問題, 將結果儲存起來以備之後使用, 像這種 由下至上 (Bottom-Up) 的設計策略稱為 動態規劃 (Dynamic Programming) 148

149 動態規劃 二項式係數 (Binomial Coefficient) 的定義為 當 n, k 的值不小時,n! 及 k! 是很大的天文數字, 非常難計算 修改此定義, 重新以遞迴關係定義於下: 149

150 動態規劃 陣列 BI 是一個二維陣列, 有 n +1 個列 ( 編號從 0 至 n),k + 1 個欄 ( 編號從 0 到 k), 讓 B (n, k) 的值儲存於 BI[n, k] 內 下列的方法能很快的計算出 B (n, k) : FOR I = 0 TO n STEP 1 FOR J = 0 TO min{i, k} STEP 1 IF J = 0 OR J = I THEN ELSE BI[I, J] =1 BI[I, J] =BI[I-1, J-1] +BI[I-1,J] END IF END FOR END FOR 150

151 動態規劃 接下來介紹有向圖的 最短路徑問題 (Shortest Path Problem) 下圖是一個 有向的 (Directed) 且加權的的圖形, 其中圓圈代表頂點, 而連接兩頂點的線稱為邊 2 1 V 1 V 4 V V 151

152 動態規劃 每個邊都有方向也有對應的非負的加權, 例如有一個從頂點 V 1 至頂點 V 2 的邊, 其加權為 1 路徑是一個頂點序列, 其中序列裡每個頂點到其後一個頂點的邊一定存在 例如 [V 1, V, V 2 ] 就是一條從頂點 V 1 至頂點 V 2 的路徑 2 V V V V 4

153 動態規劃 設定路徑的長度為路徑上所有的邊的加權的和 例如路徑 [V 1, V, V 2 ] 的長度為 = 10 假設邊的加權不為負數, 最短路徑問題是要去找出在有向及加權的圖形上任兩頂點的最短路徑 2 V V V 4 4 V 15

154 動態規劃 假設圖形有 n 個頂點, 分別是 V 1,, V n 令 d k (i, j) 表示只有經過集合 {V 1, V 2,, V k } 中某頂點的 V i 到 V j 的最短路徑長度, 令 d 0 (i, j) 為 V i 到 V j 的邊的加權 154

155 動態規劃 經過集合 {V 1,,V k } 中某些頂點的 V i 到 V j 最短路徑可能不經過 V k, 也可能經過 V k, 如果不經過 V k, 則 d k (i,j) = d k 1 (i,j); 如果經過 V k, 則 d k (i,j) = d k 1 (i,k) + d k 1 (k,j), 所以 d k (i, j) 可由下列式子計算得到 155

156 動態規劃 對圖 的圖形求最短路徑, 計算過程的 d 0, d 1,, d 4 表格列於圖 d d

157 動態規劃 d d d

158 動態規劃 假設 V i 到 V j 的最短路徑經過 V k, 則 V i 到 V j 的路徑也是最短的路徑, 而 V k 到 V j 的路徑也是最短的 例如, 由 V 2 到 V 4 的最短路徑為 [V 2, V 1, V 4 ], 而路徑 [V 2, V 1 ] 也是 V 2 到 V 1 的最短路徑, 而路徑 [V 1, V 4 ] 也是 V 1 到 V 4 的最短路徑 像這樣最佳解包含其組成份子的最佳解之特性, 稱為 最佳化原則 (Principle of Optimality) 如果最佳化問題能應用此最佳化原則, 則可以用動態規劃策略設計遞迴運算式來求得最佳解 158

Microsoft PowerPoint - DS&Algorithm [相容模式]

Microsoft PowerPoint - DS&Algorithm [相容模式] 資料結構與演算法 陳怡芬 什麼是 Data structure? 將資料群組織起來的抽象資料型態, 稱為資料結構 典型的資料結構 資料表格 (Table) 堆疊 (stack) 佇列 (queue) 串列 (list) 樹 (tree) 圖形 (graph) table, stack, queue: 可用陣列表現出來 List, tree, graph: 適合用指標表現出來 堆疊 (Stack) 將資料依序從堆疊下面儲存起來,

More information

Microsoft PowerPoint - 資料結構總複習

Microsoft PowerPoint - 資料結構總複習 Data Structure & Algorithm 陳怡芬 什麼是 Data structure? 將資料群組織起來的抽象資料型態, 稱為資料結構 1 典型的資料結構 資料表格 (Table) 堆疊 (stack) 佇列 (queue) 串列 (list) 樹 (tree) 圖形 (graph) table, stack, queue: 可用陣列表現出來 List, tree, graph: 適合用指標表現出來

More information

Microsoft PowerPoint - Fig03_Stack.ppt [相容模式]

Microsoft PowerPoint - Fig03_Stack.ppt [相容模式] 四 堆疊與佇列 (Stack & Queue) 4-. 串列及鏈結串列 4-. 用陣列結構實作堆疊 4-3. 用鏈結串列實作堆疊 4-4. 堆疊的應用 4-5. 佇列 4-6. 用陣列結構實作佇列 4-7 7. 用鏈結串列實作佇列 堆疊的基本觀念. 定義 : 4- 堆疊 當將東西疊成一堆, 而取用的時候由上方來取出. 特性 : 先進後出, 後進先出 ( 號球先放, 但 3 號球會先拿出 ) 3 3

More information

Microsoft Word - DataStruct-981.doc

Microsoft Word - DataStruct-981.doc 4. 堆疊與佇列 (Stack and Queue) 4. Stak (). 基本觀念 定義 : 當將東西疊成一堆, 而取用的時候由上方來取出 特性 : 先進後出, 後進先出 ( 號球先放, 但 3 號球會先拿出 ) 2 3 3 2 (2). Stack 的運算 基本運算 push: 將資料放入堆疊 pop: 將資料由堆疊最頂端取出一個 TopItem: 位於堆疊中最上面的一個資料 IsEmpty:

More information

<5B BECBB0EDB8AEC1F25D312D34B0AD5FC3E2BCAEBCF6BEF7C0DAB7E F31702E504446>

<5B BECBB0EDB8AEC1F25D312D34B0AD5FC3E2BCAEBCF6BEF7C0DAB7E F31702E504446> : 2 = 3 4? 0 an ordered set of unambiguous, executable steps that produces a result and terminates in a finite time (computational theory) ( ) 5 6 (C-) int min, max; float degree, b; char ch, token; /,,,

More information

Microsoft Word - CS-981.doc

Microsoft Word - CS-981.doc 4. 資料表示法 4.1 十進位與數字系統 (1). 基本觀念 數字系統的觀念 人們習慣以十進位的計量方式來計算 不同的數字系統有二進位 (Binary) 八進位 (Octal) 十進位 (Decimal) 十六進位(Hexadecimal) 二進位 電腦內部用來表達訊號的資料只有兩種符號 : 0 表示沒電,1 表示有電透過多個電路的組合表示出無數符號, 電腦便利用這些符號來表示不同的數字 利用兩條電線可以表示出

More information

0 0 = 1 0 = 0 1 = = 1 1 = 0 0 = 1

0 0 = 1 0 = 0 1 = = 1 1 = 0 0 = 1 0 0 = 1 0 = 0 1 = 0 1 1 = 1 1 = 0 0 = 1 : = {0, 1} : 3 (,, ) = + (,, ) = + + (, ) = + (,,, ) = ( + )( + ) + ( + )( + ) + = + = = + + = + = ( + ) + = + ( + ) () = () ( + ) = + + = ( + )( + ) + = = + 0

More information

Stack, queue, 運算式解析 二元樹與走訪 圖的 DFS 與 BFS 拓撲排序演算法 尤拉迴路 Uva 514, 樹狀結構 Day5: 資料結構基礎 07/12 樹 (tree) 是一種特殊的資料結構, 它可以用來描述有分支的結構, 是由一個或一個以上的節點所組成的有限集合,

Stack, queue, 運算式解析 二元樹與走訪 圖的 DFS 與 BFS 拓撲排序演算法 尤拉迴路 Uva 514, 樹狀結構 Day5: 資料結構基礎 07/12 樹 (tree) 是一種特殊的資料結構, 它可以用來描述有分支的結構, 是由一個或一個以上的節點所組成的有限集合, Stack, queue, 運算式解析 二元樹與走訪 圖的 DFS 與 BFS 拓撲排序演算法 尤拉迴路 Uva 514, 10305 樹狀結構 Day5: 資料結構基礎 07/12 樹 (tree) 是一種特殊的資料結構, 它可以用來描述有分支的結構, 是由一個或一個以上的節點所組成的有限集合, 且具有下列特質 : 存在一個特殊的節點, 稱為樹根 ( root) 其餘的節點分為 n 0 個互斥的集合,T

More information

演算法導入、ソート、データ構造、ハッシュ

演算法導入、ソート、データ構造、ハッシュ 培訓 - 1 演算法導入 ソート データ構造 ハッシュ 演算法導入 ソート データ構造 ハッシュ momohuang c2251393 chiangyo September 23, 2013 1 Schedule of the Year 1.1 Major Competition 9 12 11 10 12 10 TOI 的最 3 TOI 3 TOI 100 20 4 TOI 30 12 5 TOI

More information

ACI pdf

ACI pdf 09 9.1 -...9-2 9.1.1...9-2 9.1.2...9-3 9.2 -...9-4 9.2.1 PMT - ()...9-4 9.2.2...9-6 9.3 -...9-8 9.3.1 PMT - ()...9-8 9.4...9-10 9.4.1... 9-11 9.4.2...9-12 9.4.3...9-14 9.5 -...9-17 9.5.1...9-18 1 Excel...9-21

More information

資料結構與演算法複習試題(出自:全國資訊競賽89, 91、IOI 2002, 2003)

資料結構與演算法複習試題(出自:全國資訊競賽89, 91、IOI 2002, 2003) 資料結構與演算法複習試題 ( 出自 : 全國資訊競賽 89, 91 IOI 2002, 2003) Stack and Queue 1. 假設指令 ENQ X 的動作是將暫存器 X 的值存入佇列, 指令 DEQ X 的動作是自佇列取出一個數目 存入暫存器 X 中 若暫存器 A B C D 的內含值分別為 6 7 8 9 時, 依序執行 ENQ A ENQ B DEQ C DEQ D ENQ C ENQ

More information

untitled

untitled 1-1 1-2 1-3 1-4 1-5 1-6 1-7 1-8 1-1-1 C int main(void){ int x,y,z; int sum=0; double avg=0.0; scanf("%d",&x) ; scanf("%d",&y) ; scanf("%d",&z) ; sum=x+y+z ; avg=sum/3.0; printf("%f\n",avg); system("pause");

More information

Microsoft PowerPoint Training-1 (graph theory).pptx

Microsoft PowerPoint Training-1 (graph theory).pptx 201/8/18 北一女中 201 資訊選手培訓營 0818-0822 何謂樹狀結構? 定義 : 樹 (tree) 是一種特殊的資料結構, 它可以用來描述有分支的結構, 是由一個或一個以上的節點所組成的有限集合, 且具有下列特質 : 存在一個特殊的節點, 稱為樹根 ( root) 其餘的節點分為 n 0 個互斥的集合,T 1, T 2, T 3 T n, 且每個集合稱為子樹 genda 8/18(

More information

碩命題橫式

碩命題橫式 一 解釋名詞 :(50%) 1. Two s complement of an integer in binary 2. Arithmetic right shift of a signed integer 3. Pipelining in instruction execution 4. Highest and lowest layers in the TCP/IP protocol suite

More information

Microsoft Word - 103高考-資料結構

Microsoft Word - 103高考-資料結構 103 年公務人員高等考試三級考試試題類科 : 資訊處理科目 : 資料結構 一 給一個排序好的陣列 (Sorted Array) A[low high], 當我們要搜尋一個元素 X 是否在此陣列 A 中, 二元搜尋法 (Binary Search) 是檢查陣列的中間位置的元素 A[next], next=[(low+high)/2], 和 X 做比較, 並依比較結果作下列更新 Case: A[next]=X:return

More information

Microsoft Word - 基礎統計講義1.docx

Microsoft Word - 基礎統計講義1.docx 第三章敘述統計量描述統計資料之特性的統計量數有二項 : 1. 集中趨勢量數 : 眾數 (Mode) 中位數(Media) 平均數(Mea). 離散趨勢量數 : 全距 (Rage) 標準差(tadard Deviatio) 變異數 (Variace) 變異係數(Coefficiet of Variatio) 四分位(Quartile) 四分位距 (Iter-quartile Rage) 十分位(decile)

More information

Microsoft Word - 981192001.htm

Microsoft Word - 981192001.htm 098 年 度 11901 電 腦 軟 體 設 計 (JAVA) 乙 級 技 術 士 技 能 檢 定 學 科 測 試 試 題 本 試 卷 有 選 擇 題 80 題, 每 題 1.25 分, 皆 為 單 選 選 擇 題, 測 試 時 間 為 100 分 鐘, 請 在 答 案 卡 上 作 答, 答 錯 不 倒 扣 ; 未 作 答 者, 不 予 計 分 准 考 證 號 碼 : 姓 名 : 單 選 題 :

More information

Microsoft PowerPoint - C_Structure.ppt

Microsoft PowerPoint - C_Structure.ppt 結構與其他資料型態 Janet Huang 5-1 結構的宣告 struct 結構名稱 struct 結構名稱變數 1, 變數 2,, 變數 m; struct 結構名稱 變數 1, 變數 2,, 變數 m; student; student; 5-2 1 結構變數初值的設定 struct 結構名稱 struct 結構名稱變數 = 初值 1, 初值 2,, 初值 n student="janet","1350901",100,95

More information

投影片 1

投影片 1 Discrete Mathematics Chapter-10 Trees Introduction to Tree ( 10.1) Def 1. A connected (undirected) graph that contains no simple circuits is called a tree. Trees are particularly useful in computer science,

More information

p-2

p-2 B 卷 選擇題 共 50 題 ( 共 100 分 ) 1. 執行下列 Visual Basic 程式片段後, 共輸出幾筆資 料? x = 0: y = 1 Print y x = x + y Print x y = y + 1 If x >= 10 Then Exit Loop While y

More information

Microsoft PowerPoint - tree

Microsoft PowerPoint - tree 資料結構的樹與二元樹 (Trees and Binary Trees) 資訊科技系林偉川 樹的基本觀念 樹 (Trees) 是一種模擬現實生活中樹幹和樹枝的資料結構, 屬於一種階層架構的非線性資料結構, 例如 : 家族族譜, 如下圖所示 : 2 1 樹的基本觀念 樹的樹根稱為 根節點 (Root), 在根節點之下是樹的樹枝, 擁有 0 到 n 個 子節點 (Children), 即樹的 分支 (Branch),

More information

1

1 基本練習題 1. 請將下面的二元樹表示成一維陣列 A B C D E F G 答 : [0] [1] [2] [3] [4] [5] [6] [7] [11] A B C D E F G 2. 將上題的二元樹表示成二維陣列 答 : [0] [1] [2] [0] A 1 2 [1] B 3 0 [2] C 4 5 [3] D 0 0 [4] E 6 0 [5] F 0 0 [6] G 0 0 3.

More information

Microsoft Word - 051KK170AP009ZP01資構.docx

Microsoft Word - 051KK170AP009ZP01資構.docx 資料結構 < 王致強老師精選 > 高一 給定一個遞迴時間關係式 Θ 1, 1, 1 點請說明在下列情況之下,T(n) 的時間複雜度為何? ( 一 ) ac 解 ( 一 ) ac 時,n O, 故 Θ 說明 : 使用 Master method 二

More information

Tree

Tree 樹狀結構 Tree 講師 : 洪安 大綱 樹 (Tree) 二元樹 (Binary Tree) 二元搜尋樹 (Binary Search Tree) 課堂練習 2 樹 樹 (Tree) 是一種模擬現實生活中樹幹和樹枝的資料結構, 屬於一種階層架構的非線性資料結構, 例如 : 家族族譜, 決策模型 3 樹的基本術語 樹的樹根稱為 根節點 (Root), 在根節點之下是樹的樹枝, 擁有 0 到 n 個

More information

Microsoft Word - 097119012001.htm

Microsoft Word - 097119012001.htm 097 年 度 11901 電 腦 軟 體 設 計 (JAVA) 乙 級 技 術 士 技 能 檢 定 學 科 測 試 試 題 本 試 卷 有 選 擇 題 80 題, 每 題 1.25 分, 皆 為 單 選 選 擇 題, 測 試 時 間 為 100 分 鐘, 請 在 答 案 卡 上 作 答, 答 錯 不 倒 扣 ; 未 作 答 者, 不 予 計 分 准 考 證 號 碼 : 姓 名 : 單 選 題 :

More information

國立勤益科技大學 101 學年度研究所碩士班招生筆試試題卷所別 : 工業工程與管理系組別 : 資訊系統組科目 : 計算機概論准考證號碼 : ( 考生自填 ) 考生注意事項 : 一 考試時間 100 分鐘 選擇題 :<20 題, 每題 5 分, 共 100 分 > 1. CPU 的速度為 5 MIPS

國立勤益科技大學 101 學年度研究所碩士班招生筆試試題卷所別 : 工業工程與管理系組別 : 資訊系統組科目 : 計算機概論准考證號碼 : ( 考生自填 ) 考生注意事項 : 一 考試時間 100 分鐘 選擇題 :<20 題, 每題 5 分, 共 100 分 > 1. CPU 的速度為 5 MIPS 國立勤益科技大學 101 學年度研究所碩士班招生筆試試題卷所別 : 工業工程與管理系組別 : 資訊系統組科目 : 計算機概論准考證號碼 : ( 考生自填 ) 考生注意事項 : 一 考試時間 100 分鐘 選擇題 : 1. CPU 的速度為 5 MIPS 時, 則執行一個指令的平均時間為何? (A) 0.2μs (B) 0.2ns (C) 5μs (D)

More information

Microsoft Word - Prog1-981.docx

Microsoft Word - Prog1-981.docx 5. 變數參照 (Memory Reference) 5.1 指標 (Pointer) (1). 指標 (Pointer) 的基本觀念 特性 內含為一 Memory Address 會因不同的機器而有不同的結果 &" 也是代表變數的位址 例如 : int var1 = 2; cout

More information

Microsoft PowerPoint - queue.ppt

Microsoft PowerPoint - queue.ppt 資料結構的佇列 (Queues) 資訊科技系林偉川 佇列的基礎 佇列 (Queues) 是一種和堆疊十分相似的資料結構, 在日常生活中隨處可見的排隊人潮, 例如 : 在郵局排隊寄信 銀行排隊存錢或電影院前排隊買票的隊伍, 其組成的線性串列就是一種佇列, 如下圖所示 : 2 1 佇列 (Queue) 佇列的定義 佇列的動作 FIFO (First In First Out) Front Rear 3

More information

2 A

2 A 1 2 A 3 AB 8 11 12 13 14 15 16 4 5 6 21 200 (l)20 (2)15 (3)10 7 8 9 10 11 11 12 14 15 12 13 14 15 16 17 18 19 20 21 17 18 203500 1500 500 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42

More information

优合会计考点直击卷子之财经法规答案——第八套

优合会计考点直击卷子之财经法规答案——第八套 原 题 导 航 基 础 第 一 套 第 1 题 参 考 答 案 : C 试 题 评 析 : 在 社 会 主 义 市 场 经 济 条 件 下, 会 计 的 对 象 是 社 会 再 生 产 过 程 中 主 要 以 货 币 表 现 的 经 济 活 动 第 2 题 参 考 答 案 :B 试 题 评 析 : 在 权 责 发 生 制 下, 本 期 售 货 尚 未 收 到 销 售 货 款 属 于 当 期 收 入

More information

Microsoft Word - cjfg_jy0201.doc

Microsoft Word - cjfg_jy0201.doc 第 二 章 支 付 结 算 法 律 制 度 考 情 分 析 本 章 在 历 年 考 试 中 所 占 的 分 值 比 重 为 20 35 分 左 右 围 绕 支 付 结 算 展 开, 分 别 介 绍 了 现 金 管 理, 银 行 存 款 管 理, 以 及 各 种 支 付 结 算 工 具 本 章 重 点 为 第 四 节, 难 度 稍 高, 需 要 考 生 在 理 解 的 基 础 上 适 当 记 忆 第

More information

1

1 基本練習題 1 答 :(A) 2 答 :(B) 3 答 :(C) 4 答 :(B) 5 答 :(D) 6 答 :2 7 答 :(B) 8 答 : (A) A B C / D E * + F G / - (B) A B + C D - * E / (C) A B C * + E F + - 9 答 : (A) - + A * - / BCDE / F G (B) / * + A B C D E (C)

More information

4

4 練習 9A ( 9. 特殊角的三角比 T ( 在本練習中, 不得使用計算機 如有需要, 答案以根式或分數表示. 試完成下表 三角比 θ 0 4 60 sin θ cos θ tan θ 求下列各數式的值 (. cos 60. sin 4 4. tan 4. cos0 4 tan 0 7. sin 4 cos 4 8. cos 60 tan 4 9. tan 60sin 0 0. sin 60 cos

More information

Python a p p l e b e a r c Fruit Animal a p p l e b e a r c 2-2

Python a p p l e b e a r c Fruit Animal a p p l e b e a r c 2-2 Chapter 02 變數與運算式 2.1 2.1.1 2.1.2 2.1.3 2.1.4 2.2 2.2.1 2.2.2 2.2.3 type 2.2.4 2.3 2.3.1 print 2.3.2 input 2.4 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 + 2.4.6 Python Python 2.1 2.1.1 a p p l e b e a r c 65438790

More information

<4D F736F F D203938BEC7ACECBCD2C0C0B8D5A8F7AEE6A6A1C0C92DB57BA6A1B35DAD705FA6B3B8D1B5AA5F2E646F63>

<4D F736F F D203938BEC7ACECBCD2C0C0B8D5A8F7AEE6A6A1C0C92DB57BA6A1B35DAD705FA6B3B8D1B5AA5F2E646F63> 全國高級中等學校 98 學年度商業類科學生技藝競賽 程式設計 職種學科模擬試卷 選手證號碼 : 姓名 : 注意事項 : 請將答案劃記於答案卡, 未依規定劃記者不予計分 試題說明 : ( 選擇題每題 4 分, 共 100 分 ) ( A ) 1. 在 ASCII Code 的表示法中, 下列大小之關係何者為錯誤? (A) A>B>C (B) c>b>a (C) 3>2>1 (D) p>g>e ( D

More information

Turing Machine [1] n n n findmin (a 1, a 2,, a n ) 1. result a 1 2. index 2 3. result min (result, aindex) 4. index index go to step 3 till (in

Turing Machine [1] n n n findmin (a 1, a 2,, a n ) 1. result a 1 2. index 2 3. result min (result, aindex) 4. index index go to step 3 till (in What's fun in EE Algorithm 1920 30 1. 3 2. 3. well defined executable 1. 2. (?) 10617 Email: dept@cc.ee.ntu.edu.tw http://www.ee.ntu.edu.tw/ Turing Machine [1] n n n findmin (a 1, a 2,, a n ) 1. result

More information

Microsoft PowerPoint - ds2.ppt

Microsoft PowerPoint - ds2.ppt 資料結構的堆疊 資訊科技系林偉川 堆疊的基礎 堆疊 屬於一種擁有特定進出規則的線性串列結構, 如同在餐廳廚房的工人清洗餐盤, 將洗好的餐盤疊在一起, 每一個洗好的餐盤放在這疊餐盤的頂端, 如下圖所示 : 2 1 堆疊的基礎 - 操作 堆疊的基本操作, 如下所示 : push(): 將資料存入堆疊, 在堆疊的頂端新增資料 pop(): 從堆疊取出資料, 每執行一次, 就從頂端取出一個資料 isstackempty():

More information

Microsoft Word - K33資料結構_題+解+評OK_.doc

Microsoft Word - K33資料結構_題+解+評OK_.doc ( 四 ) 為 full binary tree 的基本定義 106 年高上高普考 高分詳解 資料結構 一 給定二元樹 (binary tree) 如右圖, 樹高為 4 且共有 7 個節點 ( 一 ) 請寫出該樹之後序遍歷 (postorder traversal) 結果 (5 ( 二 ) 若以陣列 A[1..15] 實作該二元樹, 請列舉陣列 A[1..15] 的內容 (5 ( 三 ) 若要將數值

More information

840 提示 Excel - Excel -- Excel (=) Excel ch0.xlsx H5 =D5+E5+F5+G5 (=) = - Excel 00

840 提示 Excel - Excel -- Excel (=) Excel ch0.xlsx H5 =D5+E5+F5+G5 (=) = - Excel 00 Excel - - Excel - -4-5 840 提示 Excel - Excel -- Excel (=) Excel ch0.xlsx H5 =D5+E5+F5+G5 (=) = - Excel 00 ( 0 ) 智慧標籤 相關說明提示 -5 -- Excel 4 5 6 7 8 + - * / % ^ = < >= & 9 0 (:) (,) ( ) Chapter - :,

More information

本章綱要 -1 節點電壓法 -2 迴路電流法 -3 重疊定理 - 戴維寧定理 -5 諾頓定理 -6 戴維寧與諾頓等效電路之轉換 -7 最大功率轉移定理 Chapter 直流網路分析 0626-0.indd 125 2009/11/10 下午 0:58:09

本章綱要 -1 節點電壓法 -2 迴路電流法 -3 重疊定理 - 戴維寧定理 -5 諾頓定理 -6 戴維寧與諾頓等效電路之轉換 -7 最大功率轉移定理 Chapter 直流網路分析 0626-0.indd 125 2009/11/10 下午 0:58:09 ELECTRICITY ELECTRICITY BASIC BASIC 本章學習目標 1. 利用節點電壓法分析各支路的電流 2. 利用迴路電流法分析各迴路的電流 3. 瞭解重疊定理在多電源電路的應用. 利用戴維寧與諾頓定理化簡電路 5. 瞭解戴維寧與諾頓等效電路的轉換 6. 學習負載如何在電路中獲得最大的功率轉移 0626-0.indd 12 2009/11/10 下午 0:58:02 本章綱要 -1

More information

Fuzzy Highlight.ppt

Fuzzy Highlight.ppt Fuzzy Highlight high light Openfind O(kn) n k O(nm) m Knuth O(n) m Knuth Unix grep regular expression exact match Yahoo agrep fuzzy match Gais agrep Openfind gais exact match fuzzy match fuzzy match O(kn)

More information

Excel VBA Excel Visual Basic for Application

Excel VBA  Excel Visual Basic for Application Excel VBA Jun5,00 Sub 分頁 () Dim i As Integer Dim Cname As String Dim Code As Variant Set score=thisworkbook.sheets("sheet") Code=Array(" 專北一 "," 專北二 "," 專北三 "," 專桃園 "," 專桃竹 "," 專中苗 ", " 專台中 "," 專台南 ","

More information

<4D F736F F D20B3AFABD8EA4D2DB9EFBAD9A668B6B5A6A1AABA652D68ABEDB5A5A6A15FA4555F>

<4D F736F F D20B3AFABD8EA4D2DB9EFBAD9A668B6B5A6A1AABA652D68ABEDB5A5A6A15FA4555F> 對稱多項式的 h恆等式 ( 下 ): 將 h 用 的行列式表示 陳建燁 臺北市立第一女子高級中學數學教師 壹 前言 : 關於對稱多項式, 有一個很重要的事實, 稱為 對稱多項式的基本定理, 簡單地說, 即任何 元 (,,, ) 的對稱多項式, 總是可以寫成 個基本對稱多項式 ( 即,,, ) 的多項式 ( 參考資料 [4]) 例如: ( ) ( ) [ (,, )] (,, ) 那 麼, 既然 h(,,,

More information

PowerPoint Presentation

PowerPoint Presentation 樹狀結構 (Tree) NTU CSIE 大綱 樹 (Tree) 二元樹 (Binary Tree) 二元搜尋樹 (Binary Search Tree) 樹 樹 (Tree) 是一種模擬現實生活中樹幹和樹枝的資料結構, 屬於一種階層架構的非線性資料結構, 例如 : 家族族譜, 決策模型 樹的基本術語 樹的樹根稱為 根節點 (Root), 在根節點之下是樹的樹枝, 擁有 0 到 n 個 子節點 (Children),

More information

Microsoft Word - data_mid1611_and_sol.docx

Microsoft Word - data_mid1611_and_sol.docx Department of Computer Science and Engineering National Sun Yat-sen University Data Structures - Middle Exam, Nov. 14, 2016 1. Explain each of the following terms. (16%) (a) private in C++ language (b)

More information

山东2014第四季新教材《会计基础》冲刺卷第二套

山东2014第四季新教材《会计基础》冲刺卷第二套 2016 年 会 计 从 业 考 试 会 计 基 础 冲 刺 卷 2 一 单 项 选 择 题 ( 本 题 共 20 小 题, 每 小 题 1 分, 共 20 分 在 下 列 每 小 题 的 备 选 项 中, 有 且 只 有 一 个 选 项 是 最 符 合 题 目 要 求 的, 请 将 正 确 答 案 前 的 英 文 字 母 填 入 题 后 的 括 号 内, 不 选 错 选 均 不 得 分 ) 1.

More information

Chapter 1 Introduction

Chapter 1  Introduction Chapter 9 Branch-and-Bound and Backtracking C.K. Liang al-09 Branch-and-Bound Introduction Graph: Graphs are a pervasive data structure in computer science, and algorithms for working with graphs are fundamental

More information

公職王歷屆試題 (101 高普考 ) 101 年公務人員普通考試試題類科 : 電子工程 電信工程 資訊處理科目 : 計算機概要 BCD 數元 ( 轉換成 16 進制後其值為何? ) BCD ( 597) 16 ( 255) 16 ( ) 16 (

公職王歷屆試題 (101 高普考 ) 101 年公務人員普通考試試題類科 : 電子工程 電信工程 資訊處理科目 : 計算機概要 BCD 數元 ( 轉換成 16 進制後其值為何? ) BCD ( 597) 16 ( 255) 16 ( ) 16 ( 101 年公務人員普通考試試題類科 : 電子工程 電信工程 資訊處理科目 : 計算機概要 BCD 數元 ( 0101 10010111 轉換成 進制後其值為何? ) BCD ( 597) ( 255) ( 010110010111) ( 1125) 下列四種數值資料型別 (data type), 何者可表示的數值資料範圍最大? 整數 (integer) 長整數 (long) 單精度 (single)

More information

1

1 基本練習題 1. 答 : 鄰接矩陣 : D E D E 0 0 1 0 1 0 0 0 0 1 1 0 0 1 1 0 0 1 0 1 1 1 1 1 0 5 5 D E D E 0 1 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 鄰接串列 : List[] List[] E List[] E List[] D E List[D] E List[E]

More information

Spyder Anaconda Spyder Python Spyder Python Spyder Spyder Spyder 開始 \ 所有程式 \ Anaconda3 (64-bit) \ Spyder Spyder IPython Python IPython Sp

Spyder Anaconda Spyder Python Spyder Python Spyder Spyder Spyder 開始 \ 所有程式 \ Anaconda3 (64-bit) \ Spyder Spyder IPython Python IPython Sp 01 1.6 Spyder Anaconda Spyder Python Spyder Python Spyder Spyder 1.6.1 Spyder 開始 \ 所有程式 \ Anaconda3 (64-bit) \ Spyder Spyder IPython Python IPython Spyder Python File

More information

試題評析

試題評析 高點102 關地務方來勝 版權所有, 重製必究! 資料結構 < 王致強老師精選 > 頭號重點 1 最近二年三等 / 四等地方政府特考重要命題方向 由最近二年 ( 年至 年 ) 之三等地方政府特考以及今年 ( 年 ) 相關國家考試的 資料結構 考題, 就其命題方向所鎖定的資料結構內容, 整理如下表 : 102 高考 專技 專利 交通 高考 關務 司法 專技 地特 關務 交通 高考 司法 公務 時間複雜度

More information

Microsoft PowerPoint - C-Ch11.ppt

Microsoft PowerPoint - C-Ch11.ppt 各式各樣的資料型態 11-1 結構的基礎知識 決定新的型態 關於結構 結構資料型態可以將不同資料型態的值整合成新的型態 結構型態的宣告語法 : struct 結構型態 { 資料型態識別字 ; 資料型態識別字 ; }; 加上 struct 進行宣告 宣告結構變數 語法 : 結構型態結構變數名稱 ; 範例 : struct Car car1; 對成員進行存取 使用結構型態的成員時, 必須使用成員選擇運算子

More information

投影片 1

投影片 1 資料庫管理程式 ( 補充教材 -Part2) 使用 ADO.NET 連結資料庫 ( 自行撰寫程式碼 以實現新增 刪除 修改等功能 ) Private Sub InsertButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles InsertButton.Click ' 宣告相關的 Connection

More information

Microsoft PowerPoint - VB14.ppt

Microsoft PowerPoint - VB14.ppt VB 列表盒 LISTBOX 應用 資科系 林偉川 執行畫面 1 2 1 重要屬性 LISTBOX 物件 (VB6) 新增至 LISTBOX 物件中 ADDITEM 自 LISTBOX 物件中刪除選取物件 REMOVEITEM 自 LISTBOX 物件中取出選取物件 ListIndex 顯示 LISTBOX 物件中紀錄個數 Listcount 3 LISTBOX 物件 (VB.NET) 重要屬性 新增至

More information

(黃).indd

(黃).indd 102 22 95 11 5 4 7 14 19 20 8 2 5 6 8 10 15 17 18 5 1 3 16 21 22 6 9 11 12 13 23 24 2 3 17 15 16 193011 95 101 102 22 101 95 1112 13 14 15 16 17 18 19 20 Bendetto Croce 1960 4 48 1244 2 1. (A) (B)(C)(D)

More information

Microsoft Word - ACL chapter02-5ed.docx

Microsoft Word - ACL chapter02-5ed.docx 第 2 章神奇的質數 2.1.1 什麼是質數 1 1 1 打下好基礎 - 程式設計必修的數學思維與邏輯訓練 1 1 0 10 2 3 5 7 4 6 8 9 10 4 10000 1229 1000 168 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 101 103 107 109 113 127 131

More information

試題評析

試題評析 資料結構 高點一 請參考圖 : ( 一 ) 由 a 點出發, 做 depth-first traversal( 深度優先拜訪 ), 請問那些節點 (node) 不會被訪問到?(3 分 ) ( 二 ) 由 a 點出發, 做 breadth-first traversal( 寬度優先拜訪 ), 請問那些節點 (node) 不會被訪問到?(2 分 ) ( 三 ) 假設圖 代表 heap 上各個節點 (node)

More information

Open topic Bellman-Ford算法与负环

Open topic   Bellman-Ford算法与负环 Open topic Bellman-Ford 2018 11 5 171860508@smail.nju.edu.cn 1/15 Contents 1. G s BF 2. BF 3. BF 2/15 BF G Bellman-Ford false 3/15 BF G Bellman-Ford false G c = v 0, v 1,..., v k (v 0 = v k ) k w(v i 1,

More information

bingdian001.com

bingdian001.com 2017 12 2 24 1 2 17 2 000 20 2 500 2 400 25 100 3 80 2 17 A B 80 C D 2 2 17 25 000 3 1 2 000 5 5 800 5 30 800 2 17 A B C D 3 2 17 2 16 20 20 2 17 2 16 2 17 20 000 18 000 A B C D 4 2 17 500 800 350 120

More information

Microsoft Word - 第04章 堆疊與佇列.doc

Microsoft Word - 第04章 堆疊與佇列.doc Chapter 4 堆疊與佇列 4-1 Stacks and Quenes Chapter 4 堆疊與佇列 (Stacks and Queues) 4-1 堆疊 (Stacks) 要點 : 堆疊的特點 1. 定義 : 堆疊 (stacks) 是一種有序串列, 其插入 (insertion) 與刪除 (deletion) 皆須在一同端進行 2. 插入與刪除的一端稱為頂端 (top); 另一端則稱為底部

More information

星星排列 _for loop Protected Sub Page_Load(ByVal sender As Object, ByVal e As Dim h As Integer = 7 'h 為變數 ' Dim i, j As Integer For i = 1 To h

星星排列 _for loop Protected Sub Page_Load(ByVal sender As Object, ByVal e As Dim h As Integer = 7 'h 為變數 ' Dim i, j As Integer For i = 1 To h 資訊系統與實習 製作 : 林郁君 一 2009.09.28 9X9 'button 被按下後 ' Dim i, j As Integer For i = 1 To 9 'i 從 1 到 9' For j = 1 To 9 'j 從 1 到 9' If j * i < 10 Then ' 如果 j 乘上 i 是為個位數 ' Response.Write(i & "*" & j & " =" & i *

More information

Explain each of the following terms. (12%) (a) O(n 2 ) (b) protected in C++ language (c) sparse matrix 7. Write

Explain each of the following terms. (12%) (a) O(n 2 ) (b) protected in C++ language (c) sparse matrix 7. Write Department of Computer Science and Engineering National Sun Yat-sen University Data Structures - Middle Exam, Nov. 20, 2017 1. Suppose an array is declared as a[5][6][4], where the address of a[0][0][0]

More information

精 品 库 我 们 的 都 是 精 品 _www.jingpinwenku.com 7. 根 据 中 华 人 民 共 和 国 会 计 法 的 规 定, 对 登 记 会 计 账 簿 不 符 合 规 定 的 单 位 县 级 以 上 人 民 政 府 财 政 部 门 责 令 限 期 改 正, 并 可 以 处

精 品 库 我 们 的 都 是 精 品 _www.jingpinwenku.com 7. 根 据 中 华 人 民 共 和 国 会 计 法 的 规 定, 对 登 记 会 计 账 簿 不 符 合 规 定 的 单 位 县 级 以 上 人 民 政 府 财 政 部 门 责 令 限 期 改 正, 并 可 以 处 北 京 市 会 计 从 业 资 格 无 纸 化 考 试 财 经 法 规 与 会 计 职 业 道 德 上 机 考 试 题 库 ( 五 ) 考 试 时 间 :60 分 钟 一 单 项 选 择 题 ( 本 题 共 20 分, 每 小 题 1 分 每 小 题 只 有 一 个 正 确 答 案, 多 选 错 选 漏 选, 不 得 分 ) 1. 纳 税 人 生 产 规 模 较 小 产 品 零 星 税 源 分 散

More information

01 用 ActionScript 3.0 開始認識 Flash CS3 Flash 是應用在網路上非常流行且高互動性的多媒體技術, 由於擁有向量圖像體積小的優點, 而且 Flash Player 也很小巧精緻, 很快的有趣的 Flash 動畫透過設計師的創意紅遍了整個網際網路 雖然很多人都對 Fl

01 用 ActionScript 3.0 開始認識 Flash CS3 Flash 是應用在網路上非常流行且高互動性的多媒體技術, 由於擁有向量圖像體積小的優點, 而且 Flash Player 也很小巧精緻, 很快的有趣的 Flash 動畫透過設計師的創意紅遍了整個網際網路 雖然很多人都對 Fl 01 用 ActionScript 3.0 開始認識 Flash CS3 Flash 是應用在網路上非常流行且高互動性的多媒體技術, 由於擁有向量圖像體積小的優點, 而且 Flash Player 也很小巧精緻, 很快的有趣的 Flash 動畫透過設計師的創意紅遍了整個網際網路 雖然很多人都對 Flash 可以做精美的網路動畫並不陌生, 但是實際上 Flash 不僅如此, 只要搭配 ActionScript

More information

<443A5CD7C0C3E65CC8BAD7CAC1CF5C323031344350415F73662E646F63>

<443A5CD7C0C3E65CC8BAD7CAC1CF5C323031344350415F73662E646F63> 2014 年 注 册 会 计 师 专 业 阶 段 考 试 税 法 试 题 及 答 案 一 单 项 选 择 题 1. 税 法 基 本 原 则 的 核 心 原 则 是 () A. 税 收 法 定 原 则 B. 税 收 公 平 原 则 C. 税 收 效 率 原 则 D. 实 质 课 税 原 则 答 案 A 解 析 税 收 法 定 原 则 是 税 法 基 本 原 则 的 核 心 知 识 点 税 法 基 本

More information

考 查 知 识 点 肝 气 疏 泄 调 畅 气 机 的 作 用, 主 要 表 现 在 以 下 几 个 方 面 :(1) 促 进 血 液 与 津 液 的 运 行 输 布 ;(2) 促 进 脾 胃 的 运 化 功 能 和 胆 汁 分 泌 排 泄 ;(3) 调 畅 情 志 ;(4) 促 进 男 子 排 精

考 查 知 识 点 肝 气 疏 泄 调 畅 气 机 的 作 用, 主 要 表 现 在 以 下 几 个 方 面 :(1) 促 进 血 液 与 津 液 的 运 行 输 布 ;(2) 促 进 脾 胃 的 运 化 功 能 和 胆 汁 分 泌 排 泄 ;(3) 调 畅 情 志 ;(4) 促 进 男 子 排 精 2015 年 全 国 硕 士 研 究 生 入 学 统 一 考 试 中 医 综 合 科 目 试 题 解 析 一 A 型 题 :1~80 小 题, 每 小 题 1.5 分, 共 120 分 在 每 小 题 给 出 的 A B C D 四 个 选 项 中, 请 选 出 一 项 最 符 合 题 目 要 求 的 1. 提 出 阳 常 有 余, 阴 常 不 足 观 点 的 医 家 是 A 朱 丹 溪 B 刘 完

More information

46 2011 11 467 數位遊戲式學習系統 7 2011 11 467 47 3 DBGameSys 48 2011 11 467 正規化資料模組 如何配置並儲存電子化資料 以 便減少資料被重覆儲存的程序 DBGameSys的主要功能模組包 學習者 審核評分模組 含 正規化資料模組 審核評分 模組 高分列表模組3大區塊 系統資料庫 在正規化資料模組的執行 高分列表模組 過程中 先要求學習者瀏覽遊戲

More information

PowerPoint Presentation

PowerPoint Presentation 資料結構 (Data Structures) Course 5: Stack and Queue 授課教師 : 陳士杰 國立聯合大學資訊管理學系 Outlines 本章重點 Stack 的定義 應用 製作與 ADT Queue 的定義 應用 製作與 ADT 如何利用 Array 與 Linked list 製作 Stack 與 Queue Infix( 中序 ) 運算式與 Postfix ( 後序

More information

就 构 成 了 盗 窃 罪 与 破 坏 交 通 设 施 罪 的 想 象 竞 合, 按 照 其 中 处 罚 较 重 的 犯 罪 处 罚 5. 答 案 :B 本 题 主 要 考 察 如 何 区 分 收 买 被 拐 卖 的 妇 女 儿 童 罪 与 拐 卖 妇 女 儿 童 罪 的 共 犯 问 题 ( 对 向

就 构 成 了 盗 窃 罪 与 破 坏 交 通 设 施 罪 的 想 象 竞 合, 按 照 其 中 处 罚 较 重 的 犯 罪 处 罚 5. 答 案 :B 本 题 主 要 考 察 如 何 区 分 收 买 被 拐 卖 的 妇 女 儿 童 罪 与 拐 卖 妇 女 儿 童 罪 的 共 犯 问 题 ( 对 向 新 东 方 全 国 法 律 硕 士 ( 非 法 学 ) 联 考 模 拟 考 试 专 业 基 础 课 答 案 解 析 一 单 项 选 择 题 1. 答 案 D 本 题 主 要 考 查 刑 法 分 则 中 关 于 亲 告 罪 与 非 亲 告 罪 的 规 定 要 注 意 这 些 亲 告 罪 在 有 特 别 的 情 况 下, 是 公 诉 犯 罪 我 国 刑 法 共 规 定 了 5 种 告 诉 才 处 理 的

More information

主程式 : public class Main3Activity extends AppCompatActivity { ListView listview; // 先整理資料來源,listitem.xml 需要傳入三種資料 : 圖片 狗狗名字 狗狗生日 // 狗狗圖片 int[] pic =new

主程式 : public class Main3Activity extends AppCompatActivity { ListView listview; // 先整理資料來源,listitem.xml 需要傳入三種資料 : 圖片 狗狗名字 狗狗生日 // 狗狗圖片 int[] pic =new ListView 自訂排版 主程式 : public class Main3Activity extends AppCompatActivity { ListView listview; // 先整理資料來源,listitem.xml 需要傳入三種資料 : 圖片 狗狗名字 狗狗生日 // 狗狗圖片 int[] pic =new int[]{r.drawable.dog1, R.drawable.dog2,

More information

untitled

untitled 2009 6 20 17 864 2008 200978 2 200979 4 200981 25 200982 26 60 200983 27 200984 28 20093857 31 1 200978 200625 5 20098 2009 3 5 14 14 2008 2 2008 14 2008 14 4247317.56 3620679.57 2008 4296147.94 3624433.77

More information

Microsoft Word - ACI chapter00-1ed.docx

Microsoft Word - ACI chapter00-1ed.docx 前言 Excel Excel - v - 財務管理與投資分析 -Excel 建模活用範例集 5 相關 平衡 敏感 - vi - 前言 模擬 If-Then 規劃 ERP BI - vii - 財務管理與投資分析 -Excel 建模活用範例集 ERP + BI + ERP BI Excel 88 Excel 1. Excel Excel 2. Excel 3. Excel - viii - 前言 1.

More information

A B C D E F 3 B C D E F A 3 1995 13 27 299 1993 45 29 301 1995 47 5 12 30 6 12 31 67 17 1 1 4 8 00 2 145 1 1 11 12 1 1 1 1 1 1 1 1 1+ + + + + + + 2 6 12 20 30 42 56 72 1 1 1 1 2 + + + + 1 3 3 5 5 7

More information

4-2 1. 使 用 一 般 佇 列 存 放 資 料 時, 當 前 端 (Front) 尚 有 空 位 時, 再 加 入 元 素, 卻 發 現 此 佇 列 已 滿, 請 問 此 時 使 用 下 列 那 一 個 方 法 較 佳? (A) 優 先 佇 列 (B) 環 形 佇 列 (C) 雙 向 佇 列

4-2 1. 使 用 一 般 佇 列 存 放 資 料 時, 當 前 端 (Front) 尚 有 空 位 時, 再 加 入 元 素, 卻 發 現 此 佇 列 已 滿, 請 問 此 時 使 用 下 列 那 一 個 方 法 較 佳? (A) 優 先 佇 列 (B) 環 形 佇 列 (C) 雙 向 佇 列 CHAPTER 4 隨 書 光 碟 4-1 4-3 環 形 佇 列 由 於 佇 列 有 一 個 問 題, 就 是 前 端 (Front) 尚 有 空 位 時, 再 加 入 元 素, 卻 發 現 此 佇 列 已 滿 此 時 的 解 決 方 法 就 是 使 用 環 形 佇 列 (Circular Queue) 定 義 是 指 一 種 環 形 結 構 的 佇 列 作 法 將 一 維 陣 列 的 第 0 個

More information

92 (When) (Where) (What) (Productivity) (Efficiency) () (2) (3) (4) (5) (6) (7) em-plant( SiMPLE++) Scheduling When Where Productivity Efficiency [5]

92 (When) (Where) (What) (Productivity) (Efficiency) () (2) (3) (4) (5) (6) (7) em-plant( SiMPLE++) Scheduling When Where Productivity Efficiency [5] DYNAMIC SCHEDULING IN TWO-MACHINE FLOW-SHOP WITH RECIRCULATION em-plant( SiMPLE++) Jen-Shiang Chen, Jar-Her Kao, Chun-Chieh Chen, Po-Cheng Liu, and Wen-Pin Lin Department of Industrial Engineering and

More information

Microsoft Word - 1-1泰宇解答

Microsoft Word - 1-1泰宇解答 學校 : 學年度第學期第次段考科目名稱命題教師 : 年 班座號 : 姓名 : 得分 : 一 單選題 : ( ). 設 (x x6) (D) x Ax Bx Cx6, 則 A B C (A)6 (B) (C) 解答 :D ( ). 求 (x x x)( x x ) 的展開式中, x 項的係數為何? (A) (B) (C)6 解答 :A (D)7 9 統測 ( ). 下列何者為多項式? (A) x (B)

More information

e01 1....5 1.1....5 1.1.1....5 1.1.2....6 1.1.3....8 1.1.4....9 1.1.5....11 1.1.6. /...16 1.1.7. /...19 1.1.8. /...21 1.1.9....24 1.1.10....24 1.1.11....28 1.1.12....36 1.1.13....45 1.1.14....48 1.1.15....50

More information

2009年挑战乔戈里

2009年挑战乔戈里 2009 年 挑 战 乔 戈 里 活 动 概 况 : 乔 戈 里 峰 海 拔 8611 米, 它 是 喀 喇 昆 仑 山 脉 的 主 峰, 是 世 界 上 第 二 高 峰, 国 外 又 称 K2 峰 乔 戈 里 峰, 国 际 登 山 界 公 认 的 攀 登 难 度 较 大 的 山 峰 之 一 乔 戈 里 峰 峰 巅 呈 金 字 塔 形, 冰 崖 壁 立, 山 势 险 峻, 在 陡 峭 的 坡 壁 上

More information

过 程 排 除 A 正 确 答 案 是 B 14.A 解 析 本 题 考 查 思 修 第 八 章 中 国 人 权, 新 增 考 点 其 中 直 接 考 查 宪 法 保 障 是 人 权 保 障 的 前 提 和 基 础 A 人 权 保 障 的 最 后 防 线 是 司 法 保 障,B 人 权 保 障 的

过 程 排 除 A 正 确 答 案 是 B 14.A 解 析 本 题 考 查 思 修 第 八 章 中 国 人 权, 新 增 考 点 其 中 直 接 考 查 宪 法 保 障 是 人 权 保 障 的 前 提 和 基 础 A 人 权 保 障 的 最 后 防 线 是 司 法 保 障,B 人 权 保 障 的 2016 考 研 政 治 真 题 答 案 及 解 析 ( 完 整 版 ) 来 源 : 文 都 教 育 一 单 选 题 1.B 解 析 此 题 考 查 的 是 适 度 原 则 AC 选 项 表 述 正 确 但 与 题 目 无 关 D 表 述 错 误, 现 象 表 现 本 质 的 只 有 B 与 题 干 相 符, 所 以 答 案 为 B 2.A 解 析 前 一 句 话 " 自 由 不 在 于 幻 想 中

More information

ebook39-13

ebook39-13 1 3 13 ~ 17 13.1 optimizatio problem c o s t r a i t optimizatio fuctio feasible solutio optimal solutio 13-1 [ ] 1 i s i i a i i t i i= 1 x i x 1 i i s i x i x i =t 0 x i a i i=1 a i < t i= 1 406 / t

More information

Microsoft PowerPoint - ch04_AEL0080.ppt

Microsoft PowerPoint - ch04_AEL0080.ppt 4 選擇 在正常的情況下, 電腦程式的執行是以敘述的排列次序逐步處理的 使用控制架構 (control structures) 可以改變這種既定的先後次序, 讓程式得以進行更複雜的運算, 或以更簡潔的指令來實現演算法 1/42 選擇 4.1 演算法的描述方式 4.2 變數的運用範圍 (Scope of variables) 4.3 if- 敘述 4.4 巢狀 if- 敘述 (Nested if statements)

More information

CHAPTER VC#

CHAPTER VC# 1. 2. 3. 4. CHAPTER 2-1 2-2 2-3 2-4 VC# 2-5 2-6 2-7 2-8 Visual C# 2008 2-1 Visual C# 0~100 (-32768~+32767) 2 4 VC# (Overflow) 2-1 2-2 2-1 2-1.1 2-1 1 10 10!(1 10) 2-3 Visual C# 2008 10! 32767 short( )

More information

2/80 2

2/80 2 2/80 2 3/80 3 DSP2400 is a high performance Digital Signal Processor (DSP) designed and developed by author s laboratory. It is designed for multimedia and wireless application. To develop application

More information

A.68 B.70 C.80 D.100 答 案 A 解 析 丁 产 品 的 可 变 现 净 值 =110-2=108( 万 元 ), 成 本 =100+40=140( 万 元 ), 可 变 现 净 值 低 于 成 本, 产 品 发 生 的 减 值, 所 以 丙 材 料 的 可 变 现 净 值 =1

A.68 B.70 C.80 D.100 答 案 A 解 析 丁 产 品 的 可 变 现 净 值 =110-2=108( 万 元 ), 成 本 =100+40=140( 万 元 ), 可 变 现 净 值 低 于 成 本, 产 品 发 生 的 减 值, 所 以 丙 材 料 的 可 变 现 净 值 =1 2013 年 中 级 会 计 职 称 考 试 中 级 会 计 实 务 真 题 及 答 案 解 析 一 单 项 选 择 题 ( 本 类 题 共 15 小 题, 每 小 题 1 分, 共 15 分 每 小 题 只 有 一 个 符 合 题 意 的 正 确 答 案 请 将 选 定 的 答 案, 按 答 题 卡 要 求, 用 2B 铅 笔 填 涂 答 题 卡 中 相 应 信 息 点 多 选 错 选 不 选 均

More information

OHSMS考试大纲20070415终.doc

OHSMS考试大纲20070415终.doc 1 2 CCAA CCAA-110 2 CCAA 45 3 4 PDCA 5 6 7 8 9 10 11 1700 A. 1700 B. C. D. B 1, 3, 5, 7, 9 / A.7 B.8 C.11 D.13 C 2 C D AB B 5 B 12 A. B. C. D. D ABCD D 1~5 1400 1200 1000 800 600 400 200 0 666.3 12.7 490.6

More information

untitled

untitled 7 Tel: 866878 hng_di@mil.j.ed.cn 6 67 9 Fndmenl Mechnic of Flid I.G.Crrie rd Ediion Mrcel Dekker Inc. Ne York -9-5 5 -9-5 5 ....4.5.6.7.8-9-5 5 4 . m P() m/v V V V V' -9-5 5 5

More information

第三节 软件测试的过程与策略

第三节 软件测试的过程与策略 ...1...4...9...17...25...29...34...40...46...55...65...73 1 2 3 4 5 6 7 8 9 10 11 1 12 13 1 ABCD 2 A B C D 3 ABCD 4 A1/2 B1/3 C1/4 D2/3 5 % A20 B30 C40 D50 6 A B C D 7 A B C D / 8 A B C D 9 A B C D 10

More information

資料結構之C語言重點複習

資料結構之C語言重點複習 鏈結串列自編教材 ( 一 ) 本教材 ( 一 ) 目標問題 : 每次以亂數產生一 [0,1000] 之整數值, 若該值 >100, 則以同方式繼續產生下一亂數值, 若該值

More information

Microsoft PowerPoint - 12 struct and other datatypes.ppt

Microsoft PowerPoint - 12 struct and other datatypes.ppt 第十一章結構與其它資料型態 結構與巢狀結構 結構陣列的各種使用方法 列舉型態 自定的型態別名 typedef 認識結構 使用者自定的資料型態 結構可將型態不同的資料合併成為新的型態 定義結構與宣告結構變數的格式如下 : struct 結構名稱 資料型態成員名稱 1; 資料型態成員名稱 2;... 資料型態成員名稱 n; struct 結構名稱變數 1, 變數 2,, 變數 n; 定義結構與宣告結構變數的語法

More information

系 ( 類 ) 別部別及年級 科一屹資訊工程系 日間部 進修部 B 年級 資料結構 若一演算法的執行時間不因輸入量的多寡而有所變動 何者? (A) 0(1) (B) 0(e) (C)O(Ioge) (B ) 以上皆非 總分 : 200 分 第 2 頁共 5 頁 亦即其執行時間因定不變者係為下列 16

系 ( 類 ) 別部別及年級 科一屹資訊工程系 日間部 進修部 B 年級 資料結構 若一演算法的執行時間不因輸入量的多寡而有所變動 何者? (A) 0(1) (B) 0(e) (C)O(Ioge) (B ) 以上皆非 總分 : 200 分 第 2 頁共 5 頁 亦即其執行時間因定不變者係為下列 16 朝陽科技大學 99 學年度第 1 學期招考轉學生考試試題 本試卷為單選題共 50 題, 每題 4 分, 合計 200 分 本試卷中數字部分若未特別標示者均為十進位 1 某一個弟元樹的前序 J 頃序 ( Preorder sequence ) 為 ABCDEFGHI, 中序順序 ( norder sequence) 為 BCAEDGHFI, 則其後序順序 ( Postordee sequence) 為

More information

CIP /. - 1999.1 ISBN 7-81059-300-! ". #. - - - - $. D909.5-44 CIP 1999 00865 100038 850 1168 1/32 8 200 1999 1 1 2003 3 1 2003 3 1 0001-5000 180.00 15.00 !! 2003 2 1998!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 6!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

More information

2011-论文选集-2.cdr

2011-论文选集-2.cdr ! "#$# $$ "#$#$$" " $% &%!$ $ "#$$ " ! "!#!$ %" #& # ( #$ ) )& )# )$ ** "& ")! ! "" # $% & &( ( # ) )** )*+ )*$ )) ))" ),+ )," -./ ) ) ) " )++ )+" )%,, !"#" $ ! " #$% & ( & ) % #$% #$% & * #$%#$% #$% (

More information

二次曲線 人們對於曲線的使用及欣賞 比曲線被視為一種數學題材來探討要早 得多 各種曲線中 在日常生活常接觸的 當然比較容易引起人們的興趣 比如 投擲籃球的路徑是拋物線 盤子的形狀有圓形或橢圓形 雙曲線 是較不常見的 然而根據科學家的研究 彗星的運行軌道是雙曲線的一部 分 我們將拋物線 圓與橢圓 雙曲

二次曲線 人們對於曲線的使用及欣賞 比曲線被視為一種數學題材來探討要早 得多 各種曲線中 在日常生活常接觸的 當然比較容易引起人們的興趣 比如 投擲籃球的路徑是拋物線 盤子的形狀有圓形或橢圓形 雙曲線 是較不常見的 然而根據科學家的研究 彗星的運行軌道是雙曲線的一部 分 我們將拋物線 圓與橢圓 雙曲 -1 圓方程式 第 章 二次曲線 38 二次曲線 人們對於曲線的使用及欣賞 比曲線被視為一種數學題材來探討要早 得多 各種曲線中 在日常生活常接觸的 當然比較容易引起人們的興趣 比如 投擲籃球的路徑是拋物線 盤子的形狀有圓形或橢圓形 雙曲線 是較不常見的 然而根據科學家的研究 彗星的運行軌道是雙曲線的一部 分 我們將拋物線 圓與橢圓 雙曲線合稱為圓錐曲線 因為在平面坐標 系中 其對應的方程式均為二元二次式

More information

解題專用

解題專用 102 年公務人員普通考試試題類科 : 電子工程 電信工程 資訊處理科目 : 計算機概要 40 下列何者 ( 約略 ) 等於 2 bytes? 6 9 或 10 bytes 或 10 bytes 12 15 或 10 bytes 或 10 bytes 全加器之進位輸出其布林函數 (Boolean function) 為 : 公職王 下列關於記憶體階層 (memory hierarchy) 的描述,

More information

1

1 1. 第 9 張教的 min-max heap 有教如何插入和刪除, 那原本的 min-max heap 要怎麼 建呢? 就是給你一堆數字如何去建 min-max heap? 一個數字一個數字逐次 insert 即可 2. Radix Sort, 以撲克牌為例, 不管是先排花色或先排點數, 都會產生子牌 組 P. 352 說 :LSD 比 MSD 簡單, 因為 LSD 不需對各個子牌組分別做排序 ;

More information

<4D6963726F736F667420576F7264202D2032303136B3F5BCB6BBE1BCC6A1B6BFBCB5E3BEABBBAAA1B72E646F63>

<4D6963726F736F667420576F7264202D2032303136B3F5BCB6BBE1BCC6A1B6BFBCB5E3BEABBBAAA1B72E646F63> 注 : P3 表 示 考 点 在 教 材 第 3 页 ( 对 应 2016 版 教 材 ) 2016 年 初 级 会 计 实 务 考 点 精 华 第 一 章 资 产 第 一 节 : 货 币 资 金 资 产 的 定 义 分 类 ( 流 动 资 产 非 流 动 资 产 等 ) P1 库 存 现 金 : 是 指 存 放 于 企 业 财 会 部 门 由 出 纳 人 员 经 管 的 货 币 P1 现 金 结

More information

<4D F736F F D20B3E6B4B9A4F930365F32A443AC71C5E3A5DCBEB9B1B1A8EE2E646F63>

<4D F736F F D20B3E6B4B9A4F930365F32A443AC71C5E3A5DCBEB9B1B1A8EE2E646F63> 七段顯示器控制電路四位數 _ 使用解碼器驅動 +5 V 10 uf 8.2 k 12 MHz 20 pf 1 2 3 4 5 6 7 8 9 P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 RESET 10 P3.0 11 12 13 14 15 16 17 18 19 20 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7 XTAL2 XTAL1

More information

Microsoft PowerPoint - 04-array_pointer.ppt

Microsoft PowerPoint - 04-array_pointer.ppt Array 與 Pointer Array Dynamical Memory Allocation Array( 陣列 ) 陣列是用來存放同樣型態的資料陣列的大小必須在程式中預先設定在程式執行中, 陣列的大小無法改變陣列中的資料是透過索引 (index) 來存取 一維陣列的宣告 type array_name[array_size]; int iarray[100]; /* an integer array

More information