状态转移函数
句子识别:给定一个字符串,判定是否属于给定语法G的语言L(G)
一个系统,接受输入,改变自身的状态,产生输出
状态指为了完成机器的任务而对输入序列进行的一种临时归类
在逐个接受输入字符的过程中,机器状态回发生多次改变,最终会停止在某个状态,并有输出产生
如果对于所有的输入,机器状态的数目有限,称为有限状态机(Finite State Machine)
有限状态机是一个五元组M(A,S,Y,s0,F)
A:输入字符串的字母表
S:机器的有限状态集合
Y ⊆ S:被称作"**接受**"的一些状态
s0∈S:初始状态
F:S×A->S:状态转移函数,指明在某个状态下接受输入字符所引起的状态变迁
举个例子:
A={a,b}
S={s0,s1,s2},Y={s0,s1},s0初始状态
F如下表:
F | a | b |
---|---|---|
s0 | s0 | s1 |
s1 | s0 | s2 |
s2 | s2 | s2 |
①:在s0的状态下,输入a,状态还在s0;输入b时,状态改变为s1。
②:在s2的状态下,不管输入a还是b,状态都停留在s2,机器无法离开这个状态(这里s2具有陷阱性质,一旦进入就出不来了)
状态图
状态图 (Statechart Diagram)是描述一个 实体 基于事件反应的 动态 行为 ,显示了该实体如何根据当前所处的状态对不同的事件做出反应。
-
有限状态机(Finite State Machine)通常用状态图来表示。
-
状态图D=D(M)是边带标记的有向图。
-
节点为状态,转移函数决定边的走向和标记。
-
接受状态用双圈来表示。
-
边的定义:如果F(sj,a)=sk,则从节点sj做标记为a的有向边到节点sk。(sj----a----->sk)
-
初始状态s0用一个特殊的无源箭头标识。
正则语言和有限状态机
利用Kleen定理将正则语言和有限状态机结合
Kleen定理:字母表A上的形式语言L是正则的当且仅当存在一个有限状态机M使得L=L(M)
举个例子:
构造自动机M,识别恰好以bb结尾的字符串
正则表达式:(a|b)*bb