第4章演算法导论计.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第4章演算法导论计

本章重點 程式製作的過程為程式設計師會先根據使用者的需求(user demand)來設計演算法,然後再挑選一個適合的程式語言,根據程式語言的語法及設計好的演算法來撰寫(coding)程式 程式設計與演算法之間的關係十分密切 本章將介紹演算法的相關知識 演算法基本觀念 演算法(algorithm)是指是有限數目指令的集合,利用這群指令撰寫的程式可以完成某個特定的工作 演算法基本條件 演算法有五項基本的條件,必須五項條件都滿足才符合演算法的要求,五項條件如下 輸入(input)條件 0個或0個以上的輸入,也就是說演算法允許沒有輸出 輸出(output)條件 演算法要求至少應有1個輸出 明確性(definiteness)條件 演算法要求定義必須明確不可模擬兩可(ambiguous)。 有限性(finiteness) 條件 演算法要求不可存在無窮迴路(infinite loop),也就是說必須在有限步驟內完作。 有效性(effectiveness)條件 演算法執行的結果應是正確的 演算法基本條件(cont.) 任何一種計算方法必須滿足以上五項條件才符合演算法的要求。如果某一種計算方法執行的結果是錯誤的,就算該計算方法滿足輸入、輸出、明確性及有限性四項條件而且或許執行的速度也很快,但是一個錯誤的計算方法就不能算是演算法 實例:一個演算法的例子 演算法分析 由於程式是根據演算法撰寫而成,因此程式與其對應的演算法關係必定非常密切 若演算法設計得宜,則程式的執行效率及記憶體空間的使用情形都會有處於較理想的狀況 分析或評估程式效能的方法可分別就「程式執行所需的時間」(time)與「程式執行所需的記憶體空間」(space)二方面來著手 影響程式執行時間的因素 輸入資料量的數量 所採用的演算法之時間複雜度(Time Complexity) 編譯器的優劣 計算機的執行速度 漸進符號(asymptotic symbols) 漸進符號常被用來分析演算法的時間複雜度,雖然此法無法精確地表達演算法實際執行次數,但因可利用簡單的近似值表達演算法所需的時間複雜度,因此被廣泛採用 漸進符號種類 (1/3) ?:f(n)=?(g(n)) if and only if there exist 2 positive constants N and c,such that for every n ? N,f(n) ? c?g(n)。 「O」(唸作big-oh)代表函數的漸進上限,若f(n)=?(g(n)),則O(n2)便代表函數f(n)的漸進上限,例如f(n)=3n2+4n+5,則O(n2)便代表函數f(n)的漸進上限 漸進符號種類 (2/3) ?:f(n)=?(g(n)) if and only if there exist 2 positive constants N and c,such that for every n ? N,f(n) ? c?g(n)。 「?」(唸作omega)用來估算函數的下限值,若f(n)=? (g(n)),則g(n)便可視為是f(n)函數的下限 漸進符號種類 (3/3) ?:f(n)=?(g(n)) if and only if there exist 3 positive constants b , c and N,such that for every n ? N, b?g(n) ? f(n) ? c?g(n) 「?」(唸作theta)是利用上限及下限來逼近一個函數。若f(n)=?(g(n)),則g(n)可同時代表f(n)的上限及下限 常見的時間複雜度 範例 1 寫出下列f(n)的時間複雜度: (1) 5log n+100 (2)8n3-15 (3) 20n2+400 (4)20n3+30n2+40nlogn+50n 解: (1) ?(log n) (2) ?(n3) (3) ?(n2) (4) ?(n3) 範例2 寫出下列f(n)的時間複雜度: f(n)=2×n2+3×n+500 解:O(n2) 範例3 以下程式段中「敘述X」執行的次數及程式段的時間複雜度各為何? 範例4 試決定下列程式中「敘述X」的執行次數及程式段的時間複雜度 範例 5 試決定下列程式中「敘述X」的執行次數及程式段的時間複雜度 程式產生的過程 程式產生的過程一般可分為五個階段 需求(requirement)階段 設計(design)階段 分析(analysis)階段 再修飾與編碼(refinement and coding)階段 驗證(verification)階段 五大階段工作 「需求階段」是根據程式的要求定義出所有可能的輸入及輸出狀況 「設計階段」是根據需求設計出相對應的演算法 「分析階段」是嘗試設計出二種以上

文档评论(0)

busuanzi + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档