




已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
计算机理论基础 实验报告 实验题目 :从 NFA 到 DFA 的转化 姓 名 : 院(系) : 专业班级 : 学 号 : 指导教师 : 设计日期 :2013 年 11 月 1 日 1 1、实验目的: 1.了解 NFA和 DFA的概念 2.NFA和 DFA之间的联系 3.从 NFA到 DFA的转化程序编写 2、实验原理 1.NFA NFA(nondeterministic finite-state automata)即非确定有限自动机, 一 个非确定的有限自动机 NFA M是一个五元式: NFA M=(S, , , S0, F) 其中 S有限状态集 输入符号加上 ,即自动机的每个结点所射出的弧可以 是 中一个字符或是 . S0初态集 F终态集 转换函数 S 2S (2S -S的幂集S 的子集构成的集合) 2.DFA DFA(deterministic finite-state automata)即确定有限自动机,一个确 定的有限自动机 DFA M是一个五元式: M=(S, ,, S0, Z) 其中: S 有限状态集 输入字母表 映射函数(也称状态转换函数) SS (s,a)=S , S, S S, a S0 初始状态 S0 S Z终止状态集 ZS 3. NFA和 DFA之间的联系 在非确定的有限自动机 NFA中,由于某些状态的转移需从若干个可能的后续 2 状态中进行选择,故一个 NFA对符号串的识别就必然是一个试探的过程。这种 不确定性给识别过程带来的反复,无疑会影响到 FA的工作效率。而 DFA则是确 定的,将 NFA转化为 DFA将大大提高工作效率,因此将 NFA转化为 DFA是有其一 定必要的。 三、实验设计 通过本课程设计教学所要求达到的目的是:充分理解和掌握 NFA,DFA 以及 NFA确定化过程的相关概念和知识,理解和掌握子集法的相关知识和应用,编 程实现对输入 NFA转换成 DFA输出的功能。 程序总框图如图 1所示: 总控模块 NFA 图结构 状态转换表 机构 图操作 初始化状态 转换矩阵 状态转换操 作 图 1 程序总框图 1、 子集构造法 3 已证明:非确定的有限自动机与确定的有限自动机从功能上来说是等价的, 也就是说,我们能够从: NFA M DFA M 使得 L(M)=L(M) 为了使得 NFA确定化,我们首先给出两个定义: 定义 1:集合 I的 -闭包: 令 I是一个状态集的子集,定义 -closure(I)为: 1)若 sI,则 s-closure(I) ; 2)若 sI,则从 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: b b aa b 0 1 2 3 4 4 图 2 与之等价的 DFA如图 3: b a b 0,1 2,4 4 3 a 图 3 2 、程序设计 2.1 常量定义 #define MAX 10 #define NumMaxChar 10 #define NumMAXTN 10 #define INFINIT 32767 2.2 数据结构定义 NFA图结构定义如下: typedef struct edge /边 int dest; char cost; struct edge *link; /指向下一边 *Edge; 5 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 chMAX; /顶点集合 *TableNode; typedef struct tablequeue /转换表列 TableNode TNMAX; /转换表节点数组 char transword; /转换条件 int NumTn; /添加的顶点数 *TableQueue; typedef struct transmatrix /状态转换矩阵 TableQueue TQ; /转换表列组 int transnum; /转换表列数 *TranMatrix; 6 3.测试分析 用正规表达式 101(0|1)*011 进行测试。 首先在“请输入 NFA的总状态数”后输入“9” ,接着在“请依次输入 NFA 的状态名称:”后依次输入 08,在“请输入 NFA的边数:”后输入“10” ,然后 依次输入各起始状态、接受字符和到达状态,接受字符为 2,依次为 0、1,新 状态依次命名为 07,程序最后结果正确。 程序运行截图如下: 7 8 四、实验总结 通过此次对从 NFA到 DFA的转化的设计,使我更好的理解了 NFA确定化过 程的相关知识,很好的理解了子集法的演算过程。经过多次试验,在正确输入 相关数据的情况下,程序能正常运行,当错误操作或输入错误数据时,程序将 应错误自动关闭。 经过这次课程设计,也让我深刻
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025驾校考试宝典试题带答案
- 安徽省2022年普通高中学业水平合格性考试物理题目及答案
- 2025 年小升初承德市初一新生分班考试数学试卷(带答案解析)-(北师大版)
- 2025 年小升初保定市初一新生分班考试数学试卷(带答案解析)-(冀教版)
- 银行员工2025年终工作总结
- Python大模型基础与智能应用(微课版)-教学大纲、教案 黄恒秋
- 山东省东营市2024-2025学年高二下学期7月期末化学试题(含答案)
- 北师大版四年级上册数学第二单元 线与角 检测题(无答案)
- 单独小屋出租合同范本
- 农庄独院出租合同范本
- 校园食堂安全知识培训课件
- 2025年视觉传达设计师职业能力考试试题及答案解析
- 2025年公务员考试时事政治试卷(考点梳理)附答案详解
- 2025年山西省教师职称考试(理论知识)历年参考题库含答案详解(5套)
- 抵押贷款评估方案(3篇)
- 从邵逸夫医院看大型三甲医院医疗信息化多层设计与实践
- GB/T 18650-2008地理标志产品龙井茶
- 《工伤认定研究11000字【论文】》
- 医院进修生结业鉴定表
- 高速公路路政巡查记录表
- 鞘内镇痛泵置入术全程图解课件
评论
0/150
提交评论