算法的五个重要的特征

合集下载

算法设计技巧与分析习题答案

算法设计技巧与分析习题答案

算法设计技巧与分析习题答案【篇一:算法设计与分析考试题及答案】一特殊类型问题的一系列运算,此外,算法还应具有以下五个重要特性:_________,________,________,__________,__________。

2.算法的复杂性有_____________和___________之分,衡量一个算法好坏的标准是______________________。

3.某一问题可用动态规划算法求解的显著特征是____________________________________。

4.若序列x={b,c,a,d,b,c,d},y={a,c,b,a,b,d,c,d},请给出序列x和y的一个最长公共子序列_____________________________。

5.用回溯法解问题时,应明确定义问题的解空间,问题的解空间至少应包含___________。

6.动态规划算法的基本思想是将待求解问题分解成若干____________,先求解___________,然后从这些____________的解得到原问题的解。

7.以深度优先方式系统搜索问题解的算法称为_____________。

8.0-1背包问题的回溯算法所需的计算时间为_____________,用动态规划算法所需的计算时间为____________。

9.动态规划算法的两个基本要素是___________和___________。

10.二分搜索算法是利用_______________实现的算法。

二、综合题(50分)1.写出设计动态规划算法的主要步骤。

2.流水作业调度问题的johnson算法的思想。

3.若n=4,在机器m1和m2上加工作业i所需的时间分别为ai和bi,且(a1,a2,a3,a4)=(4,5,12,10),(b1,b2,b3,b4)=(8,2,15,9)求4个作业的最优调度方案,并计算最优值。

4.使用回溯法解0/1背包问题:n=3,c=9,v={6,10,3},w={3,4,4},其解空间有长度为3的0-1向量组成,要求用一棵完全二叉树表示其解空间(从根出发,左1右0),并画出其解空间树,计算其最优值及最优解。

算法设计与分析考试题及答案

算法设计与分析考试题及答案

一、填空题(20分)1.一个算法就是一个有穷规则的集合,其中之规则规定了解决某一特殊类型问题的一系列运算,此外,算法还应具有以下五个重要特性:_________,________,________,__________,__________。

2.算法的困难性有_____________和___________之分,衡量一个算法好坏的标准是______________________。

3.某一问题可用动态规划算法求解的显著特征是____________________________________。

4.若序列X={B,C,A,D,B,C,D},Y={A,C,B,A,B,D,C,D},请给出序列X和Y的一个最长公共子序列_____________________________。

5.用回溯法解问题时,应明确定义问题的解空间,问题的解空间至少应包含___________。

6.动态规划算法的基本思想是将待求解问题分解成若干____________,先求解___________,然后从这些____________的解得到原问题的解。

7.以深度优先方式系统搜寻问题解的算法称为_____________。

8.0-1背包问题的回溯算法所需的计算时间为_____________,用动态规划算法所需的计算时间为____________。

9.动态规划算法的两个基本要素是___________和___________。

10.二分搜寻算法是利用_______________实现的算法。

二、综合题(50分)1.写出设计动态规划算法的主要步骤。

2.流水作业调度问题的johnson算法的思想。

3.若n=4,在机器M1和M2上加工作业i所需的时间分别为a i和b i,且(a1,a2,a3,a4)=(4,5,12,10),(b1,b2,b3,b4)=(8,2,15,9)求4个作业的最优调度方案,并计算最优值。

4.运用回溯法解0/1背包问题:n=3,C=9,V={6,10,3},W={3,4,4},其解空间有长度为3的0-1向量组成,要求用一棵完全二叉树表示其解空间(从根动身,左1右0),并画出其解空间树,计算其最优值及最优解。

计算机科学第5章 数据结构与算法

计算机科学第5章 数据结构与算法
开始 开始 开始 处理步骤1 处理步骤1 处理步骤1
处理步骤2
符合条件
分支条件 不符合条件 符合条件 进入循环
循环条件 不符合条件 循环结束

分支1
分支2
循环体
处理步骤N
处理步骤N
处理步骤N
结束
(a)顺序结构
结束
(b)分支结构
结束
(c)循环结构
图 5-3 算法基本结构示意图
5.1 数据结构概述
5.1.2 算法
在大多数情况下,时间和空间因素可以进行相应转换,具体选择时可根
据实际需要和成本因素确定选择什么策略。 另外,需要提醒一点,不是时间复杂度高,算法的数学复杂程序就高。
使用更高级的数学方法,能够以更少的时间和空间代价获取处理结果。
这时,用于算法执行的时间虽然少了,但是用于算法设计的时间会大大 增加。如果设计出的程序有足够多的使用率,代价总体上是值得的。
5.1 数据结构概述
5.1.2 算法
用计算机解决一个复杂的实际问题,大体需要如下的步骤。 (1)将实际问题数学化,即把实际问题抽象为一个带有一般性的数学 问题。这一步要引入一些数学概念,精确地阐述数学问题,弄清问题的 已知条件、所要求的结果、以及在已知条件和所要求的结果之间存在着 的隐式或显式的联系。 (2)对于确定的数学问题,设计其求解的方法,即所谓的算法设计。 这一步要建立问题的求解模型,即确定问题的数据模型并在此模型上定 义一组运算,然后借助于对这组运算的调用和控制,从已知数据出发导 向所要求的结果,形成算法并用自然语言来表述。这种语言还不是程序 设计语言,不能被计算机所接受。 (3)用计算机上的一种程序设计语言来表达已设计好的算法。换句话 说,将非形式自然语言表达的算法转变为一种程序设计语言表达的算法。 这一步叫程序设计或程序编制。 (4)在计算机上编辑、调试和测试编制好的程序,直到输出所要求的 结果。

大学计算机基础第五章

大学计算机基础第五章

大学计算机基础第五章第五章软件技术基础1.程序设计语言(1)机器语言和汇编语言由计算机硬件系统可以识别的指令组成的语言称为机器语言。

汇编语言是将机器指令映射为一些可以被人读懂的助记符。

由于计算机只能识别机器语言,所以汇编语言通常需要通过汇编程序翻译为机器语言。

汇编语言的翻译软件称为汇编程序,它可以将程序员写的助记符直接转换为机器指令,然后由计算机去识别和执行。

用机器语言编写的程序是计算机可以直接执行的程序。

用机器语言编写的程序,代码长度短,执行效率高。

但是,这种语言的缺点也很明显。

最主要的是编写机器语言程序必须要熟知CPU 的指令代码,编写程序既不方便,又容易出错,调试查错也非常困难。

而且编写的程序只能在特定的机器上运行,没有通用性。

(2)高级语言高级语言源程序翻译为指令代码有两种做法:编译或者解释。

编译通过编译程序来完成。

解释则是通过解释程序完成。

解释的结果产生可以直接执行的指令。

编译的结果是得到目标程序。

目标程序也是要经过连接才会得到可执行程序目前应用比较广泛的几种高级语言由FORTRAN/BASIC/PASCAL/C等。

(3)面向对象的语言(4)未来的语言2、语言处理程序语言处理程序是把源程序翻译成机器语言的程序,可分为三种:汇编程序、编译程序和解释程序。

(1)汇编程序把汇编语言源程序翻译成机器语言程序的程序称为汇编程序,翻译的过程称为汇编。

