实验二 王浩算法的实现.doc
《实验二 王浩算法的实现.doc》由会员分享,可在线阅读,更多相关《实验二 王浩算法的实现.doc(12页珍藏版)》请在三一办公上搜索。
1、实验二 王浩算法的实现一 实验目的:熟练掌握命题逻辑中的王浩算法。二 实验内容实现命题逻辑框架内的王浩算法。 将命题逻辑中的王浩算法推广至下述命题语言的情形之下: 命题变量符号:, 逻辑连接符:, 间隔符:, 在上述中所定义的命题语言中实现王浩算法。三 程序功能:输入命题逻辑公式,程序将自动进行推理,并判断公式的真假性。四 主要数据结构(1)term类:用于存放推理过程中的逻辑连接符和间隔符。(2)wanghao类:用于完成整个推理过程。五 主要函数功能,参数说明(1)main():程序的入口函数,无参数传递。(2)input():功能:从屏幕上读入命题逻辑公式,并将其存入数组和term里(3
2、)simple():功能:对输入的公式进行化简,将, - & | 消去,全部转换成原子,或原子的非。=左部的逗号代表与,右边的逗号代表或。规则:p-q p|q(4)reason():功能:对公式进行推理,推理规则为:若p,q=x,r,则p,x,q=r.若p,x=q,r,则p=q,x,r若p,x,q=r且p,y,q=r,则p,(x-y),q=r若p=q,x,y,r且q=q,(x-y),r(5)move():功能:移动等式左右两边的原子。=左边含有原子或公式的否定,则移到右边并取反。同理,右边含有原子或公式的否定,则移到左边并取反。最终使左右两边都只含有原子。(6)judge():功能:判断公式是
3、否恒真,通过判断最终等式两边是否含有相同的元素来判断是否恒真。(7)output():功能:输出逻辑公式六编程过程中遇到的问题及解决方案1.符号的存储:再输入过程中区分符号和字母很困难,而且不容易存储,为此引入了term类,类中有符号和字母两个变量,分别用于存放符号和字母。当遇到,-,&,|,和符号,含有&的公式放在=左部,&用逗号表示,含有|的公式放在=右部,|用逗号表示,按照下列规则移动=左右两边的原子或公式,最终消去,化成只含有原子的公式。若p,q=x,r,则p,x,q=r.若p,x=q,r,则p=q,x,r若p,x,q=r且p,y,q=r,则p,(x-y),q=r若p=q,x,y,r且
4、q=q,(x-y),r3.判别:=左右含有相同的原子,则公式恒真。七测试输入公式(A-(B-C)-(A-B)-(A-C),运行结果为:程序代码:import java.io.BufferedReader;import java.io.InputStreamReader;import java.io.IOException;import java.util.Vector;/设置term类,用于存储输入的公式和推倒过程中的公式class term char fuhao;char zimu;term (char fuhao,char zimu) this.fuhao = fuhao;this.zim
5、u = zimu;term()public String toString() if(fuhao = $)return String.valueOf(zimu);else return String.valueOf(fuhao)+String.valueOf(zimu);public class Wanghao Vector left = new Vector();Vector right = new Vector();/输入公式,并将其存入term类的数组中public void input() BufferedReader br = new BufferedReader(new Input
6、StreamReader(System.in);String words = new String();System.out.println(请输入公式行: (例如: A-(B&C)|AB );trywords = br.readLine();catch(IOException e)System.out.println(input error);System.exit(0);char ch = words.toCharArray();for(int i = 0 ; i ch.length ; i +) if(chi = | chi = - | chi = & | chi = |) term t
7、 = new term();t.fuhao = chi+;t.zimu = chi;right.add(t);else if(chi = ) term t = new term();t.fuhao = chi+;t.zimu = chi+;right.add(t);else term t = new term();t.fuhao = $;t.zimu = chi;right.add(t);/输出公式的函数public void output() for(int i=0;ileft.size();i+)System.out.print(left.elementAt(i).toString();i
8、f(left.elementAt(i).fuhao = );System.out.print(=);for(int i=0;iright.size();i+)System.out.print(right.elementAt(i).toString();if(right.elementAt(i).fuhao = );System.out.println();/化简公式,将-,消去 ,并把&,|用逗号表示,=左边为&,右边为|public void simple() for(int i = 0;i right.size();i+) if(right.elementAt(i).fuhao != &
9、& right.elementAt(i).fuhao != | & right.elementAt(i).fuhao != = 0;j-)if(right.elementAt(j).zimu = )count+;else if(right.elementAt(j).zimu = ()count-;if(count = 0)right.add(j, new term(,();break;i+;right.elementAt(i).fuhao = -;right.elementAt(i).zimu = ;if(right.elementAt(i+1).fuhao = )right.elementA
10、t(i+1).fuhao=$;else right.elementAt(i+1).fuhao=;for(int j = i+1;j right.size();j+)if(right.elementAt(j).zimu = ()count+;else if(right.elementAt(j).zimu = )count-;if(count = 0)if(j+1 = 0;j-)if(right.elementAt(j).zimu = )count+;else if(right.elementAt(j).zimu = ()count-;if(count = 0)if(right.elementAt
11、(j).fuhao = )right.elementAt(j).fuhao=$;else right.elementAt(j).fuhao=;right.add(j, new term($,();break;i+;right.elementAt(i).fuhao = -;right.elementAt(i).zimu = ;for(int j = i+1;j right.size();j+)if(right.elementAt(j).zimu = ()count+;else if(right.elementAt(j).zimu = )count-;if(count = 0)if(j+1 rig
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验二 王浩算法的实现 实验 算法 实现
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-2396670.html