自动定理证明算法设计(-)
来源:互联网 发布:淘宝网官方网址是多少 编辑:程序博客网 时间:2024/05/02 02:53
由于本问题的难度,目前先降低实现目标。
初步定为:
1.支持基本运算 取反,括号处理
2.支持 蕴涵,交换律,结合律,摩根定律
3.支持复杂组合,只要仅通过上面规则就可以化简最后的合取式或析取式
基本想法是对于公式L1,L2,先将其二者化简到最简的合取式或最简的析取式,再通过交互律验证二者是否相等。
算法:
bool processing(L1,L2)
{
1执行L1所有蕴涵
2执行L2所有蕴涵
3执行L1所有取反
4执行L2所有取反
5去除L1所有多余括号
6去除L2所有多余括号
return prove(L1,L2);//按照交换律为依据证明L1,L2是否可相互推导
}
bool prove(L1,L2){
if(L1为原子式&&L2为原子式){
if((L1==L2))
{
return true;
}
else retrun false;
}
if(L1,L2均有连接词){
将L1,L2分别按照连接词划分为子公式
取L1第一个子公式L1a,和第一个连接词后面的公式序列加连接词构成的序列L1b
for-each(对L2中每个子公式L2a,及其他子公式构成的序列L2b){
if(prove(L1a,L2a)&&prove(L1b,L2b))
{
return true;
}
}//endfor
}
//其他情况
return false;
}
蕴涵操作,取反,去括号,都按照递归的方法
先看是否为原子公式,直接操作。
如果有连接词,则划分子公式,分别操作,再组合结果。
目前前面算法都已实现,运行良好。
几个技术点:
1.证明过程的记录与表示,可以加到证明函数中,递归记录
2.去括号时操作符优先级的考虑
具体程序设计下次再写。
- 自动定理证明算法设计(-)
- 自动定理证明(引子)
- 算法导论主定理证明(3)
- 算法及定理证明
- RSA算法证明-费马小定理
- 算法导论-主定理的严谨证明(1)
- 算法导论-主定理的严谨证明(2)
- RSA算法证明-欧拉定理
- 关于欧几里得算法和拓展欧几里德定理的证明(不定方程求解方法)
- 欧几里得算法,扩展欧几里得算法及裴蜀定理证明
- PICK定理及其证明(转)
- 【图论】【二分图匹配】匈牙利算法正确性证明所需的两个定理证明
- 递归算法的证明与设计
- 算法设计课作业证明题
- 一句话证明余弦定理
- pick定理及其证明
- 欧拉定理证明
- 中线定理证明
- 實用英語吵架一百句....
- 成功者的习惯
- 心情糟糕啊!
- 让Google倒过来:超级搞笑的Google彩蛋
- 一生所爱
- 自动定理证明算法设计(-)
- 为什么我的窗口滑动条按钮全都变成了数字?
- ASP.NET 2.0: 在使用web.sitemap时,如何实现本地化
- 5.14点滴……
- 绿色的毛巾不是我的
- 摄影师镜头下社会底层的百姓真实生活—-第一部【生存篇】
- 基于模板和XML在BS结构应用中生成word文件
- 呵呵,00:40加班中
- 又堕落了几天了