第八次.非确定的自动机NFA确定化为DFA

1.设有 NFA M=( {0,1,2,3}, {a,b},f,0,{3} ),其中 f(0,a)={0,1}  f(0,b)={0}  f(1,b)={2}  f(2,b)={3}

画出状态转换矩阵,状态转换图,并说明该NFA识别的是什么样的语言。

状态转换矩阵

 
a


b


0


0,1


0


1


Φ


2


2


Φ


3


3


Φ


Φ

状态转换图

该NFA识别的语言:  L(M)= (a | b) * abb

2.NFA 确定化为 DFA

1.解决多值映射:子集法

1). 上述练习1的NFA

状态转换矩阵

 
a


b


A


{0}


ε{0}={0,1}


ε{0}={0}


B


{0,1}


ε{0}={0,1}


ε{0,1}={0,2}


C


{0,2}


ε{0}={0,1}


ε{0,1}={0,3}


D


{0,3}


ε{0}={0,1}


ε{0}={0}

状态转换图

2). P64页练习3

状态转换矩阵


0


1


a


S


{V,Q}


{Q,U}


b


{V,Q}


{Z,V}


{Q,U}


c


{Q,U}


{V}


{Q,U,Z}


d


{Z,V}


{Z}


{Z}


e


{V}


{Z}


f


{Q,U,Z}


{V,Z}


{Q,U,Z}


g


{Z}


{Z}


{Z}

状态转换图

2.解决空弧:对初态和所有新状态求ε-闭包

1). 发给大家的图2

状态转换矩阵

 
0


1


2


X


ε{A}={ABC}


ε{A}={ABC}


ε{B}={BC}


ε{C}={C}


Y


{BC}


ε{B}={BC}


ε{C}={C}


Z


{C}


ε{C}={C}

状态转换图

2).P50图3.6

状态转换矩阵


a


b


A


ε{0}={01247}


ε{38}={1234678}


ε{5}={124567}


B


{1234678}


ε{38}={1234678}


ε{59}={1245679}


C


{124567}


ε{38}={1234678}


ε{5}={124567}


D


{1245679}


ε{38}={1234678}


ε{510}={12456710}


E


{12456710}


ε{38}={1234678}


ε{5}={124567}

状态转换图

子集法:

f(q,a)={q1,q2,…,qn},状态集的子集

将{q1,q2,…,qn}看做一个状态A,去记录NFA读入输入符号之后可能达到的所有状态的集合。

步骤:

1).根据NFA构造DFA状态转换矩阵

①确定DFA的字母表,初态(NFA的所有初态集)

②从初态出发,经字母表到达的状态集看成一个新状态

③将新状态添加到DFA状态集

④重复23步骤,直到没有新的DFA状态

2).画出DFA

3).看NFA和DFA识

原文地址:https://www.cnblogs.com/zqy1004/p/11763927.html

时间: 2024-10-09 09:49:34

第八次.非确定的自动机NFA确定化为DFA的相关文章

编译原理之非确定的自动机NFA确定化为DFA

1.设有 NFA M=( {0,1,2,3}, {a,b},f,0,{3} ),其中 f(0,a)={0,1}  f(0,b)={0}  f(1,b)={2}  f(2,b)={3} 画出状态转换矩阵,状态转换图,并说明该NFA识别的是什么样的语言. 语言为:(a|b)*abb 2.NFA 确定化为 DFA 1.解决多值映射:子集法 1). 上述练习1的NFA 2). 将下图NFA 确定化为 DFA 2.解决空弧:对初态和所有新状态求ε-闭包 1). 图转换为矩阵: 状态转换图: 识别语言为:0

编译原理:非确定的自动机NFA确定化为DFA

1.设有 NFA M=( {0,1,2,3}, {a,b},f,0,{3} ),其中 f(0,a)={0,1}  f(0,b)={0}  f(1,b)={2}  f(2,b)={3} 画出状态转换矩阵,状态转换图,并说明该NFA识别的是什么样的语言. 解析:   a b 0 {0,1} 0 1 2 2 3 3   状态转换图如下: 识别语言为:(a | b)*abb 2.NFA 确定化为 DFA 1.解决多值映射:子集法 1). 上述练习1的NFA 解析: 根据1的NFA构造DFA状态转换矩阵如

