有穷自动机(Finite State Machine,简称FSM)是一种计算模型,它能够接受一定的输入,根据预先设定的规则进行状态转移,并最终停止于某个状态。FFSM广泛应用于计算机科学、电子工程、自动化控制等领域。本文将从数学表示法、图形表示法和代码表示法三个角度来分别解析有穷自动机的形式化表示。
一. 数学表示法
数学是FSM的基础,因此有穷自动机下设有以下三个基本元素:
1.状态集合Q:它是有穷集合,其中每个元素称为状态。
2.输入集合Σ:也是一个有穷集合,其中每个元素为输入符号。
3.转移函数δ:它是一个函数,即从一个状态到另一个状态的映射。δ(q, a)=p,表示从状态q经过输入符号a转移到状态p。
有穷自动机的表示方法如下:M=(Q, Σ, δ, q0, F),其中Q、Σ、δ的定义如上所述,q0∈Q表示初始状态,F是终态集合。当自动机在某个状态时,读入与该状态对应的转移函数的输入,在下一个状态上停止。
二. 图形表示法
除了数学表示法,有穷自动机还可以通过图形表示法来进行表示。该图形称作状态转换图或状态图。具体来说,它由以下三个部分组成:
1.圆圈表示状态。
2.箭头表示转移。
3.双圆圈表示终态。
考虑下面这个例子:

上图表示了一个简单的有穷自动机,其中它的状态被表示为内部带名字的圆圈,输入字符被放置在圆圈周围。图中,号码表示对应的输入符号,状态的转移被箭头表示,箭头上的符号表示应该输入什么符号以在状态之间进行有向转移。双圆圈表示终态。
三. 代码表示法
除了数学表示法和图形表示法,有穷自动机还可以通过代码来表示。当然,具体实现的代码也会根据编程语言和应用环境的不同而有所差异。以下是一个Python实现的例子:
```
class FSM:
def __init__(self, Q, sigma, delta, q0, F):
self.Q = Q
self.sigma = sigma
self.delta = delta
self.q0 = q0
self.F = F
def transition_function(self, q, s):
if (q, s) in self.delta:
return self.delta[q, s]
else:
return None
def run(self, string):
q = self.q0
for s in string:
q = self.transition_function(q, s)
if q is None:
return False
return q in self.F
```
上述代码中,FSM类定义了5个成员变量:Q、sigma、delta、q0和F。其中,Q、sigma、q0和F与FSM模型的定义一样,delta用于表示状态转移函数。transition_function函数用于从一个状态q接受一个符号s并返回下一个状态,run函数用于执行整个自动机与输入字符串进行交互。
扫码领取最新备考资料