湘潭大学算法设计与分析第一章算法概述.pptVIP

湘潭大学算法设计与分析第一章算法概述.ppt

  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文档。上传文档
查看更多
湘潭大学算法设计与分析第一章算法概述

计算机算法设计与分析 第一章 算法概述 算法与过程 过程(Procedure)与算法(Algorithm)是解决问题的一种方法的逐步描述,它 (1)是由若干条指令组成的有穷序列;(有穷性) (2)每条指令的意义都是确定的;(确定性) (3)具有零个或多个输入;(输入) (4)产生若干个输出;(输出) 算法要求其(5)执行时间是有限的 (终止性) 。 过程的执行时间可能是无限的。 程序 程序是某个算法或过程在计算机上的一个具体的实现。 程序是依赖于程序设计语言的,甚至依赖于计算机结构的。 算法是脱离具体的计算机结构和程序设计语言的。 算法的复杂性 算法的复杂性是指算法运行时所需要的计算机资源的量多少,所需资源量越多则复杂性越高,反之所需资源量越少则复杂性越低。其中最为重要的是: 时间复杂性:需要时间的资源量。 空间复杂性:需要空间的资源量。 这里人们通常更为关注的是时间复杂性。 决定算法复杂性的因素 算法的复杂性取决于 (1)求解问题的规模; (2)具体的输入数据; (3)算法本身的设计。 时间复杂性的计算 时间复杂性T(N, I)的计算为: 最坏、最好或平均的情况 令:D为规模为N的合法输入的集合; I*表示在最坏情况下的输入; I#表示在最好情况下的输入; P(I)输入I出现的概率。 W(N) = max I?DT(N, I) = T(N, I*) B(N) = min I?DT(N, I) = T(N, I#) A(N) = ? I?DP(I)T(N, I) 三者中最常用的是W(N) 。 复杂性分析的简化 令T(N)为表示算法A的复杂性函数,若存在? (N),使得 Lim N?? (T(N) – ?(N)) / T(N) = 0 那么,就可以用?(N)来代替T(N) ,从而简化复杂性的分析。 用阶来表示复杂性 在渐进复杂性分析中,只要关心?(N)的阶就够了,不必关心?(N)中的常数因子,这样我们就只需要用?(N)的阶来表示该算法的复杂性。 例如,计算一个N维矩阵A的平方的时间复杂性可估算为2N*N2 = 2N3,即此计算的时间复杂性为3阶。 几个记号 设f(N)、g(N)都是定义在正整数集上的函数。 上界记号O:如果存在正的常数C和自然数N0,使得当N≧N0 时有f(N)≦Cg(N),则f(N)有上界函数g(N),记为f(N) = O(g(N))。 下界记号Ω:如果存在正的常数C和自然数N0,使得当N≧N0 时有f(N)≧Cg(N),则f(N)有下界函数g(N),记为f(N) = Ω(g(N))。 同阶记号Θ:f(N)= Θ(g(N))表示f(N)和g(N)同阶 。 低阶记号o:f(N)=o(g(N))表示f(N)比g(N)低阶 常用的算法设计技术 分治法(Divide and Conquer) 动态规划法(Dynamic Programming) 贪心法(Greedy) 回溯法(Backtracking) 分支界限法(Branch and Bound) 这些算法中都使用了递归(Recursion)。 描述算法的语言和基本数据结构 对于算法的描述,教材采用了自然语言表述和以类C语言形式化描述两种方式。 书中使用的类C语言的说明详见P5页 本书还将用到几种常见的数据结构,它们分别是: 1、线性表 ??? 一个线性表是n个数据元素的有限序列,在一个非空集合中,它存在唯一的一个被称为“第一个”的数据元素,存在唯一的一个被称为“最后一个”的数据元素,除第一个之外,每个数据元素均只有一个前驱,除最后一个之外,每个数据元素均只有一个后继。 2、树 ?? 树是n个结点的有限集合。在一棵非空树中,有且仅有一个特定的称为根的结点;当n1时,其余结点可分为m(0)个互不相交的有限集T1,T2,……,Tm,其中每个集合本身又是一棵树,并且称为根的子树。 3、图 一个图G是一个有序三元组,G=(V,E,Ψ),其中: (1)V是非空顶点集合; (2)E是边集合,E∩V=Φ; (3)Ψ是E到{uv|u,v∈V}的映射,称为关联函数。 ??? * * 若令N、I、和A分别表示问题的规模、具体的输入和算法本身,则 C = F(N, I, A) 或 C = FA(N, I) = F( N, I) 其中: ti为执行抽象计算机的第i种指令一次所需要的时间,这里假定抽象计算机共有k种指令。 ei(N, I)为经过统计后得到的执行抽象计算机的第i种指令的次数。 k T(N, I) = ? ti ei(

文档评论(0)

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

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

1亿VIP精品文档

相关文档