离散数学及其应用第2章-整数与算法基础(下)课件.pptx
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《离散数学及其应用第2章-整数与算法基础(下)课件.pptx》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 离散数学 及其 应用 整数 算法 基础 课件
- 资源描述:
-
1、2022-8-5计算机应用技术研究所计算机应用技术研究所11离散数学离散数学Discrete Mathematics汪荣贵汪荣贵 教授教授合肥工业大学计算机与信息学院合肥工业大学计算机与信息学院2022-8-5计算机应用技术研究所计算机应用技术研究所2第第2 2章章 整数与算法设计基础整数与算法设计基础(下)(下)2022-8-52022-8-5整数的基本知识整数的基本知识1 1 同余算术及其应用同余算术及其应用2 2算法设计策略与应用算法设计策略与应用4 4 算法设计的基本知识算法设计的基本知识3 3&本章学习内容本章学习内容2022-8-5计算机应用技术研究所计算机应用技术研究所4算法算法
2、设计的基本知识设计的基本知识&算法设计的算法设计的基本知识基本知识J 算法的基本概念算法的基本概念4 算法效率的度量算法效率的度量4 算法设计应用举例算法设计应用举例2022-8-5计算机应用技术研究所计算机应用技术研究所6&算法的概念算法的概念计算机是处理数据并将数据转化为有用信息的电子设备。任何计算机都由程序指令控制,程序指令规定计算机的用途,并告诉计算机需要完成的工作。因此,要使计算机工作就需要编写计算机程序,告诉计算机如何按照步骤执行程序,以实现最终目标。2022-8-5计算机应用技术研究所计算机应用技术研究所7&算法的概念算法的概念从广义上讲,算法是指通过运算的方式按照某种机械的步骤
3、逐步实现对问题的求解,从这个角度看,现实生活中的很多工作流程都可以看成是算法,例如烧菜的菜谱、理发的流程等,都可以叫算法。从狭义上讲,算法是一个由已知推求未知的过程,对于符合一定规范的输入,它能够在有限的时间内获得所需的输出。2022-8-5计算机应用技术研究所计算机应用技术研究所8&算法的基本性质算法的基本性质1.1.有穷性有穷性:算法中每条指令的执行次数和时间均有限。执行次数或执行时间无穷的算法,对实际生产生活几乎没有意义,而且还会造成资源浪费。2.2.确定性确定性:对算法的描述必须无歧义,以保证算法执行结果是确定的,且符合要求和期望。如果算法对于同样的输入,在相同环境下产生不确定的结果,
4、则是不能接受的。3.3.输入输入:一个算法有0个或多个输入,以确定运算对象的初始情况。所谓0个输入是指算法本身给定了初始条件。4.4.输出输出:一个算法有一个或多个输出,以反映对输入数据加工后的结果。没有输出的算法是毫无意义的。5.5.可行性可行性:算法中有待实现的运算都是基本运算,算法原则上要能够精确地运行,且人们用笔和纸做有限次运算后就可以完成。2022-8-5计算机应用技术研究所计算机应用技术研究所9&算法的基本要素算法的基本要素算法的实现形式有多种,但是这些实现形式都具有相同的基本运算和操作。算术运算:加减乘除等运算;关系运算:大于、小于、等于、不等于等运算;逻辑运算:或、与、非等运算
5、;数据操作:输入、输出、赋值等运算。算法的控制结构确定了算法的基本框架,决定着各个操作的执行顺序。算法控制结构有三种,即顺序结构、选择结构和循环结构。在计算机领域,算法的操作对象是数据。具体实际问题及其数学模型的结构特点决定了数据之间总是存在着一些特定的逻辑关系或逻辑结构。这些存储结构和逻辑结构统称为数据结构。2022-8-5计算机应用技术研究所计算机应用技术研究所10&总总 结结简单地说,算法就是解决问题的程序或步骤。可以一步步进行,每一步都能得到唯一的结果。算法一般是刻板的,枯燥的,有时需要进行大量重复的计算,显示了其“机械化”(也叫傻瓜化”)的特点。实际上,处理任何问题都需要算法;象棋有
6、象棋的棋谱,电视有电视的说明书,邮寄物品有其相应的手续.算法与具体问题的解法既有联系,又有区别,它们之间是一般和特殊,抽象与具体的关系1234&算法设计的基本知识算法设计的基本知识4 算法的基本概念算法的基本概念J 算法效率的度量算法效率的度量4 算法设计应用举例算法设计应用举例2022-8-5计算机应用技术研究所计算机应用技术研究所12&算法效率的度量算法效率的度量度量算法的效率:度量算法的效率:时间复杂度;时间复杂度;空间复杂度。空间复杂度。2022-8-5计算机应用技术研究所计算机应用技术研究所13&时间复杂度时间复杂度时间复杂度时间复杂度:一般情况,算法中基本操作重复执行的次数是问题规
7、模n的一个函数f(n),算法的时间度量记做T(n)=O(f(n),表示随着问题规模n的增大,算法执行时间的增长率和f(n)的增长率相同,称做算法的渐近时间复杂度渐近时间复杂度,简称时间复杂度时间复杂度。2022-8-5计算机应用技术研究所计算机应用技术研究所14&时间复杂度时间复杂度 为了更好地分析算法的效率,需要一些合适的方法来描述或度量函数值随自变量增长而增长的速度,如果不能精确地算出函数增长的速度,那么至少也要针对函数增长的不同速度划分出若干性质不同的等级,这就是函数增长的阶函数增长的阶。2022-8-5计算机应用技术研究所计算机应用技术研究所15&时间复杂度时间复杂度另一方面,例如若复
8、杂度为多项式x x+x x,x的复杂度会被x的复杂所吸收,因此只需考虑最高阶最高阶。因此当输入规模足够大时,精确表示的运行时间函数中的常系数和低阶项会被输入规模所掩盖。此时,只需要考虑高阶高阶项项即可。2022-8-5计算机应用技术研究所计算机应用技术研究所16&时间复杂度时间复杂度 对于绝大多数算法来说,其复杂度的增长速度还可以使用基本或常用函数增长类型通过示例性的方法来描述或表示,如常数级、对数级、多项式级、指数级、阶乘级增长速度,等等。下面介绍一些常见的时间复杂度时间复杂度。2022-8-5计算机应用技术研究所计算机应用技术研究所17&时间复杂度时间复杂度2022-8-5计算机应用技术研
9、究所计算机应用技术研究所18&时间复杂度时间复杂度2022-8-5计算机应用技术研究所计算机应用技术研究所19&时间复杂度时间复杂度2022-8-5计算机应用技术研究所计算机应用技术研究所20&空间复杂度空间复杂度空间复杂度:空间复杂度:一个程序的空间复杂度是指运行完一个程序所需内存的大小。利用程序的空间,可以对程序的运行所需要的内存多少有个预先估计。一个程序执行时除了需要存储空间和存储本身所使用的指令、常数、变量和输入数据外,还需要一些对数据进行操作的工作单元和存储一些为现实计算所需信息的辅助空间辅助空间。&算法设计的基本知识算法设计的基本知识4 算法的基本概念算法的基本概念4 算法效率的度
10、量算法效率的度量J 算法设计应用举例算法设计应用举例2022-8-5计算机应用技术研究所计算机应用技术研究所22&例例 题题2022-8-5计算机应用技术研究所计算机应用技术研究所23&例例 题题2022-8-5计算机应用技术研究所计算机应用技术研究所24&例例 题题2022-8-5计算机应用技术研究所计算机应用技术研究所25&例例 题题【例题】(找假币问题)有12枚外观相同的硬币,要么全是真币,要么仅有一枚是假币。我们并不知道假币比真币重还是轻,你可以使用一个没有砝码的两盘天平秤,确定是否所有的硬币都是真币。如果有假币,找出那个假币并判断假币和真币相比孰轻孰重。设计一个算法,能够在使用最少称
11、重次数的情况下解决设计一个算法,能够在使用最少称重次数的情况下解决这个问题。这个问题。2022-8-5计算机应用技术研究所计算机应用技术研究所262022-8-5计算机应用技术研究所计算机应用技术研究所27&例例 题题【例题】(受限汉诺塔问题)如图(受限汉诺塔问题)如图2-22-2所示。设计一个所示。设计一个算法来求解该问题,使得所有的移动次数最小。算法来求解该问题,使得所有的移动次数最小。2022-8-5计算机应用技术研究所计算机应用技术研究所28&例例 题题2022-8-5计算机应用技术研究所计算机应用技术研究所29&例例 题题【解】续2)将源柱子上最下面的盘子移动到中间柱子上,如下图所示
12、。2022-8-5计算机应用技术研究所计算机应用技术研究所30&例例 题题2022-8-5计算机应用技术研究所计算机应用技术研究所31&例例 题题【解】续4)将中间柱子上的盘子移动到目的柱子上,如下图所示。2022-8-5计算机应用技术研究所计算机应用技术研究所32&例例 题题2022-8-5计算机应用技术研究所计算机应用技术研究所33&例例 题题2022-8-5计算机应用技术研究所计算机应用技术研究所342022-8-52022-8-5整数的基本知识整数的基本知识1 1 同余算术及其应用同余算术及其应用2 2算法设计的基本算法设计的基本知识知识3 3算法设计策略与应用算法设计策略与应用4 4
13、&本章学习内容本章学习内容2022-8-5计算机应用技术研究所计算机应用技术研究所36算法设计策略与应用算法设计策略与应用&算法设计策略与应用算法设计策略与应用J 蛮力与贪心策略蛮力与贪心策略4 递归与分治策略递归与分治策略4 回溯与动态规划策略回溯与动态规划策略2022-8-5计算机应用技术研究所计算机应用技术研究所38&算法设计算法设计思考一下,如何用算法解决以下数学问题?2022-8-5计算机应用技术研究所计算机应用技术研究所39&算法设计算法设计计算机问题求解算法虽然千差万别,但都遵循一些基本的设计策略。这些策略蕴含着很多非常深刻而又普适的求解智慧。通过不断学习、领会和掌握这些智慧,就
14、可逐步形成良好的算法思维,从而能够更加透彻地从本质上理解算法设计的精髓,为设计出高水平算法打下坚实的基础。2022-8-5计算机应用技术研究所计算机应用技术研究所40&蛮力策略蛮力策略l 就像宝剑不是撬棍一样,科学也很少使用蛮力l 认真做事往往是浪费时间蛮力真的没用吗?2022-8-5计算机应用技术研究所计算机应用技术研究所41&蛮力策略蛮力策略蛮力策略或蛮力法,亦称为穷举法或暴力法,就是用最原始、最暴力的方式解决问题,基本思路是以扫描的模式依次处理问题域所有元素,并将所有可能的结果枚举出来,进而实现对问题的求解。从算法思想的角度来看,蛮力法直接基于问题的描述和所涉及概念的定义来解决问题,即用
展开阅读全文