这门课,说难也难,说简单也简单,其实主要有三个部分:
1.自动机语言。(自动机)
2.可计算性理论。(可计算性)
3.复杂性理论。(复杂性)
我会尽量用最精炼的内容完成最基本的讲解。
下面正式开始:
前言:
从人类历史的角度来看,人们在很久远的年代之前就发明并且开始使用数学,而数学的核心内容就是计算。但是受限于各种人力物力,人们主要是使用数学(计算),而很少去研究计算本身,就算研究了,也不是非常透彻(或者说不容易理解)。而到了现在,技术进步极大的增加我们的计算能力,这样我们就可以更高效的研究这个问题。例如:
计算(计算机)的基本能力和限制是什么?
下面就是一些学习这门课的基础了。
首先是集合:
集合是一组对象,把它作为一个整体。集合能够包含任何类型的对象,包括数,符号和甚至其它集合。集合中的对象称为它的元素或者成员。主要方式是在大括号内描述它的元素,例如:
在集合{7,21,55,23,234}中:
7∈{7,21,55,23,234},8∉{7,21,55,23,234}。
然后是序列:
序列和集合类似但是又不完全一样,故名思意,序列是带顺序的集合,且用圆括号表示。
(1,2,3)==(1,2,3)且(1,2,3)!=(1,3,2)且(1,2,3)!=(1,2,2,3)
而作为集合:
{1,2,3}=={1,2,3}=={3,2,1}=={1,2,2,3}
总而言之:序列需要考虑顺序,所以重复的元素和元素顺序就具有了意义,而集合则不需要。
然后是多元组:
和集合一样,序列可以是有穷的或者无穷的,所以我们把有穷序列叫做多元组。即:n个元素组成的序列叫做n元组。而只包含2个元素的元组,我们还把它叫做有序对。
这里讲一下幂集:
下面是集合的笛卡儿积(或者叉积/乘),线性代数里面讲过,有兴趣的可以了解,因为只讲基础,所以这边就直接跳过。
然后是函数和关系:
函数是数学的中心,它建立一个输入-输出的关系,例如:f(a)=b。
而且,对于每一个函数,同样的输入总是产生同样的输出。同时,函数又可以称为映射,上面举的例子可以称为,f把a映射到b。
下面讲一下定义域和值域:
f:D→R,我们称为f是定义域为D值域为R的函数。
需求k个自变量的函数称为k元函数,称k为函数的元数。比如说:add(a,b)【等于a+b】,就是一个二元函数。
然后是字符串和语言:
字符串是计算机中基本的建筑块。跟据不同的要求,可以在各种各样的字母表上定义这样的串。按照普遍的要求,定义字母表是任意一个有穷集合。字母表的成员是该字母表的符号。
下面就是一个字母表的定义:
字母表上的字符串是该字母表中符号的有穷序列,通常写成一个符号挨着一个符号,不用逗号隔开。比如说1010111就是上面这个字母表上的一个字符串。一般用w来表示字符串,因此|w|则表示字符串的长度,或者说是w包含的字符数。如果字符串z连续出现在字符串w中,则称z是w的子串。
最后,语言是字符串的集合。
布尔逻辑:
布尔逻辑是建立在TRUE和FALSE的上的数学体系。目前是公认为是数字电子学和计算机设计的基础。经常用1和0来表示。