正则表达式与DFA、NFA

本文介绍了正则表达式与有穷状态自动机(DFA、NFA)的关系,阐述了DFA和NFA的区别,重点讨论了如何将正则表达式转换为NFA以及NFA转换为DFA的过程,帮助理解正则表达式的解析原理。
摘要由CSDN通过智能技术生成

前天笔试遇到,这里学习一下。

概述

正则表达式的规则很容易理解,有穷状态自动机是一种计算机程序的模型,可以用来转化解析正则表达式。

有穷状态自动机 包含一个有限状态的集合,还包含了从一个状态到另外一个状态的转换。

而有穷状态自动机又可以分为确定的(DFA)、不确定的(NFA)

  • 确定的有穷自动机就是说当一个状态面对一个输入符号的时候,它所转换到的是一个唯一确定的状态;
  • 不确定的有穷自动机是说当一个状态面对一个输入符号的时候,它所转换到的可能不只一个状态,可以是一个状态集合。
  • 还有就是DFA的开始状态是唯一的,而NFA的开始状态是一个开始状态集。

转换

而从正则表达式转换到DFA是不容易的,所以会先转换成NFA再转换到DFA。
在这里插入图片描述
从RE到NFA
RE:r=(alb)*abb
在这里插入图片描述
从NFA到DFA
DFA的每个状态都是一个由NFA中的状态构成的集合,即NFA状态集合的一个子集

  1. 先求状态表
    在这里插入图片描述
  2. 转换
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值