汇编程序在翻译源程序时,总是对源程序从头到尾一个符号一个符号地进行阅读分析,一般用两遍扫描完成对源程序的加工转换工作。

汇编语言在翻译的同时,还对各种形式的错误进行检查和分析,并反馈给用户,以便修改。

反汇编程序也是一种语言处理程序,它的功能与汇编程序相反,它能把机器语言程序转换成汇编语言程序。

(2)编译程序编译程序是把高级语言源程序(如Fortran、Pascal、C 等)翻译成目标程序(机器语言程序)的一种程序,翻译的过程称为编译。

(3)解释程序解释程序也是一种对高级语言源程序进行翻译处理及的程序。

项目五 描述洗衣机的洗衣流程3

项目五  描述洗衣机的洗衣流程3

项目五描述洗衣机的洗衣流程——了解算法及其基本控制结构
盆中加入适量的水和洗衣粉,搅拌均匀搓揉衣服用清水漂洗将衣服从盆里拿
起,拧干
总结得出:手工洗衣过程的自然语言描述——手工洗衣自然语言算法,从而引出算法(algorithm)的概念:在有限步骤内解决问题所使用的方法。

二、介绍新知、引出问题,激发学生兴趣。

(1)通过对学生较为熟悉的洗衣机洗衣服的具体过程进行分析,展示具体分解步骤(可给出流程图的概念):
(2)归纳总结洗衣机洗过程自然语言算法如下:
2.1 电动机正转30 秒;
2.2 停2 秒;
2.3 电动机反转30 秒;
2.4 停2 秒。

(3)总结:算法就是做什么,怎么做的问题描述。

探讨洗衣机洗衣服任务的完成情况,引导学生探索发现算法特征并归纳算法的特征:有穷性、确定性、有零个或多个输入、有一个或多个输出、可行性等五个特征。

三、讨论算法的描述方法以及算法描述的评价。

(1)大屏幕分别展示对同一过程的描述方法,引导学生发现不同。

自然语言算法
流程图描述算法。

2025年云南中考信息技术总复习考点突破课件:模块七+算法与程序设计初步

2025年云南中考信息技术总复习考点突破课件:模块七+算法与程序设计初步
条件
不同的分支
用流程图描述分支结构的算法时,流程线会从____________( )上面进入,从条件判断框的左、右或者下面走出__________,分别是__________的分支(表示为“是”或者“”或者“ ”)和____________的分支(表示为“否”或者“”或者“ ”),分别对应______的解决步骤。算法在执行时,先判断条件是否满足,若______则执行“是”(或者表示为“”/“ ”)下的__________,如果判断条件________,则执行“否”(或者表示为“”/“ ”)下的__________。
B
A. 顺序结构 B. 分支结构 C. 循环结构 D. 网络结构
10.在如图所示的流程图执行程序中,如果输入 的值是4,那么输出 的值为( )
A
A. 13 B. 11 C. 12 D. 10
5.下列流程图中,能用于表示循环结构的是( )
D
A. B. C. D.
条件
重复执行
条件判断框
两条分支
重复执行
退出循环
满足
再次
退出循环
单项选择题
1.某购票网站的购票流程如右图,此流程的描述采用的方式是( )
C
A. 自然语言 B. 机器语言C. 流程图 D. 程序设计语言
2.下列描述中,更适合用程序设计来解决的是( )
C
A. 加工数码相机拍摄的照片 B. 制作电子报刊C. 计算1 000以内的偶数之和 D. 在因特网上查找自己喜欢的音乐
6.某个停车场的每个车位的上方都装有车位探测器,前方装有车位指示灯(空位显示绿色,否则显示红色),车位指示灯的控制算法如右图,这个流程图描述的车位指示灯的控制算法是________结构的算法( )

第5课 用自然语言描述算法

第5课 用自然语言描述算法
但是,用自然语言描述比较复杂的算法时,会显得很冗长,表达不够直观、清晰,且在描述上容易出现歧义,容易引起算法步骤的不确定性。
算法是解决问题过程中“做什么”和“怎么做"的步骤的描述,一个算法必须满足有穷性、确定性、可行性、有零个或多个输入,有一个或多个输出这五个特征。
1.有穷性
算法必须是由有限个步骤组成,即算法一定要能够结束。
学习
目标
1.信息意识:学生能够识别并理解算法在日常生活和学习中的重要性,意识到算法是解决问题的一种有效方式。
2.计算思维:学生掌握用自然语言清晰、准确地描述算法的能力,理解算法的有穷性、确定性、可行性等核心特点。
3.数字化学习与创新:学生能够利用数字化工具记录、整理和分享自己描述的算法,提升数字化学习能力。培养创新解决问题的能力。
2.确定性
算法中的每一个步骤都应该是确定的、没有歧义的。模糊不清、模棱两可或带有二义性的描述都会影响算法的确定性。
3.可行性
算法的可行性就是指每一个步骤都可以被计算机执行,可以方便地用来解决某一类问题。
4.有零个或多个输入
输入就是算法在执行时要从外部获取的数据。输人可以是多个,也可以是零个,零个输人并不代表这个算法没有输入数据,所需数据一般已包含在算法中,只是这个输入的数据没有直观地显现出来。
4.信息社会责任:在描述算法的过程中,学生能够意识到算法使用的伦理和社会责任。确保算法描述的准确性和公正性。
重点
掌握用自然语言描述算法
难点
能运用自然语言描述学习生活中的算法
教学过程
教学环节
教师活动
学生活动
设计意图
导入新课
作曲家想让钢琴家演奏他创作的新作品,首先他要写出琴谱然后钢琴家才能根据琴谱进行演奏。同样地,设计出一个解决问题的算法,也需要用能被算法执行者(人或者机器)理解的形式加以呈现,才能被算法执行者理解并执行。算法的这种呈现方式就称为算法的描述。

第二课 算法的特征(课件)五年级上册信息技术电子工业出版社

第二课 算法的特征(课件)五年级上册信息技术电子工业出版社
生活与算法
算法
算法是通过明确的、可执行的 操作步骤来解决问题的方法和步骤。
算法
同一个问题可以用不同的算法来解决。 不同的算法解决问题的效率不一样。
算法
不断思考更优的方法来优化算法, 高效的解决问题。
1 情景导入
蒙眼游戏
2人一组,一个说指令,一个蒙眼 说指令者不能碰到蒙眼者 通过指令,引导蒙眼者 越过障碍物到达指定位置 若碰到障碍物就算挑战失败 记录哪一组用时最少则获胜
结算系统进行扣费 扣费成功提醒,显示余额 余额不足?余额不足?
2 新知学习
测一测
3 探索实践
寻找身边算法的案例 说一说这个算法案例中 “输入”、“计算”、“输出”环节分别是什么?
3 探索实践
测一测
3 探索实践
想一想
算法的特征
0个或多个 输入 1个或多个 输出
确定性 有穷性 可行性
4 拓展提高
1 情景导入
蒙眼游戏成功的关键是什么
算法的特征
2 新知学习
食堂智能结算系统
小组讨论
食堂的结算系统如何实 现不同菜品自动结算并 扣费的?
2 新知学习
食堂智能结算系统
给不同的盘子定不同ຫໍສະໝຸດ 价格 根据不同的盘子累计金额结算系统进行扣费 扣费成功提醒,显示余额 余额不足?余额不足?
2 新知学习
给不同的盘子定不同的价格 根据不同的盘子累计金额
某同学制定了新学期语文学习计划: 阅读10本书,大概2000页左右,
摘抄好词好句500条左右,每周写一篇周记 你用今天学习的“算法思维”
帮助他制定更明确的学习计划吗?

