- 1、本文档共68页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
算法设计与分析 主要内容介绍 第1章 算法引论 第2章 递归与分治策略 第3章 动态规划 第4章 贪心算法 第5章 回溯法 第6章 分支限界法 第7章 概率算法 第8章 NP完全性理论 第9章 近似算法 第10章 算法优化策略 第1章 算法引论 1.1 算法与程序 1.2 表达算法的抽象机制 1.3 描述算法 1.4 算法复杂性分析 1.1 算法与程序 算法: 是满足下述性质的指令序列。 输 入:有零或多个外部量作为算法的输入。 输 出:算法产生至少一个量作为输出。 确定性:组成算法的每条指令清晰、无歧义。 有限性:算法中每条指令的执行次数有限,执行每条指令的时间也有限。 程序: 是算法用某种程序设计语言的具体实现。程序可以不满足算法的性质(4)即有限性。 例如: 操作系统是一个程序,不是算法,但其各种任务如作业管理、进程调度可以采用特定的算法来实现。 1.2 表达算法的抽象机制 1.算法的三要素(数据、运算和控制) 算法的数据: 基本数据(布尔值 字符 整数 实数) 较复杂数据(向量 矩阵 记录) 更复杂数据(集合 树 图 声音 图像) 算法的运算: 基本运算(逻辑 赋值 算术 关系) 复杂运算(函数值计算 向量运算 集合运算 表、树、图上的运算) 2.从机器语言到高级语言的抽象 高级程序设计语言的主要好处是: (1)更接近算法语言,易学、易掌握; (2)提供了结构化程序设计的环境和工具,使得设计出来的程序可读性好,可维护性强,可靠性高; (3)不依赖于机器语言,与具体的计算机硬件关系不大,因而所写出来的程序可植性好、重用率高; (4)把繁杂琐碎的事务交给编译程序,自动化程度高。 3.抽象数据类型 算法从非形式的自然语言表达到形式化的高级语言表达,是一个复杂的过程,要做很多繁杂琐碎的事情,因而仍然需要抽象。 对于一个数学问题,设计算法的一般步骤为: (1)先选用该问题的一个数据模型。 (2)接着,弄清数据模型在已知条件下的初始状态和要求的结果状态,以及两个状态之间的关系。 (3)然后探索从已知初始状态出发到达要求的结果状态所必需的运算步骤。 按照自顶向下逐步求精的原则,在探索运算步骤时,首先应该考虑算法顶层运算步骤,然后再考虑底层运算步骤。 顶层运算步骤:是指定义在数据模型级上的运算步骤,或叫宏观运算。它们组成算法的主干部分。表达这部分算法的程序就是主程序。 底层运算步骤:是指顶层抽象的运算的具体实现。它们依赖于数据模型的结构,依赖于数据模型结构的具体表示。包括两部分:一是数据模型的具体表示;二是定义在该数据模型上的运算的具体实现。 抽象数据类型: 为了将顶层算法与底层算法隔开,使二者在设计时不会互相牵制、互相影响,必须对二者的接口进行一次抽象。让底层只通过这个接口为顶层服务,顶层也只通过这个接口调用底层的运算。这个接口就是抽象数据类型。其英文术语是Abstract Data Types,简记ADT。 抽象数据类型:是算法的一个数据模型连同定义在该模型上、作为该算法构件的一组运算。 抽象数据类型的概念实际上是我们熟悉的基本数据类型概念的引伸和发展。高级语言基本数据类型已隐含着数据模型和定义在该模型上的运算的统一。 例如: 逻辑类型就是逻辑值数据模型和或(∨)、与(∧)、非(┐)三种逻辑运算的统一体; 整数类型就是整数值数据模型和加(+)、减(-)、乘(*)、除(div)四种运算的统一体; 抽象数据类型带给算法设计的好处有: (1)算法顶层设计与底层实现分离; (2)算法设计与数据结构设计隔开,允许数据结构自由选择; (3)数据模型和该模型上的运算统一在ADT中,便于空间和时间耗费的折衷; (4)用抽象数据类型表述的算法具有很好的可维护性; (5)算法自然呈现模块化; (6)为自顶向下逐步求精和模块化提供有效途径和工具; (7)算法结构清晰,层次分明,便于算法正确性的证明和复杂性的分析。 1.3 描述算法 描述算法可以有多种方式 自然语言方式、表格方式、图示形式等 本书采用Java语言描述算法 Java语言的优点是类型丰富、语句精炼,具有面向过程和面向对象的双重特点,可以充分利用抽象数据类型这一有力工具表述算法。 下面,对Java语言作简要概述 1.Java程序结构 (1)应用程序和applet 区别: 应用程序的主方法为main,后缀为.java,执行时先编译为字节码文件(.class),然后可以在任何一台java虚拟机上运行。 applet的主方法为init,其必须嵌入HTML文件,由Web浏览器或applet阅读器来执行。 (2)包: java程序和类可以包(packages)的形式组织管理。 (3)import语句: 在j
您可能关注的文档
最近下载
- 2025局深入贯彻精神学习教育”回头看”自查情况报告.docx VIP
- 七年级历史上册第一二单元测试题(含答案).doc VIP
- 小学语文六年级阅读理解33个常考题型满分答题公式模版技巧方法.pptx VIP
- 《物业管理》课件.pptx VIP
- 【课件】《危险化学品重大危险源监督管理暂行规定》解读.pptx VIP
- 桩基及围护技术标含施工方案.pdf VIP
- 小学写人记事类作文方法讲解(课件PPT;42页).pptx VIP
- 学校食堂餐饮服务投标方案(技术方案).doc
- 英剧剧本唐顿庄园台词本中英文对照精排版第一季第一集.pdf VIP
- [中级注册安全工程师考试密押资料]安全生产事故案例分析模拟281.docx VIP
文档评论(0)