第5章算法与复杂性(答案)

第5章 算法与复杂性

习 题

一、选择题

1. B 2. D 3. C 4. A 5. B

6. B 7. D 8. C 9. A 10. 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.简述算法设计的策略。

答:作为实现计算机程序实现时解决问题的方法,算法研究的内容是解决问题的方法,而不是计算机程序的本身。一个优秀的算法可以运行在比较慢的计算机上,但一个劣质的算法在一台性能很强的计算机上也不一定能满足应用的需要,因此,在计算机程序设计中,算法设计往往处于核心地位。

要想充分理解算法并有效地应用于实际问题,关键是对算法的分析。通常可以利用实验对比分析、数学方法来分析算法。实验对比分析很简单,两个算法相互比较,它们都能解决同一问题,在相同环境下,一般就会认为哪个算法的速度快这个算法性能更好。在算法设计中,通常采用能近似表达性能的方法来展示某个算法的性能指标。例如,计算机对n

22和n2n的响应速度,当n比较大的时,没什么区别,便可直接认为后者算法的复杂度为n2。

基于算法复杂度简化表达的思想基础上,通常会对算法进行最坏情况分析和平均情况分析。对于一个给定的算法,如果能保证它的最坏情况下的性能依然很好,但是在某些情况下,程序的最坏情况算法的运行时间和实际情况的运行时间相差很大,在实际应用中几乎不会碰到最坏情况下的输入,那么此时进行最坏情况分析显得有些画蛇添足,特别是分析最坏情况算法会花费大量精力的时候。算法的平均情况分析可以帮助估计程序的性能,作为算法分析的基本指标之一,但是平均情况和实际情况仍然会有相差很大的时候,这时便可以使用随机法来尽量模拟现实中的情况,这样可以得到在严格的概率意义上的预测运行时间。另外,对于一个经典算法,没有必要再去对该算法进行改进,研究它的上界和下界,只需要了解该算法的特性,然后在合适的时候使用它。

5.简述并行算法研究的内容。

答:(1) 并行计算模型并行算法作为一门学科,首先研究的是并行计算模型。并行计算模型是算法设计者与体系结构研究者之间的一个桥梁,是并行算法设计和分析的基础。它屏蔽了并行机之间的差异,从并行机中抽取若干个能反映计算特性的可计算或可测量的参数,并按照模型所定义的计算行为构造成本函数,以此进行算法的复杂度分析。

并行计算模型的第一代是共享存储模型,如SIMD-SM和MIMD-SM的一些计算模型,模型参数主要是CPU的单位计算时间,这样科学家可以忽略一些细节,集中精力设计算法。第二代是分布存储模型。在这个阶段,人们逐渐意识到对并行计算机性能带 来影响的不仅仅是CPU,还有通信。因此如何把不同的通信性能抽象成模型参数,是这个阶段的研究重点。第三代是分布共享存储模型,也是我们目前研究所处的阶段。随着网络技术的发展,通信延迟固然还有影响,但对并行带来的影响不再像当年那样重要,注重计算系统的多层次存储特性的影响。

(2) 设计技术并行算法研究的第二部分是并行算法的设计技术。虽然并行算法研究还不是太成熟,但并行算法的设计依然是有章可循的,例如划分法、分治法、平衡树法、倍增法/指针跳跃法、流水线法破对称法等都是常用的设计并行算法的方法。另外人们还可以根据问题的特性来选择适合的设计方法。

以上是并行算法的常规研究内容。随着时代的进步,我们需要不断调整研究方向。目前并行算法研究的新走向是并行算法研究内容不断拓宽,并行计算被纳入研究范畴;与广大用户领域结合,注重应用,强调走到用户中去,为用户解决问题;重视新的、非常规计算模式,如神经计算、量子计算等,这些模式能够解决某类特定问题,有其自身的优越性。

三、讨论题

