这一章开始正式内容:
第一部分 自动机与语言
第一章 正则语言
1.1 有穷自动机
即FA( finite automata),我们目前学的分为两部分,DFA和NFA,即确定有穷自动机和非确定有穷自动机,但不管如何分类,它们都是自动机但一种。这边我就跳过那些引言和例证,直接从形式定义(Formal Defination)开始进行讲述:
首先,它是一个5元组(概念在上一部分讲过),即:
下面是详细解释:
第一个就是该自动机所拥有的状态的集合,即:有多少种状态,该集合就拥有多少元素。
第二个就是字母表,这样说可能比较抽象,将其与第三个结合,就比较好理解了,即
该自动机具有多个状态,当接收一个字符(也可以是各种可接受变量、常量)时,如果该字符存在于该状态机的字母表中,则该状态机会遵循相应规则转化为其应有状态,否则,该状态机会拒绝接收该字符、字符串(也可以是对该字符串不进行响应)。而该状态机可接受并响应的字符,即存在于该字母表中但元素。
第三个有一些函数基础的人都会好理解一些,即一个2元组。就像初中、高中学的函数坐标一样(x,y)对于任何/相应的自变量x,y都会产生任何/相应的变化。作用到自动机中,则可以看成:对于任何可被接受但字符,自动机都会产生相应的变化(响应状态下),→前面的为元组,就像线性代数里面的两个元组的差积一样,会分别从两个集合中各取一个元素组成2元组。相应的,对于每个二元组,自动机都会跳转到相应但的状态。
第四个则是该状态机的初始状态。
第五个为接受状态(也可以称之为结束状态,即完成了对整个输入的字符串的核验,且该字符串被自动机接受)。
此外,还有非形式的描述(状态图),下面是一个简单的状态图:
可以看到,10,110,100,010,0110,01110,000111000,0101010,都是该自动机可以识别的语言,即:以0或1开始且以0结束,且中间夹杂任意个任意数量的0和1的字符串。
在这边穿插一个小定义:如果一个语言被一台有穷自动机识别,则称它是正则语言。
完成了对自动机的形式和非形式定义,接下来就是对其的计算进行形式定义:
下面以一道例题举例:
对于上面描述的自动机M1,且令w是字符串
0110101010010
由于当M1对w计算时进入的状态序列是
q1 q2 q2 q1 q2 q1 q2 q1 q2 q1 q1 q2 q1
它满足上述3个条件,根据计算形式的定义,M1接受w。
M1的语言是:L(M1)={w | 以0或1开始且以0结束,且中间夹杂任意个任意数量的0和1的字符串}。
有穷自动机的定义到此结束,下面我会介绍它的不确定性和期间最重要的正则语言。