算法设计与分析考试题及答案

算法设计与分析考试题及答案

1.一个算法就是一个有穷规则的集合,其中之规则规定了解决某一特殊类型问题的一系列运算,此外,算法还应具有以下五个重要特性:_________,________,________,__________,__________。

2.算法的复杂性有_____________和___________之分,衡量一个算法好坏的标准是______________________。

3.某一问题可用动态规划算法求解的显著特征是____________________________________。

4.若序列X={B,C,A,D,B,C,D},Y={A,C,B,A,B,D,C,D},请给出序列X 和Y的一个最长公共子序列_____________________________。

5.用回溯法解问题时,应明确定义问题的解空间,问题的解空间至少应包含___________。

6.动态规划算法的基本思想是将待求解问题分解成若干____________,先求解___________,然后从这些____________的解得到原问题的解。

7.以深度优先方式系统搜索问题解的算法称为_____________。

8.0-1背包问题的回溯算法所需的计算时间为_____________,用动态规划算法所需的计算时间为____________。

9.动态规划算法的两个基本要素是___________和___________。

10.二分搜索算法是利用_______________实现的算法。

二、综合题(50分)1.写出设计动态规划算法的主要步骤。

2.流水作业调度问题的johnson算法的思想。

3.若n=4,在机器M1和M2上加工作业i所需的时间分别为a i和b i,且(a1,a2,a3,a4)=(4,5,12,10),(b1,b2,b3,b4)=(8,2,15,9)求4个作业的最优调度方案,并计算最优值。

4.使用回溯法解0/1背包问题:n=3,C=9,V={6,10,3},W={3,4,4},其解空间有长度为3的0-1向量组成,要求用一棵完全二叉树表示其解空间(从根出发,左1右0),并画出其解空间树,计算其最优值及最优解。

浙教版(2023)小学信息技术五年级上册第5课《算法的特征》教案及反思

浙教版(2023)小学信息技术五年级上册第5课《算法的特征》教案及反思

浙教版(2023)小学信息技术五年级上册第5课《算法的特征》教案及反思一、教材分析本节课内容选自小学信息技术五年级上册《算法的特征》一课。

本课是信息技术课程中关于算法概念的重要章节,旨在通过具体实例,让学生理解算法的基本概念和特征,为后续学习编程和算法设计打下基础。

教材通过生活中的实例,引导学生从直观上感受算法的存在,进而理解算法在解决问题中的重要作用。

二、教学目标1. 知识与技能:- 理解算法的基本概念,知道算法是解决问题的方法和步骤。

- 掌握算法的基本特征,包括有穷性、确定性、无二义性、输入和输出等。

- 能用自然语言描述简单问题的算法。

2. 过程与方法:- 通过观察、分析和讨论,培养学生的逻辑思维能力和问题解决能力。

- 学会运用算法思想,解决生活和学习中的简单问题。

3. 情感态度与价值观:- 激发学生对算法学习的兴趣,培养自主学习和探究精神。

- 培养学生的合作意识和团队精神,在合作中共同学习、共同进步。

三、教学重难点1. 教学重点:- 理解算法的概念和特征。

- 掌握用自然语言描述简单问题的算法。

2. 教学难点:- 理解算法的无二义性特征,确保算法描述的准确性和唯一性。

- 培养学生将实际问题抽象为算法问题的能力。

四、学情分析五年级学生已经具备了一定的信息技术基础,对计算机操作有一定的熟练度。

同时,他们正处于逻辑思维能力和问题解决能力发展的关键时期,对新知识充满好奇和探究欲望。

然而,由于算法概念较为抽象,学生可能难以直接理解其内涵,需要通过具体实例和实践活动来加深理解。

五、教学过程1. 导入新课- 提问学生:“你们知道什么是算法吗?它在我们日常生活中有哪些应用?”- 展示一些生活中算法的实例(如:菜谱、地图导航、计算器等),引起学生兴趣。

2. 探究新知- 讲解算法的定义和特征(明确性、有限性、无二义性、可执行性等),并通过图示帮助理解。

- 分组让学生列举身边的算法实例,并进行分享讨论。

3. 案例分析- 展示一个简单算法案例(如:计算1到100的和),引导学生分析算法的基本步骤。

算法的五个重要的特征

算法的五个重要的特征

1、算法的五个重要的特征:确定性、能行性、输入、输出、有穷性/有限性。

2、表示算法的语言主要有:自然语言、流程图、盒图、PAD 图、伪代码、计算机程序设计语言3、算法分析有两个阶段:事前分析和时候测试。

4、衡量算法有几个方面:时间和空间。

5、渐进意义下的符号的意义: 记:算法的计算时间为f(n), 数量级限界函数为g(n), 其中,n 是输入或输出规模的某种测度。

f(n)表示算法的实际”执行时间一与机器及语言有关。

g( n)是形式简单的函数,如nm,logn,2n,n!等。

是事前分析中通过对计算时间或频率计数统计分析所得的与机器及语言无关的函数。

以下给出算法执行时间:上界( 0)、下界(Q )、“平均”( )的定义。

定义1.1如果存在两个正常数c和NO,对于所有的N> NO,有|f(N)|w C|g(N)|,则记作:f(N)= O(g(N))。

1) 当说一个算法具有0(g(n))的计算时间时,指的就是如果此算法用n 值不变的同一类数据在某台机器上运行时,所用的时间总是小于g(n)的一个常数倍。

2) g(n)是计算时间f(n)的一个上界函数,f(n)的数量级就是g(n)。

Eg :因为对所有的N > 1有3N < 4N,所以有3N=O(N);因为当N > 1 时有N+1024 < 1025N,所以有N+1024=O(N); 因为当N > 10时有2N2+11N-10W 3N2,所以有2N2+11N-1O=O(N2)因为对所有N A 1有N2< N3,我们有N2=O(N3)作为一个反例N3丰O(N2),因为若不然,则存在正的常数C 和自然数N0,使得当N A N0,有N3W CN2,即N< C。

显然,当取N=max{ N0,C+1}时这个不等式不成立,所以N3丰O(N2)多项式定理:定理1.1 若A(n) = amnm+, +a1n+a0 是一个m 次多项式,则有A(n)= O (nm)即:变量n的固定阶数为m的任一多项式,与此多项式的最高阶nm 同阶。

浙教版信息科技五上第5课 算法的特征 教案(表格式)

浙教版信息科技五上第5课 算法的特征 教案(表格式)

练习
根据算法的特征,准确描述购买某种商品时超市自动收银的算法。

可是用流程图进行表述,并标记出算法的三个特性的具体体现
教学总结反思
1本节课以真实的生活实例为情境,引导学生在问题解决过程中发现算法的基本特性,并探究其内在规律。