非确定的自动机NFA确定化为DFA

1.解决多值映射:子集法 1). 发给大家的图1 2). P64页练习3 2.解决空弧:对初态和所有新状态求ε-闭包 1). 发给大家的图2 2).P50图3.6 原文地址:https://www.cnblogs.com/ray064/p/11757824.html

编译原理学习(9)非确定的自动机NFA确定化为DFA

1.解决多值映射:子集法 1). 发给大家的图1 2). P64页练习3   2.解决空弧:对初态和所有新状态求ε-闭包 1). 发给大家的图2 2).P50图3.6 原文地址:https://www.cnblogs.com/xyqzzz/p/11773747.html

非确定的自动机NFA确定化DFA

1.设有 NFA M=( {0,1,2,3}, {a,b},f,0,{3} ),其中 f(0,a)={0,1}  f(0,b)={0}  f(1,b)={2}  f(2,b)={3} 画出状态转换矩阵,状态转换图,并说明该NFA识别的是什么样的语言. 2.NFA 确定化为 DFA 1.解决多值映射:子集法 1). 上述练习1的NFA 2). P64页练习3 2.解决空弧:对初态和所有新状态求ε-闭包 1). 发给大家的图2 2).P50图3.6 原文地址:https://www.cnblogs.

NFA转换成DFA——汉字形式数字转换成整数数字

偶然间遇到了一个需求:汉字形式数字转换成整数数字.如果不处理意外情况,可以写的很简单(比如不会出现三三等),详情可以看这里.但是,想着可以写成一个FA的形式,于是乎,发现并不是想象中的那么简单..因为写成FA就发现,要处理非法形式的问题,还是有点麻烦的. 好不容易写成了FA,发现是个NFA,于是乎写了个NFA转换成DFA的代码,也支持了一套简单的FA的定义规则.代码如下: package ie; import java.util.ArrayList; import java.util.HashM

Aho-Corasick 多模式匹配算法、AC自动机详解

Aho-Corasick算法是多模式匹配中的经典算法,目前在实际应用中较多. Aho-Corasick算法对应的数据结构是Aho-Corasick自动机,简称AC自动机. 搞编程的一般都应该知道自动机FA吧,具体细分为:确定性有限状态自动机(DFA)和非确定性有限状态自动机NFA.普通的自动机不能进行多模式匹配,AC自动机增加了失败转移,转移到已经输入成功的文本的后缀,来实现. 1.多模式匹配 多模式匹配就是有多个模式串P1,P2,P3...,Pm,求出所有这些模式串在连续文本T1....n中的

DFA和NFA

1.历史: 引用 正则表达式萌芽于1940年代的神经生理学研究,由著名数学家Stephen Kleene第一个正式描述.具体地说,Kleene归纳了前述的神经生理学研究,在一篇题为<正则集代数>的论文中定义了“正则集”,并在其上定义了一个代数系统,并且引入了一种记号系统来描述正则集,这种记号系统被他称为“正则表达式”.在理论数学的圈子里被研究了几十年之后,1968年,后来发明了UNIX系统的Ken Thompson第一个把正则表达式用于计算机领域,开发了qed和grep两个实用文本处理工具,取

南瓜不说话(M01)-正则表达式原理

文法 一个文法可以用一个四元来定义,G = {Vt,Vn,S,P} Vt:一个非空有限的符号集合,它的每个元素称为终结符号; Vn:一个非空有限的符号集合,它的每个元素称为非终结符号,并且Vt∩Vn=Φ; S∈Vn,称为文法G的开始符号; P是一个非空有限集合,它的元素称为产生式; 产生式是指,其形式为α→β,α称为产生式的左部,β称为产生式的右部,符号"→"表示"定义为",并且α.β∈(Vt∪Vn)*,α≠ε,即α.β是由终结符和非终结符组成的符号串; 开始符S必