Analyzing Algorithms Based on: 1. 物件導向資料結構 — 使用 Java 語言, 江振 瑞 著, 松崗圖書公司, 2005. 2. Introduction to the Design and Analysis of Algorithms -- A strategic.

Slides:



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

布林代數的應用--- 全及項(最小項)和全或項(最大項)展開式
第七章 抽樣與抽樣分配 蒐集統計資料最常見的方式是抽查。這 牽涉到兩個問題: 抽出的樣本是否具有代表性?是否能反應出母體的特徵?
: A-Sequence 星級 : ★★☆☆☆ 題組: Online-judge.uva.es PROBLEM SET Volume CIX 題號: Problem D : A-Sequence 解題者:薛祖淵 解題日期: 2006 年 2 月 21 日 題意:一開始先輸入一個.
:Word Morphing ★★☆☆☆ 題組: Problem Set Archive with Online Judge 題號: 10508:word morphing 解題者:楊家豪 解題日期: 2006 年 5 月 21 日 題意: 第一行給你兩個正整數, 第一個代表下面會出現幾個字串,
1 Q10276: Hanoi Tower Troubles Again! 星級 : ★★★ 題組: Online-judge.uva.es PROBLEM SET Volume CII 題號: Q10276: Hanoi Tower Troubles Again! 解題者:薛祖淵 解題日期: 2006.
Section 1.2 Describing Distributions with Numbers 用數字描述分配.
Reference, primitive, call by XXX 必也正名乎 誌謝 : 部份文字取於前輩 TAHO 的文章.
1 Advanced Chemical Engineering Thermodynamics Appendix BK The Generalized van der Waals Partition Function.
亂數產生器安全性評估 之統計測試 SEC HW7 姓名:翁玉芬 學號:
Review of Chapter 3 - 已學過的 rules( 回顧 )- 朝陽科技大學 資訊管理系 李麗華 教授.
:New Land ★★★★☆ 題組: Problem Set Archive with Online Judge 題號: 11871: New Land 解題者:施博修 解題日期: 2011 年 6 月 8 日 題意:國王有一個懶兒子,為了勞動兒子,他想了一個 辦法,令他在某天早上開始走路,直到太陽下山前,靠.
: OPENING DOORS ? 題組: Problem Set Archive with Online Judge 題號: 10606: OPENING DOORS 解題者:侯沛彣 解題日期: 2006 年 6 月 11 日 題意: - 某間學校有 N 個學生,每個學生都有自己的衣物櫃.
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)
5.1 Rn上之長度與點積 5.2 內積空間 5.3 單範正交基底:Gram-Schmidt過程 5.4 數學模型與最小平方分析
第一章 信號與系統初論 信號的簡介與DSP的處理方式。 系統特性與穩定性的判定方法。 以MATLAB驗證系統的線性、非時變、因果等特性。
1. 假設以下的敘述為一未提供 “ 捷徑計算 ” 能力的程式段,試用程 式設計的技巧,使此敘述經此改 寫的動作後,具有與 “ 捷徑計算 ” 之 處理方法相同之處理模式。 if and then E1 else E2 endif.
McGraw-Hill/Irwin © 2003 The McGraw-Hill Companies, Inc.,All Rights Reserved. 肆 資料分析與表達.
基礎物理總論 基礎物理總論 熱力學與統計力學(三) Statistical Mechanics 東海大學物理系 施奇廷.
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 是一隨機變數,隨著每一次抽出來的 樣本值不同,它的值也不同,但會有規律性 為了要知道估計的精確性,必需要知道樣本平均數.
1 第四章 多變數函數的微分學 § 4.1 偏導數定義 定義 極限值 ■. 2 定理 極限值的基本定理 (1) 極限值的唯一性 : 若 存在,則 其值必為唯一。 (2) 若 且 ( 與 為常數 ) , 則 且 為常數且.
Chapter 13 塑模靜態觀點:物件圖 Static View : Object Diagram.
: The largest Clique ★★★★☆ 題組: Contest Archive with Online Judge 題號: 11324: The largest Clique 解題者:李重儀 解題日期: 2008 年 11 月 24 日 題意: 簡單來說,給你一個 directed.
: 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.
Data Structure in C ─ 演算法分析. 1 大綱 基本概念 演算法 效率評估 效率分析 效率估計.
Fourier Series. Jean Baptiste Joseph Fourier (French)(1763~1830)
Chapter 2 Getting Started Insertion Sort: 能有效率地排序小數字的演算法 範例 :
CH 15- 元件可靠度之驗證  驗證方法  指數模式之可靠度驗證  韋式模式之可靠度驗證  對數常態模式之可靠度驗證  失效數為零時之可靠度估算  各種失效模式之應用.
: Ahoy, Pirates! ★★★★☆ 題組: Contest Archive with Online Judge 題號: 11402: Ahoy, Pirates! 解題者:李重儀 解題日期: 2008 年 8 月 26 日 題意:有一個海盜島有 N 個海盜,他們的編號 (id)
: 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.
: Problem G e-Coins ★★★☆☆ 題組: Problem Set Archive with Online Judge 題號: 10306: Problem G e-Coins 解題者:陳瀅文 解題日期: 2006 年 5 月 2 日 題意:給定一個正整數 S (0
: 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 種。 決定每一個可能的實驗結果發生機率。 – 實驗後所有的實驗結果整理得到。
Teacher : Ing-Jer Huang TA : Chien-Hung Chen 2015/6/25 Course Embedded Systems : Principles and Implementations Weekly Preview Question CH 2.4~CH 2.6 &
函式 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 月 題意: 將輸入的數字,經過重新排列組合或旋轉數字,得到比原先的數字大,
Chapter 2. Recurrence Relations (遞迴關係)
介紹不同坐標系之間的轉換 以LS平差方式求解坐標轉換參數
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.
JAVA 程式設計與資料結構 第十六章 Hash Tables. Introduction Hash Tables 結構為一個 Array ,稱之為 Bucket array 。 如果想要新增一個物件,要根據這個物件的特性 將其加入 Hash Table 內。 Bucket Array 用 A 來代替,其.
概念性產品企劃書 呂學儒 李政翰.
1/17 A Study on Separation between Acoustic Models and Its Application Author : Yu Tsao, Jinyu Li, Chin-Hui Lee Professor : 陳嘉平 Reporter : 許峰閤.
2005/7 Linear system-1 The Linear Equation System and Eliminations.
: Problem E Antimatter Ray Clearcutting ★★★★☆ 題組: Problem Set Archive with Online Judge 題號: 11008: Problem E Antimatter Ray Clearcutting 解題者:林王智瑞.
連續隨機變數 連續變數:時間、分數、重量、……
McGraw-Hill/Irwin © 2003 The McGraw-Hill Companies, Inc.,All Rights Reserved. 參 資料蒐集的方法.
Microsoft Excel.
: 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.
:Rings and Glue ★★☆☆☆ 題組: Problem Set Archive with Online Judge 題號: 10301: Rings and Glue 解題者:施博修 解題日期: 2011 年 5 月 18 日 題意:小約翰有了個大麻煩,他不小心將 rings.
幼兒行為觀察與記錄 第八章 事件取樣法.
McGraw-Hill/Irwin © 2003 The McGraw-Hill Companies, Inc.,All Rights Reserved. 肆 資料分析與表達.
1 Chap. 7 Response of First-Order RL and RC Circuits Contents 7.1 The Natural Response of an RL Circuit 7.2 The Natural Response of an RC Circuit 7.3 The.
Presentation transcript:

Analyzing Algorithms Based on: 1. 物件導向資料結構 — 使用 Java 語言, 江振 瑞 著, 松崗圖書公司, Introduction to the Design and Analysis of Algorithms -- A strategic approach, 2E, R.C.T. Lee et. al., NcGraw Hill, Introduction to Algorithms, Cormen et. al., MIT Press.

Analyzing algorithms Analyzing an algorithm has come to mean predicting the resources that the algorithm requires. Resources: memory, communication, bandwidth, logic gate, time. We usually assume that the algorithm is performed on a processor with RAM

Analyzing algorithms The running time of an algorithm on a particular input is the number of primitive operations or “ steps ” executed. It is convenient to define the notion of step so that it is as machine-independent as possible

Complexity 一般我們使用 時間複雜度 (time complexity) 空間複雜度 (space complexity) 來評估演算法的執行時間與所佔用記憶體空間, 這些複雜度愈低,則表示演算法愈好。 我們比較關注 time complexity !

Three Cases 演算法的時間複雜度分析分為以下三種: 最佳狀況 (best case) 時間複雜度 : 考慮演算法執行 時所需要的最少執行步驟數。 最差狀況 (worst case) 時間複雜度 : 考慮演算法執行 時所需要的最多執行步驟數。 平均狀況 (average case) 時間複雜度 : 考慮所有可 能狀況下演算法的平均執行步驟數。

Usually, we concentrate on finding only on the worst-case running time Reason: It is an upper bound on the running time The worst case occurs fair often The average case is often as bad as the worst case. For example, the insertion sort. Again, quadratic function. Worst-case and average-case analysis

An Alg. for Testing Primes 我們可以看出,輸入大於 2 的任意正整數 n ,若 n 是質數,則演 算法 Prime1 需要執行整數除法求餘數 (n%i) 動作與整數比較 ((n%i)=0) 動作 n-2 次之後,才可以知道 n 是質數。另外,若 n 不是質值,則演算法 Prime1 只要執行整數除法求餘數與整數比 較動作 1 次,就可以知道 n 不是質數了。 Algorithm Prime1(n): Input: 一個大於 2 的正整數 n Output:true 或 false( 表示 n 是質數或不是質數 ) for i←2 to n-1 do if (n%i)=0 then return false return true

我們可以看出,輸入大於 2 的任意正整數 n ,若 n 是質數, 則演算法 Prime2 需要執行整數除法求餘數 (n%i) 動作與整數 比較 ((n%i)=0) 動作 -2 次之後,才可以知道 n 是質數。另 外,若 n 不是質值,則演算法 Prime2 只要執行整數除法求餘 數與整數比較動作 1 次,就可以知道 n 不是質數了。 Another Alg. for Testing Primes

Analysis of Prime1 Alg. 因此,我們很容易看出來,在最壞狀況 (worst case) 下,演算法 Prime1 的執行步驟次數與輸 入的正整數 n 成正比關係;而在最佳狀況 (best case) 下,演算法 Prime1 的執行步驟次數為與 輸入的正整數 n 無關的某個常數。也就是說, 演算法 Prime1 具有線性的 (linear) 最差狀況時 間複雜度 ( 正比關係即為線性關係 ) 與常數的 (constant) 最佳狀況時間複雜度。

Analysis of Prime2 Alg. 我們也很容易看出來,在最壞狀況 (worst case) 下,演算法 Prime2 的執行步驟次數相依於輸入 的正整數 n 的平方根值;而在最佳狀況 (best case) 下,演算法 Prime2 的執行步驟次數為與 輸入的正整數 n 無關的某個常數。也就是說, 演算法 Prime2 具有平方根的 (square root) 最差 狀況時間複雜度與常數的 (constant) 最佳狀況 時間複雜度。

Asymptotic Notation 一般而言,我們使用所謂的趨近記號 (asymptotic notation) 來 分析演算法的複雜度,趨近記號考慮的是演算法在處理資料 範圍趨近於無窮大時的狀況。 在演算法的資料處理範圍 ( 或處理資料量 ) 較小時,不管是有效 率的 ( 執行步驟數較少 ) 或是沒有效率的 ( 執行步驟數較多 ) 演算 法通常都可以很快的執行完畢,在這個狀況下,演算法的時 間複雜度好壞的差距比較不明顯。 當演算法處理資料範圍 ( 或處理資料量 ) 相當大時,有效率的演 算法通常還是可以很快的結束;而一些極度沒有效率的演算 法則很可能需要幾日、幾月甚至於幾年才能執行完畢。因此, 我們僅關心演算法在處理資料範圍 ( 或處理資料量 ) 非常大的狀 況,這是為什麼分析演算法時間複雜度要採取趨近記號的原 因。

Order 在演算法處理資料範圍趨近於無窮大的狀況下,演算法的時間 複雜度會趨近於一個量級 (order) 。一般而言,演算法的時間 複雜度是一個多項式,當演算法處理資料範圍趨近於無窮大時, 時間複雜度的多項式中除了最高次方的項目外,其他的部分都 可以被忽略;而同時,最高次方項目的係數也同時可以被忽略。 例如,若一個演算法的時間複雜度為 n-2 ,則當 n 相當大 ( 趨近 於無窮大 ) 時,此演算法的時間複雜度趨近於 n ,屬於一次方或 稱線性 ( 或正比 ) 量級 ( 稱為線性的原因是因為一次方多項式於 平面座標上可描繪出直線圖形 ) ;若一個演算法的時間複雜度 為 35n 2 +12n+11 ,則當 n 相當大 ( 趨近於無窮大 ) 時,此演算法 的時間複雜度趨近於 n 2 ,屬於平方量級;而若一個演算法的時 間複雜度為 28n n n+321 ,則當 n 相當大時 ( 趨近 於無窮大時 ) ,此演算法的時間複雜度趨近於 n 3 ( 屬於立方量 級 ) 。

Big-O Notation 我們通常使用大 O 記號 (Big-O notation) 的來表示這種趨近情形, 大 O 記號可以說是一個用來表示演算法時間複雜度量級 (order) 的記號,我們將時間複雜度與大 O 記號的關係整理如下: 一般而言,若是一個演算法的時間複雜度表示為一個多項式, 則我們取這個多項式的最高次方為其時間複雜度的量級 (order) , 並且將此量級以大 O 記號表示 (O 代表 order 之意 ) 。

Def. of Big-O 以下我們正式定義大 O 記號: [ 定義 ] 大 O 記號 (Big-O notation) 令 f(n) 與 g(n) 是由非負整數對應至實數的函數,若存在正實 數常數 c>0 和正整數常數 n0 使得對所有的 n  n0 而言, f(n)  cg(n) 成立,則我們說 f(n)=O(g(n)) 。 ( 唸作 「 f(n) 是屬 於 Big-O of g(n) 」,比較正式的英文唸法為「 f of n is of Big-O of g of n 」 ) 。 例如,針對 35n 2 +12n+11 而言,存在 c=58 和 n0=1(58 由 求得 ) ,使得當 n  n0=1 時, 35n 2 +12n+11  cn 2 =(58n 2 ) 成立,因此,我們說 35n 2 +12n+11=O(n 2 ) 。

Keep order as low as possible 表 1-1 列出一些以大 O 記號表示的時間複雜度及其量 級,而表 1-2 、圖 1-3 與圖 1-4 則顯示演算法時間複雜 度在各種不同量級之下的比較,我們可以發現,某 些量級在演算法的處理資料範圍或處理資料量 ( 即問 題大小, problem size) 還不是很大的情況之下,演 算法的時間複雜度的執行步驟對照數值 ( 即執行時間, execution time) 就已經是相當大的值了,這表示演 算法需要運算相多的執行步驟,當然也就是要執行 相當久的時間。因此, 如何設計一個時間 複雜度量級較低的演算法是我們必 須一直擺在心中的最重要目標 。 表 1-1表 1-2

Comparison of Orders 以下是演算法時間複雜度量級的高低 次序比較,比較低的量級表示執行步 驟較少,也就是代表演算法的執行時 間較短、速度較快。這個量級的高低 次序比較,可以很容易的由圖 1-3 及圖 1-4 得到印證。圖 1-3圖 1-4 O(1) < O(log n) < O( ) < O(n) < O(n log n) < O(n 2 ) < O(n 3 ) < O(2 n ) O(n!)  O(n n )

表 1-1. 演算法時間複雜度的大 O 記號表示及其量級。 時間複雜度以大 O 記號 表示 量級 162O(1) 一次方常數 (constant) 量級 63log n+4O(log n) 次線性 ( 對數 )(sub-linear, logarithmic) 量級 O( ) 平方根 (square root) 量級 n-2O(n) 線性 (linear) 量級 156n+81O(n) 線性 (linear) 量級 35n 2 +12n+11O(n 2 ) 平方 (quadratic) 量級 28n n n+321O(n 3 ) 立方 (cubic) 量級 14  2 n +457n n n+81 O(2 n ) 指數 (exponential) 量級

表 1-2. 演算法各種時間複雜度 的執行步驟對照數值。 log nnn lognn2n2 n3n3 2n2n ,09665, ,02432,7684,294,967,296

Rate of Growth of Common Computing Time Functions

Time Complexity Functions log 2 n n nlog 2 n0.33x x x10 5 n2n n2n x10 30 > n!3x10 6 > Problem Size

圖 1-3. 演算法各種時間複雜度 量級成長圖 ( 對數圖 ) 。

圖 1-4. 演算法各種時間複雜度 量級成長圖。

Asymptotic Notations Def: f(n) = O(g(n)) “ upper bound" iff  c, n 0  |f(n)|  c|g(n)|  n  n 0 e.g. f(n) = 3n g(n) = n 2  n 0 =2, c=4  f(n) = O(n 2 ) e.g. f(n) = n 3 + n = O(n 3 ) e. g. f(n) = 3n = O(n 3 ) or O(n 100 )

asymptotic upper bound

Def : f(n) =  (g(n)) “ lower bound ” iff  c, and n 0,  |f(n)|  c|g(n)|  n  n 0 e. g. f(n) = 3n =  (n 2 ) or  (n)

asymptotic lower bound

Def : f(n) =  (g(n)) iff  c 1, c 2, and n 0,  c 1 |g(n)|  |f(n)|  c 2 |g(n)|  n  n 0 e. g. f(n) = 3n =  (n 2 )

f(n) =  (g(n))

Theorem 3.1. For any two functions f(n) and g(n), if and only if and.

Polynomial vs. Exponential Algorithms Any algorithm with time-complexity O(p(n)) where p(n) is a polynomial function is a polynomial algorithm. On the other hand, algorithms whose time complexities cannot be bounded by a polynomial function are exponential algorithms.

Floor and ceiling

Modular arithmetic For any integer a and any positive integer n, the value a mod n is the remainder (or residue) of the quotient a/n : a mod n =a -  a/n  n. If(a mod n) = (b mod n). We write a  b (mod n) and say that a is equivalent to b, modulo n. We write a ≢ b (mod n) if a is not equivalent to b modulo n.

Factorials Stirling ’ s approximation where

Fibonacci numbers