【编译原理】典型题型:语言转化为正规表达式RE RE转化为NFA NFA的确定化&DFA的最小化(状态转换图 状态转移矩阵) |
您所在的位置:网站首页 › nfa转化为dfa如何确定终态 › 【编译原理】典型题型:语言转化为正规表达式RE RE转化为NFA NFA的确定化&DFA的最小化(状态转换图 状态转移矩阵) |
语言转化为正规表达式RE RE转化为NFA NFA的确定化&DFA的最小化(状态转换图 状态转移矩阵)
目录
语言转化为正规表达式RE RE转化为NFA NFA的确定化&DFA的最小化(状态转换图 状态转移矩阵)题目预览语言转化为正规表达式RE转化为NFANFA的确定化DFA的最小化
题目预览
设 ∑ = {a,b},L={ 不包含子串 aba 的串 } 1 能表达语言L的正规式 2 能识别语言L的NFA 3 能识别语言L的DFA 4 能识别语言L的状态最少的DFA 语言转化为正规表达式不包含子串 aba 的串 RE: b* ( a | bbb* )* b* RE转化为NFA不确定的有穷状态自动机NFA NFA M=( S,∑,δ,S0,F ) 1 S是一个有限集 它的每个元素称为一个状态 2 ∑ 是一个有穷字母集 它的每个元素称为输入字符 3 δ 是一个从Sx ∑ -> S的子集的映射 δ:S x ∑* -> T(T属于S) 4 S0 属于S 是一个非空的初态集 5 F 属于S 是一个终态集(可空)* 根据RE画出状态转换图 定义一:状态集I的ε闭包,记为ε_CLOSURE(I) ⅰ.若s∈I,则s∈ε_CLOSURE(I); ⅱ.若s∈I,则由s出发经任意条ε弧而能够到达的任何状态s´∈ε_CLOSURE(I) 定义二:对状态集I和a∈Σ,定义: Ia= ε_CLOSURE(J) ;其中J是那些可从I中某一结点出发经过一条a弧而到达的状态结点的集合
将ε_CLOSURE(I) = {1,2,5} 写入表中 然后 {1,2,5} 分别输入a b看能到达什么状态 此后同理 然后将{2,5} 和 {1,2,3,5}填入第一列中 表示作为一个新的状态 每次有一个新的子集出现 一定要把它加入到左边第一列作为一个新的状态 这其实就是NFA到DFA的转换实质-让NFA的 多值映射&带空转移 消失 这两者是NFA不确定的体现 等价状态: 若分别从状态 s 和 t 出发而停于终态能读出同一个串α 则称 s t 为等价状态 反之则称为可区别状态 如何寻找等价状态? 逆向思维:去掉那些一定不等价的(可区别状态) 剩下的就是等价的 DFA最小化的第一步 就是先对DFA的状态做一个粗略的划分 上面我们没有讲到终态的确定 然后就是对DFA的状态做一个粗略的划分 我们一般常用初态和终态先划分 那么这道题我们怎么划分呢? 还是看状态转换表 由于D比较特殊 它输入a没有到任何状态 所以我们就把这个特殊的挑出来 粗略划分为 L1:{D} L2:{A,B,C,E,F,G} 然后继续划分 看L2有哪些状态能够到达特殊的L1区域呢? 我们再来划分L22:{A,C,E,F,G} 同时输入a 都指向L21中的B 同时输入b 指向的状态都在L22里 而且不管跳几个a 几个b 它们所指向的区域都是相同的 所以这五个状态相当于一个状态 就将它们合并 由此划分为{A,C,E,F,G} {B} {D} 然后我们将它们重新命名一下 {A,C,E,F,G}命名为SA {B}命名为SB {D}命名为SD 然后根据未最小化的DFA 画出最小化的DFA |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |