用 Java 语言实现 NFA 到 DFA 的等价变换姓名:桂日培单位:湖北工业大学计算机学院 02 计算机 1 班学号:0212025123时间:2005 年 10 月 31 日一、实验目的1、理解什么是 NFA 和什么是 DFA;2、掌握 NFA 和 DFA 之间的等价变换;3、了解程序设计语言 Java 的语言机制。二、实验小组(按姓氏拼音排序):陈超、桂日培三、术语解释1、DFA确定的有穷自动机(DFA)M 是一五元组M=(Q,∑,δ,q0,Z), 其中:(1) Q 是一有穷状态集;(2) ∑是有穷输入字母表;(3)δ 是从 Q×∑Q 的映射函数,称为状态变迁函数,定义式 δ(q1,a)=q2 表示在 q1 状态下读入字母a 后,转到状态 q2;(4) q0∈Q 是唯一的初态;(5) Z 包含于 Q 是终态集。2、NFA假如 δ(q1,a)的值不唯一,而是一个状态子集的话,那么这样的 FA 是不确定的,称为不确定的有穷自动机(NFA).NFA 和 DFA 定义的主要差别是它们的映射函数不一样,NFA 的 δ 函数定义为:δ:Q×∑ρ其中:ρ∈2Q,即 ρ 是 Q 的任意子集,2Q 是 Q 的幂集。四、实验步骤与内容1、实验环境:操作系统:Microsoft Windows XP编译平台:Borland JBuilder 2025 Enterprise2、步骤与内容:(1)启动 JBuilder,新建一个名为:NFA_To_DFA 的工程,模板为默认类型(Default project)。(2)打开新建的工程。(3)在工程里添加一个名为 NfaDemo 的 Java 文件.(4)打开 NfaDemo 文件,编辑源代码.(5)按“Ctrl+F9”对源文件进行编译。(6)按“Ctrl+Shift+F9"对目标文件进行连接。(7)点击工具栏上的“RunRun “NfaDemo.java” using defaults”运行。运行情况如下(以《程序设计语言编译方法》大连理工大学出版社(第三版)29 页 2。6(3 为例)):D:\Borland\JBuilder2025\jdk1.5\bin\javaw —classpath ”E : \Java 工 程 \NFA_to_DFA\classes;D:\Borland\JBuilder2025\jdk1。5\lib\dt.jar;D:\Borland\JBuilder2025\jdk1。5\lib\tools。jar;D:\Borland\JBuilder2025\jdk1 。 5\lib\htmlconverter 。 jar;D:\Borland\JBuilder2025\jdk1 。 5\lib\jconsole 。 jar ; D:\Borland\JBuilder2025\jdk1.5\jre\lib\javaws 。 jar ; D:\Borland\JBuilder2025\jdk1 。 5\jre\lib\ext\sunjce_provider.jar;D : \Borland\JBuilder2025\jdk1 。 5\jre\lib\ext\localedata 。 jar ; D : \Borland\JBuilder...