看到计算理论基础这门课程,就挺怀念郑虹老师给我们讲编译原理的那段日子了。虽然理论性强,但还是要沉下心去读一读,毕竟学术、专业都比较枯燥。
这门课偏理论,主要是培养咱思考、解决问题的能力吧。根据教学,主要集中在前5章,分computability、complexity、automata三部分。计算复杂性及NP完全性作为补充。
第1章就形式地介绍了算法设计与分析入门(与闭包有关),并且算法问题的讨论贯穿全书。第1章就拎出一些概念,基本与离散数学吻合。
幂集(Power Set):集合A的所有子集的汇集,记作2^A。
划分(partition):非空集合A的划分是2^A的一个子集B,使得Ø不是B的元素并且A的每一个元素在且只在B中的一个集合中。即,如果B是A的子集的集合使得(1)B的每一个元素非空,(2)B的不同元素是不相交的,(3)U B = A 。
自然同构(isomorphism):指的是一个保持结构的双射(bijection)。当在两个集合之间规定一个特别简单的双射之后,有时能够把定义域中的对象与它在值域中的象看作在实质上是不可区分的:一个是另一个的换名或一种重写方式。例如,严格的说,单元集和有序一元组是不同的。但是,由于对每一个单元集{a},f({a}) = a是一个明显的双射,故偶尔地混淆两者的区别也没有多大害处,这样的双射叫做一个自然同构。
集合A上的二元关系与顶点来自A的有向图没有形式地区别。当我们想强调对定义的二元关系的集合没有单独的兴趣时,可以使用术语有向图。有向图与无向图作为复杂系统(交通网与通信网、计算结构与过程等)的模型和抽象是有用的。
自反:对于每一个a∈A,(a,a)∈R,则称集合A上的关系R是自反的。
对称:如果只要(a,b)∈R就有(b,a)∈R,则称集合A上的关系R对称的。
反对称:如果当(a,b)∈R且a与b不同时,(b,a)∉R,则称集合A上的关系R反对称的。
传递:如果只要(a,b)∈R且(b,c)∈R就有(a,c)∈R,则称二元关系R是传递的。
等价关系:自反、对称、传递
偏序:自反、反对称、传递
等势:如果存在双射f:A->B,则称集合A与B等势。
基数:有穷集合的基数就是它的元素个数。
三个基本的证明技术:数学归纳法、鸽巢原理、对角化原理
数学归纳法:基本步骤、归纳假设、归纳步骤。
鸽巢原理:设A和B是两个有穷集合且| A | > | B |,则不存在从A 到 B 的一对一的函数。
对角化原理:对角线的补与每一行都不同(特别适合证明计算理论中的某些重要结果)。
闭包(closure):非形式定义 vs 理论定义(P17)
集合A的闭包定义为所有包含A的闭集之交。A的闭包是包含A的最小闭集。
离散数学中,一个关系R的闭包,是指加上最小数目的有序偶而形成的具有自反性,对称性或传递性的新的有序偶集,此集就是关系R的闭包。
封闭性:例子,有后代的人组成的集合在下述关系下是封闭的:{(a,b):a和b是两个人且b是a的父亲或母亲},因为有后代的人的父母亲也是有后代的人。
传递性是一种封闭性。自反性也是一种封闭性。
字母表:是一个有穷的符号集合。
字符串:该字母表中的符号的有穷序列。
空串:没有符号,记作e。
字母表 Σ上所有字符串(包括空串)的集合记作 Σ*.
操作:连接、反转
任一字母表 Σ上的字符串集合称作语言。
另一个语言运算时语言L的Kleene星号,记作L*。L*是连接L中0个或多个字符串得到的所有字符串的集合。
语言的有穷表示:正则表达式
语言生成器不是算法,语言识别装置和语言生成器是语言有穷说明的两种