本发明涉及有限状态自动机领域,特别是涉及一种有限状态自动机的状态锁的检测方法及系统。
背景技术:
对于状态变化受人为设计的操作规则控制的工程系统而言,避免状态锁是一个关键并具有挑战性的技术问题。例如,自动化制造系统、空中交通控制系统、通信网络、高度集成的c3i系统和智能交通系统等。特别地,判定有限状态自动机的状态锁是分析、控制和进一步评估实际工业应用所必须解决的两个最重要的问题。
有限状态自动机通常有两种类型的状态锁。第一种被称为死锁,在这种情况下,机器不能再执行任何任务。第二种称为活锁,活锁由多个状态组成,当机器进入一个活锁时,虽然机器还可以执行任务,但机器永远不会离开这些状态,就像掉进了陷阱一样。
目前,判定有限状态自动机的状态锁的方法通常基于正则语言理论和基于观测器的设计方法。这些方法理论性强,不易于在工程中实际应用。因此,亟需一种有限状态自动机状态锁的检测方法,能够方便地判断给定的有限状态自动机是否有状态锁。
技术实现要素:
本发明的目的是提供一种有限状态自动机的状态锁的检测方法及系统,能够方便地检测有限状态自动机的状态锁。
为实现上述目的,本发明提供了如下方案:
一种有限状态自动机的状态锁的检测方法,包括:
获取有限状态自动机的可接收的状态以及所有的状态;
构造第一寄存器和第二寄存器;
将所有的所述可接收的状态放置于所述第一寄存器中;
将所述第二寄存器设置为空;
获取所述有限状态自动机的非接收的状态,并将获取的非接收的状态放置于所述第二寄存器中;所述非接收的状态进行转移得到可接收的状态;
将所述第二寄存器中的状态放置于所述第一寄存器中;
判断所述第一寄存器中当前的状态是否等于所有的状态;
若是,则确定所述有限状态自动机不含状态锁;
若否,则判断所述第二寄存器是否为空;
若是,则确定所述有限状态自动机含有状态锁;若否,则返回所述将所述第二寄存器设置为空的步骤。
可选的,所述获取有限状态自动机的可接收的状态以及所有的状态,之后还包括:
根据所述可接收的状态确定所述有限状态自动机的可接收的状态集合;
根据所有的状态确定所述有限状态自动机的整个状态集合。
可选的,所述若是,则确定所述有限状态自动机含有状态锁,之后还包括:
根据状态锁中含有状态的个数确定所述状态锁的类型;含有状态的个数为1时,所述状态锁为死锁;含有状态的个数为多个时,所述状态锁为活锁。
可选的,所述若是,则确定所述有限状态自动机含有状态锁,之后还包括:
根据所有确定的状态锁确定所述有限状态自动机含有状态锁的个数。
一种有限状态自动机的状态锁的检测系统,包括:
状态获取模块,用于获取有限状态自动机的可接收的状态以及所有的状态;
寄存器构造模块,用于构造第一寄存器和第二寄存器;
第一寄存器第一设置模块,用于将所有的所述可接收的状态放置于所述第一寄存器中;
第二寄存器第一设置模块,用于将所述第二寄存器设置为空;
第二寄存器第二设置模块,用于获取所述有限状态自动机的非接收的状态,并将获取的非接收的状态放置于所述第二寄存器中;所述非接收的状态进行转移得到可接收的状态;
第一寄存器第二设置模块,用于将所述第二寄存器中的状态放置于所述第一寄存器中;
第一判断模块,用于判断所述第一寄存器中当前的状态是否等于所有的状态;
不含状态锁确定模块,用于若是,则确定所述有限状态自动机不含状态锁;
第二判断模块,用于若否,则判断所述第二寄存器是否为空;
迭代模块,用于若是,则确定所述有限状态自动机含有状态锁;若否,则返回所述将所述第二寄存器设置为空的步骤。
可选的,还包括:
可接收的状态集合确定模块,用于根据所述可接收的状态确定所述有限状态自动机的可接收的状态集合;
整个状态集合确定模块,用于根据所有的状态确定所述有限状态自动机的整个状态集合。
可选的,还包括:
状态锁的类型确定模块,用于根据状态锁中含有状态的个数确定所述状态锁的类型;含有状态的个数为1时,所述状态锁为死锁;含有状态的个数为多个时,所述状态锁为活锁。
可选的,还包括:
状态锁的个数确定模块,用于根据所有确定的状态锁确定所述有限状态自动机含有状态锁的个数。
根据本发明提供的具体实施例,本发明公开了以下技术效果:
本发明所提供的一种有限状态自动机的状态锁的检测方法及系统,构造了用于缓冲的第一寄存器和第二寄存器,通过检查第一寄存器是否与有限状态自动机的所有状态相等来判断有限状态自动机是否不含状态锁;通过检查第二寄存器是否为空来判断有限状态自动机是否含状态锁。本发明避免了基于正则语言理论和基于观测器的设计方法不易于在工程中实际应用的现象,降低了设计的理论性。能够方便地判断给定的有限状态自动机是否有状态锁。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明所提供的一种有限状态自动机的状态锁的检测方法流程示意图;
图2为本发明所提供的一种有限状态自动机的状态锁的检测方法原理示意图;
图3为本发明所提供的实施例中所述有限状态自动机m示意图;
图4为本发明所提供的实施例中有限状态自动机含有四个状态锁示意图;
图5为本发明所提供的一种有限状态自动机的状态锁的检测系统结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的目的是提供一种有限状态自动机的状态锁的检测方法及系统,能够方便地检测有限状态自动机的状态锁。
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
图1为本发明所提供的一种有限状态自动机的状态锁的检测方法流程示意图,图2为本发明所提供的一种有限状态自动机的状态锁的检测方法原理示意图,如图1和图2所示,本发明所提供的一种有限状态自动机的状态锁的检测方法,包括:
s101,获取有限状态自动机的可接收的状态以及所有的状态。其中,不同的有限状态自动机,可接收的状态和所有的状态不同。对于给定的一个有限状态自动机,它的可接收状态和所有状态是已知的。
为了方便比较,在s101之后还包括:
根据所述可接收的状态确定所述有限状态自动机的可接收的状态集合;
根据所有的状态确定所述有限状态自动机的整个状态集合。
s102,构造第一寄存器和第二寄存器。第一寄存器和第二寄存器均用于缓存。
s103,将所有的所述可接收的状态放置于所述第一寄存器中。
s104,将所述第二寄存器设置为空;
s105,获取所述有限状态自动机的非接收的状态,并将获取的非接收的状态放置于所述第二寄存器中;所述非接收的状态进行转移得到可接收的状态;
s106,将所述第二寄存器中的状态放置于所述第一寄存器中;
s107,判断所述第一寄存器中当前的状态是否等于所有的状态;
s108,若是,则确定所述有限状态自动机不含状态锁;
s109,若否,则判断所述第二寄存器是否为空;
s110,若是,则确定所述有限状态自动机含有状态锁;若否,则返回所述将所述第二寄存器设置为空的步骤。
即每一次迭代,把第一寄存器更新为第一寄存器和第二寄存器的并集。
所述若是,则确定所述有限状态自动机含有状态锁,之后还包括:
根据状态锁中含有状态的个数确定所述状态锁的类型;含有状态的个数为1时,所述状态锁为死锁;含有状态的个数为多个时,所述状态锁为活锁。
所述若是,则确定所述有限状态自动机含有状态锁,之后还包括:
根据所有确定的状态锁确定所述有限状态自动机含有状态锁的个数。
如图2所示,判定指定的有限状态自动机是否含有状态锁,其具体的步骤为:
步骤1:写出机器的所有可接收的状态所组成的集合xm及所有状态所组成的集合x。
步骤2:构造第一寄存器(s1)和第二寄存器(s2)。
步骤3:置s1=xm。
步骤4:置
步骤5:置s2={x|x为可一步转入s1中的非接收状态}。
步骤6:置s1=s1∪s2。
步骤7:检查s1是否等于机器的整个状态集x。若是,该有限状态自动机不含状态锁,算法结束;若否,转步骤8。
步骤8:检查s2是否为空,若是,该有限状态自动机含有状态锁,算法结束;若否,转步骤4。
图3为本发明所提供的实施例中所述有限状态自动机m示意图,如图3所示,有限状态自动机m十二个状态分别是x1,x2,……,x12,输入信号是0和1,各符号的含义如下:
i)
ii)空箭头→的含义:指向有限状态自动机m的开机状态。
iii)双环状态
有限状态自动机m状态锁的检测步骤如下:
步骤1:写出机器m的所有可接收的状态所组成的集合xm={x12}及所有状态所组成的集合x={x1,x2,…,x12}。
步骤2:构造第一寄存器(s1)和第二寄存器(s2)。
步骤3:置s1={x12}。
步骤4:置
步骤5:s2={x5}。
步骤6:置s1=s1∪s2={x5,x9,x12}。
步骤7:s1≠x,转步骤8。
步骤8:
步骤4:置
步骤5:s2={x2}。
步骤6:置s1=s1∪s2={x2,x5,x9,x12}。
步骤7:s1≠x,转步骤8。
步骤8:
步骤4:置
步骤5:s2={x1}。
步骤6:置s1=s1∪s2={x1,x2,x5,x9,x12}。
步骤7:s1≠x,转步骤8。
步骤8:
步骤4:置
步骤5:
步骤6:置s1=s1∪s2={x1,x2,x5,x9,x12}。
步骤7:s1≠x,转步骤8。
步骤8:
图4为本发明所提供的实施例中有限状态自动机含有四个状态锁示意图,如图4中的框线所示,x11构成一个死锁,状态x4,x8,x11构成一个活锁,状态x3,x6,x7构成一个活锁,状态x3,x6,x7,x10构成一个活锁。
图5为本发明所提供的一种有限状态自动机的状态锁的检测系统结构示意图,如图5所示,本发明所提供的一种有限状态自动机的状态锁的检测系统,包括:
状态获取模块501,用于获取有限状态自动机的可接收的状态以及所有的状态;
寄存器构造模块502,用于构造第一寄存器和第二寄存器;
第一寄存器第一设置模块503,用于将所有的所述可接收的状态放置于所述第一寄存器中;
第二寄存器第一设置模块504,用于将所述第二寄存器设置为空;
第二寄存器第二设置模块505,用于获取所述有限状态自动机的非接收的状态,并将获取的非接收的状态放置于所述第二寄存器中;所述非接收的状态进行转移得到可接收的状态;
第一寄存器第二设置模块506,用于将所述第二寄存器中的状态放置于所述第一寄存器中;
第一判断模块507,用于判断所述第一寄存器中当前的状态是否等于所有的状态;
不含状态锁确定模块508,用于若是,则确定所述有限状态自动机不含状态锁;
第二判断模块509,用于若否,则判断所述第二寄存器是否为空;
迭代模块510,用于若是,则确定所述有限状态自动机含有状态锁;若否,则返回所述将所述第二寄存器设置为空的步骤。
本发明所提供的一种有限状态自动机的状态锁的检测系统,还包括:
可接收的状态集合确定模块,用于根据所述可接收的状态确定所述有限状态自动机的可接收的状态集合;
整个状态集合确定模块,用于根据所有的状态确定所述有限状态自动机的整个状态集合。
本发明所提供的一种有限状态自动机的状态锁的检测系统,还包括:
状态锁的类型确定模块,用于根据状态锁中含有状态的个数确定所述状态锁的类型;含有状态的个数为1时,所述状态锁为死锁;含有状态的个数为多个时,所述状态锁为活锁。
本发明所提供的一种有限状态自动机的状态锁的检测系统,还包括:
状态锁的个数确定模块,用于根据所有确定的状态锁确定所述有限状态自动机含有状态锁的个数。
本发明的目的是判定指定的有限状态自动机是否含有状态锁。为有限状态自动机的工程设计及优化提供指导:有限状态自动机若含有状态锁,则有限状态自动机不可投入使用,要进一步改造;若有限状态自动机不含状态锁,则可投入使用,或进入下一阶段的优化设计工作。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处。综上所述,本说明书内容不应理解为对本发明的限制。