




已阅读5页,还剩48页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
3 4 5DFA的化简 1 DFA的化简 所谓一个DFAM的化简是指寻找一个状态数比M少的DFAM 使得L M L M 1 没有多余状态 化简了的DFA满足两个条件 2 它的状态集中没有两个状态是互相等价的 所谓有穷自动机的多余状态是指从该自动机的开始状态出发 任何输入串也不能到达的状态 3 4 5DFA的化简 2 多余状态 3 等价状态 设DFAM Q f S0 F s t Q 若对任何 f s F当且仅当f t F 则称状态s和t是等价的 例如 终态与非终态是可区别的 因为终态有一条到达自身的 道路 而非终态没有到达终态的 道路 3 4 5DFA的化简 如果s和t不等价 则称s和t是可区别的 5 化简方法 一致性条件 状态s和t必须同时为终态或非终态 4 两个状态等价的条件 蔓延性条件 对于所有输入符号a 状态s和t必须转到等价的状态里 输入 一个DFAM 输出 接受与M相同语言的DFAM 且其状态数最少 3 4 5DFA的化简 无多余状态下把M的状态集Q分划成一些不相交的子集 使得每个子集中任何两个状态是等价的 而任何两个属于不同子集的状态都是可区别的 化简方法 然后在每个子集中任取一个状态作 代表 而删去子集中其余状态 并把射向其余状态的箭弧都改作射向作 代表 的状态中 3 4 5DFA的化简 下面给出化简算法的具体执行步骤 1 将DFAM的状态集Q分成两个子集 终态集F和非终态集 F 形成初始分划 2 对 使用如下方法建立新分划 NEW 1 把G分划成新的子集 使得G的两个状态s和t属于同一子集 当且仅当对任何输入符号a 状态s和t转换到的状态都属于 的同一子集 对 的每个状态子集G 3 4 5DFA的化简 用G分划出的所有新子集替换G 形成新的分划 NEW 如果 NEW 则执行第4步 否则令 NEW 重复第2步 分划结束后 对分划中的每个状态子集 选出一个状态作代表 而删去其它一切等价的状态 并把射向其它状态的箭弧改为射向这个作为代表的状态 3 4 5DFA的化简 例1 将右面的DFA最小化 初始分划 A B C D E A B C D a B 分析由图可知 给定的DFA中无多余状态 A B C D b C D E A B C D E A B C a B A B C b C D A C B D E A C a B A C b C A C B D E 例2 将右面的DFAM最小化 1 2 l 2 1 2 0 分析由图可知 给定的DFA无多余状态 初始分划 1 2 0 1 2 d 2 3 4 5DFA的化简 3 4 6有穷自动机到正规式的转换 1 在M的转换图上添加两个结点 X结和Y结 从X结用 连线连结到M的所有初态结点 从M的所有终态结点用 连线连结到Y结 从而构成一新的非确定有穷自动机M 它只有一个初态结X和一个终态结Y 显然 L M L M 即 这两个NFA是等价的 3 4 6有穷自动机到正规式的转换 2 逐步消去M 中的其它结点 直至只剩下X Y结点 在消除结点过程中 逐步用正规式来标记相应的箭弧 消除结点的过程是很直观的 只需反复使用下图的替换规则即可 3 4 6有穷自动机到正规式的转换 对于 代换为 对于 代换为 代换为 对于 3 4 6有穷自动机到正规式的转换 例1 设有穷自动机的状态图如图所示 试求该自动机识别语言的正规式 R 10 01 10 01 3 5正规文法与有穷自动机 右线性正规文法到有穷自动机的转换方法 则相应的有穷自穷自动机M Q f q0 Z 1 令Q VN D DVN Z D VTq0 S 2 对G中每一形如A aB A B VN a VT 的产生式 令f A a B 设给定了一个右线性正规文法G VN VT P S a A B令f A B A aBA a 3 5 1右线性正规文法到有穷自动机的转换方法 3 对G中每一形如A a A VN a VT 的产生式 令f A a D 4 对G中每一形如A A VN 的产生式 令A为接受状态或令f A D 例1构造下述文法G Z 的有穷自动机 其状态图如图 a 或 b 所示 显然 自动机M是非确定的 它识别的语言就是文法G Z 所描述的语言即L G Z L M 0 0 01 0 Z 0A A 0A 0B B 1A A Z 0 0 1 0 a 3 5 2左线性正规文法到有穷自动机的转换方法 则相应的有穷自穷自动机M Q f q0 Z 1 令Q VN q0 q0VN Z S VT 2 对G中每一形如A Ba A B VN a VT 的产生式 令f B a A 设给定了一个左线性正规文法G VN VT P S a A B令f B A A BaA a 3 5 2左线性正规文法到有穷自动机的转换方法 3 对G中每一形如A a A VN a VT 的产生式 令f q0 a A 例1 构造下述文法G A 的自动机 其状态图如下图所示 显然 该自动机是确定的 它识别的语言就是文法G A 所描述的语言 即L G A L M 00 11 B B0 0 A A1 B1 B S 0 1 0 1 3 5 3有穷自动机到正规文法的转换 设给定有穷自动机M Q f q0 Z 则相应的正规文法G VN VT P S 1 令VN QVT S q0 3 若f A a B且B Z时 则将产生式A aB a或将产生式A aB B 加到P中 3 5 3有穷自动机到正规文法的转换 若文法的开始符号S是一个终态 则将产生式S 加到P中 例1设有穷自动机M S A a b 0 1 f S A M的状态转换图如图所示 根据上述转换规则 与M等价的正规文法G为 其中P 或P 自动机M所识别的语言L M L G a b 0 1 a b f S a Af S b A f A a Af A b A f A 0 Af A 1 A 其中 G S A a b 0 1 P S S aA bA A aA bA 0A 1A S aA bA a b A aA bA 0A 1A a b 0 1 例2设DFAM A B C D 0 1 A B 该自动机相应的状态转换图如下图所示 构造一个右线性文法G 使得L G L M A 0 B A 1 D B 0 D B 1 C C 0 B C 1 D D 0 D D 1 D 其中 从状态转换图可以看出 状态D是多余的 可以去掉 于是得到与M等价的DFAM 的状态转换图如图所示 3 5 3有穷自动机到正规文法的转换 3 5 3有穷自动机到正规文法的转换 G A B C 0 1 P A 其中P为 或 该自动机所识别的语言为0 10 A 0B 0 B 1C C 0B 0 根据转换规则所求右线性文法为 A 0B B 1C C 0B 3 6词法分析程序的编写方法 构造词法分析程序的方法 第二种方法是利用词法分析程序的自动生成工具LEX自动生成词法分析程序 本书附录对LEX作了简单介绍 第一种方法是用手工方式 即根据识别语言单词的状态转换图 使用某种高级语言 例如C语言直接编写词法分析程序 下面以某种简单语言为例 对第一种方法作简要的介绍 例如 下表列出了某个简单语言的所有单词符号 以及它们的种别编码和单词值 右图是一张识别前表的单词符号的状态转换图 图中 状态0为初态 凡带双圈者均为终态 状态17是识别不出单词符号的出错情况 l代表任一字母 d代表任一数字 根据这张转换图 我们用C语言直接编写出识别该语言所有单词的词法分析程序 3 6词法分析程序的编写方法 在例中 我们规定所有关键字 用户不得使用它们作为自己定义的标识符 这样我们可以把关键字作为一类特殊的标识符来处理 不再专设对应的转换图 但需把它们预先安排在一个表格中 此表叫关键字表 当利用状态转换图识别出一个标识符时 就去查关键字表 以确定它是否是一个关键字 其次规定 若关键字 标识符和常数之间没有确定的运算符或界符作间隔 则必须至少用一个空白符作间隔 即此时的空白符是有意义的 根据状态转换图构造出词法分析程序最简单的办法是让每个状态对应一小段程序 1 ch字符变量 存放当前读进的源程序字符 2 token字符数组 存放构成单词符号的字符串 3 getch 读字符函数 每调用一次从输入缓冲区中读进源程序的下一个字符放在ch中 并把读字符指针指向下一个字符 4 getbc 函数 每次调用时 检查ch中的字符是否为空白字符 若是空白字符 则反复调用getbc 直至ch中进入一个非空白字符为止 首先 我们引进词法分析程序所用的全局变量和需调用的函数如下 3 6词法分析程序的编写方法 6 letter ch 和degit ch 布尔函数 它们分别判定ch中的字符是否为字母和数字 从而给出true或false 7 reserve 整型函数 对token中的字符串查关键字表 若它是一个关键字 则回送它的编码 否则回送标识符的种别码10 5 concat 函数 每次调用把当前ch中的字符与token中的字符串联接 例如 假定token字符数组中原有值为 ab ch中存放着 c 经调用concat 后 token数组中的值变为 abc 3 6词法分析程序的编写方法 8 retract 函数 读字符指针回退一个字符 9 return 函数 收集并携带必要的信息返回调用程序 即返回语法分析程序 10 dtb 进制转换函数 它将token中的数字串转换成二进制数值表示 并以此作为函数值返回 根据该语言的状态转换图用C语言编写出词法分析程序如下 Scaner token NULL getch getbc if letter ch while letter ch digit ch concat getch retract c reserve if c 10 return c token elsereturn 10 token 相对于状态转换图用C语言编写出词法分析程序如下 elseif digit ch while digit ch concat getch retract return 11 dtb elseswitch ch case return 13 break case return 14 break case return 15 break case return 16 break case return 18 retract return 19 break case getch if ch return 22 retract return 21 break case return 23 break default error break 由此可知 只要构造出识别语言单词符号的有穷自动机 就很容易构造出识别语言单词符号的词法分析程序 3 6词法分析程序的编写方法 本章小结 本章重点介绍了词法分析程序的设计思想和构造方法 主要内容有 1 词法分析程序的功能是从左到右扫描源程序字符串 根据语言的词法规则识别出各类单词符号 输出单词符号的形式是二元组 单词种别 单词自身值 本章小结 例如定义 标识符 单词的正规式是l l d 正规文法是 标识符 l 标识符 l 标识符 d 2 程序语言单词符号的两种定义方式 正规文法 正规式 本章小结 3 有穷自动机有确定的和非确定两大类 NFAN Q f S Z 其中f是多值映射函数 S为非空初态集 有穷自动机通常表示为状态转换图 它是有穷自动机的非形式化描述 DFAM Q f S Z 其中是f单值映射函数 S是唯一初态 本章小结 从单词两种定义方式中构造词法分析程序的过程是 4 正规式 正规文法和有穷自动机三者都是描述正规集的工具 它们的描述能力是等价的 它们之间可相互转换 5 证明两正规式是等价的 如果它们的最小状态DFA是相同的 也可以利用正规式的基本等价关系将一个正规式化简来证明两正规式之间的等价性或两正规式识别的语言一样 本章小结 本章小结 例1构造正规式R 1 0 1 101的状态最小化的DFA 分析首先对R采用分裂法构造NFA 见下图 对NFA采用子集法构造其等价的DFA的状态转换矩阵 见右表 ABFCDE 字符 状态 0 1 X 1 2 3 2 3 4 2 3 5 2 3 4 Y 2 3 2 3 1 2 3 2 3 4 2 3 2 3 4 2 3 5 2 3 4 2 3 2 3 4 Y 2 3 5 2 3 4 本章小结 对DFA采用分化的方法化简 得到状态最小化的DFA 见下图 例2 构造一个DFA它接收 0 1 上所有满足如下条件的字符串 每个1都有0直接跟在右边 分析首先给出描述语言的正规式R 0 10 采用分裂法从正规式构造NFA 采用子集法将NFA确定化为DFA 采用分化方法将DFA化简 字符 状态 0 1 X A Y B A Y A Y B B A Y A Y 分析给出描述语言的正规文法 S 0S 1A A 0S 根据右线性文法构造有穷自动机的方法 构造出如下的状态转换图 例2 构造一个DFA它接收 0 1 上所有满足如下条件的字符串 每个1都有0直接跟在右边 S 0A 1BA 1S 1B 0S 0 分析根据正规文法转换成正规式的方法 首先给出该正规文法对应的正规式方程组 S 0A 1B 1 A 1S 1 2 B 0S 0 3 将 2 3 代入 1 得S 01S 01 10S 10 4 对 4 使用求解规则得S 01 10 01 10 即正规文法所生成语言的正规式是 01 10 01 10 例3 给出下述文法所对应的正规式 例4将右图确定化和最小化 图示是一个无 边转移的NFA 采用子集法将NFA确定化为DFA 采用分化方法将
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 听力期末考试试题及答案
- 真格基金测试题及答案
- 绿植环境测试题及答案
- 行车安全操作试题及答案
- 计划合约面试题及答案
- 内控管理试题及答案
- 水利安全b证考试试题及答案
- 杭州妇联面试题及答案
- 高等数学自考试题及答案
- 2025年广西民族大学政治与公共管理学院招聘考试笔试试题(含答案)
- 业务流程优化实施步骤指导手册
- 宗教事务条例解读课件
- 2025-2026学年接力版(2024)小学英语四年级上册(全册)教学设计(附目录)
- 2025年发展对象考试题题库及答案
- 2025年医疗质量安全核心制度及病历书写规范考核试题(附答案)
- 2025北京广播电视台校园招聘17人笔试备考题库及参考答案详解
- DB11T 1481-2024 生产经营单位安全事故应急预案评审规范
- MIR睿工业:2025年中国协作机器人产业发展蓝皮书
- 直销管理条例课件介绍
- 养老护理员职业道德培训
- 氧气安全培训课件
评论
0/150
提交评论