有穷自动机c语言,有穷自动机(有穷状态自动机)简介

  • Post author:
  • Post category:其他


有穷自动机,也叫“有穷状态自动机”,“有穷状态自动机”顾名思义是由有限个状态组成的,在有限个输入的情况下,在这些状态中转移并期望最终达到终止状态。有穷指的是自动机的状态个数是有限的。有穷状态自动机根据确定性可以分为“确定有穷状态自动机”(DFA – Deterministic finite automaton)和“非确定有穷自动机”(NFA – Non-deterministic finite automaton)。(来源)

有限状态自动机(FSM “finite state machine” 或者FSA “finite state automaton” )是为研究有限内存的计算过程和某些语言类而抽象出的一种计算模型。有限状态自动机拥有有限数量的状态,每个状态可以迁移到零个或多个状态,输入字符串决定执行哪个状态的迁移。有限状态自动机可以表示为一个有向图。有限状态自动机是自动机理论的研究对象。

有多种类型的有限状态自动机:接受器判断是否接受输入;转换器对给定输入产生一个输出。常见的转换器有 Moore 机 与 Mealy 机。Moore 机对每一个状态都附加有输出动作,Mealy 机对每一个转移都附加有输出动作。(来源)

有穷自动机首先包含一个有限状态的集合,还包含了从一个状态到另外一个状态的转换。有穷自动机看上去就像是一个有向图,其中状态是图的节点,而状态转换则是图的边。此外这些状态中还必须有一个初始状态和至少一个接受状态。下面的图展示了一个有穷自动机,有根从外边来的箭头指向的状态表示初始状态,有个黑圈的状态是接受状态:

40a112b98ed7cf355f12ac2262b5779c.png
现在我们来看看有穷自动机怎么处理输入的字符串:

一开始,自动机处于初始状态

输入字符串的第一个字符,这时自动机会查询当前状态上与输入字符相匹配的边,并沿这条边转换到下一个状态。

继续输入下一个字符,重复第二步,查询当前状态上的边并进行状态转换

当字符串全部输入后,如果自动机正好处于接受状态上,就说该自动机接受了这一字符串。(来源)