• NFA与DFA的转换


    有穷自动机分类

    非确定的有穷自动机(NFA)

    • 只要有一条路径能够使一个字符串从初始态到达接收态就称这个字符串是接收的
    • 匹配结果,是不确定的
    • 慢,有Backtrack(回溯)
    • 基于表达式
    • 某时刻可能处于一组状态之中的任何一个,因此记录所有的可能路径

    确定的有穷自动机(DFA)

    • 匹配速度,是确定的
    • 快,无Backtrack(回溯)
    • 基于文本
    • 在任意时刻必定处于某个确定状态

    NFA与DFA转换

    根据RE构造NFA

    image-20200327101922311 image-20200327102237196

    NFA转换为DFA

    又称NFA的确定化

    image-20200327093738269

    image-20200327094935260

    image-20200327100014382

    状态转换表

    注:标有*为接收状态 带(varepsilon)边记得增加一列

    1. NFA的开始状态集合为[0],将NFA将接收的符号代入当前状态,最长子串原则,得出新产生的状态
    2. 新产生的状态作为将来要列出的状态重复1中步骤
    3. 直至新产生的状态集合中无新集合时结束
    4. 将第一列中将来要列的状态重命名

    转换为DFA

    1. S0为初始状态,根据状态转换表中NFA接受的符号产生的集合到重命名中寻找匹配的状态
    2. 画图,根据新的圈重复1中步骤,直至结束
    3. 重命名中标有*的接受态要用双圈标出

    子集构造法

    image-20200327103857108

    image-20200327103822364

    计算(varepsilon)-closure(T):

    image-20200327103803836
  • 相关阅读:
    Java数据库操作学习
    c3p0配置
    CachedRowSet 接口
    Android Library的依赖方式及发布(转)
    网站测试
    MySQL Server逻辑架构
    Service生命周期
    Activity的生命周期
    Android应用框架中的四个核心要点
    Android 最新架构
  • 原文地址:https://www.cnblogs.com/localhost-ha/p/12580156.html
Copyright © 2020-2023  润新知