【系统分析与验证笔记】关于自动机的规范语言(Specification Language)

288 阅读10分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

有限字的自动机(Automata on Finite Words)

不确定的有穷自动机(Nondeterministic Finite Automaton,简称NFA)

  • NFA是一个五元组:A=(Q,Σ,δ,Q0,F)\mathcal{A}=(Q,\Sigma ,\delta,Q_0,F)
    • QQ:一组有限的状态,例如下图NFA的q0q1q2q_0,q_1,q_2
    • Σ\Sigma:代表26个字母,例如下图NFA用到了ABA、B两个字母
    • δ\deltaQ×Σ2QQ \times \Sigma \to 2^Q,是一个变迁函数,例如下图NFA中的有箭头的线段,线段上面的字母,表示从一个状态读到这个字母,可以跳转到另一个状态
    • Q0Q_0Q0QQ_0 \in Q,是初始状态集合,例如下图NFA的q0q_0,NFA可能有多个初始状态
    • FFFQF \in Q,是可接收(最终)状态,例如下图NFA的q2q_2
  • 一个简单的NFA 在这里插入图片描述
    • 字(word,简写w):w=A1AnΣw = A_1 \cdots A_n \in \Sigma^*,是一串字母组成的字符串,表示一个NFA所要接收的一组输入(也叫做可接收的执行)。例如上图的NFA,可以接收w=ABAw=ABAw=AABBw=AABB这样的字
      • Σ\Sigma^*表示的是一组有限字,比如Σ={a,b}\Sigma =\{a,b\},则Σ={,a,ab,aa,aaa,}\Sigma^*= \{\varnothing,a,ab,aa,aaa,\cdots\},只要是有限的字,都在这个集合里面,但集合内的字的数量可以是无限的
      • ΣΣ=ΣΣ=Σ\Sigma^*\Sigma=\Sigma \Sigma^*=\Sigma
    • 状态变迁:
      • 公式说明:q0Q0 and qiAi+1qi+1 for all 0in,and qnFq_0 \in Q_0 \ and \ q_i \xrightarrow {A_{i+1}} q_{i+1} \ for \ all \ 0 \leqslant i \leqslant n,and \ q_n \in F
      • 文字解释:
        • q0q_0是一个初始状态(可能存在多个初始状态,q0q_0只是其中一个)
        • qiq_i状态下,读取字母Ai+1A_{i+1}后,移动到状态qi+1q_{i+1},其中0in0 \leqslant i \leqslant n
        • 最后一个状态qnq_n为最终状态,也叫可接收状态
    • L(A)\mathcal{L}(\mathcal{A}):表示自动机所有可接收的字的集合,称为自动机A\mathcal{A}的语言,例如:L(A)={ABA,AABB,ABABBB,AABBA,}\mathcal{L}(\mathcal{A})=\{ABA,AABB,ABABBB,AABBA,\cdots\}
    • 如果两个NFA可接收的语言相同,则他们是等价的,即L(A)=L(A)\mathcal{L}(\mathcal{A})=\mathcal{L}(\mathcal{A'})

正则表达式(Regular expressions)

  • 语法:E::=εAE+EE.EEE ::= \varnothing | \varepsilon | A | E + E' | E.E' | E^∗

    • \varnothing表示空集,长度为零
    • ε\varepsilon表示空字母,也就是一个没有任何字母的输入,比如ABεAAAB\varepsilon AA,长度为一
    • AA是字母表Σ\Sigma里的一个字母
    • E+EE + E'表示两个正则表达式相加
    • E.EE.E'表示两个正则表达式连接
    • EE^∗表示正则表达式EE的有限次连接,如E.E.EE.E.E,其中包含零次连接,零次连接的结果为\varnothing
  • 语义:自动机可以接收的语言,用L\mathcal{L}表示,L(A)={AAB,ABBBA}\mathcal{L}(\mathcal{A})=\{AAB,ABBBA\}表示自动机A\mathcal{A}可以接收的语言为AABAABABBBAABBBA。具体规则如下

    • L()=\mathcal{L}(\varnothing)=\varnothing
    • L(ε)=ε\mathcal{L}(\varepsilon )=\varepsilon
    • L(E+E)=L(E)L(E)\mathcal{L}(E+E')=\mathcal{L}(E)\cup \mathcal{L}(E')
    • L(E.E)=L(E).L(E)\mathcal{L}(E.E')=\mathcal{L}(E). \mathcal{L}(E')
    • L(E)=L(E)\mathcal{L}(E^*)=\mathcal{L}(E)^*

    例如L(E)={a,ab},L(E)={b,ab}\mathcal{L}(E)=\{a,ab\},\mathcal{L}(E')=\{b,ab\},则L(E.E)=L(E).L(E)={ab,aab,abb,abab}\mathcal{L}(E.E')=\mathcal{L}(E). \mathcal{L}(E')=\{ab,aab,abb,abab\}

关于正则语言和有限自动机之间的关系

  • 有限自动机所接收的语言和正则表达式所接收的语言是等价的,有相同的表达能力,都是正则语言

  • 他们的交(\cap)和补(complementation)是封闭的

    • 封闭性表示两个正则语言的交,结果仍然为正则语言,两个正则语言的补,结果也仍然为正则语言
    • NFA的AB\mathcal{A} \otimes \mathcal{B}等于正则语言L(A)L(B)\mathcal{L}(A)\cap \mathcal{L}(B)
    • 确定的有穷自动机(Deterministic Finite Automaton,简称DFA)的A\overline{\mathcal{A}}等于语言L(A)=Σ\L(A)\overline{\mathcal{L}(A)}=\Sigma^* \backslash \mathcal{L}(A),解释:Σ\Sigma^*里去掉L(A)\mathcal{L}(A),就是L(A)\mathcal{L}(A)的补
  • 基于确定性的封闭性:有限自动机可以用正则表达式来表示,正则表达式可以用有限自动机来表示

    • 用KS来表示一个系统,用NFA来表示一个性质,如果KS\otimesNFA的结果为\varnothing,则表示该KS没有字能够满足NFA的性质,否则,结果表示为该KS存在满足该NFA的字。
    • NFA是我们对性质的一种图形表示

无限字的自动机(Automata on Finite Words)

ω\omega正则表达式(ω\omega-Regular expressions)

  • 语法:G=E1.F1ω++En.FnωG = E_1.F_1^\omega + \cdots + E_n.F_n^\omega

    • n>0n > 0

    • EiFiE_i和F_iΣ\Sigma上的正则表达式

    • εL(Fi)\varepsilon \notin \mathcal{L}(F_i)

    • 正则表达式表示有限字的语义,ω\omega正则表达式表示无限字的语义
    • Σω\Sigma^\omega表示的是一组无限字,比如Σ={a,b}\Sigma =\{a,b\},则Σω={aa,abaaaa,}\Sigma^\omega= \{a\cdots a,aba \cdots aaa,\cdots\},只要是无限的字,都在这里面(不可能是0字),同时,集合内的元素也是无限的
  • 范例:(B.A)ω(B^*.A)^\omega展开后为B.A.B.AB^*.A.B^*.A\cdots

  • 语义:Lω(G)=L(E1).L(F1)ωL(En).L(Fn)ω\mathcal{L}_\omega(G) = \mathcal{L}(E_1).\mathcal{L}(F_1)^\omega \cup \cdots \cup \mathcal{L}(E_n).\mathcal{L}(F_n)^\omega

    • LΣ\mathcal{L} \subseteq \Sigma^*
    • L(G)Σω\mathcal{L}(G) \subseteq \Sigma^\omega
    • Lω={w1w2w3i0,wiL}\mathcal{L}^\omega=\{w_1w_2w_3\cdots|\forall _i\geqslant 0,w_i \in \mathcal{L}\}

    如果G1G_1G2G_2所接收的语言相等,即Lω(G1)=Lω(G2)\mathcal{L}_\omega(G_1)=\mathcal{L}_\omega(G_2),则这两个ω\omega正则表达式G1G_1G2G_2等价,即G1G2G_1 \equiv G_2

  • 举例:Σ={A,B}\Sigma = \{A,B\}的情况下

    • 一个包含无限多个AA的语言:(B.A)ω(B^*.A)^\omega
    • 一个包含有限多个AA的语言:(A+B).Bω(A+B)^*.B^\omega
    • 空语言:ω\varnothing^\omega

关于交并补都是封闭的,也就是两个ω\omega正则语言交的结果仍然为ω\omega正则语言,并的结果仍然为ω\omega正则语言,补的结果仍然为ω\omega正则语言

非确定性Bu¨chiB\ddot{u}chi自动机(Nondeterministic Bu¨chi AutomatonNondeterministic \ B\ddot{u}chi \ Automaton,简称NBA)

  • NFA和DFA自动机只能接收有限字的自动机,Bu¨chiB\ddot{u}chi自动机可以接收无限字的自动机
  • NBA是一个五元组A=(Q,Σ,δ,Q0,F)\mathcal{A} = (Q,\Sigma,\delta,Q_0,F),字σ=A0A1A2Σω\sigma=A_0A_1A_2\cdots \in \Sigma^\omega
  • A\mathcal{A}可接收的字是无限序列q0q1q2q_0q_1q_2\cdots
    • q0Q0q_0 \in Q_0
    • 对于所有i0i\geqslant 0,都有qiAi+1qi+1q_i\xrightarrow {A_{i+1}}q_{i+1}
    • 存在无限经常次出现的qiFq_i \in F
    • 一个NBA自动机可接收的语言为可接收语言对应的无限字的集合,即A\mathcal{A}可以被接收的语义为:Lω(A)={σΣω\mathcal{L}_\omega(\mathcal{A})=\{\sigma \in \Sigma^\omega|存在可接收的语言AA\mathcal{A},\mathcal{A}σ\sigma组成}\}
  • 如果两个NBA可以被接收的语言相同,则他们是等价的

有环的情况下的NBA和NFA

  • 性质1:从NFA的相等,并不能推出NBA的相等 在这里插入图片描述
    • 上图分析 L(A1)=AA=A\mathcal{L}(\mathcal{A_1})=AA^*=A^* L(A2)=AA=A\mathcal{L}(\mathcal{A_2})=A^*A=A^* Lω(A1)=AAω=Aω\mathcal{L}_\omega(\mathcal{A_1})=AA^\omega=A^\omega Lω(A2)=\mathcal{L}_\omega(\mathcal{A_2})=\varnothing
    • 虽然 L(A1)=L(A2)\mathcal{L}(\mathcal{A_1})=\mathcal{L}(\mathcal{A_2}),但 Lω(A1)Lω(A2)\mathcal{L}_\omega(\mathcal{A_1})\neq \mathcal{L}_\omega(\mathcal{A_2})

    Lω(A2)=\mathcal{L}_\omega(\mathcal{A_2})=\varnothing的原因是,NBA只能接收无限字的自动机,如果接收AAA^*A,那么不满足无限字的情况,如果接收AωAA^\omega A,那么AωA^\omega永远也不会结束,不属于自动机了,所以Lω(A2)\mathcal{L}_\omega(\mathcal{A_2})

  • 性质2:从NBA的相等,并不能推出NFA的相等 在这里插入图片描述
    • 上图分析 L(A1)={,AA,AAAA,}\mathcal{L}(\mathcal{A_1})=\{\varnothing,AA,AAAA,\cdots\} L(A2)={A,AAA,AAAAA,}\mathcal{L}(\mathcal{A_2})=\{A,AAA,AAAAA,\cdots\} Lω(A1)=AAω=Aω\mathcal{L}_\omega(\mathcal{A_1})=AA^\omega=A^\omega Lω(A2)=AωA=Aω\mathcal{L}_\omega(\mathcal{A_2})=A^\omega A=A^\omega
    • 虽然 Lω(A1)=Lω(A2)\mathcal{L}_\omega(\mathcal{A_1})=\mathcal{L}_\omega(\mathcal{A_2}),但 L(A1)L(A2)\mathcal{L}(\mathcal{A_1})\neq \mathcal{L}(\mathcal{A_2})

NBA和ω\omega-正则语言

  • 关系:NBA可接收的语言为ω\omega-正则语言,他们具有相同的表达能力
    • 任何ω\omega-正则语言都可以被一个NBA自动机所接收
    • 对于任何一个NBA:A\mathcal{A},它可接收的语言Lω(A)\mathcal{L}_\omega(\mathcal{A})都是ω\omega-正则语言

对于任何一个ω\omega-正则语言,都存在一个可接收它的NBA

如何为一个ω\omega-正则语言寻找一个可接收它的NBA呢

  • ω\omega-正则表达式的构成:G=E1.F1ω++En.FnωG = E_1.F_1^\omega + \cdots + E_n.F_n^\omega,其中,EiE_iFiF_i都是在字母表Σ\Sigma上的正则表达式,且εFi\varepsilon \notin F_i

    EiE_i是正则表达式,FiωF_i^\omega是一个ω\omega-正则表达式,他们俩连接运算后形成了一个ω\omega-正则表达式:Ei.FiωE_i.F_i^\omega

  • ω\omega-正则表达式,得到一个可接收它的NBA的过程
    • 加法运算:两个NBA可接收语言的加法是:Lω(A1)Lω(A2)\mathcal{L}_\omega(\mathcal{A}_1)\cup\mathcal{L}_\omega(\mathcal{A}_2)
      • 这两个NBA是A1\mathcal{A}_1A2\mathcal{A}_2,他们可接收的语言分别是Lω(A1)\mathcal{L}_\omega(\mathcal{A}_1)Lω(A2)\mathcal{L}_\omega(\mathcal{A}_2)
      • 多个求加法运算和两个也是一致的,先求出两个的加法运算结果,再进行下一次加法运算
    • ω\omega次方运算:对于任意的正则表达式L\mathcal{L},如果εL\varepsilon \notin \mathcal{L},则存在NBA可接收Lω\mathcal{L}^\omega

      Lω\mathcal{L}^\omega表示无限次重复,也就是存在NBA可以接收LLL\mathcal{L}\mathcal{L}\mathcal{L}\cdots

    • 连接运算:对于正则表达式L\mathcal{L}和NBA:A\mathcal{A'},存在另一个NBA可接收L.Lω(A)\mathcal{L}.\mathcal{L}_\omega(\mathcal{A'})

通过ω\omega方法将NFA转换为NBA

  • 目的:让一个可接收有限字的NFA:A=(Q,Σ,δ,Q0,F)\mathcal{A} = (Q,\Sigma,\delta,Q_0,F)构造成一个可接收无限字的NBA

  • A\mathcal{A}需满足的条件:A\mathcal{A}中的所有的初始状态都没有摄入转移,并且Q0F=Q_0 \cap F = \varnothing

    • 如果上述条件不满足,则要进行如下转移
      • 增加一个新的初始状态qnewFq_{new} \notin F
      • 增加边:对于一些q0Q0q_0 \in Q_0,当且仅当q0Aqq_{0} \xrightarrow {A}q,则qnewAqq_{new} \xrightarrow {A}q
      • 其他的变迁不用变
    • 转移完成后,得到了一个新的NFA,初始状态无摄入转移,此时NFA满足上述条件了

    Q0F=Q_0 \cap F = \varnothing表示初始状态和可接收状态是不能相交的 基本原则:原来初始状态能到达的状态,新的状态也要能到达

    • 转移范例: 下图的NFA中,初始状态S1S_1有一条摄入边,需要进行转移 在这里插入图片描述 所以我们要创建一个新的状态SnewS_{new}作为新的初始状态,并且取代S1S_1接收字所能达到的状态,也就是需要加上SnewAS2S_{new} \xrightarrow {A} S_2SnewBS3S_{new} \xrightarrow {B} S_3,再删除掉S1S_1的摄入边,此时的 NFA则满足上述条件:A\mathcal{A}中的所有的初始状态都没有摄入转移,并且Q0F=Q_0 \cap F = \varnothing 在这里插入图片描述
  • 构造NBA的过程:构建一个新的NBA:A=(Q,Σ,δ,Q0,F)\mathcal{A'}=(Q,\Sigma ,\delta',Q_0',F'),规则如下

    • 如果存在qAqq \xrightarrow {A}q'qFq' \in F,则加上一条路径qAq0q \xrightarrow {A}q_0,且对于任意的q0Q0q_0 \in Q_0
    • 其他的变迁不用变
    • Q0=Q0Q_0'=Q_0F=Q0F'=Q_0

    基本原则:原来能到达可接收状态的,也要能到达新的状态

  • 构建NBA范例:用接收(AB)(A^∗B)的NFA构造一个接收(AB)ω(A^∗B)^\omega的NBA 在这里插入图片描述

  • 因为初始状态q0q_0有两种能到达的状态:q0Aq0,q0Bq1q_{0} \xrightarrow {A}q_0,q_{0} \xrightarrow {B}q_1,所以,需要以qnewq_{new}为初始状态,加这两种情况:qnewAq0,qnewBq1q_{new} \xrightarrow {A}q_{0},q_{new} \xrightarrow {B}q_{1}

    比较复杂的解释:

    • 这是一个NFA,q0q_0有摄入边,但我们构造的时候不能有涉入边,所以我们要进行转换,增加一个新的状态qnewq_{new}和两个新的转移qnewBq1q_{new} \xrightarrow {B}q_1qnewAq0q_{new} \xrightarrow {A}q_0
    • 根据“对于一些q0Q0q_0 \in Q_0,当且仅当q0Aqq_{0} \xrightarrow {A}q,则qnewAqq_{new} \xrightarrow {A}q”,将性质中的AA换成了BBqq换成了q1q_1得到qnewBq1q_{new} \xrightarrow {B}q_1,将性质中的q0q_0换成了qq得到qnewAq0q_{new} \xrightarrow {A}q_0
    • 此时q0q_0AAq0q_0qnewq_{new}AAq0q_0q0q_{0}BBq1q_1qnewq_{new}BBq1q_1,对于这个状态来说,就没有涉入边了,该对它进行转换了

    在这里插入图片描述

  • 因为有两种情况可以转换到可接收状态q1q_1q0Aq1,qnewBq1q_{0} \xrightarrow {A}q_1,q_{new} \xrightarrow {B}q_1,所以,需要加两种情况将他们转换到qnewq_{new}q0Aqnew,qnewBqnewq_{0} \xrightarrow {A}q_{new},q_{new} \xrightarrow {B}q_{new}

    比较复杂的解释:

    • 先看qnewq_{new}BB转换到q1q_1q1q_1是可接收状态,那我们再增加一条边,qnewq_{new}BB转到初始状态,也就是qnewq_{new}本身,增加了一个自回路
    • 根据性质“如果qAqq \xrightarrow {A}q'qFq' \in F,则加上一条路径qAq0q \xrightarrow {A}q_0,且对于任意的q0Q0q_0 \in Q_0”,把性质里的AA换成了BB,把qqq0q_0换成了qnewq_{new},得到qnewBqnewq_{new} \xrightarrow {B}q_{new}这条边
    • 我们再看q0q_0q0q_{0}BBq1q_1q1q_1是可接收状态,那我们再增加一条边,q0q_{0}BB到初始状态qnewq_{new}
    • 根据性质“对于一些q0Q0q_0 \in Q_0,当且仅当q0Aqq_{0} \xrightarrow {A}q,则qnewAqq_{new} \xrightarrow {A}q”,把性质里的AA换成了BB,把qqq0q_0换成了qnewq_{new},得到q0Bqnewq_{0} \xrightarrow {B}q_{new}这条边

    在这里插入图片描述

  • 最后再把可接收状态转换为

    可接收状态从q1q_1换到qnewq_{new}的原因:q1q_1的存在其实已经毫无意义,他被qnewq_{new}完全取代,所以将可接收状态转移给qnewq_{new}即可,但我们不能把他删掉,即便已经不需要用了。具体依据性质“Q0=Q0Q_0'=Q_0F=Q0F'=Q_0

    • 增加了两条边之后,这个就是可接收Fω=(AB)ωF^\omega=(A^*B)^\omega的NBA了

加法运算

对于任意的NBA:A1\mathcal{A_1}A2\mathcal{A_2}

  • A1+A2=(Q1Q2,Σ,δ,Q0,1,F1F2)\mathcal{A_1}+\mathcal{A_2}=(Q_1 \cup Q_2,\Sigma,\delta ,Q_{0,1},F_1 \cup F_2)
  • δ(q,A)=δi(q,A)\delta(q,A)=\delta_i(q,A)

    δ\delta是一个变迁函数,之前怎么变迁的,合并后还是怎么进行变迁

  • Q1Q2=Q_1 \cap Q_2= \varnothing
  • Lω(A1+A2)=Lω(A1)Lω(A2)\mathcal{L}_\omega(\mathcal{A_1}+\mathcal{A_2})=\mathcal{L}_\omega(\mathcal{A_1})\cup \mathcal{L}_\omega(\mathcal{A_2})

连接运算

对于正则表达式L\mathcal{L}和NBA:A\mathcal{A'},存在另一个NBA可接收L.Lω(A)\mathcal{L}.\mathcal{L}_\omega(\mathcal{A'})A\mathcal{A}A\mathcal{A'}满足如下条件:

  • NFA:A=(Q,Σ,δ,Q0,F)\mathcal{A}=(Q,\Sigma,\delta,Q_0,F)
  • FBA:A=(Q,Σ,δ,Q0,F)\mathcal{A'}=(Q',\Sigma,\delta',Q_0',F')
  • QQ=Q \cap Q'=\varnothing的前提下,A=A.A=(Q,Σ,δ,Q0,F)\mathcal{A''}= \mathcal{A}.\mathcal{A'} =(Q'',\Sigma,\delta'',Q_0'',F'')
    • Q0Q_0''的取值:
      • 如果Q0F=Q_0 \cap F = \varnothing,则:Q0=Q0Q_0''=Q_0
      • 否则:Q0=Q0Q0Q_0'' = Q_0 \cup Q_0'
    • F=FF''=F'
    • δ(q,A)\delta''(q,A)的取值:
      • 如果qQq \in Qδ(q,A)F=\delta(q,A) \cap F=\varnothing,则δ(q,A)=δ(q,A)\delta''(q,A)=\delta(q,A)
      • 如果qQq \in Qδ(q,A)F=\delta(q,A) \cap F=\varnothing,则δ(q,A)δ(q,A)\delta''(q,A)\neq \delta(q,A)
      • 如果qQq \in Q',则δ(q,A)δ(q,A)\delta''(q,A)\neq \delta'(q,A)
  • 两个NBA进行连接的范例: L(A)=(AB)\mathcal{L}(\mathcal{A})=(AB)^* 在这里插入图片描述 L(A)=(A+B)BAω\mathcal{L}(\mathcal{A'})=(A+B)^*BA^\omega 在这里插入图片描述L(A.A)=(AB)(A+B)BAω\mathcal{L}(\mathcal{A.A'})=(AB)^*(A+B)^*BA^\omega 在这里插入图片描述

Generalized NBA(简写为GNBA)

  • NBA具有和ω\omega正则表达式一样的表达能力,NBA的变体也有着相同的表达能力,比如Muller,Rabin,Streett automata,Generalized Büchi automata(GNBA)
  • GNBA和NBA很相似,只有可接收状态不相同,也就是下面的F\mathcal{F}
    • 一个GNBA可以无限次接收多组F1,,Fk(k0)F_1,\cdots,F_k(k\geq 0)
    • 对于每一次k=0k=0,所有的运行都可接收,对于每一次k=1k=1,它和NBA类似

    FF是可接收状态集合,FiF_iQQ的子集

  • GNBA对于线性时间和自动机有一些作用
  • GNBA是一个五元组:G=(Q,Σ,δ,Q0,F)\mathcal{G}=(Q, \Sigma, \delta, Q_0, \mathcal{F})
    • Q,Σ,δ,Q0Q, \Sigma, \delta, Q_0和NBA一样
    • F={F1,,Fk}\mathcal{F}=\{F_1,\cdots,F_k\}2Q2^Q的子集(k0k\geq 0),即FnQF_n\subseteq Qkn0k \geq n \geq 0
    • 可接收的字σ=A0A1A2Σω\sigma =A_0A_1A_2\cdots \in \Sigma^\omega
    • 对于G\mathcal{G}每一个σ\sigma都有一个可接收的运行q0q1q2q_0q_1q_2\cdots,这是一个无限序列,且满足:
      • q0Q0q_0 \in Q_0qiAiqi+1q_{i} \xrightarrow {A_i}q_{i+1}0i0 \leqslant i

        q0q_0是初始状态

      • FF:qiFF \in \mathcal{F}:q_i \in Fqiq_i无限经常次出现
    • GNBA可识别的语言Lω(G)={σΣω存在一个针对G中的σ的一个可接收的运行}\mathcal{L}_\omega(\mathcal{G})=\{\sigma \in \Sigma ^ \omega 存在一个针对\mathcal{G}中的\sigma的一个可接收的运行\}
  • GNBA的一个范例: 在这里插入图片描述
    • 此GNBA的F={{q1},{q2}}\mathcal{F} = \{ \{ q1 \}, \{ q2 \} \},即F\mathcal{F}是由q1q_1组成的集合和q2q_2组成的集合构成
    • crit1crit_1crit2crit_2无限经常次想要接收时,q1q_1q2q_2会无限经常次被访问

GNBA转NBA

  • 对于任何一个GNBA G\mathcal{G}来说,都存在一个NBA A\mathcal{A},使得他们的接收语言是相同的,即Lω(G)=Lω(A)\mathcal{L}_\omega(\mathcal{G})=\mathcal{L}_\omega(\mathcal{A})

    GNBA和NBA的表达能力是一样的

  • 思想:将F\mathcal{F}分成kk块,从初始状态出发,当我们到达F1F_1的某个状态之后,找的到达F1F_1的某个状态,\cdots,一直到找FkF_k的某一个状态,当我们到达FkF_k的某一个状态后,回去,再找F1F_1中的某一个状态,这样以来,我们依次把他都经过了F1F_1FkF_k个状态无线经常次重复,根据这种思想,进行变换,从GNBA到NBA的一个转换

在这里插入图片描述

我们怎么知道我当前要经过哪一个FF ? 我们要通过增加一个变元的方式,把经过的FF记录下来

  • 公式:

    • GNBA:G=(Q,Σ,δ,Q0,F)G=(Q,\Sigma,\delta,Q_0,F)
    • NBA:A=(Q,Σ,δ,Q0,F)A=(Q',\Sigma',\delta',Q_0',F')
    • Q=Q×{1,,k}Q'=Q \times \{1,\cdots,k\}

      k的值就是上面思想上的k块

    • Q0=Q0×{1}={q0,1q0Q0}Q_0'=Q_0 \times \{1\}=\{\left \langle q_0,1 \right \rangle|q_0 \in Q_0\}
    • F=F1×{1}={qF,1qFF1}F'=F_1 \times \{1\}=\{\left \langle q_F,1 \right \rangle|q_F \in F_1\}
    • δ(q,i,A)={q,iqδ(q,A)if qFiq,i+1qδ(q,A)otherwise}\delta' (\left \langle q,i \right \rangle ,A)=\begin{Bmatrix} { \left \langle q',i \right \rangle|q' \in \delta (q,A) }& if \ q \notin F_i\\ { \left \langle q',i+1 \right \rangle|q' \in \delta (q,A) }& otherwise \end{Bmatrix}
  • GNBA转NBA范例:

    • GNBA: 在这里插入图片描述 F={F1,F2}\mathcal{F}=\{F_1,F_2\} F1={q1}F_1=\{q_1\} F2={q2}F_2=\{q_2\} 由上述可知 这个GNBA的F\mathcal{F}分成2块,所以k=2 所以Q=Q×{1,2}Q'=Q \times \{1,2\} 因为Q={q1,q2}Q=\{q_1,q_2\} 所以Q={q0,1q0,2q1,1q1,2q2,1q2,2}Q'=\{\left \langle q_0,1\right \rangle \left \langle q_0,2\right \rangle \left \langle q_1,1\right \rangle \left \langle q_1,2\right \rangle \left \langle q_2,1\right \rangle \left \langle q_2,2\right \rangle\} F=F1×{1}={q1}×{1}={q1,1}F'=F_1 \times \{1\}=\{q_1\} \times \{1\}=\{q_1,1\} δ\deltaδ\delta'的变化就不一一列举了,具体根据上述的公式都可以得出,举一个吧:
      • 在GNBA中,q1trueq0q_1 \xrightarrow {true}q_0
      • 因为q1Fiq_1 \in F_i
      • 所以δ(q1,1,true)=q,1+1=q,2\delta' (\left \langle q_1,1\right \rangle,true)=\left \langle q',1+1\right \rangle=\left \langle q',2\right \rangle
      • 因为qδ(q1,ture)q' \in \delta(q_1,ture),而δ(q1,ture)=q0\delta(q_1,ture)=q_0
      • 所以q=q0q'=q_0
      • 因此,在NBA中,δ(q1,1,true)=q0,2\delta' (\left \langle q_1,1\right \rangle,true)=\left \langle q_0,2\right \rangle

      对于δ(q1,2,true)=q0,3\delta' (\left \langle q_1,2\right \rangle,true)=\left \langle q_0,3\right \rangle,因为k=2,没有q0,3\left \langle q_0,3\right \rangle这个状态,所以当ii要大于2的时候,自动变为2,也就是δ(q1,2,true)=q0,2\delta' (\left \langle q_1,2\right \rangle,true)=\left \langle q_0,2\right \rangle

    • 最终的NBA: 在这里插入图片描述