复习建议

填空题

1、计算理论的三个传统核心领域是

参考答案:自动机、可计算性、复杂性

解析:书本P1原话
2、在计算理论中,复杂性理论的核心问题是______和______的问题之间的关系。

参考答案:易计算,难计算
3、在数学中,一个命题被称为______如果它已被证明为真。

参考答案:定理
4、在证明两个集合A和B相等时,通常需要证明两个方向:(1)和(2)。

参考答案:
(1) A是B的子集
(2) B是A的子集
5、在计算理论中,_______是字符串的集合,_______是将输入转换为输出的过程,而_______是解决问题的步骤序列。
这些概念通常通过_______来形式化描述,例如图灵机和有限自动机。

参考答案:语言、计算、算法、计算模型(或机器)

解析:

语言的定义:见教材P9

算法的定义:见教材P114
6、在计算机科学中,一个______是一组规则或指令,用于解决特定问题或执行特定任务。
参考答案:算法

证明题

1、证明为什么在密码技术中,选择难以计算的问题比选择易于计算的问题更有利。

参考答案:
证明应该基于密码技术的基本需求——安全性。难以计算的问题提供了更高的安全性,因为它们需要极大的计算资源和时间去解决,
这使得未授权者在没有密钥的情况下破解加密变得不可行。

解析:见教材P2
2、证明如果一个图的所有顶点的度数之和为偶数,那么图中的边的数量也是偶数。

参考答案:
在图论中,每条边连接两个顶点,因此每条边都对顶点的度数总和做出了两次贡献。因此,所有顶点的度数之和必定是偶数,
这意味着边的数量也是偶数。
3、对于任意自然数n,如果n是奇数,则n^2也是奇数。

参考答案:

1、假设n是奇数
2、根据奇数的定义,可以表示n = 2k + 1,其中k是某个整数
3、计算n^2 = (2k + 1)^2 = 4k^2 + 4k + 1 = 2(2k^2 + 2k) + 1
4、令m = 2k^2 + 2k,则n^2 = 2m + 1
5、根据奇数的定义,n^2是奇数
6、证毕
4、证明:任何非确定性有限自动机(NFA)都可以转换为等价的确定性有限自动机(DFA)。

参考答案:见教材P33,定理1.19。

参考答案框架:

1、给出NFA的形式定义
2、描述NFA到DFA的转换过程(子集构造法):
a) DFA的状态集是NFA状态集的幂集
b) DFA的初始状态是包含NFA初始状态的集合
c) DFA的转移函数基于NFA的转移函数定义
d) DFA的接受状态是包含NFA任一接受状态的所有集合
3、证明转换后的DFA与原NFA接受相同的语言:
a) 如果一个字符串被NFA接受,它也被DFA接受
b) 如果一个字符串被DFA接受,它也被NFA接受
4、结论:NFA和转换后的DFA是等价的
5、证明图灵机是通用的计算模型,即任何可以被算法解决的问题都可以通过图灵机来解决。

参考答案:基于图灵机的定义,它能模拟任何逻辑序列,处理任意算法可处理的数据和操作。
通过构造或描述一个图灵机来执行任何给定算法,可以证明图灵机能模拟该算法。

解析:
图灵机由一系列状态、一个无限长的带子和一个读写头组成。它可以根据当前状态和带子上的符号
执行操作(写入、移动或更改状态)。因为图灵机可以模拟任何确定性的算法过程和非确定性的选择,
所以任何可计算的函数或可解的问题均可以由图灵机解决。这证明了其作为通用计算模型的能力。

综合题

1、请比较复杂性理论和可计算性理论在研究问题上的异同,并讨论它们如何共同推动了密码技术的发展。

参考答案:

1、复杂性理论:关注问题的难易程度,将问题分为容易计算和难计算

2、可计算性理论:关注问题是否可解,将问题分为可解和不可解

3、相同点:都研究计算的本质和限制

4、不同点:研究的侧重点和问题分类方式不同

5、对密码技术的影响:

复杂性理论提供了寻找难计算问题的方向,可计算性理论为设计密码系统提供了理论基础
两者共同推动了新型加密算法的发展。
2、讨论自动机理论、可计算性理论和复杂性理论之间的关系,并解释为什么这三个领域通常一起被研究。

参考答案:
自动机理论提供了计算的数学模型和定义,为可计算性理论和复杂性理论提供了理论基础。

可计算性理论探索哪些问题是可解的,哪些是不可解的,

而复杂性理论则进一步探讨哪些问题是易解的,哪些是难解的。这三个领域相互依赖,共同构成了计算理论的基础框架。
3、考虑以下命题:"对于任意正整数n,如果n能被3整除,则n^2能被9整除。"
(a) 请给出几个具体例子来验证这个命题。
(b) 尝试找出一个反例(如果存在的话)。
(c) 如果你认为这个命题是正确的,请给出一个完整的证明。

