- 1、本文档共57页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* * ㈡状态转换矩阵 函数f可用矩阵表示,行表示状态,列表示输入字符,该矩阵称为状态转换矩阵。只要对初态和终态作适当标记,可用一个状态转换矩阵来表示DFA。 ㈢DFA M可用一个(确定的)状态转换图表示 例识别二进制数的DFA可用(确定的)状态转换图表示如下: 状态/字符 0 1 0 1 1 1 1 1 接上例 * * ㈣字α可为DFA M识别 对于一个字α,若存在一条从初态结到某一终态结的路径,且路径上的所有弧的标记依序连接成的字为α,则称α可为DFA M所识别或接受。 若DFA M的初态结同时又是终态结,则称空字ε可为DFA M所识别或接受。 DFA M所识别的字全体记为L(M)。 设α= 1012 = 5 因从初态0出发,存在一条到终态1的路径。路径上的标记依次连接为101,则称α= 101可为M所识别或接受。 L(M) = {α |α为二进制数}。 * * 2.2.4 非确定有限自动机(NFA) ㈠NFA定义 一个非确定的有限自动机M是一个五元式 M=(S,Σ,f,S0,Z) S是一个有限集,它的每一个元素称为状态。 Σ是一个有穷字母表,它的每个元素称为一个输入字符。 f是一个从S×Σ*到S的子集映照,即f:S×Σ*→2S(多值函数) 2S表示幂集,若S={0,1},则2S ={{ },{0},{1},{0,1}}。 S0S,是一个非空初态集,即NFA的初态不一定唯一。 ZS,是一个终态集。 DFA和NFA的主要区别为:映照f(函数),DFA的映照f是从状态×字符映射到状态,f为单值函数;而NFA的映照f是从状态×字映射到状态子集,f为多值函数。 * * 例某一非确定有限自动机 M=({1,2,3,4,5,6},{a,b},f,{1,2},{3}) 其中f的定义为: f(1,a)={4,5}、f(5,ε)={6}、f(6,ε)={2}、f(2,ab)={3} 其余情况f(si,α) = { }(α∈Σ*,si∈S) ㈡NFA M可用一个(非确定的)状态转换图表示 * * ㈢字α可为NFA M识别 对于Σ*中的一个字α,若在NFA M中存在一条从某一初态到某一终态的路径,且路径上的所有标记依序连接成的字为α,则称α可为NFA M所识别或接受。 若M的某些结既是初态结又是终态结,或者存在一条从某个初态结到某个终态结的ε道路,那么空字ε可为M所接受。 非确定有限自动机M所识别的字全体记为L(M)。 对于任何二个有限自动机M和M,若L(M) = L(M),则称二个有限自动机M和M等价。 DFA是NFA的特例,对于每个NFA M存在一个DFA M,使得L(M)=L(M)。 * * 2.2.5正规式与确定有限自动机的等价性 对于Σ上的每个正规式V,存在一个Σ上的确定有限自动机M,使得L(V)=L(M)。 ㈠V?NFA ①将V表示成拓广NFA ②根据下面三条规则对V进行分裂(规则基于识别的语言不变),直至每条弧上的标记为Σ上的一个字符或ε。 V * * 例,已知正规式(a|b)*(aa|bb)构造它的NFA。 * * ㈡NFA?DFA 为了便于描述NFA确定化算法,我们引进二个概念。 ①I的ε闭包 I的ε闭包记为ε_CLOSURE(I)或CLOSURE(I),设I是NFA M状态集的一个子集,I的ε闭包定义为: 若状态s∈I,则s∈ε_CLOSURE(I)。 若状态s∈I,则从状态s出发,经一条或多条ε弧所能到达的状态s也属于ε_CLOSURE(I)。 ②Ia I NFA M状态集的一个子集 Ja 从I出发经一条a弧所能到达的状态全体 Ia ε_CLOSURE(Ja) * * 设I={1},则CLOSURE(I)= CLOSURE({1})={1,2}。 设I={5,4,3},则CLOSURE(I) = CLOSURE({5,4,3}) = {5, 4, 3, 6, 2, 8, 7}。 接上例设I={1,2},则 Ja ={4,5}∪{3}={3,4,5} Ia = CLOSURE ({3,4,5})={5,4,3,6,2,8,7} ③NFA确定化算法 I Ia(a∈∑) Ib(b∈∑) CLOSURE({X}) 1)数据结构及初始状态 手工计算 * * 2)算法描述 0. procedure NFA_TO_DFA 1. p_cur←1 //当前指针,指示当前处理的状态子集。 2. p_end←1 //表尾指针 3. I[1]←CLOSURE({X}) 4. while p_cur≤p_end 5. for i←1 to n //设∑={x1,x2,…,
文档评论(0)