2.通过流程图知识与技能的迁移,结合实践巩固算法的基本特性。

3.本节课理论部分较多,在组织学生合作交流的形式上应更加多样化,充分调动学生积极性,并且结合实践操作,提升学生动手实践能力和问题解决能力。

第一章 算法的概念

第一章 算法的概念

§1.1算法与程序框图1.1.1算法的概念学习目标1.了解算法的含义和特征.2.会用自然语言描述简单的具体问题的算法.知识点一算法的概念知识点二算法的特征算法的五个特征(1)有限性:一个算法的步骤是有限的,它应在有限步操作之后停止.(2)确定性:算法中的每一步应该是确定的,并且能有效地执行且得到确定的结果,而不是模棱两可的.(3)逻辑性:算法从初始步骤开始,分为若干个明确的步骤,前一步是后一步的前提,只有完成前一步,才能进行下一步,而且每一步都是正确无误的,从而组成具有很强逻辑性的步骤序列.(4)普遍性:一个确定的算法,应该能够解决一类问题.(5)不唯一性:求解某一个问题的算法不一定只有唯一的一个,也可以有不同的算法.特别提醒:判断一个问题是不是算法,关键是明确算法的含义及算法的特征.知识点三算法的设计1.设计算法的目的设计算法的目的实际上是寻求一类问题的解决方法,它可以通过计算机来完成.设计算法的关键是把过程分解成若干个明确的步骤,然后用计算机能够接受的“语言”准确地描述出来,从而达到让计算机执行的目的.2.设计算法的要求①写出的算法必须能解决一类问题.②要使算法尽量简单、步骤尽量少.③要保证算法步骤有效,且计算机能够执行.1.算法是解决一个问题的方法.(×)2.一个算法可以产生不确定的结果.(×)3.算法的步骤必须是明确的、有限的.(√)4.求解一类问题的算法是唯一的.(×)题型一对算法概念的理解例1下列说法正确的是()A.算法就是某个问题的解题过程B.算法执行后可以产生不同的结果C.解决某一个具体问题算法不同,则结果不同D.算法执行步骤的次数不可以很多,否则无法实施★答案★ B解析选项B正确,例如:判断一个整数是否为偶数,结果为“是偶数”和“不是偶数”两种;选项A,算法不能等同于解法;选项C,解决某一个具体问题算法不同,但结果应相同;选项D,算法可以为很多次,但不可以为无限次.反思感悟算法实际上是解决问题的一种程序性方法,它通常解决某一个或一类问题,用算法解决问题,体现了从特殊到一般的数学思想.跟踪训练1下列描述不是解决问题的算法的是()A.从中山到北京先坐汽车,再坐火车B.解可化为一元一次方程的分式方程的步骤是去分母、去括号、移项、合并同类项、系数化为1C.方程x2-4x+3=0有两个不相等的实根D.解不等式ax+3>0时,第一步移项,第二步讨论★答案★ C解析A选项,从中山到北京,先坐汽车,再坐火车,解决了怎样去的问题;B选项,解可化为一元一次方程的分式方程的步骤:去分母、去括号、移项、合并同类项、系数化为1,解决了怎样解一元一次方程的问题;D选项,解不等式ax+3>0时,第一步移项,将不等式化为ax>-3,第二步讨论a的符号,进而根据不等式的基本性质,求出不等式的解集,解决了怎样求不等式解集的问题; 选项C 只是一个真命题,没有解决什么问题,因此不是算法.题型二 算法的设计命题角度1 直接应用数学公式设计算法例2 有一个底面半径为3,母线长为5的圆锥,写出求该圆锥体积的算法.解 如图,先给r ,l 赋值,计算h ,再根据圆锥体积公式V =13πr 2h 计算V ,然后输出结果.第一步,令r =3,l =5. 第二步,计算h =l 2-r 2. 第三步,计算V =13πr 2h .第四步,输出运算结果.反思感悟 利用公式解决问题时,必须先求出公式中的各个量,在设计算法时,应优先考虑未知量的求法.跟踪训练2 已知一个等边三角形的周长为a ,求这个三角形的面积.设计一个算法解决这个问题.解 第一步,输入a 的值. 第二步,计算l =a3的值.第三步,计算S =34×l 2的值. 第四步,输出S 的值.命题角度2 非数值性问题的算法例3所谓正整数p为素数是指:p的所有约数只有1和p.例如,35不是素数,因为35的约数除了1,35外,还有5与7;29是素数,因为29的约数就只有1和29.试设计一个能够判断一个任意正整数n(n>1)是否为素数的算法.解算法如下:第一步,给出任意一个正整数n(n>1).第二步,若n=2,则输出“2是素数”,判断结束.第三步,令m=1.第四步,将m的值增加1,仍用m表示.第五步,如果m≥n,则输出“n是素数”,判断结束.第六步,判断m能否整除n,①如果能整除,则输出“n不是素数”,判断结束;②如果不能整除,则转第四步.反思感悟设计一个具体问题的算法,通常按以下步骤(1)认真分析问题,找出解决该问题的一般数学方法.(2)借助有关变量或参数对算法加以表述.(3)将解决问题的过程划分为若干步骤.(4)用简练的语言将这个步骤表示出来.跟踪训练3判断一个大于2的整数是否为质数的算法步骤如何设计?解第一步,给定大于2的整数n.第二步,令i=2.第三步,用i除n,得到余数r.第四步,判断“r=0”是否成立.若是,则n不是质数,结束算法;否则,将i的值增加1,仍用i表示.第五步,判断“i>(n-1)”是否成立.若是,则n是质数,结束算法;否则,返回第三步.解方程组的算法设计典例 写出解方程组⎩⎪⎨⎪⎧2x +y =7,①4x +5y =11②的一个算法.解 方法一 (代入消元法) 第一步,由①得y =7-2x .③ 第二步,将③代入②,得4x +5(7-2x )=11.④ 第三步,解④得x =4.第四步,将x =4代入③,得y =-1.第五步,得到方程组的解为⎩⎪⎨⎪⎧x =4,y =-1.方法二 (加减消元法)第一步,①×5-②得,(2×5-4)x =7×5-11.⑤ 第二步,解⑤得x =4.第三步,①×2-②,得(1×2-5)y =7×2-11.⑥ 第四步,解⑥得y =-1.第五步,得到方程组的解为⎩⎪⎨⎪⎧x =4,y =-1.[素养评析] (1)设计算法时,经常遇到解方程组的算法问题,一般是按照数学上解方程组的方法进行设计,但应注意全面考虑方程组解的情况,即先确定方程组是否有解,有解时有几个解,然后依据求解步骤设计算法步骤.(2)从对运算方法的选择,运算程序的设计,到最后求得运算结果,整个过程就是典型的数学运算素养的体现.1.下列关于算法的说法正确的是()A.一个算法的步骤是可逆的B.描述算法可以有不同的方式C.算法可以看成是按照要求设计好的、有限的、确切的计算序列,并且这样的步骤或序列只能解决当前问题D.算法只能用一种方式显示★答案★ B解析由算法的定义知A,C,D错.2.下列叙述中:①植树需要运苗、挖坑、栽苗、浇水这些步骤;②按顺序进行下列运算:1+1=2,2+1=3,3+1=4,…,99+1=100;③从青岛乘火车到济南,再从济南乘飞机到广州;④3x>x+1;⑤求所有能被3整除的正数,即3,6,9,12,….能称为算法的个数为()A.2B.3C.4D.5★答案★ B解析根据算法的含义和特征知,①②③都是算法;④⑤不是算法.其中④只是一个问题,而没有解决问题,不能称为算法;⑤的步骤是无穷的,与算法的有限性矛盾.3.已知直角三角形两直角边长为a,b,求斜边长c的一个算法分下列三步:(1)计算c=a2+b2;(2)输入直角三角形两直角边长a,b的值;(3)输出斜边长c的值.其中正确的顺序是________. ★答案★ (2)(1)(3)解析 算法的步骤是有先后顺序的,第一步是输入,最后一步是输出,中间的步骤是赋值、计算.4.下面是解决一个问题的算法: 第一步:输入x .第二步:若x ≥4,转到第三步;否则转到第四步. 第三步:输出2x -1. 第四步:输出x 2-2x +3.当输入x 的值为________时,输出的数值最小值为________. ★答案★ 1 2解析 所给算法解决的问题是求分段函数f (x )=⎩⎪⎨⎪⎧2x -1,x ≥4,x 2-2x +3,x <4的函数值问题,当x ≥4时,f (x )=2x -1≥2×4-1=7;当x <4时,f (x )=x 2-2x +3=(x -1)2+2≥2,所以f (x )min =2,此时x =1.即输入x 的值为1时,输出的数值最小,最小值为2. 5.下面算法要解决的问题是____________________________. 第一步,输入三个数,并分别用a ,b ,c 表示.第二步,比较a 与b 的大小,如果a <b ,则交换a 与b 的值. 第三步,比较a 与c 的大小,如果a <c ,则交换a 与c 的值. 第四步,比较b 与c 的大小,如果b <c ,则交换b 与c 的值. 第五步,输出a ,b ,c .★答案★ 输入三个数a ,b ,c ,并按从大到小的顺序输出 解析 第一步是给a ,b ,c 赋值. 第二步运行后a >b . 第三步运行后a >c .第四步运行后b >c ,所以a >b >c .第五步运行后,显示a ,b ,c 的值,且从大到小排列.6.写出解二元一次方程组⎩⎪⎨⎪⎧3x -2y =-1,①2x +y =1 ②的算法.解 第一步,①+2×②得7x =1.③ 第二步,解③得x =17.第三步,②×3-①×2得7y =5.④ 第四步,解④得y =57.第五步,得到方程组的解为⎩⎨⎧x =17,y =57.1.算法的特点:有限性、确定性、逻辑性、普遍性、不唯一性. 2.算法设计的要求:(1)写出的算法必须能够解决一类问题(如判断一个整数是否为质数,求任意一个方程的近似解等),并且能够重复使用.(2)要使算法尽量简单,步骤尽量少.(3)要保证算法正确,且算法步骤能够一步一步执行,每步执行的操作必须确切,不能含混不清,而且在有限步后能得到结果.一、选择题1.下列可以看成算法的是( )A .学习数学时,课前预习,课上认真听讲并记好笔记,课下先复习再做作业,之后做适当的练习题B .今天餐厅的饭真好吃C .这道数学题难做D .方程2x 2-x +1=0无实数根★答案★ A解析 A 是学习数学的一个步骤,所以是算法.2.在用二分法求方程零点的算法中,下列说法正确的是( )A .这个算法可以求所有的零点B .这个算法可以求任何方程的零点C .这个算法能求所有零点的近似解D .这个算法可以求变号零点的近似解★答案★ D解析 二分法的理论依据是函数的零点存在性定理.它解决的是求变号零点的问题,并不能求所有零点的近似值.3.如下算法:第一步,输入x 的值.第二步,若x ≥0,则y =x .第三步,否则,y =x 2.第四步,输出y 的值.若输出的y 值为9,则x 的值为( )A .3B .-3C .3或-3D .-3或9 ★答案★ D解析 根据题意可知,此为分段函数y =⎩⎪⎨⎪⎧x ,x ≥0,x 2,x <0的算法, 当x ≥0时,x =9;当x <0时,x 2=9,所以x =-3.综上所述,x 的值是-3或9.4.对于算法:第一步,输入n .第二步,判断n 是否等于2,若n =2,则n 满足条件;若n >2,则执行第三步.第三步,依次从2到(n -1)检测能不能整除n ,若不能整除n ,则执行第四步;若能整除n ,则结束算法.第四步,输出n.满足条件的n是()A.质数B.奇数C.偶数D.合数★答案★ A解析此题首先要理解质数,只能被1和自身整除的大于1的整数叫质数.2是最小的质数,这个算法通过对2到(n-1)一一验证,看是否有其他约数,来判断其是否为质数.5.有蓝、黑两个墨水瓶,但现在却错把蓝墨水装在了黑墨水瓶中,黑墨水错装在了蓝墨水瓶中,要求将其互换,现有空墨水瓶若干,解决这一问题最少需要的步骤数为()A.2 B.3C.4 D.5★答案★ B解析第一步,将蓝墨水装到一个空墨水瓶中;第二步,将黑墨水装到黑墨水瓶中;第三步,将蓝墨水装到蓝墨水瓶中,这样就解决了这个问题,故选B.6.早上从起床到出门需要洗脸刷牙(5min)、刷水壶(2min)、烧水(8min)、泡面(3min)、吃饭(10min)、听广播(8min)几个过程.下列选项中最好的一种算法是()A.第一步,洗脸刷牙.第二步,刷水壶.第三步,烧水.第四步,泡面.第五步,吃饭.第六步,听广播B.第一步,刷水壶.第二步,烧水同时洗脸刷牙.第三步,泡面.第四步,吃饭.第五步,听广播C.第一步,刷水壶.第二步,烧水同时洗脸刷牙.第三步,泡面.第四步,吃饭同时听广播D.第一步,吃饭同时听广播.第二步,泡面.第三步,烧水同时洗脸刷牙.第四步,刷水壶★答案★ C解析最好算法的标准是方便、省时、省力.A中共需5+2+8+3+10+8=36(min),B中共需2+8+3+10+8=31(min),C中共需2+8+3+10=23(min),D中共需10+3+8+2=23(min),但算法步骤不合理,最好的算法为C.7.对于求18的正因数,给出下列两种算法:算法1:第一步,1是18的正因数,将1列出.第二步,2是18的正因数,将2列出.第三步,3是18的正因数,将3列出.第四步,4不是18的正因数,将4剔除.……第十八步,18是18的正因数,将18列出.算法2:第一步,18=2×9.第二步,18=2×32.第三步,列出所有的正因数1,2,3,32,2×3,2×32.则这两个算法()A.都正确B.算法1正确,算法2不正确C.算法1不正确,算法2正确D.都不正确★答案★ A解析算法1是用1~18的整数逐一验证,得出正因数.算法2是利用因数分解得到18的正因数.两种算法都正确.故选A.8.一个算法步骤如下:第一步,S取值0,i取值1.第二步,若i≤9,则执行第三步;否则,执行第六步.第三步,计算S+i并用结果代替S.第四步,用i+2的值代替i.第五步,转去执行第二步.第六步,输出S.运行以上算法,则输出的结果S等于()A.16 B.25C.36 D.以上均不对★答案★ B解析解本题关键是读懂算法,本题中的算法功能是求S=1+3+5+7+9=25.9.结合下面的算法:第一步,输入x.第二步,判断x是否小于0,若是,则输出x+2,否则执行第三步.第三步,输出x-1.当输入的x的值为-1,0,1时,输出的结果分别为()A.-1,0,1 B.-1,1,0C.1,-1,0 D.0,-1,1★答案★ C解析 依据算法可知,当x =-1时,满足x <0,则输出x +2=-1+2=1;当x =0时,不满足x <0,则输出x -1=0-1=-1;当x =1时,不满足x <0,则输出x -1=1-1=0.故选C.二、填空题10.下面给出了解决问题的算法:第一步:输入x .第二步:若x ≤1,则y =2x -1,否则y =x 2+3.第三步:输出y .(1)这个算法解决的问题是________;(2)当输入的x 值为________时,输入值与输出值相等.★答案★ (1)求分段函数y =⎩⎪⎨⎪⎧2x -1,x ≤1,x 2+3,x >1的函数值 (2)111.以下是解二元一次方程组⎩⎪⎨⎪⎧2x -y +6=0,①x +y +3=0 ②的一个算法,请将该算法补充完整. 第一步,①②两式相加得3x +9=0.③第二步,由③式可得________.④第三步,将④式代入①式得y =0.第四步,输出方程组的解为________.★答案★ x =-3 ⎩⎪⎨⎪⎧x =-3,y =0 解析 该算法的流程实质是解二元一次方程组的过程,由消元法易得.12.下面是求15和18的最小公倍数的算法,其中不恰当的一步是________.第一步,先将15分解素因数:15=3×5.第二步,然后将18分解素因数:18=32×2.第三步,确定它们的所有素因数:2,3,5.第四步,计算出它们的最小公倍数:2×3×5=30.★答案★ 第四步解析 素因数2,3,5的最高指数是1,2,1,算出它们的最小公倍数为2×32×5=90.三、解答题13.某商场举办优惠促销活动.若购物金额在800元以上(不含800元),打7折;若购物金额在400元以上(不含400元),800元以下(含800元),打8折;否则,不打折.请为商场收银员设计一个算法,要求输入购物金额x ,输出实际交款额y .解 算法步骤如下:第一步,输入购物金额x(x>0).第二步,判断“x>800”是否成立,若是,则y=0.7x,转第四步;否则,执行第三步.第三步,判断“x>400”是否成立,若是,则y=0.8x,转第四步;否则,y=x.第四步,输出y,结束算法.14.下面算法的功能是()第一步,令i=1.第二步,i除以3,得余数r.第三步,若r=0,则输出i;否则,执行第四步.第四步,令i的值增加1.第五步,若i≤1000,则返回第二步;否则,算法结束.A.求3的倍数B.求1至1000中3的倍数C.求i除以3D.求i除以3的余数★答案★ B解析由第二步和第三步可知,输出的是3的倍数,由第四步和第五步可知,输出的是1至1000中3的倍数.15.如图所示,汉诺塔问题是指有3根杆子A,B,C,杆子上有若干碟子,把所有的碟子从B杆移动到A杆上,每次只能移动一个碟子,大的碟子不能叠在小的碟子上面.把B杆上的3个碟子全部移动到A杆上,最少需要移动的次数是________.★答案★7解析直接进行分析,将最小的碟子命名为①,中间的碟子命名为②,最大的碟子命名为③,进行如下移动:①→A,②→C,①→C,③→A,①→B,②→A,①→A,此时按要求全部放好,移动7次.。

