可计算性与计算复杂性
- 格式:doc
- 大小:890.00 KB
- 文档页数:41
《大学计算机基础与计算思维》课后习题参考答案目录第1章计算、计算机与计算思维 (1)第2章数据的计算基础 (3)第3章计算机硬件系统 (5)第4章操作系统基础 (9)第5章算法与数据结构 (11)第6章程序设计及软件工程基础 (14)第7章数据库技术 (16)第8章计算机网络 (19)第9章信息安全与职业道德 (21)第10章计算软件 (24)第11章办公软件Office 2010 (25)算机科学与技术学院计算机基础教学部2015年9月第1章计算、计算机与计算思维1.1 举例说明可计算性和计算复杂性的概念。
答:对于给定的一个输入,如果计算机器能在有限的步骤内给出答案,这个问题就是可计算的。
数值计算、能够转化为数值计算的非数值问题(如语音、图形、图像等)都是可计算的。
计算复杂性从数学上提出计算问题难度大小的模型,判断哪些问题的计算是简单的,哪些是困难的,研究计算过程中时间和空间等资源的耗费情况,从而寻求更为优越的求解复杂问题的有效规则,例如著名的汉诺塔问题。
1.2 列举3种电子计算机出现之前的计算工具,并简述其主要特点。
答:(1)算盘通过算法口诀化,加快了计算速度。
(2)帕斯卡加法器通过齿轮旋转解决了自动进位的问题。
(3)机电式计算机Z-1,全部采用继电器,第一次实现了浮点记数法、二进制运算、带存储地址的指令等设计思想。
1.3 简述电子计算机的发展历程及各时代的主要特征。
答:第一代——电子管计算机(1946—1954年)。
这个时期的计算机主要采用电子管作为运算和逻辑元件。
主存储器采用汞延迟线、磁鼓、磁芯,外存储器采用磁带。
在软件方面,用机器语言和汇编语言编写程序。
程序的编写与修改都非常繁琐。
计算机主要用于科学和工程计算。
第二代——晶体管计算机(1954—1964年)。
计算机逻辑元件逐步由电子管改为晶体管,体积与功耗都有所降低。
主存储器采用铁淦氧磁芯器,外存储器采用先进的磁盘,计算机的速度和可靠性有所提高。
理解计算机中的计算理论与复杂性计算机中的计算理论与复杂性计算理论是计算机科学的重要分支之一,它研究计算过程的本质和性质,为计算机科学提供了理论基础。
而复杂性理论则研究计算问题的复杂性,即问题的难解程度。
在计算机发展的不断推动下,计算理论与复杂性的研究越发重要。
本文将从计算理论和复杂性两个方面对相关概念和研究进行介绍和探讨。
一、计算理论计算理论是计算机科学中关于计算概念和过程的研究。
它主要分为可计算性理论和形式语言与自动机理论两大部分。
1. 可计算性理论可计算性理论研究的是什么问题可以用计算机算出,以及如何判断一个问题是否可计算。
它的核心思想是“图灵机”,即由英国数学家图灵提出的一种理论模型,用于描述计算过程。
可计算性理论的研究对象包括了函数的计算性、计算问题是否可判定、可计算函数的分类等。
2. 形式语言与自动机理论形式语言与自动机理论研究的是描述和处理信息的形式化语言和自动机模型。
形式语言的研究对象包括了正则语言、上下文无关语言和上下文敏感语言等。
而自动机模型则包括了有限状态自动机、下推自动机和图灵机,用于描述和处理形式语言。
二、复杂性理论复杂性理论是研究计算问题的复杂性的学科。
它关注的是问题的求解难易程度,即问题的复杂性。
复杂性理论主要分为计算复杂性理论和各类计算问题的复杂性。
1. 计算复杂性理论计算复杂性理论研究的是计算问题的复杂性度量和分类。
其中最具代表性的是时间复杂性和空间复杂性。
时间复杂性研究的是计算问题在计算时间上的耗费,空间复杂性研究的是计算问题在计算空间上的耗费。
常用的时间复杂性度量是“大O记号”,用于表示问题在最坏情况下的耗时增长趋势。
2. 计算问题的复杂性计算问题的复杂性研究的是不同类型问题的复杂性分类以及它们之间的关系。
其中最经典的研究是关于P类问题和NP类问题的划分。
P 类问题指的是可以在多项式时间内求解的问题,而NP类问题指的是可以在多项式时间内验证的问题。
复杂性理论的研究则主要集中在P与NP问题之间的关系。
可计算性与计算复杂性导引第二版教学设计课程概述本课程主要介绍可计算性和计算复杂性理论的基本概念和方法,旨在帮助学生理解计算机科学的核心思想和方法,培养学生的计算思维和解决问题的能力。
课程目标1.了解可计算性和计算复杂性理论的基本概念和方法。
2.了解主要的计算模型和算法设计技术。
3.学会分析算法的时间和空间复杂度。
4.学会证明计算问题的不可解性和不可近似性。
5.培养学生的抽象思维和解决问题的能力。
教学内容1.可计算性理论介绍可计算性理论的基本概念,包括图灵机、递归函数、停机问题、可计算函数和不可计算函数等。
2.计算复杂性理论介绍计算复杂性理论的基本概念,包括时间复杂度、空间复杂度、P、NP、NP 完全问题、NP难问题等。
3.算法设计介绍常见的算法设计技术,包括贪心、动态规划、分治、回溯、随机化等。
4.算法分析介绍算法分析的基本方法和技巧,包括渐进符号、递归方程、对数级数等。
5.不可解性与不可近似性介绍一些经典的不可解性和不可近似性结果,包括halting problem、cook定理、PCP定理等。
教学方法本课程采用理论讲授和实践演练相结合的方式进行教学。
1.理论讲授通过讲授理论知识和解释实例,介绍可计算性和计算复杂性理论的基本概念和方法。
2.实践演练通过设计算法,分析算法复杂度,并完成一些经典问题的求解,锻炼学生的算法分析和实现能力。
教学评估1.平时成绩:作业和实验占比30%,课堂表现占比20%,出勤占比10%。
2.考试成绩:闭卷笔试,占比40%。
3.课程设计和报告:占比10%。
学生需要设计一个算法或证明一个不可解性或不可近似性定理,并完成一篇报告。
参考书目1.Sipser, M. (2012), Introduction to the Theory of Computation, 3rd edition, Cengage Learning.2.Papadimitriou, C. (1994), Computational Complexity, Addison-Wesley.3.Cormen, T. H., Leiserson, C. E., Rivest, R. L., & Stein, C. (2009). Introduction to Algorithms, 3rd edition, MIT Press.结语通过本课程的学习,学生可以深入了解计算机科学的核心理论,掌握算法设计和分析技术,以及认识到一些计算问题的不可解性和不可近似性。
可计算性与计算复杂性1.可计算性:可计算性研究的是什么样的问题可以通过其中一种计算模型解决。
早期的计算模型是图灵机(Turing machine),后来发展出其他等效的计算模型,例如递归函数、Lambda演算等。
根据这些计算模型,可以定义一类问题为可计算问题,也就是可以通过计算模型求解的问题。
1.1停机问题:停机问题是可计算性的典型例子,它是指根据给定的程序和输入,判断这个程序是否会在有限的时间内停止运行。
根据图灵在20世纪30年代证明的停机问题的不可判定性,他证明了不存在一个通用的算法能够判断任意程序是否停机,这个结论被称为图灵不可判定性定理。
1.2基本计算问题:除了停机问题,可计算性还研究了一些其他的基本计算问题。
例如,可计算性研究了自动机是否可以接受一些字符串,或者函数是否可以被一个特定的计算模型计算等。
1.3计算模型的等效性:在可计算性理论中,研究了不同计算模型之间的等效性。
图灵机、递归函数和Lambda演算等计算模型之间可以相互转化,这意味着它们的计算能力是等价的。
这个等价性的概念对理解可计算性是至关重要的。
2.计算复杂性:计算复杂性研究的是什么样的问题可以在多项式时间内解决,以及在不同条件下求解问题所需要的计算资源(例如时间、空间等)。
计算复杂性理论的核心是研究问题的复杂度类别和难度。
2.1多项式时间可解问题:计算复杂性理论将问题分为多项式时间可解问题和非多项式时间可解问题。
多项式时间可解问题是指那些可以在多项式时间内求解的问题。
这些问题的解决方法被认为是高效的,因为随着输入规模的增加,所需计算资源的增长是可接受的。
2.2难解问题:非多项式时间可解问题是那些不可以在多项式时间内求解的问题。
例如,图的旅行商问题(TSP)和布尔可满足性问题(SAT)等问题被认为是难解问题。
难解问题的求解需要指数级的时间或空间复杂度,因此在实际中很难找到有效的算法。
2.3复杂度类别:计算复杂性理论还研究了不同问题的复杂度类别。
可计算性与计算复杂性Calculability & Complexity第二章可计算函数 (1)1、原语言 (1)2、可计算函数 (1)第三章递归函数 (3)1、算子 (3)2、原始递归函数 (3)3、原始递归谓词 (3)4、受囿取极小 (4)5、递归与可计算性 (5)习题 (5)第四章POST-TURING程序和TURING机 (8)1、P-T程序 (8)2、Turing机 (9)3、P-T程序编码 (10)4、一些定理 (10)习题 (11)第五章半可计算性 (16)习题 (17)第六章半图厄系统 (18)1、半图厄系统 (18)2、半图厄系统与图灵机、半可计算集 (18)3、不可判定问题 (18)习题 (19)第七章图灵机 (26)习题 (26)第八章计算复杂性理论 (27)习题 (28)历年真题 (29)第二章可计算函数1、原语言本书所有变元为非负整数五条基本指令:①X=X+1②X=X-1 (X=0,结果仍为0)③TO A IF X≠0④TO A⑤Y=X宏指令:·X2、可计算函数部分可计算函数:若有一程序P,使得P(X1,X2,...,X n)=f(X1,X2,...,X n),则称f(X1,X2,...,X n)为部分可计算函数。
这里“=”表示:或者两边都无定义,或者两边都有定义并且值相同。
可计算函数:若f(X1,X2,...,X n)是部分可计算的而且是全函数,则称f(X1,X2,...,X n)为可计算函数。
两个常用函数X1-X2,X1≥X2X1-X2,X1≥X2X1X2 = X12 =无定义,X1<X20 ,X1<X2约定:①输入变元:X0,X1,……②临时变元:Z0,Z1,……③输出变元:Y④初始时,一切变元为0(输入变元除外)⑤转向无定义标号或执行了最后一条指令时,停机习 题用原语言证明下列函数是可计算函数(显然均为全函数,故只需证明存在n 元程序P ,使得P ϕ(X 1,X 2,...,X n )=f(X 1,X 2,...,X n )即可) (1)2121(,)X f X X X =(6)2()[log (1)]f X X =+第三章 递归函数1、算子复合算子:设一个函数y=f(z 1,z 2,...,z m ),和一组函数z 1=g 1(x 1,x 2,...,x n ) z 2=g 2(x 1,x 2,...,x n ) ... z m =g m (x 1,x 2,...,x n ) 称y=f(z 1,z 2,...,z m )=f(g 1(x 1,x 2,...,x n ), g 2(x 1,x 2,...,x n ),..., g m (x 1,x 2,...,x n )) 是复合算子作用于函数f 和g 1,g 2,...,g m 的结果。
(h 是全函数)取极小算子:设f(x 1,x 2,...,x n ,z)是全函数,定义h(x 1,x 2,...,x n )= min{z|f(x 1,x 2,...,x n ,z)=0}称h 是取极小算子z 作用于函数f 的结果。
(h 不一定是全函数,若f 为正则函数,则h 为全函数)2、原始递归函数原始递归函数:由初始函数S(x)=x+1、n(x)=0、12(,,...,)n in i x x x x = (1≤i ≤n)出发,只用复合和递归算子得到的函数称为原始递归函数。
(它们都是全函数)原始递归函数3、原始递归谓词0 ,当P (x 1,x 2,...,x n ) 特征函数:设谓词P (x 1,x 2,...,x n ),定义函数δ(x 1,x 2,...,x n )=1 ,当~P (x 1,x 2,...,x n )称δ为谓词P 的特征函数。
0 ,当(x 1,x 2,...,x n )∈Sδ(x 1,x 2,...,x n )= , 称δ为集合S 的特征函数。
1 ,当(x 1,x 2,...,x n )∉S原始递归谓词(集合):谓词P (集合S )的特征函数是原始递归函数。
可计算谓词(集合):谓词P (集合S )的特征函数是可计算的。
谓词的受囿全称量词:12120()(,,,...,)(,,,...,)1yy n nt t P t x x x P t x x x ≤=∀⇔=∏谓词的受囿存在量词:1212()(,,,...,)(,,,...,)0yy n nt t P t x x x P t x x x ≤=∃⇔≠∑f(x 1,x 2,...,x n ,y)是原始递归函数,则120/1(,,...,)yt f x x t =∑和120/1(,,...,)yt f x x t =∏是原始递归函数。
P 、Q 是原始递归谓词,则~P 、P Q ∨、P Q ∧是原始递归谓词。
R 、S 是原始递归集合,则R 、R S ⋃、R S ⋂是原始递归集合。
P 是原始递归谓词,g 和h 是原始递归函数,则 g (x 1,x 2,...,x n ) ,当P(x 1,x 2,...,x n )f (x 1,x 2,...,x n )= 是原始递归函数。
h (x 1,x 2,...,x n ) ,当~P(x 1,x 2,...,x n )P (x 1,x 2,...,x n )是原始递归谓词,h 1,h 2,…,h n 是原始递归函数,则P (h 1,h 2,...,h n )是原始递归谓词。
f 和g 是原始递归函数,则f=g 是原始递归谓词。
P (t,x 1,x 2,...,x n )是原始递归谓词,则12n ()P(t,x ,x ,...,x )y t ≤∀和12n ()P(t,x ,x ,...,x )y t ≤∃是原始递归谓词。
4、受囿取极小受囿取极小:设P(t,x 1,x 2,...,x n )是一个谓词,定义函数min{t | P(t,x 1,x 2,...,x n ) =1} ,若12n ()P(t,x ,x ,...,x )y t ≤∃12min (,,,...,)n t yP t x x x ≤=0 ,否则称min t y≤为受囿取极小。
若P(t,x 1,x 2,...,x n )是原始递归谓词,则函数f (y,x 1,x 2,...,x n )=12min (,,,...,)n t yP t x x x ≤是原始递归函数。
原始递归函数 2n P ...P 歌德尔数] y=[b 1,b 2,…,b m ] ,b1,b ,b ,…,b ]5、递归与可计算性部分递归函数:由初始函数S(x)=x+1,n(x)=0,12(,,...,)n in i x x x x = (1≤i ≤n) 出发,用复合、递归和取极小算子得到的函数称为部分递归函数。
递归函数:由初始函数S(x)=x+1,n(x)=0,12(,,...,)n in i x x x x = (1≤i ≤n) 出发,用复合、递归和对正则函数取极小算子得到的函数称为递归函数。
原始递归(全函数)⊂递归(全函数)⊂部分递归(部分函数)可计算⇔递归部分可计算⇔部分递归 习 题1、证明下列函数是原始递归函数(1)}xf(x,y)=xxy 个xf(x,y)可递归定义如下: f(x,0)=1f(x,y+1)=exp(x,f(x,y))∵exp(x,y)为原始递归函数,∴f(x,y)为原始递归函数。
(2设=t ,则t y ≤x <(t+1)y∴=min t x≤(t+1)y >x∵x y 是原始递归函数,x >y 是原始递归谓词,∴(t+1)y >x 是原始递归谓词,∴f(x,y)是原始递归函数。
(3)2()[log ]f x x =设2[log ]x =t ,则2t ≤x <2t+1 ∴ 2[log ]x =min t x≤2t+1>x∴f(x)是原始递归函数。
(4)f(x)表示x 各位数字之和 设x 为n 位数,n=2[log ]x +1110()[(,10)(,10)]10n i i i i f x R x R x -+-==-⋅∑∴f(x)是原始递归函数。
(5)设a n =f(n), b n =g(n)都是递增的原始递归函数,将a n ,b n (n =0,1,2,……)混合在一起,再从小到大排列得到函数c n =φ(n),证明φ(n)是原始递归函数。
φ(n)递归定义如下: φ(0)=min{a0,b 0} φ(n+1)=max{,}min {(()()()())(())}n n n i n j t a b i t a j t b t n φ≤≤≤∃=∨∃=∧>∵0000000000min{a ,b }= a (sub(a ,b )) + b (sub(b ,a ))d(a ,b )αα⋅⋅⋅n n n n n n n n n n max{a ,b }= b (sub(a ,b )) + a (sub(b ,a ))d(a ,b )αα⋅⋅⋅∴min{a 0,b 0},max{a n ,b n }是原始递归函数,∴φ(n)是原始递归函数。
(6)将任意两个素数乘积按从小到大排成一个序列,令这个序列通项即第n 项为f(n),证明f(n)是原始递归函数。
f(n)可递归定义如下:f(1)=4 ;2*2f(n+1)= 2min{()()()()}nn n i j t P i j t P P t f n ≤≤≤∃∃=⋅∧> ∴f(n)是原始递归函数。
(7)称三边均为整数的直角三角形的斜边为勾股数,将它们从小到大排列,第n 个勾股数记作R(n),证明R(n)是原始递归函数。
R(n)可递归定义如下: R(1)=5R(n+1)=222222()()()min {()()()(())}R n R n t R n i j i j t t R n ≤≤≤∃∃+=∧> ∴R(n)是原始递归函数。
2、计算3*2=?3=20×31=[0,1],2=21=[1],3*2=[0,1,1]=20×31×51=153、用原语言程序(限用五条基本指令)计算谓词“x 1=x 2”的特征函数。
0 ,x 1=x 2 δ(x 1,x 2)=1 ,x 1≠x 24、用原语言程序证明每个原始递归函数都是可计算函数。
A 、证明初始函数是可计算的 S (X )=X+1n(X)=0…………第四章 Post-Turing 程序和Turing 机1、P-T 程序(不改变指针位置) 数x 在带上的表示:x (01=,111=,31111=)f(x 1,x 2,...,x n )的初值在带上的表示:12...n x Bx B Bx (2,0,3)=111B1B1111 结果:带上1的个数减1f(x)=P-T 部分可计算:若有一个P-T 程序计算函数f ,则称f 是P-T 部分可计算的。