北京工业大学算法设计与分析2014年题库

  • 格式:docx
  • 大小:667.32 KB
  • 文档页数:14

下载文档原格式

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

一、算法时间复杂性问题

1. 试证明下面的定理:

(1)如果f(n)=O(s(n))并且g(n)=O(r(n)),则f(n)+g(n)=O(s(n)+r(n));(2)如果f(n)=O(s(n))并且g(n)=O(r(n)),则f(n)*g(n)=O(s(n)*r(n))根据符号O 的定义,存在正常数C 1,C 2和自然数N 1,N 2,使得对所有的n>= N 1,f (n )<=C 1s(n);对所有的n>= N 2,g(n) <=C 2r(n)所以 f (n )+ g(n) <= C 1s(n)+ C 2r(n),f (n )*g(n)<= C 1C 2s(n)r(n);

令 C3=max (C1,C2),C4=C1*C2;则:f (n )+ g(n) <= C3[s(n)+ r(n)]=O(s(n)+ r(n))

(n )*g(n) <= C4*s(n)*r(n)=O(s(n)* r(n))

2. 假设某算法在输入规模为n 时的计算时间为:T (n )=3*2n ,在A 型计算机上实现并完成该算法的时间为t 秒,现有更先

进的B 型计算机,其运算速度为A 型计算机的64倍。试求出若在先进的B 型机上运行同一算法在则T 秒内能求解输入规模为多大的问题?某台t 秒内完成的基本运算的次数=3*2^n 新机器t 秒内完成的基本运算的次数=64*3*2^n=2^6*3*2^n=3*2^(n+6)

设N 为B 型机上t 秒钟能求解的问题的规模所以T=T(N)=3*2^N=3*2^(n+6) 则:N=n+6

3. 试说明为什么“在现代计算机上运行指数(如2n )时间算法是不可能的,要想在顺序处理机上扩大所处理问题的规模,

有效的途径是降低算法计算复杂度的数量级,而不是提高计算机的速度”。

一个计算时间为Ο(1)的算法,它的基本运算执行的次数是固定的,因此,总的时间由一个常数(即,零次多项式)来限界,而

一个时间为Ο(n 2)的算法则由一个二次多项式来限界。以下六种计算时间的多项式时间算法是最为常见的,其关系为

指数时间算法一般有Ο(2n )、Ο(n!)和Ο(n n )

等。其关系为:

其中,最常见的是时间为Ο(2n )的算法。当n 取得很大时,指数时间算法和多项式时间算法在所需时间上非常悬殊因为根本

就找不到一个这样的m ,使得2n 囿界于n^m 。换言之,对于任意的m ≥0,总可以找到n 0,当n ≥n 0时,有2n >n m 。因此,

只要有人能将现有指数时间算法中的任何一个算法简化为多项式时间算法,那就取得了一个伟大的成就。Ο(log 2n)、Ο(n)和Ο(nlog 2n)比另外三种时间函数的增长率慢得多。~ 由这些结果可看出,当数据集的规模(即n 的取值)很大时,要在现代计算机上运行具有比Ο(nlog 2n)复杂度还高的算法往往是很困难的。尤其是指数时间算法,它只有在n 值取得非常小时才实用。尽管通过提高计算机的速度比之前快1000倍,甚至10000倍,但当指数规模的n 足够大时,n 每增加1,1000倍的提速即可瞬间化为乌有,所以要想在顺序处理机上扩大所处理问题的规模,有效的途径是降低算法的计算复杂度的数量级,而不是提高计算机的速度。

二、简答

1.对计算复杂性的研究能够使人们弄清所求解问题的固有难度,并得出评价某类算法优劣的准则,用以指导设计出更高效的算法。试用简短的语言说明“建立一个问题复杂性的下界要比确定它的上界困难得多!”其复杂性上界是已知求解该问题的最快算法的费用,而复杂性下界只能通过理论证明来建立。寻求某个问题的计算复杂性上界,只要研究一个算法的复杂性即可。但是要寻求同一问题的计算复杂性下界,则必须考察所有的解决该问题的算法,证明一个问题的复杂性下界就需要证明不存在任何复杂性低于下界的算法。显然,建立下界要比确定上界困难得多。

2.满足何种性质的问题被称为NP 完全问题?请简述研究NP 完全问题的意义;

(1)NP 即是多项式复杂程度的非确定性问题。 而如果任何一个NP 问题都能通过一个多项式时间算法转换为某个NP 问题,那么这个NP 问题就称为NP 完全问题。如果一个NP 完全问题能在多项式时间内得到解决,那么NP 中的每一个问题都可以在多项式时间内解决。

(2)NP 完全是指这样一类NP 问题,所有的NP 问题都可以用多项式时间划归到他们中的一个.所以显然NP 完全的问题具有如下性质:它可以在多项式时间内求解,当且仅当所有的其他的NP -完全问题也可以在多项式时间内求解。这样一来,只要我们找到一个NPC 问题的多项式解,所有的NP 问题都可以多项式时间内划归成这个NPC 问题,再用多项式时间解决,这样NP 就等于P 了.NP 完全性理论的重要性:知道一个问题是NP 完全的就给我们提供了有价值的信息,告诉我们采用什么样的途径可以是最富有成效的。一定不要去优先寻找有效的、精确的算法。现在比较适当的途径是集中精力致力于其他较低目标的方法。例如,你可以寻找解决这个问题的各种特殊情况的有效算法。寻找在大多数情况下看来能快速运算的算法,虽然不能保证它在任何情况下都能快速地运算。或者你甚至可以放松问题的某些方面,寻找一个只能给出满足大部分要求的快速算法。简言之,NP 完全性理论的初步应用是帮助算法设计人员找到最有可能得到有用的算法的努力方向

3. “当问题的最优解包含了其子问题的最优解时,称该问题具有最优子结构性质”。问题的最优子结构性质是该问题可用动态规划算法求解的基本要素,试简要阐述“论证某一问题的最优子结构性质”时的一般方法;矩阵连乘计算次序问题的最优解包含着其子问题的最优解。这种性质称为最优子结构性质。在分析问题的最优子结构性质时,所用的方法具有普遍性:首先假设由问题的最优解导出的子问题的解不是最优的,然后再设法说明在这个假设下可构造出比原问题最优解更好的解,从而导致矛盾。利用问题的最优子结构性质,以自底向上的方式递归地从子问题的最优解逐步构造出整个问题的最优解。最优子结构是问题能用动态规划算法求解的前提。 Ο(2n )<Ο(n!)<Ο(n n ) Ο(1)<Ο(log 2n)<Ο(n)<Ο(nlog 2n)<Ο(n 2)<Ο(n n )