1.算法是程序设计的基础,没有好的算法,就不可能写出好的程序,但是,学习算法涉及到很多交叉学科的知识,怎样才能把这些知识融会贯通,写出优秀的程序?

答案略。

2.算法设计非常复杂,如何才能设计优秀的算法?

答案略。

第5章 算法与复杂性

习 题

一、选择题

1. B 2. D 3. C 4. A 5. B

6. B 7. D 8. C 9. A 10. 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.简述算法设计的策略。

答:作为实现计算机程序实现时解决问题的方法,算法研究的内容是解决问题的方法,而不是计算机程序的本身。一个优秀的算法可以运行在比较慢的计算机上,但一个劣质的算法在一台性能很强的计算机上也不一定能满足应用的需要,因此,在计算机程序设计中,算法设计往往处于核心地位。

要想充分理解算法并有效地应用于实际问题,关键是对算法的分析。通常可以利用实验对比分析、数学方法来分析算法。实验对比分析很简单,两个算法相互比较,它们都能解决同一问题,在相同环境下,一般就会认为哪个算法的速度快这个算法性能更好。在算法设计中,通常采用能近似表达性能的方法来展示某个算法的性能指标。例如,计算机对n

22和n2n的响应速度,当n比较大的时,没什么区别,便可直接认为后者算法的复杂度为n2。

基于算法复杂度简化表达的思想基础上,通常会对算法进行最坏情况分析和平均情况分析。对于一个给定的算法,如果能保证它的最坏情况下的性能依然很好,但是在某些情况下,程序的最坏情况算法的运行时间和实际情况的运行时间相差很大,在实际应用中几乎不会碰到最坏情况下的输入,那么此时进行最坏情况分析显得有些画蛇添足,特别是分析最坏情况算法会花费大量精力的时候。算法的平均情况分析可以帮助估计程序的性能,作为算法分析的基本指标之一,但是平均情况和实际情况仍然会有相差很大的时候,这时便可以使用随机法来尽量模拟现实中的情况,这样可以得到在严格的概率意义上的预测运行时间。另外,对于一个经典算法,没有必要再去对该算法进行改进,研究它的上界和下界,只需要了解该算法的特性,然后在合适的时候使用它。

5.简述并行算法研究的内容。

答:(1) 并行计算模型并行算法作为一门学科,首先研究的是并行计算模型。并行计算模型是算法设计者与体系结构研究者之间的一个桥梁,是并行算法设计和分析的基础。它屏蔽了并行机之间的差异,从并行机中抽取若干个能反映计算特性的可计算或可测量的参数,并按照模型所定义的计算行为构造成本函数,以此进行算法的复杂度分析。

并行计算模型的第一代是共享存储模型,如SIMD-SM和MIMD-SM的一些计算模型,模型参数主要是CPU的单位计算时间,这样科学家可以忽略一些细节,集中精力设计算法。第二代是分布存储模型。在这个阶段,人们逐渐意识到对并行计算机性能带 来影响的不仅仅是CPU,还有通信。因此如何把不同的通信性能抽象成模型参数,是这个阶段的研究重点。第三代是分布共享存储模型,也是我们目前研究所处的阶段。随着网络技术的发展,通信延迟固然还有影响,但对并行带来的影响不再像当年那样重要,注重计算系统的多层次存储特性的影响。

(2) 设计技术并行算法研究的第二部分是并行算法的设计技术。虽然并行算法研究还不是太成熟,但并行算法的设计依然是有章可循的,例如划分法、分治法、平衡树法、倍增法/指针跳跃法、流水线法破对称法等都是常用的设计并行算法的方法。另外人们还可以根据问题的特性来选择适合的设计方法。

以上是并行算法的常规研究内容。随着时代的进步,我们需要不断调整研究方向。目前并行算法研究的新走向是并行算法研究内容不断拓宽,并行计算被纳入研究范畴;与广大用户领域结合,注重应用,强调走到用户中去,为用户解决问题;重视新的、非常规计算模式,如神经计算、量子计算等,这些模式能够解决某类特定问题,有其自身的优越性。

