自动机理论、语言和计算导论---有穷自动机:确定型有穷自动机(DFA)

这种自动机在读任何输入序列后只能处在一个状态中

确定型,指的是:在每输入上,存在且仅存在一个状态,自动机可以从当前状态转移到这个状态。(此处对比非确定型,即可同时处在几个状态中)

NFA与DFA之间的唯一区别在于返回值的类型:在NFA的情况下,返回值是一个状态集合;而在DFA的情况下,返回值是单个状态。


确定型有穷自动机的定义

一个确定型有穷自动机包括:

1.一个有穷的状态集合,通常记作Q

2.一个有穷的输入符号集合,通常记作

      3.一个转移函数,以一个状态和一个输入符号作为变量,返回一个状态。转移函数通常记作δ

      4.一个初始状态q0,是Q中状态之一

      5.一个终结状态或接受状态的集合F

DFA五元组:A = (Q,δq0,F)

   A = {有穷状态集合(条件集合),有穷输入符号集合,转移函数,初始状态,终结状态}


DFA处理串------DFA如何决定是否“接受”输入符号序列

DFA的‘语言’是这个DFA接受的所有的串的集合


例题1.形式化的规定一个DFA,接受所有仅在串中某个地方有01序列的0和1组成的串。

L:{x01y | x和y是0和1的任意串}

对于接受这个语言L的自动机A,可确定一下元组

输入字母表∑ = {0,1}

 有穷状态集合Q,其中的一个状态为初始状态

自动机A需要明确:至此看到了什么样的输入。

1.是否已经看到01:如果是,就可接受后续输入的每一个序列,即从现在起只处在接受状态中

2.是否还没看到01,但上一个输入是0,如果现在看到1,那就看到01了。并且由此开始接受输入的所有序列

3.是否还没看到01,但上一个输入要么不存在(刚开始运行),要么上次看到的是1,在这种情况下,A直到先看到0然后理解看到1才接受;

(1)这三个条件每个都能用一个状态来表示。其中,条件3作为初始状态,用q0来表示。因为在刚开始去看是,需要看到一个0然后在看到一个1。但如果在q0状态下先看到一个1,那随后的状态应仍处在q0。即δ(q0,1)= q0

当,在q0状态下先看到0了,那就可以转移至条件2(状态2),此时的状态转移函数记为δ(q0,0)= q2

    (2)现在处于状态2,从此刻出发。接下来如果看的的是0,那就相当于仍是处在状态2,即为δ(q2,0)= q2

接下来如果看到的是1,意味着现在已经看到01了,即可转移至条件1(状态1),此时的状态转移函数,即为δ(q2,1)= q1

    (3)现在处于状态1,此时已经看到01,意味着无论后续输入什么,都已处于成功的状态,所以此时的状态转移函数,即为(q1,0)= q1,

(q1,1)= q1    

  分析至此,确定了有穷状态集合Q = {q0,q1,q2}

综上所述,对自动机A的完整描述是:A = ({q0,q1,q2},{0,1},δ,q0,{q1})

猜你喜欢

转载自blog.csdn.net/u011296723/article/details/52456193