参考答案:
(a) 例子:

当n = 3时,3^2 = 9,能被9整除
当n = 6时,6^2 = 36,能被9整除
当n = 9时,9^2 = 81,能被9整除

(b) 尝试寻找反例:
无法找到反例,因为对所有能被3整除的数,其平方都能被9整除。
(c) 证明:
假设n能被3整除,则存在整数k,使得n = 3k
那么,n^2 = (3k)^2 = 9k^2
因为9k^2能被9整除,所以n^2能被9整除
证毕
4、考虑以下三种计算模型:确定性有限自动机(DFA)、下推自动机(PDA)和图灵机(TM)。
(a) 简要描述这三种模型各自的特点和能力。
(b) 比较它们的计算能力,并给出它们可以识别的语言类型。
(c) 设计一个语言L = {a^n b^n c^n | n ≥ 0},讨论哪种模型能够识别这个语言,并简要说明原因。

参考答案:

(a) 特点和能力:

DFA:有限状态,无额外存储,只能前向读取输入
PDA:有限状态,有一个栈作为辅助存储,可以前向读取输入
TM:无限状态,有一个无限长的纸带作为存储,可以双向读写

(b) 计算能力比较:

DFA:可以识别正则语言
PDA:可以识别上下文无关语言
TM:可以识别递归可枚举语言
计算能力:TM > PDA > DFA

(c) 语言L = {a^n b^n c^n | n ≥ 0}:

此语言不能被DFA或PDA识别
可以被TM识别
原因:这个语言需要同时记住三个计数器的值并进行比较,超出了PDA的能力范围,但TM可以在纸带上记录和比较这些值。

解析:

首先,让我澄清这些计算模型的英文全称:

1、DFA: Deterministic Finite Automaton (确定性有限自动机)
2、PDA: Pushdown Automaton (下推自动机)
3、TM: Turing Machine (图灵机)

关于语言 L = {a^n b^n c^n | n ≥ 0} 的详细解释:

1、为什么DFA不能识别:
DFA只有有限数量的状态,无法"计数"到任意大的n。它无法记住已经读取了多少个a、b和c,因此无法确保a、b、c的数量相等。
2、为什么PDA不能识别:
PDA有一个栈,理论上可以用来计数。但是,PDA只能可靠地计数两种符号。例如,它可以在读取a时将符号压入栈,然后在读取b时弹出栈,从而确保a和b的数量相等。但是,当开始读取c时,栈已经空了,无法再用于计数c的数量。
3、为什么TM可以识别:
TM有一个无限长的纸带,可以在上面记录任意信息。它可以通过以下步骤识别这个语言:

读取并计数a的数量,在纸带上记录。
读取b,每读一个就在纸带上删除一个计数标记。如果b读完时,计数未归零或提前归零,则拒绝。
对c重复相同的过程。
如果所有步骤都成功完成,则接受。

关于"前向读取输入"的理解:
这意味着机器只能从左到右读取输入,不能回退或重新读取已经处理过的部分。这是DFA和PDA的一个限制,而TM则可以在纸带上双向移动。
关于TM可以识别递归可枚举语言的表述:
这个表述是正确的。递归可枚举语言(也称为图灵可识别语言)是可以被图灵机识别的语言集合。更准确地说:

如果一个语言是递归可枚举的,那么存在一个图灵机,对于该语言中的每个字符串,该图灵机最终会停机并接受。
对于不在该语言中的字符串,图灵机可能会拒绝,或者永远运行下去(不停机)。
这比递归语言更广泛,因为递归语言要求图灵机对所有输入都能在有限时间内停机并给出正确的接受/拒绝决定。
5、比较并分析确定性有限自动机(DFA)和非确定性有限自动机(NFA)在功能上的等价性,并讨论将NFA转换为DFA的过程。

参考答案:尽管DFA和NFA在定义上不同,DFA对每个状态和输入字符有一个明确的转移,而NFA可能有多个可能的转移或空转移(ε-transitions),但它们在功能上是等价的,因为每个NFA都有一个等价的DFA。

解析:
任何NFA都可以转换成一个等价的DFA,这个过程通常涉及到构建一个新的DFA状态集,每个状态代表原NFA状态集的一个子集。通过这种子集构造方法(也称为幂集构造法),新的DFA在读取每个输入字符时都有一个明确的状态转移,反映了原NFA中所有可能的状态转移。这一过程保证了DFA在接受语言方面与NFA的等价性。这一转换虽然理论上总是可能的,但可能导致状态数量的指数增长,这在实际应用中可能会成为性能瓶颈。