第5章 数据结构与算法 习题与答案

第5章 数据结构与算法 习题与答案

第五章习题(1)复习题1、试述数据和数据结构的概念及其区别。

数据是对客观事物的符号表示,是信息的载体;数据结构则是指互相之间存在着一种或多种关系的数据元素的集合。

(P113)2、列出算法的五个重要特征并对其进行说明。

算法具有以下五个重要的特征:有穷性:一个算法必须保证执行有限步之后结束。

确切性:算法的每一步骤必须有确切的定义。

输入:一个算法有0个或多个输入,以刻画运算对象的初始情况,所谓0个输入是指算法本身定除了初始条件。

输出:一个算法有一个或多个输出,以反映对输入数据加工后的结果。

没有输出的算法没有实际意义。

可行性:算法原则上能够精确地运行,而且人们用笔和纸做有限次运算后即可完成。

(P115)3、算法的优劣用什么来衡量?试述如何设计出优秀的算法。

时间复杂度空间复杂度(P117)4、线性和非线性结构各包含哪些种类的数据结构?线性结构和非线性结构各有什么特点?线性结构用于描述一对一的相互关系,即结构中元素之间只有最基本的联系,线性结构的特点是逻辑结构简单。

所谓非线性结构是指,在该结构中至少存在一个数据元素,有两个或两个以上的直接前驱(或直接后继)元素。

