有限状态自动机

有限状态机

有限状态机,Finite State Machine,简称 FSM。
FSM 解决一个输入序列,经过 FSM,最终停留在什么状态这样一个问题。
一个 FSM 首先有一系列的状态(state)。根据输入的不同,FSM 从一个状态切换到另一个状态。在这些状态中,有一些状态是特殊的状态 —— 接受状态(accept state)。如果输入处理完毕,FSM 停留在接受状态,那么 FSM 处理成功,否则失败。
FSM 对于输入,只能一个单元一个单元处理,既不能获取后面的输入,也不能回溯之前的输入。你能依赖的,只有当前所处的状态,以及当前的输入。

确定有限自动机

确定有限自动机,Deterministic Finite Automaton,简称DFA,即给出一个输入,总能转移到确定的下一个状态。

非确定有限自动机

非确定有限自动机,Nondeterministic Finite Automaton,简称NFA。
即给定一个状态和一个输入,我们无法确定地转换到下一个状态。
对于非确定有限自动机,我们有几种策略

  • 决策树

  • 把NFA转换为DFA

一个例子

LeetCode.剑指offer20

有限自动机用于处理正则匹配。
我们用确定有限自动机分析这道题目。
首先,我们的自动机处于未接受字符的初始状态,之后,自动机开始顺序接受一个输入字符,然后按照既定的规则转移到下一个状态。同时,如果该自动机接受字符后未找到对应的接受规则,则匹配失败。
当所有字符输入完毕后,如果自动机处于接收状态,则最终字符串符合规则,被接受,否则,字符串不符合规则,即被拒绝。

确定所有可能的状态

第一步,列出所有可能出现的状态

  • 字符串首空格
  • 尾空格
  • 符号位
  • 小数点
  • 符号e(E)
  • 整数部分
  • 小数部分
  • 指数的左部
  • 指数的右部
确定初始状态与接受状态

初始状态为状态1
终止状态,由题意知,合法字符串结尾只可能是数字或者存在整数部分的小数点,或者一串空格

定义转移规则

转移规则

定义拒绝状态

如果对于当前状态与当前输入找不到转移状态,则拒绝输入,返回false。

代码

之后,就是将规则用代码实现出来

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值