《算法设计与问题求解》PPT第一章 算法基础.pptx
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《《算法设计与问题求解》PPT第一章 算法基础.pptx》由用户(momomo)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 算法设计与问题求解 算法设计与问题求解PPT第一章 算法基础 算法 设计 问题 求解 PPT 第一章 基础
- 资源描述:
-
1、算法概念算法描述算法主要类别及典型问题算法复杂性分析目录标准模板库(STL)1 1算法概念算法概念 什么是算法什么是算法 算法的特征算法的特征算法(算法(AlgorithmAlgorithm)是指解题方案的准确而完整的描述,通过一系列解决问题的清晰指令来描述问题的程序化解决方案。对于符合一定规范的输入,能够在有限时间内获得所要求的输出。算法中的指令描述的是一个计算,当其运行时能从一个初始状态和(可能为空的)初始输入开始,经过一系列有限而清晰定义的状态,最终产生输出并停止于一个终态。一个状态到另一个状态的转移不一定是确定的。1 算法概念算法的有穷性是指算法必须能在执行有限个步骤之后终止1 算法概
2、念有穷性有穷性算法的每一步骤必须有确切的定义确切性确切性有0个或多个输入,0个输入是指算法本身定出了初始条件输入项输入项有一个或多个输出,以反映对输入数据加工后的结果输出项输出项算法中执行的任何计算步骤都是可以被分解为基本的可执行的操作步骤,即每个计算步骤都可以在有限时间内完成(也称之为有效性)可行性可行性2 2算法描述算法描述 伪代码伪代码算法描述算法描述是指对算法用一种方式进行详细的描述,可以使用自然语言、伪代码(Pseudocode),也可使用程序流程图,但描述的结果必须满足算法的五个特征。伪代码伪代码是一种类似于英语结构的语言,用于描述模块功能,可以将整个算法运行过程的结构用接近自然语
3、言的形式进行描述。由于伪代码结构清晰、代码简单、可读性好,并且类似自然语言,在算法设计中得到了广泛使用。2 算法描述2 算法描述例1.1 使用伪代码描述冒泡排序算法。/算法 BubbleSort(A,n)/输入:数组A、元素个数n/输出:排序后的数组for i 1 to n-1 do /将1赋值给i,执行1n-1轮循环 for j i to n-i-1 do /将i赋值给j,执行循环 if Aj Aj+1 then /判断交换Aj与Aj+1的值 end if end forend forreturn A3 3算法主要类别及典算法主要类别及典型问题型问题 递归法递归法&递推法递推法 穷举法穷举法
4、 贪心算法贪心算法 分治法分治法 动态规划法动态规划法 分支界限法分支界限法 回溯法回溯法3 算法主要类别及经典问题程序调用自身的编程技巧称为递归(递归(RecursionRecursion)。一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解。问题来求解。例1.2 用递归法求解Fibonacci数列中第n个数。3 算法主要类别及经典问题递推法的思想是把一个复杂的庞大的计算过程转化为简单过程的多次重复。把一个复杂的庞大的计算过程转化为简单过程的多次重复。3
5、算法主要类别及经典问题 穷举法(又称蛮力法)通过列举出问题的所有可能的情况,逐个判断是符合问题约束穷举法(又称蛮力法)通过列举出问题的所有可能的情况,逐个判断是符合问题约束,如果符合则得到问题的一个解。例1.4百钱买百鸡问题 我国古代数学家张丘建在算经一书中曾提出过著名的“百钱买百鸡”问题,该问题叙述如下:鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一;百钱买百鸡,则翁、母、雏各几何?for x 1 to 20 do for y 1 to 33 do z 100-x-y if 5*x+3*y+z/3=100 and z mod 3=0 then 输出公鸡 x 只,母鸡 y 只,小鸡 z 只en
6、d if end for end for3 算法主要类别及经典问题 贪心算法(又称贪婪算法)在求解问题的过程中总是做出在当前格局下最好的决策,并不贪心算法(又称贪婪算法)在求解问题的过程中总是做出在当前格局下最好的决策,并不从整体最优上加以考虑,从整体最优上加以考虑,因此,贪心法得到的是在往往是问题的局部最优解。贪心算法是一种对某些求最优解问题的更简单、更迅速的设计技术。求最短路径的Dijkstra算法实际上是一个贪婪算法,因为该算法总是试图优先访问每一步循环中距离起始点最近的下一个顶点。例1.5 最短路径Dijkstra算法伪代码3 算法主要类别及经典问题 分治法主要包括将原问题分为相同获相
展开阅读全文