写给学生看的系统分析与验证笔记(十一)——Generalized NBA(GNBA)


在上一节中我们介绍了非确定的Büchi automata,这节中我们介绍一下Generalized NBA,即广义的非确定性NBA。

Generalized NBA

GNBA也是由一个五元组 G = ( Q , Σ , q 0 , F , δ ) \mathcal{G}=(Q,Σ,q_{0},\mathcal{F},δ) G=(Q,Σ,q0,F,δ)构成,其中 Q , Σ , q 0 . δ Q,Σ,q_{0}.δ Q,Σ,q0.δ含义都与NBA中的一样,但是F表示为接受状态集合的集合(set of accept sets),表示为 F ⊆ 2 Q \mathcal{F}\subseteq 2^Q F2Q F \mathcal{F} F可以是类似 { F 1 , F 2 , . . . , F k } \{F_{1},F_{2},...,F_{k}\} {F1,F2,...,Fk}的形式。

对GNBA来说,如果一个运行 q 0 q 1 q 2 . . . q_{0}q_{1}q_{2}... q0q1q2...是可接受的,那么表示,每个接受状态集合将会被无限经常次访问。

直白说,NBA的F是一个集合,它要求运行可以无限经常次访问接受状态集合里面的元素,而GBNA的 F \mathcal{F} F是一个集合的集合,它要求运行可以无限经常次访问集合里面的每一个集合中的元素,这么看来GNBA的确是一种广义的NBA,当GNBA的F中只有一个集合的时候,就变成了NBA。

用符号表示为:
∀ F ∈ F   ∃ ∞   i ∈ N s . t . q i ∈ F \forall F∈\mathcal{F}\text{ }\overset{∞}\exist\text{ }i∈N s.t. q_{i}∈F FF  iNs.t.qiF

GNBA可接受的语言表示为:
L ω ( G ) = { σ ∈ Σ ω ∣ 无 限 字 σ 输 入 自 动 机 存 在 一 条 可 接 受 的 运 行 } L_{\omega}(\mathcal{G})=\{\sigma∈Σ^\omega|无限字\sigma输入自动机存在一条可接受的运行\} Lω(G)={σΣωσ}

用GNBA表示活性(liveness)
在这里插入图片描述
两个进程无限经常次进入临界区,这个LT属性可以用GNBA表示,此时的 F = { { q 1 } , { q 2 } } \mathcal{F}=\{\{q_{1}\},\{q_{2}\}\} F={{q1},{q2}}

GNBA转NBA

首先我们要知道,对于每一个GNBA来说,存在一个NBA使得
L ω ( G ) = L ω ( A ) L_{\omega}(\mathcal{G})=L_{\omega}(\mathcal{A}) Lω(G)=Lω(A)

F = { F 1 , F 2 , . . . , F k } \mathcal{F}=\{F_{1},F_{2},...,F_{k}\} F={F1,F2,...,Fk},当k=1时,它就是一个NBA,而当k>1时
在这里插入图片描述
从初始状态 Q 0 Q_{0} Q0出发,我们可以将 { F 1 , F 2 , . . . , F k } \{F_{1},F_{2},...,F_{k}\} {F1,F2,...,Fk}分成k个GNBA的拷贝,要注意的是,只有在某个拷贝中访问了接受集合 F k F_{k} Fk后才能访问下一个拷贝,这样依次下去,直到几个拷贝连成环,这样就生成了一个NBA

接下里讲述具体的算法:

假设 G = ( Q , Σ , Q 0 , F , δ ) \mathcal{G}=(Q,Σ,Q_{0},\mathcal{F},δ) G=(Q,Σ,Q0,F,δ)是一个GNBA, A = ( Q ′ , Σ , Q 0 ′ , F ′ , δ ′ ) A=(Q',Σ,Q'_{0},F',δ') A=(Q,Σ,Q0,F,δ)是一个NBA,为了顺利转换,我们需要在状态上增添常数i,用它表示某个状态属于第i个部分

  • Q ′ = Q × { 1 , 2 , . . . k } Q'=Q×\{1,2,...k\} Q=Q×{1,2,...k}
  • Q 0 ′ = Q 0 × { 1 } = { < q 0 , 1 > ∣ q 0 ∈ Q 0 } Q'_{0}=Q_{0}×\{1\}=\{<q_{0},1> |q_{0}∈Q_{0}\} Q0=Q0×{1}={<q0,1>q0Q0}
  • F 1 ′ = F 1 × { 1 } = { < q 0 , 1 > ∣ q F ∈ F 1 } F'_{1}=F_{1}×\{1\}=\{<q_{0},1> |q_{F}∈F_{1}\} F1=F1×{1}={<q0,1>qFF1}
  • δ ′ ( < q , i > , a ) = { { q ′ . i } ∣ q ′ ∈ δ ( q , a )   i f   q ∉ F i { q ′ . i + 1 } ∣ q ′ ∈ δ ( q , a )   o t h e r w i s e δ'(<q,i>,a)=\begin{cases}\{q'.i\}|q'∈δ(q,a)\text{ }if\text{ }q\notin F_{i}\\ \{q'.i+1\}|q'∈δ(q,a)\text{ }otherwise \end{cases} δ(<q,i>,a)={{q.i}qδ(q,a) if q/Fi{q.i+1}qδ(q,a) otherwise

大致公式就如上面所示, Q 0 Q_{0} Q0 F 1 F_{1} F1都标记为第一个部分,发生转换时,如果当前状态不属于 F i F_{i} Fi,则下一个状态的标记i不变,如果当前是 F i F_{i} Fi中的状态发生了转换,那么下一个标记需要加1(其实这个公式还少了一部分,如果处于最后一个标记的的F,那么下一个标记应该仍未1)

下面是一个转换的例子
在这里插入图片描述

在这里插入图片描述
我们看到这副图,还是很清楚的,上下两个部分就相当于两个拷贝,在访问了接受状态F后,就会访问下一个拷贝,最后两个拷贝连起来形成一个环。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值