树型和图型结构就是其中十分重要的非线性结构,可以用来描述客观世界中广泛存在的层次结构和网状结构的关系。

(P118 P122)5、简述树与二叉树的区别;简述树与图的区别。

树用来描述层次结构,是一对多或多对一的关系;二叉树(Binary Tree)是个有限元素的集合,该集合或者为空、或者由一个称为根(root)的元素及两个不相交的、被分别称为左子树和右子树的二叉树组成。

二叉树是有序的,即若将其左、右子树颠倒,就成为另一棵不同的二叉树。

图也称做网,是一种比树形结构更复杂的非线性结构。

在图中,任意两个节点之间都可能相关,即节点之间的邻接关系可以是任意的,图表示的多对多的关系。

(P121-P124)6、请举出遍历算法在实际中使用的例子。

提示:根据实际生活中需要逐个访问处理的情况举例。

计算机科学概论 第5章 数据结构与算法

计算机科学概论 第5章 数据结构与算法

2 线性结构
2.3 串和数组 2.数组的定义和操作 • 数组的操作 initarray(&A,n,bound1,bound2...boundn) ——初始化 Destroyarray(&A) —— 删除数组 value(A,&e,index1,index2......indexn) —— 赋值 assign(&A,e,index1,index2......indexn) —— 分配数组
1 数据结构概述
1.4 算法及其描述和算法分析
5、算法与数据结构的关系: • 计算机科学家沃斯(N.Wirth)提出的: “算法+数据结构=程序” 揭示了程序设计的本质:对实际问题选择一种好的数据结构, 加上设计一个好的算法,而好的算法很大程度上取决于描述 实际问题的数据结构。算法与数据结构是互相依赖、互相联 系的。
2 线性结构
2.3 串和数组 1.串的定义和表示方法 • 串的表示方法 定长顺序存储表示 两种表示方法: 1)下标为0的数组存放长度 (pascal) typedef unsigned char SString[MAXSTLEN+1] ; 2)在串值后面加‘\0’结束 (C语言) 堆分配存储表示 串变量的存储空间是在程序执行过程中动态分配的, 程序中出现的所有串变量可用的存储空间是一个共享空 间,称为“堆”。
R={<1,2>,<1,3>,<2,4>,<2,5>,<2,6>,<2,8>,<3,2>,<3,4>,
<4,5>,<5,7>,<6,7>,<6,9>,<7,9>,<8,9>}

