用Java语言实现NFA到DFA的等价变换-桂日培(2)

2019-06-11 19:47

end.clear(); // begin,end convertSet清空 begin.add('A'); // 初态固定为A for(int j=0;j

Object obx=i.get(j);

ArrayList alx=(ArrayList)obx; Object obx0=i0.get(j);

ArrayList alx0=(ArrayList)obx0; Object obx1=i1.get(j);

ArrayList alx1=(ArrayList)obx1; Iterator endIt=endTemp.iterator();

while(endIt.hasNext()) // 判断是否是新的终态集的元素,若是加入end {

Object endItem=endIt.next(); if(alx.contains(endItem))

end.add(String.valueOf((char)('A'+j))); }

ArrayList alk=new ArrayList(); alk.add(\

if(!obx0.equals(alk)) {

convertSet.add(new

NfaNode(String.valueOf((char)('A'+j)),String.valueOf(charList.get(0)),String.valueOf((char)('A'+i.indexOf(obx0))))); }

if(!obx1.equals(alk)) {

convertSet.add(new

NfaNode(String.valueOf((char)('A'+j)),String.valueOf(charList.get(1)),String.valueOf((char)('A'+i.indexOf(obx1))))); } } }

private ArrayList convertSet; // 分别保存状态变换的类集 private ArrayList begin; // 分别保存开始状态集 private ArrayList end; // 分别保存终止状态集 private ArrayList charList; // 字母表 }

public class NfaDemo // NFA测试 {

public static void main(String args[]) throws IOException

{

char e;

ArrayList beginOb=new ArrayList(); // beginOb保存初态

ArrayList charListOb=new ArrayList(); // charListOb保存字母表 int convertNum; // convertNum保变迁函数中变迁次数 ArrayList endOb=new ArrayList(); // 保存终态集 ArrayList convertOb=new ArrayList();

System.out.println(\请输入 NFA(Q,Σ,δ,q,F)的情况:\保存变迁 BufferedReader br1= new BufferedReader(new InputStreamReader(System.in)); System.out.print(\初态集q=\

beginOb.add(String.valueOf((char)br1.read())); System.out.print(\终态集(格式如:E#或EF#)F=\ BufferedReader br2= new BufferedReader(new InputStreamReader(System.in)); do {

e=(char)br2.read(); // 先把char类型转化为Sring类型 endOb.add(String.valueOf(e)); // e加入到终态集的类集中 }while(e!='#');

endOb.remove(\删除#

System.out.print(\请输入字母表(格式如:01#)Σ=\ BufferedReader br3= new BufferedReader(new InputStreamReader(System.in)); charListOb.add(String.valueOf((char)br3.read())); charListOb.add(String.valueOf((char)br3.read())); System.out.print(\请输入变迁函数中变迁次数:\ BufferedReader br4= new BufferedReader(new InputStreamReader(System.in)); convertNum=Integer.parseInt(br4.readLine()); // 把从键盘输入的String类型转化为int类型

System.out.println(\请输入变换规则δ(格式如:A0B或AaB):\for(int i=0;i

String m,n,p; BufferedReader br5=new BufferedReader(new InputStreamReader(System.in));

m=String.valueOf((char)br5.read()); n=String.valueOf((char)br5.read()); p=String.valueOf((char)br5.read()); convertOb.add(new NfaNode(m,n,p));

} // 把输入的转变等信息存入类集convertOb中

Nfa nfa1=new Nfa(convertOb,beginOb,endOb,charListOb); System.out.println(\原来的NFA如下:\ nfa1.display(); // 显示NFA nfa1.nfaToDfa(); // NF转为DFA

System.out.println(\转换后的DFA如下:\ nfa1.display(); // 显示DFA

} }


用Java语言实现NFA到DFA的等价变换-桂日培(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:船用甲板敷料分类

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: