好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

[NFA到DFA的转化][liliwen919][doc].doc

19页
  • 卖家[上传人]:cn****1
  • 文档编号:517503297
  • 上传时间:2023-10-29
  • 文档格式:DOC
  • 文档大小:137.50KB
  • / 19 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 仲恺农业技术学院编译原理课程设计课程设计题目 :从NFA到DFA的转化姓 名 :院(系) :计算机学院  专业班级 :学    号 :   指引教师 : 设计日期 : 年 9 月15日目 录1.需求分析……………………………………………………………………………21.1 NFA和DFA的概念…………………………………………………………………21.2 NFA和DFA之间的联系……………………………………………………………22.概要设计……………………………………………………………………………23.具体设计……………………………………………………………………………33.1 子集构造法………………………………………………………………………33.2 具体转换过程……………………………………………………………………53.3 程序设计…………………………………………………………………………83.3.1 常量定义………………………………………………………………………83.3.2 数据构造定义…………………………………………………………………83.3.3 重要函数流程图………………………………………………………………94.测试分析…………………………………………………………………………125.顾客手册…………………………………………………………………………146.课程总结…………………………………………………………………………14参照文献……………………………………………………………………………14附录…………………………………………………………………………………141.需求分析1.1 NFA和DFA的概念NFA(nondeterministic finite-state automata)即非拟定有限自动机, 一种非拟定的有限自动机NFA M’是一种五元式:     NFA  M’=(S, Σ∪{ε}, δ, S0, F)其中 S—有限状态集   Σ∪{ε}—输入符号加上ε,即自动机的每个结点所射出的弧可以是Σ中一种字符或是ε.   S0—初态集      F—终态集       δ—转换函数 S×Σ ∪{ε} →2S    (2S --S的幂集—S的子集构成的集合)DFA(deterministic finite-state automata)即拟定有限自动机,一种拟定的有限自动机DFA M是一种五元式:   M=(S, Σ,δ, S0, Z) 其中:   S —有限状态集  Σ —输入字母表   δ —映射函数(也称状态转换函数)      S×Σ→S   δ(s,a)=S’  , S, S’ ∈S, a∈Σ    S0 —初始状态   S0 ∈S    Z—终结状态集    ZÍS1.2 NFA和DFA之间的联系在非拟定的有限自动机NFA中,由于某些状态的转移需从若干个也许的后续状态中进行选择,故一种NFA对符号串的辨认就必然是一种试探的过程。

      这种不拟定性给辨认过程带来的反复,无疑会影响到FA的工作效率而DFA则是拟定的,将NFA转化为DFA将大大提高工作效率,因此将NFA转化为DFA是有其一定必要的2.概要设计通过本课程设计教学所规定达到的目的是:充足理解和掌握NFA,DFA以及NFA拟定化过程的有关概念和知识,理解和掌握子集法的有关知识和应用,编程实现对输入NFA转换成DFA输出的功能程序总框图如图1所示:总控模块NFA图构造状态转换表机构图操作初始化状态转换矩阵状态转换操作图1 程序总框图3.具体设计3.1 子集构造法已证明:非拟定的有限自动机与拟定的有限自动机从功能上来说是等价的,也就是说,我们可以从:NFA M’     DFA   M使得   L(M)=L(M’)为了使得NFA拟定化,我们一方面给出两个定义:定义1:集合I的ε-闭包:令I是一种状态集的子集,定义ε-closure(I)为:1)若s∈I,则s∈ε-closure(I);2)若s∈I,则从s出发通过任意条ε弧可以达到的任何  状态都属于ε-closure(I)     状态集ε-closure(I)称为I的ε-闭包定义2:令I是NFA M’的状态集的一种子集, a∈Σ        定义:  Ia=ε-closure(J)    其中J = ∪δ(s,a)——J是从状态子集I中的每个状态出发,通过标记为a的弧而达到的状态集合。

      ——Ia是状态子集,其元素为J中的状态,加上从J中每一种状态出发通过ε弧达到的状态给定如图2所示的NFA:bbεaab0123 4图2与之等价的DFA如图3:bab{0,1}{2,4}{4}{3}a图33.2 具体转换过程为了阐明跟清晰,我们使用实例阐明,构造正规式101(0|1)*011的DFA?解:一方面构造相应的NFA,如图4所示:1011εε1001012356478图4将其写成M五元式则为:M=({0,1,2,3,4,5,6,7,8},{0,1},δ,0,{8})其中δ为:    δ(0,1)=1      δ(1,0)=2   δ(2,1)=3        δ(3,ε)=4   δ(4,ε)=5    δ(4,0)=4 δ(4,1)=4     δ(5,0)=6     δ(6,1)=7     δ(7,1)=8  它所相应的状态转换矩阵如表1:表1状态01ε0ε1ε12εε2ε3ε3εε4444556εε6ε7ε7ε8ε8εεε根据NFA转化为DFA的子集法转换法进行转换,相应的状态转换矩阵见表2:表2II0I1{0}{ε}{1}{1}{2}{ε}{2}{ε}{3,4,5}{3,4,5}{4,5,6}{4,5}{4,5,6}{4,5,6}{4,5,7}{4,5}{4,5,6}{4,5}{4,5,7}{4,5,6}{4,5,8}{4,5,8}{4,5,6}{4,5}对上表重新命名后的状态转换矩阵见表3:表3II0I10ε112ε2ε3345446545647745将其写成M五元式则为:M=({0,1,2,3,4,5,6,7},{0,1},δ,0,{5})其中δ为:  δ(0,1)=1      δ(1,0)=2   δ(2,1)=3      δ(3,0)=4       δ(3,1)=5       δ(4,0)=4     δ(4,1)=6   δ(5,0)=4     δ(5,1)=5   δ(6,0)=4   δ(6,1)=7    δ(7,0)=4  δ(7,1)=5 与表3相应的状态转换图如图5所示:110001ε101101236745图5这样就完毕了从正规体现式101(0|1)*011到DFA的转化。

      3.3 程序设计3.3.1 常量定义#define MAX 10#define NumMaxChar 10#define NumMAXTN 10 #define INFINIT 327673.3.2 数据构造定义NFA图构造定义如下:typedef struct edge{               //边ﻩint dest;ﻩchar cost;ﻩstruct edge *link;     ﻩ//指向下一边}*Edge; typedef struct vertex{            //顶点 char data;              ﻩ//状态 Edge adj;            //边}*Vertex; typedef struct graph{            //图ﻩVertex NodeTable; int NumVertex; int MaxNumVertex; int NumEdge;}*Graph;状态转换表机构定义如下:typedef struct tablenode{                    //转换表节点ﻩchar newname;          //新命名 char ch[MAX];              //顶点集合}*TableNode; typedef struct tablequeue{                    //转换表列ﻩTableNode TN[MAX];      //转换表节点数组 char transword;         //转换条件 int NumTn;                  //添加的顶点数}*TableQueue; typedef struct transmatrix{                     //状态转换矩阵 TableQueue TQ;              //转换表列组 int transnum;    //转换表列数}*TranMatrix;3.3.3 重要函数流程图void Smove函数流程图如图6所示:00非0非00非0开始int i,j,k=0,check,len; Edge p;while(t2[k]!='\0')k++;for(i=0;iNumVertex;j++)if(g->NodeTable[j].data==t1[i]) 。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.