2011年计算机科学与技术基础
NJU2011年计算机科学与技术基础试卷与答案
科目名称:计算机科学与技术基础
一、(10分)我们有下列两个问题,并已有各自的算法:
1. 已知等腰三角形各边长,求高。
2. 已知直角三角形的任意两边长,求第三边的长度。
利用这两个问题解释多项式时间规约的概念,并说明多项式时间规约在计算机算法理论中的作用。
NP问题的全称是:Non deterministic Ploynomial问题,即非确定性多项式问题。多项式时间(Polynomial time)在计算复杂度理论中,指的是一个问题的计算时间m(n)不大于问题大小n的多项式倍数。
答案参考:/yanghangjun/article/details/7298798
等腰三角形可分解成对称的两个直角三角形,问题2的答案可用于解决问题1。因此问题2若能在多项式时间内解决,则问题1也能在多项式时间内解决。(多项式时间归约? 假定给了两个问题类q和q0,如果存在一个确定型图灵机Mq和一个多项式P,对于q中任意一个实例x,Mq都能在P(n)时间内计算出q0中一个实例y(其中n是实例x的编码长度),使得x q中有肯定回答的实例,当且仅当y是q0中有肯定回答的实例,我们就说q多项式时间归约到q0 )多项式时间规约对于研究NP,NP完全问题具有重大作用。
对于一个规模为n的输入,在最坏情况下的运行时间是,其中k是某一确定的常数,即称时间负责度为的算法为多项式时间算法。一般来说,在多项式时间内可解的问题是易处理的问题,在超过多项式时间内解决的问题是不易处理的问题。不能够这样限制时间复杂度的算法被称为指数时间算法。例如,时间复杂度为O(nlog(n))、O(n^3)的算法都是多项式时间算法,时间复杂度为O(n^log(n))、O(n!)、O(2^n)的算法是指时间算法。
计算复杂性理论所研究的资源中最常见的是时间(要通过多少步演算才能解决问题)和空间(在解决问题时需要多少内存)。其他资源亦可考虑,例如在并行计算中,需要多少并行处理器才能解决问题。
时间复杂度是指在计算机科学与工程领域完成一个算法所需要的时间,是衡量一个算法优劣的重要参数。时间复杂度越小,说明该算法效率越高,则该算法越有价值。
空间复杂度是指计算机科学领域完成一个算法所需要占用的存储空间,一般是输入参数的函数。它是算法优劣的重要度量指标,一般来说,空间复杂度越小,算法越好。我们假设有一个图灵机来解决某一类语言的某一问题,设有X个字(word)属于这个问题,把X放入这个图灵机的输入端,这个图灵机为解决此问题所需要的工作带格子数总和称为空间。
计算复杂性理论最成功的成果之一是NP完备理论。NP是指“在非确定性图灵机上有多项式时间算法的问题”的集合,而P是指“在确定性图灵机上有多项式时间算法的问题”的集合。
P类问题、NP类问题和NP完全性(NPC)
P类问题:一个优化问题如果已经找到了多项式时间算法,则称该问题为多项式时间可解问题,并将这类问题的集合记为P,因此在多项式时间内可解决的问题就称为P类问题。
一个问题如果没有找到多项式时间算法,那么直觉上它是“难解”的,但又往往无法证明多项式时间算法的不存在性。由于在寻找有效算法上的失败未必一定意味着这样的算法不存在,这就给理论工作者带来了一个难题:一方面证明一个问题不存在多项式时间算法是困难的,至今尚未给出;另一方面有越来越多的问题无法给出多项式时间算法。为此,在20世纪70年代提供了一个漂亮的理论,它把这种失败归结为一个深刻的数据猜想称为NP完全性理论。
定义:给定一个判定问题,如果存在一个算法,对任何一个答案为“是”的实例I。该算法首先给出一个猜想,该猜想规模不超过I的输入长度的某个多项式函数,且验证猜想的正确性仅需多项式时间,则称该问题属于NP类。
定义:如果NP类中所有问题都可以多项式时间归约到NP类中某个问题x,则称x是NP-完全问题。
定义:如果某优化问题x的判定问题是NP-完全的,则称问题x是NP-难的;如果x的判定问题是强NP-完全的,则称x是强NP-难的。
二、(15分)
1. 以Quicksort算法为例,解释什么是最好情况时间复杂度、最坏时间复杂度、平均时间复杂度?
2. 在Quicksort算法中选择第一个元素为比较基准对象或者通过随机方法来选择一个元素为比较基准对象效果有差别吗?请给出解释。
三、在软件建模过程中,人们往往先建立平台无关的模型(Platform Independent Models,PIM),然后再建立特定实现平台上的平台相关模型(Platform Specific Models,PSM)。请简单论述这种建模方法的优点(10分)
四、简述软件体系结构的概念。在模型-试图-控制器模式(Model View Controller,MVC)中,视图主