第5章算法与复杂性习题一、选择题1. B2. D3. C4. A5. B6. B7. D8.B9.C 10.A11.A 12.C 13.A 14.A二、简答题1.什么是算法,算法的特性有哪些?答:“算法(Algorithm)是一组明确的、可以执行的步骤的有序集合,它在有限的时间内终止并产生结果”。
算法的特性有:(1) 有穷性(可终止性):一个算法必须在有限个操作步骤内以及合理的有限时间内执行完成。
(2) 确定性:算法中的每一个操作步骤都必须有明确的含义,不允许存在二义性。
(3) 有效性(可执行性):算法中描述的操作步骤都是可执行的,并能最终得到确定的结果。
(4) 输入及输出:一个算法应该有零个或多个输入数据、有1个或多个输出数据。
2.什么是算法的时间复杂度和空间复杂度,如何表示?答:时间复杂度是与求解问题规模、算法输入相关的函数,该函数表示算法运行所花费的时间。
记为,T(n),其中,n代表求解问题的规模。
算法的空间复杂度(Space complexity)度量算法的空间复杂性、即执行算法的程序在计算机中运行所占用空间的大小。
简单讲,空间复杂度也是与求解问题规模、算法输入相关的函数。
记为,S(n),其中,n代表求解问题的规模。
时间复杂度和空间复杂度同样,引入符号“O”来表示T(n)、S(n)与求解问题规模n之间的数量级关系。
3.用图示法表示语言处理的过程。
答:语言处理的过程如图所示:4.简述算法设计的策略。
答:作为实现计算机程序实现时解决问题的方法,算法研究的内容是解决问题的方法,而不是计算机程序的本身。
一个优秀的算法可以运行在比较慢的计算机上,但一个劣质的算法在一台性能很强的计算机上也不一定能满足应用的需要,因此,在计算机程序设计中,算法设计往往处于核心地位。
要想充分理解算法并有效地应用于实际问题,关键是对算法的分析。
通常可以利用实验对比分析、数学方法来分析算法。
实验对比分析很简单,两个算法相互比较,它们都能解决同一问题,在相同环境下,一般就会认为哪个算法的速度快这个算法性能更好。
在算法设计中,通常采用能近似表达性能的方法来展示某个算法的性能指标。
例如,计算机对2n和22n n 的响应速度,当n 比较大的时,没什么区别,便可直接认为后者算法的复杂度为2n 。
基于算法复杂度简化表达的思想基础上,通常会对算法进行最坏情况分析和平均情况分析。
对于一个给定的算法,如果能保证它的最坏情况下的性能依然很好,但是在某些情况下,程序的最坏情况算法的运行时间和实际情况的运行时间相差很大,在实际应用中几乎不会碰到最坏情况下的输入,那么此时进行最坏情况分析显得有些画蛇添足,特别是分析最坏情况算法会花费大量精力的时候。
算法的平均情况分析可以帮助估计程序的性能,作为算法分析的基本指标之一,但是平均情况和实际情况仍然会有相差很大的时候,这时便可以使用随机法来尽量模拟现实中的情况,这样可以得到在严格的概率意义上的预测运行时间。
另外,对于一个经典算法,没有必要再去对该算法进行改进,研究它的上界和下界,只需要了解该算法的特性,然后在合适的时候使用它。
5.简述并行算法研究的内容。
答:(1) 并行计算模型并行算法作为一门学科,首先研究的是并行计算模型。
并行计算模型是算法设计者与体系结构研究者之间的一个桥梁,是并行算法设计和分析的基础。
它屏蔽了并行机之间的差异,从并行机中抽取若干个能反映计算特性的可计算或可测量的参数,并按照模型所定义的计算行为构造成本函数,以此进行算法的复杂度分析。
并行计算模型的第一代是共享存储模型,如SIMD-SM和MIMD-SM的一些计算模型,模型参数主要是CPU的单位计算时间,这样科学家可以忽略一些细节,集中精力设计算法。
第二代是分布存储模型。
在这个阶段,人们逐渐意识到对并行计算机性能带来影响的不仅仅是CPU,还有通信。
因此如何把不同的通信性能抽象成模型参数,是这个阶段的研究重点。
第三代是分布共享存储模型,也是我们目前研究所处的阶段。
随着网络技术的发展,通信延迟固然还有影响,但对并行带来的影响不再像当年那样重要,注重计算系统的多层次存储特性的影响。
(2) 设计技术并行算法研究的第二部分是并行算法的设计技术。
虽然并行算法研究还不是太成熟,但并行算法的设计依然是有章可循的,例如划分法、分治法、平衡树法、倍增法/指针跳跃法、流水线法破对称法等都是常用的设计并行算法的方法。
另外人们还可以根据问题的特性来选择适合的设计方法。
以上是并行算法的常规研究内容。
随着时代的进步,我们需要不断调整研究方向。
目前并行算法研究的新走向是并行算法研究内容不断拓宽,并行计算被纳入研究范畴;与广大用户领域结合,注重应用,强调走到用户中去,为用户解决问题;重视新的、非常规计算模式,如神经计算、量子计算等,这些模式能够解决某类特定问题,有其自身的优越性。
三、讨论题1.算法是程序设计的基础,没有好的算法,就不可能写出好的程序,但是,学习算法涉及到很多交叉学科的知识,怎样才能把这些知识融会贯通,写出优秀的程序?答案略。
2.算法设计非常复杂,如何才能设计优秀的算法?答案略。
第6章信息管理习题(答案)一.单项选择题1.C 2.A 3.D 4.C 5.B6.B 7.D 8.B 9.C 10.B11.D12.A 13.C 14.A 15.C16.A 17.A 18.C二.简答题1.简要说明一个DBMS的组成部分。
答:DBMS通常由四部分组成,也是DBMS要完成的功能:(1)数据定义语言DDL及其翻译处理程序:定义数据库中的数据对象。
(2)数据操纵语言DML及其编译(或解释)程序:实现对数据库的查询、插入、删除、修改等操作。
(3)数据库运行控制程序:实现对数据库的统一管理和控制,从而保证数据的安全性、完整性,并对数据并发访问进行控制,完成数据库的故障恢复等功能。
(4)实用程序:完成数据库的建立与维护、数据格式的转换与通信、数据库的转储等功能。
2.解释数据库的三级模式结构。
答:数据库系统通常采用三级模式结构,它也是数据库管理系统内部的系统结构。
(1) 模式也称逻辑模式,是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。
模式层中定义了数据模型和模式图表,DBMS的主要功能都在这层。
一个数据库系统中只有一个模式。
(2) 外模式也称子模式或用户模式,是数据库用户可见和使用的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图,通常与某一应用需求相对应。
这层将来自模式层的数据转化为用户所熟悉的格式和视图。
外模式通常可以有任意多个。
(3) 内模式是数据物理结构和存储结构的描述,是数据在数据库内部的表示方法。
内模式层决定数据存储在存储设备中的实际位置,并处理数据的存取方法及数据在设备间的数据传输。
数据库系统的内模式也只有一个。
3.简述数据管理技术发展的三个阶段。
(1)人工管理阶段20世纪50年代中期以前,计算机主要用于科学计算。
当时的硬件状况是只有纸带、卡片和磁带,没有磁盘等直接存取的存储设备;软件状况是没有操作系统、没有管理数据的软件,数据处理方式是批处理。
(2)文件系统阶段20世纪50年代后期到60年代中期,随着硬、软件技术的发展,硬件方面已有了磁盘、磁鼓等直接存取存储设备;软件方面已经有了专门的数据管理软件——文件系统;处理方式上不仅有了批处理,而且能够联机实时处理。
(3)数据库系统阶段20世纪60年代后期以来,硬件方面已有了大容量磁盘。
软件方面,为编制和维护系统软件,应用程序所需成本相对增加,有了联机实时处理、分布式处理的应用需求。
如果仍然用文件系统来管理数据,已经不能适应应用的发展需求。
于是为解决多用户、多任务共享数据的要求,实现大量的联机实时数据处理,数据库技术便应运而生,出现了统一管理数据的专门的软件系统——DBMS。
4.简述常用的三种数据模型及其特点。
(1)网状模型网状模型在层次模型的基础上,允许结点无父结点,或者有多个父结点,数据之间的联系通过地址指针实现。
网状模型与层次模型比较,具有更好的存取方式和灵活性,更利于实现实体间多对多的联系,但是,网状模型比层次模型要复杂得多,不易掌握,而且不易实现数据库结构的独立性。
(2)层次模型层次模型的基本思想就是用树型结构来表示各类实体及实体之间的联系,非常适合表达一对一、一对多的联系,但多对多的联系不能用层次模型表示。
层次模型中,数据之间的联系通过地址指针实现。
(3)关系模型与层次模型和网状模型用地址指针实现数据之间的联系不同,关系模型以关系代数为基础,实体间通过公共属性实现联系,与数据的物理结构无关。
目前,关系模型已经成为最重要的一种数据模型。
5.简述关系数据库的完整性。
答:关系模型中,定义了三种完整性约束条件:实体完整性、参照完整性、用户自定义的完整性。
实体完整性规定一个关系的主码(包括所有的主属性)不能为空;参照完整性规定外码必须是另一个关系的主码的有效取值,或为空;用户定义的完整性是根据应用需求而要求数据必须满足的语义的要求,如某一属性的取值范围。
6.简述SQL的特点。
(1) 功能统一。
SQL是一个集数据查询、数据操纵、数据定义、数据控制于一体的关系数据库语言。
SQL不仅功能统一,语言风格也统一,便于学习使用。
(2) 非过程性语言。
用户只需说明做什么,而不需要说明怎么做,不必关心SQL命令的内部执行过程,也不必知道数据如何存储。
(3) 面向集合的操作方式。
SQL是关系数据库的结构化查询语言,SQL语言中的操作对象与执行结果仍然是集合或关系。
(4) SQL提供了两种灵活的使用方式。
SQL既可以直接在联机终端或客户端使用SQL 命令实施对数据库的操作,还可以按照同样的格式,嵌入到其他语言中使用,弥补了SQL 不能生成菜单、报表、格式化输出的缺陷,开发人员可以利用其他的开发语言来生成界面,从而开发出界面友好、功能强大、实用性强的数据库应用系统。
(5) SQL简单、易学。
SQL语言的语法简单、语句少,非常容易掌握。
7.什么是事务,事务的特征有哪些?答:事务是用户定义的一个数据库操作序列,这些操作要么全做,要么全都不做,是一个不可分割的工作单位。
所有的事务都具有原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持续性(Durability),或简称ACID特性。
原子性:事务的所有操作必须作为一个整体的处理单位,要么全做,要么全都不做,不可以分割。
一致性:数据必须保持一致性状态。
即事务的执行只能从一个一致性状态转变到另一个一致性状态。
隔离性:系统内多个事务的执行是相互独立的,互不相扰。
持续性:一个事务一旦执行成功,对于数据库中数据的改变是永久的。
8.什么是数据库完整性控制,其含义是什么?答:数据库完整性控制是指保证数据库中数据的正确性、有效性、相容性,防止错误的数据进入数据库。