人工智能实验报告王浩算法的实现.docx
- 文档编号:9906756
- 上传时间:2023-05-21
- 格式:DOCX
- 页数:16
- 大小:31.26KB
人工智能实验报告王浩算法的实现.docx
《人工智能实验报告王浩算法的实现.docx》由会员分享,可在线阅读,更多相关《人工智能实验报告王浩算法的实现.docx(16页珍藏版)》请在冰点文库上搜索。
人工智能实验报告王浩算法的实现
《人工智能》实验二题目
王浩算法的实现
1.实验内容:
实现命题逻辑框架内的王浩算法。
⑴将命题逻辑中的王浩算法推广至下述命题语言的情形之下:
ⅰ命题变量符号:
,
,
,
ⅱ逻辑连接符:
,
,
,
,
ⅲ间隔符:
,
⑵在上述⑴中所定义的命题语言中实现王浩算法。
2.实验目的
熟练掌握命题逻辑中的王浩算法。
3.数据结构与算法设计
publicclassWanghao()//主体类
publicvoidinput()//输入字符,将输入字符归类的函数
publicvoidjudge()//判断公式是恒真还是恒假的函数
publicvoidmove(intl,intr)//加入王浩算法的核心公式,
publicvoidoutput()//输出函数
publicvoidreasoning()//用于推理判断的函数
publicvoidsimplify()}//化简
classalp(){//字符串的匹配,分配
alp(charfuhao,charzimu)
alp(){}}
4.源代码
importjava.io.BufferedReader;
importjava.io.InputStreamReader;
importjava.io.IOException;
importjava.util.Vector;
publicclassWanghao{
Vector
Vector
publicstaticvoidmain(Stringargs[]){
Wanghaow=newWanghao();
w.input();
w.huajian();
w.tuili();
w.judge();
}
publicvoidinput(){
BufferedReaderbr=newBufferedReader(newInputStreamReader(System.in));
Stringwords=newString();
System.out.println("请输入公式行:
(例如:
p->~(q&&r)||p<->r)");
try{
words=br.readLine();
}catch(IOExceptione){
System.out.println("inputerror");
System.exit(0);
}
charch[]=words.toCharArray();
for(inti=0;i if(ch[i]=='~'||ch[i]=='-'||ch[i]=='&'||ch[i]=='|'){ termt=newterm(); t.fuhao=ch[i++]; t.zimu=ch[i]; right.add(t); } elseif(ch[i]=='<'){ termt=newterm(); t.fuhao=ch[i++]; t.zimu=ch[i++]; right.add(t); } else{ termt=newterm(); t.fuhao='$'; t.zimu=ch[i]; right.add(t); } } } publicvoidoutput(){ for(inti=0;i System.out.print(left.elementAt(i).toString()); if(left.elementAt(i).fuhao=='<') System.out.print(">"); } System.out.print("=>"); for(inti=0;i System.out.print(right.elementAt(i).toString()); if(right.elementAt(i).fuhao=='<') System.out.print(">"); } System.out.println(); } publicvoidhuajian(){ for(inti=0;i if(right.elementAt(i).fuhao! ='&'&&right.elementAt(i).fuhao! ='|'&&right.elementAt(i).fuhao! ='<') continue; elseif(right.elementAt(i).fuhao=='&'){ intcount=0; for(intj=i-1;j>=0;j--){ if(right.elementAt(j).zimu==')')count++; elseif(right.elementAt(j).zimu=='(')count--; if(count==0){ right.add(j,newterm('~','(')); break; } } i++; right.elementAt(i).fuhao='-'; right.elementAt(i).zimu='>'; if(right.elementAt(i+1).fuhao=='~') right.elementAt(i+1).fuhao='$'; elseright.elementAt(i+1).fuhao='~'; for(intj=i+1;j if(right.elementAt(j).zimu=='(')count++; elseif(right.elementAt(j).zimu==')')count--; if(count==0){ if(j+1 right.add(j+1,newterm('$',')')); elseright.add(newterm('$',')')); break; } } } elseif(right.elementAt(i).fuhao=='|'){ intcount=0; for(intj=i-1;j>=0;j--){ if(right.elementAt(j).zimu==')')count++; elseif(right.elementAt(j).zimu=='(')count--; if(count==0){ if(right.elementAt(j).fuhao=='~') right.elementAt(j).fuhao='$'; elseright.elementAt(j).fuhao='~'; right.add(j,newterm('$','(')); break; } } i++; right.elementAt(i).fuhao='-'; right.elementAt(i).zimu='>'; for(intj=i+1;j if(right.elementAt(j).zimu=='(')count++; elseif(right.elementAt(j).zimu==')')count--; if(count==0){ if(j+1 right.add(j+1,newterm('$',')')); elseright.add(newterm('$',')')); break; } } } elseif(right.elementAt(i).fuhao=='<'){ Vector Vector intj=i-1; intcount=0; while(j>=0){ if(right.elementAt(j).zimu==')')count++; elseif(right.elementAt(j).zimu=='(')count--; l.add(0,right.elementAt(j)); right.removeElementAt(j); j--;i--; if(count==0) break; } j=i+1; while(j if(right.elementAt(j).zimu=='(')count++; elseif(right.elementAt(j).zimu==')')count--; r.add(right.elementAt(j)); right.removeElementAt(j); if(count==0) break; } right.removeElementAt(i); right.add(i++,newterm('~','(')); right.add(i++,newterm('$','(')); j=0; while(j right.add(i++,l.elementAt(j++)); right.add(i++,newterm('-','>')); j=0; while(j right.add(i++,r.elementAt(j++)); right.add(i++,newterm('$',')')); right.add(i++,newterm('-','>')); right.add(i++,newterm('~','(')); j=0; while(j right.add(i++,r.elementAt(j++)); right.add(i++,newterm('-','>')); j=0; while(j right.add(i++,l.elementAt(j++)); right.add(i++,newterm('$',')')); right.add(i++,newterm('$',')')); i--; } output(); } } publicvoidtuili(){ for(inti=0;i if(right.elementAt(i).fuhao! ='-')continue; else{ right.elementAt(i).fuhao='$'; right.elementAt(i).zimu=','; intcount=0; for(intj=i-1;j>=0;j--){ if(right.elementAt(j).zimu==')')count++; elseif(right.elementAt(j).zimu=='(')count--; if(count==0){ if(right.elementAt(j).fuhao=='~')right.elementAt(j).fuhao='$'; elseif(right.elementAt(j).fuhao=='$')right.elementAt(j).fuhao='~'; break; } } } } output(); move(0,0); } publicvoidmove(intl,intr){ intle,ri; for(le=0;le if(left.elementAt(le).fuhao=='~')break; if(((left.elementAt(le).zimu>='a')&&(left.elementAt(le).zimu<='z'))||((left.elementAt(le).zimu>='A')&&(left.elementAt(le).zimu<='Z'))||left.elementAt(le).zimu==',') continue; elsebreak; } for(ri=0;ri if(right.elementAt(ri).fuhao=='~')break; if(((right.elementAt(ri).zimu>='a')&&(right.elementAt(ri).zimu<='z'))||((right.elementAt(ri).zimu>='A')&&(right.elementAt(ri).zimu<='Z'))||right.elementAt(ri).zimu==',') continue; elsebreak; } if((le==left.size())&&(ri==right.size()))return; if(r intcount=0,loc=0; right.elementAt(r).fuhao='$'; if(right.elementAt(r).zimu! ='('){ if(r==0){ left.add(loc++,right.elementAt(r)); left.add(loc++,newterm('$',',')); } else{ if(left.size()! =0)left.add(newterm('$',',')); left.add(right.elementAt(r)); } right.removeElementAt(r); if(! right.isEmpty()) right.removeElementAt(r); } else{ right.removeElementAt(r); count++; if(left.size()! =0)left.add(newterm('$',',')); while(true){ if(right.elementAt(r).zimu=='(')count++; elseif(right.elementAt(r).zimu==')')count--; if(count==0){ if(r==0)left.add(loc++,newterm('$',',')); right.removeElementAt(r); if(! right.isEmpty()) right.removeElementAt(r); break; } if(r==0)left.add(loc++,right.elementAt(r)); elseleft.add(right.elementAt(r)); right.removeElementAt(r); } } } elseif(r intcount=1; right.removeElementAt(r); while(true){ if(right.elementAt(r).zimu=='(')count++; elseif(right.elementAt(r).zimu==')')count--; if(count==0){ right.removeElementAt(r); break; } r++; } } while(left.size()! =0&&left.elementAt(left.size()-1).zimu==',')left.removeElementAt(left.size()-1); if(l intcount=0,loc=0; left.elementAt(l).fuhao='$'; if(left.elementAt(l).zimu! ='('){ if(l==0){ right.add(loc++,left.elementAt(l)); right.add(loc++,newterm('$',',')); } else{ if(right.size()! =0)right.add(newterm('$',',')); right.add(left.elementAt(l)); } left.removeElementAt(l); if(! left.isEmpty()) left.removeElementAt(l); } else{ left.removeElementAt(l); count++; if(right.size()! =0)right.add(newterm('$',',')); while(true){ if(left.elementAt(l).zimu=='(')count++; elseif(left.elementAt(l).zimu==')')count--; if(count==0){ if(l==0)right.add(loc++,newterm('$',',')); left.removeElementAt(l); if(! left.isEmpty()) left.removeElementAt(l); break; } if(l==0)right.add(loc++,left.elementAt(l)); elseright.add(left.elementAt(l)); left.removeElementAt(l); } } } elseif(l intcount=1; left.removeElementAt(l); while(true){ if(left.elementAt(l).zimu=='(')count++; elseif(left.elementAt(l).zimu==')')count--; if(count==0){ left.removeElementAt(l); break; } l++; } l++; } while(left.size()! =0&&left.elementAt(left.size()-1).zimu==',') left.removeElementAt(left.size()-1); while(right.size()! =0&&right.elementAt(right.size()-1).zimu==',') right.removeElementAt(right.size()-1); r=0;l=0; if(left.size()! =0) while(left.elementAt(l).fuhao! ='~'&&left.elementAt(l).zimu! ='('){ l+=2; if(l>=left.size()){ l=0; break; } } if(right.size()! =0) while(right.elementAt(r).fuhao! ='~'&&right.elementAt(r).zimu! ='('){
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 人工智能 实验 报告 算法 实现
![提示](https://static.bingdoc.com/images/bang_tan.gif)