网站大量收购独家精品文档,联系QQ:2885784924

演算法的观念.ppt

  1. 1、本文档共39页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
演算法的观念

Chapter 5 演算法 5.1 演算法的觀念 5.2 演算法的表示 5.3 演算法的發現 5.4 反覆的結構 5.5 遞迴結構 5.6 效率及正確性 5.1 演算法的觀念 ★圖 5.1 一個演算法的定義 5.2 演算法的表示 ★圖 5.2 用一張正方形的紙來摺紙鳥 ★圖 5.3 摺紙的基本 原式 ★圖 5.4 Greeting 程序以虛擬碼來表示 5.3 演算法的發現 5.4 反覆的結構 ★圖 5.6 用虛擬碼寫成的依序搜尋演算法 ★圖 5.7 重複控制的組成 ★圖 5.8 while 迴圈結構 ★圖 5.9 repeat 結構 ★ 圖 5.10 對含有 Fred、Alex、Diana、Byron及 Carol 的名單依字母次序做排序 ★圖 5.11 插入排序演算法的虛擬碼 5.5 遞迴結構 ★圖 5.12 應用策略在一個名單中找尋 John ★圖 5.14 二分搜尋演算法的虛擬碼 ★圖 5.15 ★圖 5.16 ★圖 5.17 5.6 效率及正確性 ★圖 5.18 插入排序應用於一個最糟狀況 ★圖 5.19 插入排序演算法最糟狀況之分析圖 ★圖 5.20 二分搜尋演算法最糟狀況之分析圖 ★圖 5.21 只要切斷三個金環就可鬆開金環圈 ★圖 5.22 只要切斷一個金環就可鬆開金環圈 ★圖 5.23 與典型 while 結構有關的斷言 遞迴控制 遞迴程式在要求更多啟動之前要先測試終止條件(常被稱為 base case 或 degenerative case)。 演算法的效率 研究演算法所需用到如運算時間及儲存空間等資源之議題的重要性,這個領域稱為演算法分析(algorithm analysis)。 一般均會包含「最佳」狀況分析(best-case analysis)、「最糟」狀況分析(worst-case analysis),以及「平均」狀況分析(average case analysis)。 應用在一份有 n 項資料的清單,則依序搜尋法將會平均作 n/2 次的比對,而二分搜尋法在最糟的情況下頂多做lg n 次比對(lg n 代表以 2 為底的 n 的對數值)。 big-theta notation 插入排序法以 Θ(n2) 為代表符號的一類。二分搜尋列入以 Θ(lg n) 為代表符號的一類。 軟體驗證  有位旅行家帶著有七個金環的鏈子住在隔離的旅館七個晚上,每晚的租金是一個金環且隔天早上需馬上付,請問最少要切斷幾個金環才能在每天早上準時付款而且不會提早付? 「被相信是對的程式」與「對的程式」是不同的。 軟體驗證(verification of software)很重要,找尋有效的驗證技巧仍是計算機科學中研究的領域。 目前研究的方法中是運用正規邏輯(formal logic)的技術來證明一個程式的正確性。 程式正確性的證明是基於一開始所假設的先決條件(precondition)。 證明正確性可以程式中的任一點來確認各個被稱為斷言(assertion)的陳述來進行。 在程式被執行完後所產生的斷言符合所預期的輸出規格 [通常稱為後置條件(postcondition)],則可以認定程式是正確的。 * * * * * * 非正式地定義演算法為一連串用來說明工作如何被完成的步驟。 演算法的正式定義 圖 5.1 中所述演算法的正式定義。 單一個演算法可以用很多種方式來表示。如溫度轉換演算法的例子 F=(9 / 5)C + 32 將攝氏溫度乘以 9/5,然後再將乘積加上 32。 程式(program)與工作單元(process)之間的差異。一個程式是表示演算法的方式之一。 程式一詞是指一個為電腦應用設計的演算法的正式表示方式。 工作單元為執行程式的活動。 原式(primitives)及虛擬碼(pseudocode)的基本觀念。 原式 演算法的表示方式需用到某種語言的形式。 圖 5.2 所示,其中描述用一張正方形的紙來摺一隻小鳥的演算法。 計算機科學家建立了明確的構件,可用以表達相關的演算法。這些構件稱為原式(primitive)。 一群的原式搭配一些規則,就說明了原式可以如何地結合,來代表構成程式語言(programming language)更複雜的概念。 每個原式是由兩個部份所組成:語法(syntax)及語意(semantics)。語法是指原式以符號表示的方法,而語意是指原式的意義。 圖 5.3 表示一些用在摺紙的原式。 虛擬碼 較不正規且較直覺的符號系統,稱為虛擬碼(pseudocode)。 於演算法發展過程中用來非正式地表達觀念的一種符號系統。 使用以下的形式 名稱 ← 運算式 名稱是一個敘述性的名詞,運算式則描述將與該名稱相關聯的值。 指定名稱為運算式的值,例如 RemainingFunds ← Ch

文档评论(0)

pangzilva + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档