网站大量收购独家精品文档,联系QQ:2885784924

第三章 自动机基础 (3).ppt

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
3.4 正规语言描述方法间的相互转换 ※ 正规文法 与 DFA间转换示例: ※ 正规式 与 DFA间转换示例: 3.5 有限自动机的实现问题 用计算机完成有限自动机的功能,其核心是“变换”的实现技术。这里介绍的是把变换表按某种方式存贮起来,作为知识源,实现机制是: 3.5.1 控制程序设计 3.5.2 变换表存贮结构设计 ※有限自动机实现示例: 练习题: 谢谢收看! * * 众所周知,正规语言有三种等价的表示方法: ⑴ 正规文法 ⑵ 正规式 ⑶ 有限自动机 我们以有限自动机为核心,介绍彼此间的转换关系: Ⅰ. 正规文法 = DFA 设 G(Z)=(VN,VT,Z,P), DFA=(Q,∑,s,F,?) 则有: DFA 正规文法 ∑(字符集) VT (终结符集) ?(A,a)=B A - aB ?(A,a)=B(结束态) A - a S(开始状态) Z(开始符号) Q(状态集) VN( 非终结符集) A - ? A(结束态) Z-aZ|bA|? , A-bA|dB ,B-? 【例3.16】 自动机 = 正规文法: ① ② ③ a b c d + - DFA: 令 Z=①, A=②, B=③ 则有 正规文法 Z - aA 【例3.17】正规文法 = 自动机, 并求 L(G): G(Z): Z-aZ|bA|? ,A-bA|d ∵ A-d 可变换为 ∴ G`(Z) ( 与 G(Z)等价 ): 令 ①-Z, ②-A, ③-B 对应的DFA ① ② ③ b a d + - - b 则 L(G)={?,ambnd|m≥0,n0} G(Z): | cB , A -bA | dB , B-? A-dB, B-? s f e + - Ⅱ. 正规式 = DFA 设 e 为正规式 , DFA=(Q,∑,s,F,?) 转换机制: ※ e = DFA 分解过程 ( 其逆过程为合成过程): 则有: 合成 分解 i j e1|e2 i j e1.e2 i j e* i j e2 e1 i j e1 k e2 i j e k ? ? 实践中,可简化为其中一种: i e j ? j e i ? e i e j 或 或 或 【例3.18】正规式 = 自动机 设 e = a*b|bc* 则: ① ⑨ a*b bc* + - a* c* ① + ⑨ - ② ③ b b + - a a a a c ① + ⑨ - ② ③ b b b - + a a c A + B b b D - C E c - - 等价! Ⅰ Ⅱ a ? c ① + ⑨ - ② ③ b b ? Ⅲ b c ① + ⑨ - ② ③ b b ? + - Ⅳ Ⅴ 确定化2 DFA: 确定化1 b c a Ⅵ A{1,2} + D{9} C{3,9} B{2} B{2} D{9} E{3} C{3,9} B{2} E{3} E{3} - - - ⑶ 令 getchar(ch) 读符号函数。 【三点说明】 ⑴ 假定自动机只作为识别器,即 对待识别的符号串: 仅回答 是(接受)或 否(拒绝)。 ⑵ 为便于处理,可令 为此,扩展自动机如下: … … ok 4 ok 5 … … … … 6 3 1 ≮ b a + - - ‘空’ 则 no 控制程序 变换表 + ③ ① + ⑥ ⑤ - a ④ - b - ≮ ≮ 作为待识别的符号串的泛指后继符。 ≮ 开始 结束 state:=1 getchar(ch) 查变换表: ?(state,ch)= ? ?=? ?=ok 回答:ok 回答:no y n y state:= ? n 开始状态1赋给变量 state 从输入串中读取一符号到变量 ch 变量 state 重新被赋值! n … ② ① 变换表的存贮结构可选择下述两种方式之一: ⑴ 二维数组 ,其下标是(状态,输入符号); ※ 为了适应不同编码语言的需要,状态和输入符号可采取相应的编码形式;通常,使用连续的正整数:0,1,2,3,…。 ⑵ 压缩变换表,方法是把每个状态行作为子表,状态为索引,并把错误的输入符号合并在一起,如: no ? … ⑧ b ⑤ a no ? … ② f ④ e … no ? … ⑨ y ① x 索引表 ?(其他)--错误符号。 状态 变换子表 c a 3 ④ ③ ② ① 【例3.19】 有限自动机DFA: ③ ① + ② ④ a b - # a b c d ? no ② b ③ a ? no ④ d no ? ② c ④ b ③ a ? no ok # 压缩变换表 输入串 aacd#

文档评论(0)

qingfengxulai + 关注
实名认证
内容提供者

文档来源于网络

1亿VIP精品文档

相关文档