算法分析与设计期末复习题

算法分析与设计期末复习题

一、选择题1.一个.java文件中可以有〔〕个public类。

A.一个B.两个C.多个D.零个2.一个算法应该是〔〕A.程序B.问题求解步骤的描绘C.要满足五个根本特性D.A和C3.用计算机无法解决“打印所有素数〞的问题,其原因是解决该问题的算法违犯了算法特征中的〔〕A.唯一性B.有穷性C.有0个或多个输入D.有输出4.某校有6位学生参加学生会主席竞选,得票数依次为130,20,98,15,67,3。

假设采用冒泡排序算法对其进展排序,那么完成第二遍时的结果是〔〕A.3,15,130,20,98,67B.3,15,20,130,98,67C.3,15,20,67,130,98 D.3,15,20,67,98,1305.以下关于算法的描绘,正确的选项是〔〕A.一个算法的执行步骤可以是无限的B.一个完好的算法必须有输出C.算法只能用流程图表示D.一个完好的算法至少有一个输入6.Java Application源程序的主类是指包含有〔〕方法的类。

A、main方法B、toString方法C、init方法D、actionPerfromed方法7.找出满足各位数字之和等于5的所有三位数可采用的算法思路是〔〕A.分治法B.减治法C.蛮力法D.变治法8.在编写Java Application程序时,假设需要使用到标准输入输出语句,必须在程序的开头写上( )语句。

9.计算某球队平均年龄的部分算法流程图如下列图,其中:c用来记录已输入球员的人数,sum用来计算有效数据之和,d用来存储从键盘输入的球员年龄值,输入0时表示输入完毕。

图中空白处理框①和②处应填入的是〔〕A.①sum ←sum + d B.①sum ←sum + c②c ←c + 1②c ←c + 1C.①sum ←sum + d D.①sum ←sum + c②d ←d + 1 ②d ←d + 110.报名参加冬季越野赛跑的某班5位学生的学号是:5,8,11,33,45。

算法的五个主要特性

算法的五个主要特性

一、算法的五个主要特性:①有穷性②确定性③可行性④输入⑤输出二、算法复杂度(时间)(空间)三、数据结构(逻辑结构)(存储结构)(数据的操作)四、存储器映射方法:1、顺序映射2、链式映射(经常增删节点的复杂数据)3.索引映射(存储效率不高,常用方法)4散列映射五、数据元素的结构:集合、线性结构、树形结构、图状结构六、队列:限定了插入和删除操作的线性表八、树、①有且仅有一个特定的称为根的节点②当n>1时其余节点可分为m(m>0)个互不橡胶的有限级T1.T2…….Tm其中每一个集合本身是一棵树,称为子树。

九、二叉树的存储结构①顺序存储结构②链式存储结构十、算法通常由两种基本要素构成①对数据对象的运算和操作②算法的控制结构十一、算法:对某个问题处理方案的正确而完整的描述称为算法十二、数据结构:互相之间存在着一种或多种关系的数据元素的集合十三、完全二叉树:除最后一层外,每一层上的节点数均达到最大值,在最后一层上只缺少右边的若干缺点。

十四、二叉树①在二叉树的第i层至多有()个节点(I>=1)②深度为k的二叉树至多有()个节点③对任何一个二叉树T1,如果其终端节点数为n1,度为2的节点数为n2,则n1=n2+1 ④具有n个结点的完全二叉树的深度为k+1其中k是()的整数部分十五、度为0的结点(叶子节点)总是比度为2的结点多一个。

十六、如果对一棵有n个结点的完全二叉树的结点按层序编号,则对任一结点i(1<=I<=n)有:①如果i=1,则结点i是二叉树的根,无双亲;如果i>1,则其双亲是节点k,其中k是i/2的整数部分②如果2i>n,则节点i无左孩子,否则其左孩子是节点2i③如果2i+1>n 则节点i无右孩子,否则其右孩子是节点2i+1十七、遍历:前序遍历;根左右中序遍历;左根右后序遍历;左右根十八、程序设计:指设计,编制,调试程序的方法和过程。

十九、程序设计风格:指编写程序时所表现出的特点、习惯和逻辑思路二十、消息机制统一了数据流和控制流二十一、结构化程序设计方法得重要原则是:自顶向下,逐步求精,模块化,限制使用goto语句二十二、顺序结构,选择结构,重复结构共同特征:严格的只有一个入口和一个出口二十三、对象的特点:①标示唯一性②分类性③多态性④封装性⑤模块独立性好二十四、面向对象设计方法的基本特征:封装,多态,继承二十五、计算机软件的构成;程序、数据、及相关文档二十六、计算机软件的定义:与计算机系统操作有关的计算机程序规则,以及可能有的文件文档及数据。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1、算法的五个重要的特征:确定性、能行性、输入、输出、有穷性/有限性。

2、表示算法的语言主要有:自然语言、流程图、盒图、PAD图、伪代码、计算机程序设计语言3、算法分析有两个阶段:事前分析和时候测试。

4、衡量算法有几个方面:时间和空间。

5、渐进意义下的符号的意义:记:算法的计算时间为f(n), 数量级限界函数为g(n),其中,n是输入或输出规模的某种测度。

f(n)表示算法的“实际”执行时间—与机器及语言有关。

g(n)是形式简单的函数,如nm,logn,2n,n!等。

是事前分析中通过对计算时间或频率计数统计分析所得的与机器及语言无关的函数。

以下给出算法执行时间:上界(О)、下界(Ω)、“平均”()的定义。

定义1.1 如果存在两个正常数c和N0,对于所有的N ≥N0,有|f(N)|≤C|g(N)|,则记作:f(N)= O(g(N))。

1)当说一个算法具有O(g(n))的计算时间时,指的就是如果此算法用n值不变的同一类数据在某台机器上运行时,所用的时间总是小于g(n)的一个常数倍。

2)g(n)是计算时间f(n)的一个上界函数,f(n)的数量级就是g(n)。

Eg : 因为对所有的N≥1有3N≤4N,所以有3N=O(N);因为当N≥1时有N+1024≤1025N,所以有N+1024=O(N); 因为当N≥10时有2N2+11N-10≤3N2,所以有2N2+11N-10=O(N2)因为对所有N≥1有N2≤N3,我们有N2=O(N3)作为一个反例N3≠O(N2),因为若不然,则存在正的常数C 和自然数N0,使得当N≥N0,有N3≤CN2,即N≤C。

显然,当取N=max{N0,C+1}时这个不等式不成立,所以N3≠O(N2)多项式定理:定理1.1 若A(n) = amnm+…+a1n+a0是一个m次多项式,则有A(n)=Ο(nm) 即:变量n的固定阶数为m的任一多项式,与此多项式的最高阶nm同阶。

证明:取n0=1,当n≥n0时,有|A(n)|≤|am|nm+…+|a1|n+|a0| ≤(|am|+|am-1|/n+…+|a0|/nm) nm≤(|am|+|am-1|+…+|a0|) nm令c= |am|+|am-1|+…+|a0|定理得证。

