非确定型有穷自动机

2021-06-28  本文已影响0人  猫咪不吃鱼

前言

上述在讨论的过程中,计算的每一步都按照唯一的方式跟在前一步的后面。当机器处于给定的状态并读入下一个输入字符时,就可以唯一确定下一个状态。因此称这是 确定型计算,在 非确定型 机器中,任何一个点,下一个状态都可能存在若干个 选择。非确定型是确定型的推广,因此每一台确定型有穷自动机(简称DFA)都是一台非确定型有穷自动机(简称NFA)

NFA状态图

非确定型有穷自动机 N1

需要特别指出NFA与DFA不同之处:

  1. q_1 对于1有两个射出的箭头;
  2. q_2 对于1没有箭头;
  3. N_1 中包含 \xi 的箭头;

如果一个状态,在射出的箭头上标有 \xi ,则不用读任何输入,机器分裂成多个备份,每一个标记 \xi 的射出箭头有一个备份跟踪,还有一个备份停留在当前状态。然后机器和前面一样非确定性的运行。这里可以把非确定性看做是若干独立的“过程”或者“线程”分别的进行,如果这些子过程至少有一个接受,则整个过程计算接受。以 N_1 接受 010110 的计算为例:

NFA 示意图

类似的给出 非确定性有穷自动机 的5元组描述 (Q,\Sigma,\delta,q_0,F) ,其中

  1. Q 是有穷的状态集
  2. \Sigma 是有穷的字母表
  3. \delta: Q \times \Sigma_\xi \to P(Q) 是转移函数
  4. q_0 \in Q 是起始状态
  5. F \subseteq Q 是接受状态集

这里的 P(Q) 是任意的集合 Q 的所有子集组成的集合,称 P(Q)Q 的幂集 ;

由此我们可以用5元组来描述上面的非确定性有穷自动机:N_1 = (Q,\Sigma,\delta,q_1,F),其中

  1. Q={q_1,q_2,q_3,q_4}
  2. \Sigma ={0,1}
  3. \delta 由下表给出:
    NFA 转移函数
  4. q_1 是起始状态
  5. F ={q_4}

同样 NFA 计算的形式化定义 也和 DFA 类似,设 N = (Q,\Sigma,\delta,q_0,F) 是一台NFA,w=y_1y_2y_3...y_n 是一个字符串并且其中任一y_i 是字母表 \Sigma 的成员,如果存在 Q 中的状态序列是 r_0,r_1,r_2...,r_n,满足下述条件:

  1. r_0=q_0
  2. r_{i+1} \in \delta(r_i,y_{i+1}),i=0,1,...,m-1
  3. r_m \in F

则称 N 接受 w;

上一篇 下一篇

猜你喜欢

热点阅读