Data Structure in C ─ 演算法分析. 1 大綱 基本概念 演算法 效率評估 效率分析 效率估計.

Slides:



Advertisements
Similar presentations
1 生物計算期末作業 暨南大學資訊工程系 2003/05/13. 2 compare f1 f2  只比較兩個檔案 f1 與 f2 ,比完後將結果輸出。 compare directory  以兩兩比對的方式,比對一個目錄下所有檔案的相 似程度。  將相似度很高的檔案做成報表輸出,報表中至少要.
Advertisements

McGraw-Hill/Irwin © 2003 The McGraw-Hill Companies, Inc.,All Rights Reserved. 肆 資料分析與表達.
本章結構 前言 符號介紹與立透法則 指數機率分配 基本無限來源模式 基本有限來源模式 等候系統的經濟分析-最佳化 進階等候模式 16-1.
布林代數的應用--- 全及項(最小項)和全或項(最大項)展開式
第七章 抽樣與抽樣分配 蒐集統計資料最常見的方式是抽查。這 牽涉到兩個問題: 抽出的樣本是否具有代表性?是否能反應出母體的特徵?
Advanced Chemical Engineering Thermodynamics
Reference, primitive, call by XXX 必也正名乎 誌謝 : 部份文字取於前輩 TAHO 的文章.
1.1 線性方程式系統簡介 1.2 高斯消去法與高斯-喬登消去法 1.3 線性方程式系統的應用(-Skip-)
亂數產生器安全性評估 之統計測試 SEC HW7 姓名:翁玉芬 學號:
Lecture 8 Median and Order Statistics. Median and Order Statistics2 Order Statistics 問題敘述 在 n 個元素中,找出其中第 i 小的元素。 i = 1 ,即為找最小值。 i = n ,即為找最大值。 i = 或 ,即為找中位數。
: OPENING DOORS ? 題組: Problem Set Archive with Online Judge 題號: 10606: OPENING DOORS 解題者:侯沛彣 解題日期: 2006 年 6 月 11 日 題意: - 某間學校有 N 個學生,每個學生都有自己的衣物櫃.
: ShellSort ★★☆☆☆ 題組: Problem D 題號: 10152: ShellSort 解題者:林一帆 解題日期: 2006 年 4 月 10 日 題意:烏龜王國的烏龜總是一隻一隻疊在一起。唯一改變烏龜位置 的方法為:一隻烏龜爬出他原來的位置,然後往上爬到最上方。給 你一堆烏龜原來排列的順序,以及我們想要的烏龜的排列順序,你.
Chapter 3 Growth of Functions Asymptotic notation Θ-notation: f(n) = Θ(g(n)) , g(n) is an asymptotically tight bound for f(n) 。 Θ(g(n)) = {f(n)|
STAT0_sampling Random Sampling  母體: Finite population & Infinity population  由一大小為 N 的有限母體中抽出一樣本數為 n 的樣 本,若每一樣本被抽出的機率是一樣的,這樣本稱 為隨機樣本 (random sample)
第 4 章 迴歸的同步推論與其他主題.
1. 假設以下的敘述為一未提供 “ 捷徑計算 ” 能力的程式段,試用程 式設計的技巧,使此敘述經此改 寫的動作後,具有與 “ 捷徑計算 ” 之 處理方法相同之處理模式。 if and then E1 else E2 endif.
McGraw-Hill/Irwin © 2003 The McGraw-Hill Companies, Inc.,All Rights Reserved. 肆 資料分析與表達.
Analyzing Algorithms Based on: 1. 物件導向資料結構 — 使用 Java 語言, 江振 瑞 著, 松崗圖書公司, Introduction to the Design and Analysis of Algorithms -- A strategic.
Department of Air-conditioning and Refrigeration Engineering/ National Taipei University of Technology 模糊控制設計使用 MATLAB 李達生.
Monte Carlo Simulation Part.2 Metropolis Algorithm Dept. Phys. Tunghai Univ. Numerical Methods C. T. Shih.
第一章 演算法:效率、分析與量級 1.1演算法 1.2發展有效率演算法的重要性 1.3演算法的分析 1.4量級(Order)
2009fallStat_samplec.i.1 Chap10 Sampling distribution (review) 樣本必須是隨機樣本 (random sample) ,才能代表母體 Sample mean 是一隨機變數,隨著每一次抽出來的 樣本值不同,它的值也不同,但會有規律性 為了要知道估計的精確性,必需要知道樣本平均數.
© The McGraw-Hill Companies, Inc., 2008 第 6 章 製造流程的選擇與設計.
第 1 章 PC 的基本構造. 本章提要 PC 系統簡介 80x86 系列 CPU 及其暫存器群 記憶體: Memory 80x86 的分節式記憶體管理 80x86 的 I/O 結構 學習組合語言的基本工具.
Chapter 13 塑模靜態觀點:物件圖 Static View : Object Diagram.
Introduction to Java Programming Lecture 17 Abstract Classes & Interfaces.
: The largest Clique ★★★★☆ 題組: Contest Archive with Online Judge 題號: 11324: The largest Clique 解題者:李重儀 解題日期: 2008 年 11 月 24 日 題意: 簡單來說,給你一個 directed.
最新計算機概論 第 5 章 系統程式. 5-1 系統程式的類型 作業系統 (OS) : 介於電腦硬體與 應用軟體之間的 程式,除了提供 執行應用軟體的 環境,還負責分 配系統資源。
: Happy Number ★ ? 題組: Problem Set Archive with Online Judge 題號: 10591: Happy Number 解題者:陳瀅文 解題日期: 2006 年 6 月 6 日 題意:判斷一個正整數 N 是否為 Happy Number.
: Fast and Easy Data Compressor ★★☆☆☆ 題組: Problem Set Archive with Online Judge 題號: 10043: Fast and Easy Data Compressor 解題者:葉貫中 解題日期: 2007 年 3.
CH 15- 元件可靠度之驗證  驗證方法  指數模式之可靠度驗證  韋式模式之可靠度驗證  對數常態模式之可靠度驗證  失效數為零時之可靠度估算  各種失效模式之應用.
: Multisets and Sequences ★★★★☆ 題組: Problem Set Archive with Online Judge 題號: 11023: Multisets and Sequences 解題者:葉貫中 解題日期: 2007 年 4 月 24 日 題意:在這個題目中,我們要定義.
:Nuts for nuts..Nuts for nuts.. ★★★★☆ 題組: Problem Set Archive with Online Judge 題號: 10944:Nuts for nuts.. 解題者:楊家豪 解題日期: 2006 年 2 月 題意: 給定兩個正整數 x,y.
資料結構實習-一 參數傳遞.
Lecture 7 Sorting in Linear Time. Sorting in Linear Time2 7.1 Lower bounds for sorting 本節探討排序所耗用的時間複雜度下限。 任何一個以比較為基礎排序的演算法,排序 n 個元 素時至少耗用 Ω(nlogn) 次比較。
1 Introduction to Java Programming Lecture 2: Basics of Java Programming Spring 2008.
計算機概論 演算法與程式語言 李明山.
觀測量的權 權的觀念與計算.
: Beautiful Numbers ★★★★☆ 題組: Problem Set Archive with Online Judge 題號: 11472: Beautiful Numbers 解題者:邱經達 解題日期: 2011 年 5 月 5 日 題意: 若一個 N 進位的數用到該.
Section 4.2 Probability Models 機率模式. 由實驗看機率 實驗前先列出所有可能的實驗結果。 – 擲銅板:正面或反面。 – 擲骰子: 1~6 點。 – 擲骰子兩顆: (1,1),(1,2),(1,3),… 等 36 種。 決定每一個可能的實驗結果發生機率。 – 實驗後所有的實驗結果整理得到。
函式 Function Part.2 東海大學物理系‧資訊教育 施奇廷. 遞迴( Recursion ) 函式可以「呼叫自己」,這種動作稱為 「遞迴」 此程式的執行結果相當於陷入無窮迴圈, 無法停止(只能按 Ctrl-C ) 這給我們一個暗示:函式的遞迴呼叫可以 達到部分迴圈的效果.
JAVA 程式設計與資料結構 第二十章 Searching. Sequential Searching Sequential Searching 是最簡單的一種搜尋法,此演 算法可應用在 Array 或是 Linked List 此等資料結構。 Sequential Searching 的 worst-case.
演算法 8-1 最大數及最小數找法 8-2 排序 8-3 二元搜尋法.
: Expect the Expected ★★★★☆ 題組: Contest Archive with Online Judge 題號: 11427: Expect the Expected 解題者:李重儀 解題日期: 2008 年 9 月 21 日 題意:玩一種遊戲 (a game.
Chapter 3 Entropy : An Additional Balance Equation
845: Gas Station Numbers ★★★ 題組: Problem Set Archive with Online Judge 題號: 845: Gas Station Numbers. 解題者:張維珊 解題日期: 2006 年 2 月 題意: 將輸入的數字,經過重新排列組合或旋轉數字,得到比原先的數字大,
Structural Equation Modeling Chapter 6 CFA 根據每個因素有多重指標,以減少 測量誤差並可建立問卷的構念效度 驗證性因素分析.
Learning Method in Multilingual Speech Recognition Author : Hui Lin, Li Deng, Jasha Droppo Professor: 陳嘉平 Reporter: 許峰閤.
Chapter 10 m-way 搜尋樹與B-Tree
演算法課程 (Algorithms) 國立聯合大學 資訊管理學系 陳士杰老師 Course 7 貪婪法則 Greedy Approach.
描述統計 描述統計(Descriptive Statistics)-將蒐集到的資料加以整理和記錄,並以數字和統計圖表的方式來分析及解釋資料所具有的特性. 基本統計值(平均數,中位數,標準差,變異量….) 相關性測量(卡方,相關係數,迴歸…)
: Help My Brother ★★★☆☆ 題組: Problem Set Archive with Online Judge 題號: 11033: Help My Brother 解題者: 呂明璁 解題日期: 2007 年 5 月 14 日.
1 Introduction to Java Programming Lecture 2: Basics of Java Programming Spring 2009.
5 重複迴圈 5.1 增減運算符號 增量運算符號 減量運算符號
Cluster Analysis 目的 – 將資料分成幾個相異性最大的群組 基本問題 – 如何衡量事務之間的相似性 – 如何將相似的資料歸入同一群組 – 如何解釋群組的特性.
第 6 章 迴圈結構 6-1 計數迴圈 6-1 計數迴圈 6-2 條件迴圈 6-2 條件迴圈 6-3 巢狀迴圈 6-3 巢狀迴圈 6-4 While/End While 迴圈 6-4 While/End While 迴圈 6-5 跳出迴圈 6-5 跳出迴圈 6-6 VB.NET 的錯誤處理 6-6 VB.NET.
Teacher : Ing-Jer Huang TA : Chien-Hung Chen 2015/6/30 Course Embedded Systems : Principles and Implementations Weekly Preview Question CH7.1~CH /12/26.
: Wine trading in Gergovia ★★☆☆☆ 題組: Contest Volumes with Online Judge 題號: 11054: Wine trading in Gergovia 解題者:劉洙愷 解題日期: 2008 年 2 月 29 日 題意:在 Gergovia.
McGraw-Hill/Irwin © 2003 The McGraw-Hill Companies, Inc.,All Rights Reserved. 壹 企業研究導論.
函式 Function 東海大學物理系‧資訊教育 施奇廷. 函式簡介 當程式越來越大、越複雜時,程式的維護、 除錯會變得更困難,此時必須引入函式來 簡化程式或將程式分段,將程式重複的部 分改寫為函式,將程式「模組化」 這種作法有下列優點:節省程式發展的時 間、邏輯容易瞭解、程式容易除錯、可分 工合作完成程式.
Visual C++重點複習.
McGraw-Hill/Irwin © 2003 The McGraw-Hill Companies, Inc.,All Rights Reserved. 參 資料蒐集的方法.
: Finding Paths in Grid ★★★★☆ 題組: Contest Archive with Online Judge 題號: 11486: Finding Paths in Grid 解題者:李重儀 解題日期: 2008 年 10 月 14 日 題意:給一個 7 個 column.
:Problem E.Stone Game ★★★☆☆ 題組: Problem Set Archive with Online Judge 題號: 10165: Problem E.Stone Game 解題者:李濟宇 解題日期: 2006 年 3 月 26 日 題意: Jack 與 Jim.
著作權所有 © 旗標出版股份有限公司 第 14 章 製作信封、標籤. 本章提要 製作單一信封 製作單一郵寄標籤.
幼兒行為觀察與記錄 第八章 事件取樣法.
CH 14-可靠度工程之數學基礎 探討重點 失效時間之機率分配 指數模式之可靠度工程.
第 1 章 PC 的基本構造. 本章提要 PC 系統簡介 80x86 系列 CPU 及其暫存器群 記憶體: Memory 80x86 的分節式記憶體管理 80x86 的 I/O 結構 學習組合語言的基本工具.
McGraw-Hill/Irwin © 2003 The McGraw-Hill Companies, Inc.,All Rights Reserved. 肆 資料分析與表達.
Presentation transcript:

Data Structure in C ─ 演算法分析

1 大綱 基本概念 演算法 效率評估 效率分析 效率估計

2 基本概念 需求 所有大的程式都以一些定義專案目的規格書開始  會獲 得輸入與輸出資訊 分析 可以由下而上分析或由上而下分析 設計 設計者從程式所需要的資料物件和資料的運算來設計系 統 資料物件:可產生抽象資料型態 資料運算:需要演算法的規格並考量演算法的設計策略 抽象資料型態與演算法的規格是相互獨立的,我們可暫 時不考慮實作的因素

3 基本概念 ( 續 ) 改良和編碼 在這個階段,我們為每一個資料物件選擇表 示法,並編寫它的各種運算之演算法 驗證 這個階段包括程式正確性的驗證,以不同的 輸入資料測試程式,並改正錯誤

4 演算法 定義:演算法 (algorithms) 是一組有限的指令,根 據這些指令,可以完成一項特定的工作。此外, 所有的演算法需符合下列的條件: 輸入:可以沒有或從外部提供多個資料 輸出:至少產生一個結果 明確的:每一個指令都很明白且沒有混淆不清 有限的:如果追蹤一個演算法指令,演算法會在有限 的步驟之後停止 有效率的:每個運算即使都如 “ 明確性的 ” 定義,但仍是 不夠的,演算法必須是一個可行的運算 定義:演算法是一個解決問題的有限步驟程序, 也可以說是產生解答中一步一步的的程序

5 效率評估 對於一個程式而言,我們除了需要了解 是否符合原始規格 是否正確執行 是否有文件說明,以解釋如何使用與操作 是否有效率應用函數建立邏輯單元 是否易於閱讀 要考量程式能否有效率地使用記憶體 程式的執行時間是否可接受

6 效率評估 ( 續 ) 效率評估方法 效率分析 (performance analysis) 著重於獲得和機器無關的估計時間和空間 以複雜度理論 (complexity theory) 為核心,又可分 為空間複雜度 (space complexity) 與時間複雜度 (time complexity) 效率估計 (performance measurement) 利用獲得與機器相關的執行時間,以找尋出沒有 效率的程式片段

7 效率分析 空間複雜度 一個程式的空間複雜度是取決於執行程式所需 的記憶體空間 程式所需的空間為下列兩項的和 固定的空間需求 固定空間需求包括指令空間 ( 用以儲存程式碼的空間 ) ,用來 存簡單變數,固定大小的結構變數和常數空間 可變的空間需求 包含了所有要解決問題中所有相關的結構化變數所需要的 空間  還包含當函數採用遞迴方式呼叫時所需的空間  最 常用的特性包括數量、大小及輸入與輸出值

8 效率分析 ( 續 ) 時間複雜度 一個程式的時間複雜度是取決於執行程式所需 的計算時間 程式所需的時間為下列兩項的和 編譯時間 類似固定的空間項目。此外,一旦程式可以正確執行,我 們可以多次執行而不必再從新編譯 執行時間 執行時間的估算並不十分容易,常見的有利用系統時間來 計算程式時間或利用程式運算的次數來評量 時間複雜度較常為人們所使用

9 效率分析 ( 續 ) 程式的時間複雜度是以用來執行函數的程式所發 生的步驟數目來表示 步驟數目是受測程式特性 ( 輸入的數目、輸出的數目、 輸入與值出之值等 ) 的集合函數 使用者可依其想了解的部份,以步驟數目估算時間複 雜度 Ex. 想知道當輸入資料量增加時,計算時間增加的程度為何? Ex. 對不同的程式,我們想知道當輸入的值增大時,計算時 間如何增加? 輸入的 資料量 函數計 算之 輸入值的函 數計算之

10 效率分析 ( 續 ) 使用者必需先選擇相關的特性,以做為估算步驟的依據  步驟是與特性無關的計算單元 Ex.10 個加法是一個步驟 Ex.100 個加法也是一個步驟 在某些情況下單純只依特性來計算步驟數目並不一定準 確 Ex. 利用 binary search 找尋特定數字,而估算方式是依參數數目, 但估算過程可能依數字所在的位置而有很大的差異,故步驟的 估算會有很大的誤差。 三種步驟計數 最佳狀況:步驟計算是對指定的參數所執行的最少步驟數 最差狀況:步驟計算是對指定的參數所執行的最多步驟數 平均值:步驟計算是以指定的參數在實體上執行的平均步驟數

11 效率分析 ( 續 ) 步驟估算方式 Ex. 陣列元素相加乃將陣列中每一元素的值加總起來 int sum(int arr[], int n) { int i, total=0; for (i=0;i<n; i++) total+=arr[i]; return total; } 步驟計數 1 n+1 n 1 2n+3

12 效率分析 ( 續 ) Ex. 陣列的相加表示將相對應的元素相加 void add(int a[][], int b[][], int c[][], int rows, int cols) { for (int i=0;i<rows; i++) for (int j=0;j<cols;j++) c[i][j] = a[i][j] + b[i][j]; } 步驟計數 rows+1 rows*cols+rows rows*cols 2rows*cols+2rows+1

13 效率分析 ( 續 ) 漸近式表示法 (Asymptotic Notation) 決定步驟計數的目標是為了能夠比較相同函數 的兩個程式的時間複雜度,及預測當程式特性 改變時,執行時間增長的情形 當步驟所代表的概念不明確 (x=y 和 x=y+z+(x/y)+(x*y*z-x/z) 都算是一個步驟 ) ,耗費 大量精神來決定精確的步驟計數是不值得做的 大多數情況下,只要可以構成一個敍述,如 c 1 n 2 T p (n) c 2 n 2 或 T Q (n,m)=c 1 n+c 2 m ,其中 c 1 和 c 2 為非 負之常數,就足夠表示了

14 效率分析 ( 續 ) 若我們有兩個程式 c 1 n 2 +c 2 n 與 c 3 n 在 n 夠大的情況,複雜度 c 3 n 的程式將比複雜度為 c 1 n 2 +c 2 n 的程式快速 對於小的 n 而言,任一程式都可能比另一個快 ( 視 c 1, c 2 及 c 3 而定 ) 。 若 c 1 =1, c 2 =2, c 3 =100 ,則 c 1 n 2 +c 2 n c 3 n ,當 n 98 ,則 c 1 n 2 +c 2 n > c 3 n 不論 c 1, c 2 及 c 3 之值為何,總有一個 n 值使得複 雜度為 c 3 n 的程式比複雜度為 c 1 n 2 +c 2 n 的程式快速  這個 n 就稱為損益點 ( 估算 )

15 效率分析 ( 續 ) 術語介紹 O(n) : f(n)=O(g(n)) ,若且唯若存在一正整數 c 及 n 0 , 使得 f(n) cg(n) ,對所有的 n , n n 0 (Big-O)  敍述 f(n)=O(g(n)) 僅陳述 g(n) 是當 n n 0 時函數 f(n) 之值的上 限,但未說出上限好到何種程度。所以 O(n 2 ), O(n 3 )… 都足以表達  為使其更具意義,在下結論說 f(n)=O(g(n)) 時, g(n) 必須是最小函數, n 0 為其上限 Ω(n) : f(n)= Ω(g(n)) ,若且唯若存在一正整數 c 及 n 0 , 使得 f(n) cg(n) ,對所有的 n , n n 0  對於 f(n)= Ω(g(n)) 而言,它暗示了當敍述 f(n)= Ω(g(n)) 時, g(n) 應是最大函數, n 0 為其下限

16 效率分析 ( 續 ) Θ(n) : f(n)= Θ(g(n)) ,若且唯若存在正整數 c 1 、 c 2 及 n 0 ,使得 c 1 g(n) f(n) cg 2 (n) ,對所有的 n , n n 0  Θ(n) 比 O(n) 和 Ω(n) 兩者都準確  g(n) 同時是 f(n) 的上 限和下限 O(n)Ω(n)

17 效率分析 ( 續 ) Big-O 的類別 O(1) :常數時間 O(log n) :對數時間 O(n) :線性時間 O(n log n) :對數線性時間 O(n 2 ) :平方時間 O(n 3 ) :立方時間 O(2 n ) :指數時間 O(n!) :階層時間 O(n n ) : n 的 n 次方時間 效率 優 差

18 效率分析 ( 續 ) Ex. 陣列的相加表示將相對應的元素相加 void add(int a[][], int b[][], int c[][], int rows, int cols) { for (int i=0;i<rows; i++) for (int j=0;j<cols;j++) c[i][j] = a[i][j] + b[i][j]; } 步驟計數 Θ(rows) Θ(rows*cols) 方法一:將每 行程式的漸近 式複度相加即 可 方法二:取得 最大的指令複 雜度

19 效率估計 雖然效率分析在確認一個演算法的空間和時 間複雜度上提供一個強大的工具,但有些時 候,我們仍然需要考慮演算法如何在我們機 上執行 時間的計算可利用 C 語言所提供的指令

20 效率估計 ( 續 ) μs=microsecond=10 -6 seconds ms=millisecond=10 -3 seconds