基于有限状态自动机的字符串匹配

1 应用场景及相关概念

      有线状态自动机在许多不同的领域有着广泛的应用。如电子工程,语言学,计算机科学,哲学,生物学,逻辑学和数学。有限状态机是在自动化理论和计算机理论中研究的一类自动机。在计算机科学中,有线状态机被广泛用于建模应用的行为,硬件电路系统设计,软件工程,编译器,网络协议,计算与语言的研究等。在数学建模中,有限状态自动机,Finite State Machine,是表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型。有限状态自动机拥有有限数量的状态和有限个输入集,每个状态可以转移到零个到多个的其他的状态,输入字串决定哪个状态的转移。状态存储了关于过去的信息,它反映了系统从开始到现在时刻的输入变化。转移指状态之间的变更,通常用可以满足转移发生的条件来描述它。动作是在给定时刻要进行会话的描述。有多种类型动作[1]:

  • 进入动作(Entry action)    在进入状态时执行。
  • 推出动作(Exit action)       在推出状态下执行
  • 输入动作(input action)     依赖于当前状态机的状态和输入条件
  • 转移动作(Transfer action)在特定的条件下进行

 

     有限状态机的表示方法通常有两种,状态转移图和状态转移表,实际上两者表达的概念都是一样的,通常都是反应有限状态机随着输入条件的变化而发生的转移。在这一点上有点类似于贝叶斯网络过程中建立的状态转移概率矩阵,用来指导状态之间转移的条件。

     有限状态机根据其应用的不同场景可以分为连个不同的类别:接收器(识别器)和变换器

    (1)接收器(识别器)

         接收器(识别器),通常产生一个二元输出,来判别输入是否被机器所接受。所有的FSM状态转移要么是接收状态,要么是拒绝状态。在所有的输入都被处理的时候,如果当前状态是接收状态,则输入被接收,否则输入被拒绝。

    (2)变换器

 

        变换器使用动作基于给定输入和(或)状态生成输出。它们用于控制应用。长分为两类:

  •  
    • Moore机,该状态自动机只是用进入状态的FSM,就是说输出只是依赖于状态。Moore模型的好处是行为的简单性
    •  Mealy机,只使用输入动作的FSM,就是说输入依赖于输入和当前的状态,Mealy的使用可以是状态数目简约。

2   利用有限自动机进行字符串的匹配

     很多字符串的匹配算法都需要建立一个有限自动,它通过对文本字符串T进行扫描的方法找出模式P所出现的位置。用于字符串匹配的自动机都是非常有效的:它们只对每个文本字符扫描一次,并且检查每个文本字符的时间为常数。因此,在建立好自动机后字符串匹配的时间为O(n)。而建立有线状态自动机的时间复杂度通常为O(|∑|*|P|),因此,当∑非常大时可能会是该方法的效率降低。但是相比于朴素字符串匹配算法O(m*n)和Rabin-Karp算法((n-m-1)*m),效率还是提高了很多,其中n为匹配文本字符串的长度,m为模式p的长度。

    有限自动M通常用一个五元组来表示,M={Q,q,A,∑,δ},其中

  • Q是状态的有限集合,即状态自动机中所有可能出现的转移状态
  • q是有线自动机的起始状态,其满足,q ∈Q
  • A是一个接受状态集合,它是Q的一个子集,通常一个字符串输入完毕后,如果当前的状态是A中的一个元素,则表示该字符串被接受,否则表示被拒绝。
  • ∑所有可能的输入字母表集合,它一定是一个有限集,是构成字符产的基本元素集合。
  • δ被称为状态转移函数,Q×∑-->Q的一个映射函数。

有限状态自动机开始于q,每次读入输入的字符串的一个字符。如果当前有限自动机的状态为p,读入字符为a,则它从p变为状态δ(p,a)的过程就是一次转移。如果δ(p,a) ∈Q,则表示自动机接受迄今为止输入的所有字符。而没有被接受的输入被称为拒绝的输入。当一个文本字符串被自动挤读取过程中存在状态F ∈A,则表示当前字符串被接受,匹配成功,否则,则匹配失败。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值