有限自动机

有限自动机,第1张

有限自动机:

百度百科:有限自动机

通俗来说就是一个抽象的数学模型,由一个初态,若干个中间态和若干个终态组成,在每一个状态下,接收到输入信息后转移状态到可以转移的下一个状态,如果状态到终态则可以终止(程序上来说则是可以退出)。这种抽象的数学模型称为有限自动机。例如这是某个有限自动机的状态转移图:

其中q0为初态,当q0状态时,接收到条件 a 则转移状态到q1,接受条件 b 转移状态到q2。

q1为中间态,以单圈标识,在q1状态时,接收到条件 a 或者 b 则转移状态到q1(即保持状态不转移)。

q2为终态,以双圈标识,在q2状态时,接收到条件 a 时可以转移状态到q2(保持状态不转移),接受字符 b 时转移状态到q1,并且可以终止。

有限状态机是一个处理信息的简单机器。通过对文本字符串 T 进行扫描,找出模式 P 的所有出现位置。给它输入一个模式串,会得到一个YES或者NO的结果。

它只对每个文本字符检查一次,并且检查每个文本字符时所需的时间为常数。因此,在模式预处理完成并建立好自动机后进行匹配所需要的时间为 O(n) 。

一个有限自动机 M 是一个 5 元组(Q,q, A, ∑,δ)

例如,对于0101111001串构建一个判断1的个数是否为偶数个的有限自动机

最后结果为红色区域,表明这个是一个偶数。

又例如,对P="ababaca"构建有限自动机,如以下a图所示

对于每一状态,会根据接受字符的情况来变化。

如b图所示,左边坐标表示状态;右边表示模式串P的匹配情况;上方表示输入情况。

例如第一行:当状态为0时,此时匹配的是P串的字符a。当输入为a时,转入状态1;输入为b,c时,转入状态0.

如c图所示:表示的是文本串T的匹配情况。在文本串之下的是状态的情况,当状态为7时,匹配成功。

P:模式串(要找到的串)

∑:有限的字母表(对于一个串,我们应该知道其出现了多少种字母,如aabcc的字母表为a、b、c)

k:根据状态q和输入的字符的不同,所设置的该转移到的状态

双层for在做的事:对于每一个状态q,又对于每一个字母表中的字符,k为最可能的最大状态(要么是当前状态q+2,要么是长度m加1,注意这里多了1),然后k自减,直到Pk是Pq合上字符a的 后缀 时,设置状态函数状态。(参考KMP找最长公共前后缀)

简单来说,就是对于文本串的每一个字符,不断更新当前状态q,当q为模式串长度m时,说明找到串了。

有限自动机。图灵机中,控制读写头动作的控制器是有限自动机。控制读写头动作的控制器是一台时序机,即有限自动机,具有有限个内在状态,包括初始状态和终止状态。控制器内存有 *** 作程序,即指令序列,用来驱动存储带左右移动和控制读写头的 *** 作。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11068661.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-13
下一篇 2023-05-13

发表评论

登录后才能评论

评论列表(0条)

保存