zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    HttpClient
    spring入门
    morphia进阶
    morphia基本API方法
    mangodb数据库框架morphia注解
    学与思
    解决vscode执行yarn启动项目报错
    使用swiper+动画实现轮播图自动播放
    vue中使用el-tree实现一行显示多条数据
    使用git命令提交部分修改代码
  • 原文地址:https://www.cnblogs.com/localhost-ha/p/12580156.html
Copyright © 2011-2022 走看看