符号O运算性质:(f,g为定义在正数集上的正函数) (1)O(f)+O(g)=O(max(f,g))(2)O(f)+O(g)=O(f+g)(3)O(f)O(g)=O(fg)(4)如果g(N)=O(f(N)),则O(f)+O(g)=O(f)(5)O(Cf(N))=O(f(N)),其中C是一正常数。

(6)f=O(f)定理 1.2 如果f(n) =am nm+.+a1n+a0 且am > 0,则f(n)=Ω(nm )。

该定义的优点是与O的定义对称,缺点是f(N)对自然数的不同无穷子集有不同的表达式,且有不同的阶时,不能很好地刻画出f(N)的下界。

比如当100 N为正偶数f(N)=6N2 N为正奇数按照定义,得到f(N)=Ω(1),这是个平凡的下界,对算法分析没有什么价值。

“平均情况”限界函数定义1.3 如果存在正常数c1,c2和n0,对于所有的n ≥n0,有c1|g(N)| ≤|f(N)| ≤c2|g(N)|则记作f(N)= (g,(N))含义:算法在最好和最坏情况下的计算时间就一个常数因子范围内而言是相同的。

可看作:既有f(N)=Ω(g(N)),又有f(N)=Ο(g(N))【例1.8】循环次数直接依赖规模n-变量计数之一。

(1) x=0;y=0; (2) for(k=1;k<=n;k++) (3) x++; (4) for(i=1;i<=n;i++)(5) for(j=1;j<=n;j++) (6) y++;该算法段的时间复杂度为T(n)=Ο(n2)。

当有若干个循环语句时,算法的时间复杂度是由嵌套层数最多的循环语句中最内层语句的频度f(n)决定的。

【例1.9】循环次数间接依赖规模n-变量计数之二。

(1) x=1;(2) for(i=1;i<=n;i++) (3) for(j=1;j<=i;j++) (4) for(k=1;k<=j;k++) (5) x++;该算法段中频度最大的语句是(5),从内层循环向外层分析语句(5)的执行次数:算法段的时间复杂度为:T(n)=O(n3/6+低次项)=O(n )。

b.算法的时间复杂度与输入实例的初始状态有关。

这类算法的时间复杂度的分析比较复杂,一般分最好情况(处理最少的情况),最坏情况(处理最多的情况)和平均情况分别进行讨论。

【例1.10】在数值A[0..n-1]中查找给定值K:(1) i=n-1;(2) while( i>=0 and A[i]<>k )(3) i=i-1;(4) return i;此算法的频度不仅与问题规模n有关,还与输入实例中A的各元素取值及k的取值有关:1. 若A中没有与k相等的元素,则(2)频度f(n)=n(最坏情况);2. 若A最后一个元素等于k ,则(2)频度f(n)是常数1(最好情况);在求平均情况时,一般地假设查找不同元素的概率P是相同的,则算法的平均复杂度为:若对于查找不同元素的概率P不相同时,其算法复杂度就只能做近似分析,或在构造更好的算法或存储结构后,做较准确的分析。

例1.11】求N!递归方程为:T(n)=T(n-1)+O(1) 其中O(1)为一次乘法操作。

迭代求解过程如下:T(n)=T(n-2)+O(1)+O(1)=T(n-3)+O(1)+O(1)+O(1) ……=O(1)+……+O(1)+O(1)+O(1 )=n*O(1) =O(n)【例1.12】抽象地考虑以下递归方程,且假设n=2k,则迭代求解过程如下:∴T(n) =O(n)【例1.13】一个楼有n个台阶,有一个人上楼有时一次跨一个台阶,有时一次跨两个台阶,编写一个算法,计算此人有几种不同的上楼方法,并分析算法的时间复杂度。

解:设计一个递归算法。

H(int n){if (n<0) printf(“Error!”);if n=1 return(1);if n=2 return(2);else return(H(n-1)+H(n-2));}时间复杂度(设T(n))分析:C n≤2T(n)=T(n-1)+T(n-2) n>2∴T(n) ≤2T(n-1) ≤2 T(n-2) ≤…≤ 2 T(1) =O(2 ) 【例1.14】抽象地考虑以下递归方程,且假设n=2k,则迭代求解过程如下:T(n)=2T(n/2)+O(n) =2T(n/4)+2O(n/2)+O(n) =…=O(n)+O(n)+… +O(n)+O(n)+O(n) =k×O(n) =O(k×n) =O(nlog2 n)【例1.15】抽象地考虑以下递归方程,迭代求解过程如下:T(n)=T(n/3)+T(2n/3)+n=T(n/9)+T(2n/9)+n/3+T(2n/9)+T(4n/9)+2n/3 =… ≤∑n=(k+1)n=n(log n+1)设最长路径长度为k,(2/3) n=1∴k=log n 、、、、、、、、、、加图Chapter21贪婪算法的思想:贪婪算法通过一系列的局部选择来得到一个问题的解。

所作的每一个选择都是当前状态下“最优”的选择。

要依照某种策略。

策略“只顾眼前,不管将来”,称之为“贪婪策略”。

贪婪算法没有固定的算法框架,算法设计的关键是贪婪策略的选择。

1 贪婪算法的思想-例4.2 活动安排问题◆规则:选择具有最早结束时间的相容活动加入,使剩余的可安排时间最大,以安排尽可能多的活动。

◆由于输入的活动以其完成时间的非减序排列,所以算法GreedySelector每次总是选择具有最早完成时间的相容活动加入集合A中。

直观上,按这种方法选择相容活动为未安排活动留下尽可能多的时间。

◆也就是说,该算法的贪心选择的意义是使剩余的可安排时间段极大化,以便安排尽可能多的相容活动。

例:设待安排的11个活动的开始时间和结束时间按结束时间的非减序排列如下:贪心算法解决01背包问题:对于0-1背包问题,贪心选择之所以不能得到最优解是因为在这种情况下,它无法保证最终能将背包装满,部分闲置的背包空间使每公斤背包的价值降低了。

//事实上,在考虑0-1背包问题时,应比较选择该物品和不选择该物品所导致的最终方案,然后再作出最好选择。

由此就导出许多互相重叠的子问题。

这正是该问题可用动态规划算法求解的重要特征。

动态规划 动态规划的基本思想:动态规划方法的基本思想是,把求解的问题分成许多阶段或多个子问题,然后按顺序求解各子问题。

最后一个子问题就是初始问题的解。

由于动态规划的问题有重叠子问题的特点,为了减少重复计算,对每一个子问题只解一次,将其不同阶段的不同状态保存在一个二维数组中。

动态规划=贪婪策略+递推(降阶)+存储递推结果 最大字段和的问题:算法(递归形式) int Num=100char a[Num],b[Num],str[Num]; main( ){ int m,n,k;print (“Enter two string”); input(a,b); m=strlen(a); n=strlen(b), k=lcs_len(n,m);build_lcs (k, n,m); print(str); }动态规划中的01背包问题:分治算法利用分支算法解决最大字段和的问题:同题异策的问题:广度优先和深度优先的应用:广度搜索的例子:缺少分支限界的01背包算法???回溯法和分支限界的区别:。

相关文档
最新文档