三、讨论题

1.算法是程序设计的基础,没有好的算法,就不可能写出好的程序,但是,学习算法涉及到很多交叉学科的知识,怎样才能把这些知识融会贯通,写出优秀的程序?

答案略。

2.算法设计非常复杂,如何才能设计优秀的算法?

答案略。


相关内容

  • 百度网上笔试题及答案
  • 百度网上笔试题及答案[仅供参考] 百度网上笔试题及答案[仅供参考]编程: 1 编程: 用 C 语言实现一个 revert 函数,它的功能是将输入的字符串在原串上倒序 后返回. 编程: 2 编程: 用 C 语言实现函数 void * memmove(void *dest,const void *src ...

  • 数据结构第一章课后习题与答案
  • The Home of jetmambo - 第 1 章 绪 论 第 1 章 绪 论 (2005-07-14) - 第 1 章 绪 论 课后习题讲解 1. 填空 ⑴( )是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理. [解答]数据元素 ⑵( )是数据的最小单位,( )是讨论数据结构 ...

  • 计算机二级考试历年公共基础知识真题
  • 2010年9月全国计算机等级考试公共基础知识试题及答案 一.选择题(每小题2分)下列各题A ).B ).C ).D )四个选项中,只有一个选项是正确的.请将正确选项填涂在答题卡相应位置上,答在试卷上不得分. (1)下列叙述中正确的是 A )线性表的链式存储结构与顺序存储结构所需要的存储空间是相同的 ...

  • 数据结构课程 课后习题答案
  • <数据结构简明教程>练习题及参考答案 练习题1 1. 单项选择题 (1)线性结构中数据元素之间是()关系. A. 一对多 B.多对多 C.多对一 D.一对一 答:D (2)数据结构中与所使用的计算机无关的是数据的()结构. A. 存储 B.物理 C.逻辑 D.物理和存储 答:C (3)算 ...

  • 太原理工大学数据结构试题库及答案
  • 数据结构试题库及答案 第一章 概论 一.选择题 1.研究数据结构就是研究( D). A.数据的逻辑结构 B.数据的存储结构 C.数据的逻辑结构和存储结构 D.数据的逻辑结构.存储结构及其基本操作 2.算法分析的两个主要方面是(A). A. 空间复杂度和时间复杂度 B. 正确性和简单性 C. 可读性和 ...

  • 2011年澳门特别行政区C++答案 数据结构试卷及答案考试重点和考试技巧
  • 1.深度为k的完全二叉树所含叶结点的个数最多为( B). A)2k B) 2k-1 C)k D) 2k 2.在数据结构中,与所使用的计算机无关的是数据的 A 结构. A.逻辑 B.存储 C.逻辑和存储 D.物理 3.广义表A=(x,((y),((a)),A))的深度是 A.2 B.3 C.4 D.∞ ...

  • 数据结构面试题(含答案)
  • 1. 栈和队列的共同特点是(只允许在端点处插入和删除元素) 4. 栈通常采用的两种存储结构是(线性存储结构和链表存储结构) 5. 下列关于栈的叙述正确的是(D ) A. 栈是非线性结构B. 栈是一种树状结构C. 栈具有先进先出的特征D. 栈有后进先出的特征 6. 链表不具有的特点是(B )A. 不必 ...

  • [算法导论]习题答案
  • 算法导论第二版答案 Chapter2 Getting Start 2.1 Insertion sort 2.1.2 将Insertion-Sort重写为按非递减顺序排序 2.1.3 计算两个n位的二进制数组之和 2.2 Analyzing algorithms 2.2.1将函数n3/1000100 ...

  • 数据结构复习题及答案
  • 复习题(一) 一.填空题(每空1分,共15分) 1. 一个算法的效率可分为___________________效率和___________________效率. 2. __________________是被限定为只能在表的一端进行插入运算,在表的另一端 进行删除运算的线性表. 3. 设S =&q ...