离散数学主析取范式主合取范式
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验二
实验题目:
生成主析取范式和主合取范式
实验目的:
1.熟悉地掌握计算机科学技术常用的离散数学中的概念、性质和运算;通过实验提高学生编写实验报告、总结实验结果的能力;使学生具备程序设计的思想,能够独立完成简单的算法设计和分析。
2.掌握命题逻辑中的联接词、真值表、主范式等,进一步能用它们来解决实际问题。
实验内容:
利用计算机构造真值表来建立主析取范式和主合取范式
实验原理:
1.合取:二元命题联结词。将两个命题P、Q联结起来,构成一个新的命题P ∧Q。这个新命题的真值与构成它的命题P、Q的真值间的关系为只有当两个命题变项P 为真, Q为真时方可P∧Q为真, 而P、Q只要有一为假则P∧Q 为假。
2.析取:二元命题联结词。将两个命题P、Q联结起来,构成一个新的命题P ∨Q。这个新命题的真值与构成它的命题P、Q的真值间的关系为只有当两个命题变项P为假, Q为假时方可P∨Q为假, 而P、Q只要有一为真则P∨Q为真。
3.真值表:表征逻辑事件输入和输出之间全部可能状态的表格。列出命题公式真假值的表。通常以1表示真,0 表示假。命题公式的取值由组成命题公式的命题变元的取值和命题联结词决定,命题联结词的真值表给出了真假值的算法。真值表是在逻辑中使用的一类数学表,用来确定一个表达式是否为真或有效。
4.主析取范式:在含有n个命题变元的简单合取式中,若每个命题变元与其否定不同时存在,而两者之一出现一次且仅出现一次,称该简单合取式为小项。由若干个不同的小项组成的析取式称为主析取范式;与A等价的主析取范式称为A的主析取范式。任意含n个命题变元的非永假命题公式A都存在与其等价的主析取范式,并且是惟一的。
5.主合取范式:在含有n个命题变元的简单析取式中,若每个命题变元与其否定不同时存在,而两者之一出现一次且仅出现一次,称该简单析取式为大项。由若干个不同的大项组成的合取式称为主合取范式;与A等价的主合取范式称为A 的主合取范式。任意含n个命题变元的非永真命题公式A都存在与其等价的主合取范式,并且是惟一的。
实验结果与分析:
实验结果:
实验分析:
参考前面实验的代码,生成真值表,然后找出所有值为1时,各变元的取值,从而生成相应的小项,最终得到主析取范式。找出值为0时各个变元的取值,从而生成相应的大项,最终得到主合取范式。
附:程序源代码:
function getTrueTable()
{
var text=document.getElementById('text').value;
alert("输入的公式:"+text);
var varList="";
var i=0;
var n=text.length;
var value="";
var code=0;
var addList="";
var decList="";
for(i=0;i { code=text.charCodeAt(i); if((code>=97)&&(code<123)) { x=text.substr(i,1); if(varList.indexOf(x)<0) { if(varList.length==0) {varList=x;} else {varList+=","+x;} } } } alert("公式中字母列表:"+varList); var arrList=varList.split(","); var n=arrList.length; var table=" var t=" for(i=0;i { t+=" } t+=" t+=" t+=" table+=t; var m=1; var trow=new Array(n+1); for(i=0;i { m*=2; trow[i]=0; } var j=0; var flag=0; var k=0; var s=""; for(i=0;i { t=" value=text; for(j=0;j { x=arrList[j]; for(k=0;k { if(value.substr(k,1)==x) {value=value.substr(0,k)+trow[j]+value.substr(k+1);} } t+=" } t+=" t+=" t+=" table+=t; if(calcValue(value)==1) { s=""; for(j=0;j { x=arrList[j]; if(trow[j]==1) { if(s=="") { s=x; } else {";
"; ";"+arrList[i]+" ";"+text+" ";真值 ";"; ";"+trow[j]+" ";"+value+" ";"+calcValue(value)+" ";