【计算理论】计算理论总结 ( 正则表达式转为非确定性有限自动机 NFA | 示例 ) ★★(二)

简介: 【计算理论】计算理论总结 ( 正则表达式转为非确定性有限自动机 NFA | 示例 ) ★★(二)

三、正则表达式转为非确定性有限自动机 NFA 示例 2


将正则表达式 ( ( ( 00 ) ∗ ( 11 ) ) ∪ 01 ) ∗ \rm ( ( (00) ^* (11) ) \cup 01 )^*(((00)

(11))∪01)

 转为 NFA ;



构造原子自动机 : 注意从 非接受状态 → \to→ 接受状态 ;

image.png



00 0000 串联 : 前者的接受状态 必须转为 非接受状态 , 前者的接受状态 必须转为 非接受状态 , 后者的状态是不变的 ;

image.png



( 00 ) ∗ (00)^*(00)

星运算 : 使 接受状态 → \to→ 起始状态 , 并添加一个 接受状态 起始状态 , 指向原来的起始状态 ;

image.png



11 1111 串联 : 前者的接受状态 必须转为 非接受状态 , 前者的接受状态 必须转为 非接受状态 , 后者的状态是不变的 ;

image.png



( ( 00 ) ∗ ( 11 ) ) ((00)^* (11))((00)

(11)) 串联 : 前者的接受状态 必须转为 非接受状态 , 前者的接受状态 必须转为 非接受状态 , 后者的状态是不变的 ;

image.png


( ( 00 ) ∗ ( 11 ) ) ∪ 01 ((00)^* (11)) \cup 01((00)

(11))∪01 并联 : 在二者前面添加 非接受状态 起始状态 ;




( ( ( 00 ) ∗ ( 11 ) ) ∪ 01 ) ∗ (((00)^* (11)) \cup 01)^*(((00)

(11))∪01)

 星运算 : 使 接受状态 → \to→ 起始状态 , 并添加一个 接受状态 起始状态 , 指向原来的起始状态 ;




化简后结果 :



image.png





四、正则表达式转为非确定性有限自动机 NFA 示例 3


将正则表达式 ∅ ∗ \varnothing ^*∅

 转为 NFA ;



∅ ∗ \varnothing ^*∅

 = { ε } =\{ \varepsilon \}={ε}


构造原子自动机 : 注意从 非接受状态 → \to→ 接受状态 ;

image.png


目录
相关文章
正则表达式的常用示例
正则表达式的常用示例
|
6月前
|
自然语言处理 算法 编译器
编译原理复习一:正则表达式-NFA NFA-DFA DFA最小化(附题目与答案 超详细)
编译原理复习一:正则表达式-NFA NFA-DFA DFA最小化(附题目与答案 超详细)
324 0
|
6月前
|
Linux Perl
使用awk和正则表达式过滤文本或字符串 - 详细指南和示例
使用awk和正则表达式过滤文本或字符串 - 详细指南和示例
160 0
|
存储 索引 Python
【100天精通python】Day23:正则表达式,基本语法与re模块详解示例
【100天精通python】Day23:正则表达式,基本语法与re模块详解示例
106 0
|
6月前
|
Java 索引
正则表达式源码分析--三个常用类--分组、捕获、反向引用--String 类中使用正则表达式的代码示例和图
正则表达式源码分析--三个常用类--分组、捕获、反向引用--String 类中使用正则表达式的代码示例和图
80 0
|
算法 Java
从0到1打造正则表达式执行引擎(一) 正则表达式转NFA (1)
重复匹配(正则表达式中的 ? + *) 正则表达式里有4种表示重复的方式,分别是:
71 1
|
算法 测试技术
从0到1打造正则表达式执行引擎(二) NFA转DFA
然后对DFA的节点0执行步骤1,找到NFA中所有a可达的NFA节点(1#2#4#6#8#9)构成NFA中的节点1,如下图。
122 0
|
设计模式 算法
从0到1打造正则表达式执行引擎(一) 正则表达式转NFA (2)
看完上文之后相信你一直知道如果将一个正则表达式转化为状态机的方法了,这里我们要将理论转化为代码。首先我们要将图转化为代码标识,我用State表示一个节点,其中用了Map<MatchStrategy, List> next表示其后继节点,next中有个key-value就是一条边,MatchStrategy用来描述边的信息。
72 0
|
数据采集 移动开发 Python
正则表达式——语法、re模块的使用(附示例)
正则表达式——语法、re模块的使用(附示例)
140 0
正则表达式——语法、re模块的使用(附示例)
|
机器学习/深度学习 移动开发 前端开发
关于正则表达式的使用的一些小示例
关于正则表达式的使用的一些小示例
82 0