- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第1章 节 算法概述 计算机算法设计与分析.ppt
作业 P5:算法分析题 1-1,1-6,1-7 欢迎辞,自我介绍,助教介绍 简介每一章的内容 介绍什么是算法,学习算法的重要性 算法和程序都是指令的有限序列 ,但是:程序是算法,而算法不一定是 程序。 算法和程序的区别主要在于:(1) 在语言描述上,程序必须是用规定的程序设计语言来写,而算法很随意;(2) 在执行时间上,算法所描述的步骤一定是有限的,而程序可以无限地执行下去。所以: 程序 = 数据结构 + 算法 说通俗一些 就是将,算法是解决一个问题的思路,程序,则是解决这些问题所具体好写的代码。 算法没有语言界限。他只是一个思路。为实现相同的一个算法,用不同语言编写的程序会不一样。 算法是写程序的思想,程序是算法的体现! 人类基因数据库分析 因特网信息管理(路由,PageRank算法) 电子商务:加密/解密,保护隐私(保护隐私的银行数据挖掘,大富翁问题) 火车、航班调动 大科学计算(气象预测、核爆模拟、) 应用软件(排序、查找等) 实际应用(背包问题、货郎担问题等) Lg10=3.3 抽象数据类型(Abstract Data Type 简称ADT)??? 是指一个数学模型以及定义在此数学模型上的一组操作。??? 抽象数据类型需要通过固有数据类型(高级编程语言中已实现的数据类型)来实现。??? 抽象数据类型是与表示无关的数据类型,是一个数据模型及定义在该模型上的一组运算。对一个抽象数据类型进行定义时,必须给出它的名字及各运算的运算符名,即函数名,并且规定这些函数的参数性质。一旦定义了一个抽象数据类型及具体实现,程序设计中就可以像使用基本数据类型那样,十分方便地使用抽象数据类型。 ??? 抽象数据类型的描述包括给出抽象数据类型的名称、数据的集合、数据之间的关系和操作的集合等方面的描述。抽象数据类型的设计者根据这些描述给出操作的具体实现,抽象数据类型的使用者依据这些描述使用抽象数据类型。 ??? 抽象数据类型描述的一般形式如下:ADT 抽象数据类型名称 {? ???数据对象:? ?? ?? ?? ?? ?……? ???数据关系:? ?? ?? ?? ?? ?……? ???操作集合:? ?? ?? ?操作名1:? ?? ?? ?? ?? ?……? ?? ?? ?? ?? ?……? ?? ?? ?操作名n:}ADT抽象数据类型名称 抽象数据类型定义(ADT)??? 作用:抽象数据类型可以使我们更容易描述现实世界。例:用线性表描述学生成绩表,用树或图描述遗传关系。??? 定义:一个数学模型以及定义在该模型上的一组操作。??? 关键:使用它的人可以只关心它的逻辑特征,不需要了解它的存储方式。定义它的人同样不必要关心它如何存储。? ? 例:线性表这样的抽象数据类型,其数学模型是:数据元素的集合,该集合内的元素有这样的关系:除第一个和最后一个外,每个元素有唯一的前趋和唯一的后继。可以有这样一些操作:插入一个元素、删除一个元素等。 RAM模型进行算法分析时建立的计算模型 全称:随机存取机(random-access machine)算法分析中,为了描述算法所用资源及代价的模型在RAM模型中,指令一条接一条的执行,没有并发操作。基本指令与普通计算机类似,(加法,乘法,减法,除法,取余),其中每条指令的运行时间为常量。RAM模型中数据类型包括整数类型和浮点类型。 一个算法的复杂性的高低体现在运行该司法所需要的计算机资源的多少上,所需资源越多,则复杂性越高,所需资源越少,则复杂性越低。 显然,对于任意给定的问题,设计复杂性尽可能低的算法是我们设计算法时追求的重要目标。另一方面,当给定的问题已有多种算法时,选择其中复杂性最低的,是我们在选用算法时的一个重要准则。因此,司法的复杂性分析对算法的设计和选用有着重要的指导意义和实用价值。 最重要的计算机资源是时间和空间(即存储器)资源。因此,算法的复杂性有时间复杂性和空间复杂性之分。 由于时间复杂性和空间复杂性概念类同,计量方法相似,且空间复杂性分析相对简单些,所以我们更加关注时间复杂性分析 为了描述算法的时间复杂性,就必须将时间复杂性函数具体化,即对于给定的N、I和A,如何导出T(N,I)的数学表达式。 根据T(N,I)的概念,它应该是算法在一台抽象的计算机上运行所需要的时间。 这里t是与N,I无关的常数。 算法的时间复杂性除了与问题的规模、算法本身的函数有关外,还与算法的输入实例有关。显然,我们不可能对算法的每一个输入实例都去统计其运行时间,评价其时间复杂性。因此,我们主要考虑最坏情况、最好情况时间复杂性与平均时间复杂性 对A={5,1,6,9,3,2,8,0,7,4}进行排序 §1.4 算法复杂性的
文档评论(0)