正则表达式与DFA、NFA

  • Post author:
  • Post category:其他


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



概述

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


有穷状态自动机

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

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


  • 确定的有穷自动机

    就是说当一个状态面对一个输入符号的时候,它所转换到的是一个唯一确定的状态;

  • 不确定的有穷自动机

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



转换

而从正则表达式转换到DFA是不容易的,所以会先转换成NFA再转换到DFA。

在这里插入图片描述


从RE到NFA


RE:r=(alb)*abb

在这里插入图片描述


从NFA到DFA


DFA的每个状态都是一个由NFA中的状态构成的集合,即NFA状态集合的一个子集

  1. 先求状态表

    在这里插入图片描述
  2. 转换

    在这里插入图片描述



版权声明:本文为MOKEXFDGH原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。