.
精选文档.
实验一 真值计算
1、实验目的
熟悉五个常用联结词合取、析取、条件和双条件的概念,掌握真值表技术。
2、实验内容与要求
定义1 设P表示一个命题,由命题联结词┐和命题P连接成┐P,称┐P为P的否定式复合命题, ┐P读“非P”。称┐为否定联结词。┐P是真,当且仅当P为假;┐P是假,当且仅当P为真。
定义2 设P和Q为两个命题,由命题联结词∧将P和Q连接成P∧Q,称P∧Q为命题P和Q的合取式复合命题,P∧Q读做“P与Q”,或“P且Q”。称∧为合取联结词。当且仅当P和Q的真值同为真,命题P∧Q的真值才为真;否则,P∧Q的真值为假。
定义3 设P和Q为两个命题,由命题联结词∨把P和Q连接成P∨Q,称P∨Q为命题P和Q的析取式复合命题,P∨Q读做“P或Q”。称∨为析取联结词。当且仅当P和Q的真值同为假,P∨Q的真值为假;否则,P∨Q的真值为真。
定义4 设P和Q为两个命题,由命题联结词→把P和Q连接成P→Q,称P→Q为命题P和Q的条件式复合命题,简称条件命题。P→Q读做“P条件Q”或者“若P则Q”。称→为条件联结词。当P的真值为真而Q的真值为假时,命题P→Q的真值为假;否则,P→Q的真值为真。
定义5 令P、Q是两个命题,由命题联结词«把P和Q连接成P « Q,称P « Q为命题P和Q的双条件式复合命题,简称双条件命题,P « Q读做“P当且仅当Q”,或“P等价Q”。称«为双条件联结词。当P和Q的真值相同时,P « Q的真值为真;否则,P « Q的真值为假。
本实验要求从键盘输入两个命题P和Q的真值,求它们的合取、析取、条件和双条件的真值。用C语言或MATLAB实现。
3. 实验步骤:
在输入P、Q真值后,会依次输出合取、析取、条件、双条件的真值。
本实验源程序力求简洁易懂,所以在设计时应用简单的语句并省去了许多繁杂的选择,如1与T、0与F的置换等。但本实验在操作易于理解方面也有很大的体现。
:
(1)方法一:
#include<>
void main(void){
printf("输入P、Q的真值(1为T,0为F):\n");
int P,Q;
scanf("%d",&P); //输入P、Q的值
.
精选文档.
scanf("%d",&Q);
//求真值
printf("合取:%d\n",P&&Q);
printf("析取:%d\n",P||Q);
printf("条件:%d\n",!P||Q);
printf("双条件:%d\n",P&&Q+!P&&!Q);
}
(2)方法二:
#include<iostream>
using namespace std;
int main(){
char P,Q;
int i;
cout<<"请输入两个命题的真值(T/F):"<<endl;
for(i=1;i<=4;i++){
cin>>P;
cin>>Q;
if(P=='T'&&Q=='T')
cout<<"合取为T,析取为T,条件为T,双条件为T"<<endl;
else if(P=='T'&&Q=='F')
cout<<"合取为F,析取为T,条件为F,双条件为F"<<endl;
else if(P=='F'&&Q=='T')
cout<<"合取为F,析取为T,条件为T,双条件为F"<<endl;
else if(P=='F'&&Q=='F')
cout<<"合取为F,析取为F,条件为T,双条件为T"<<endl;
}
}
:
(1)方法一:
.
精选文档.
(2)方法二:
实验二 关系闭包计算
1、实验目的
熟悉Warshall算法,掌握求关系的自反闭包、对称闭包和传递闭包的方法。
.
精选文档.
2、实验内容与要求
定义6 设R是A上的二元关系,R的自反(对称、传递)闭包是关系R1,则
① R1是自反的(对称的、传递的)
② RÍR1
对任何自反的(对称的、传递的)关系R2,若RÍR2,则R1ÍR2。
R的自反、对称和传递闭包分别记为r(R)、s(R)和t(R)。
定理1 令RÍA´A,则
① r(R)=R∪IA
② s(R)=R∪R-1
③ t(R)=R∪R2∪R3…
Warshall算法:设R是n个元素集合上的二元关系,M是R的关系矩阵;
置新矩阵A:=M
置i:=1;
for j=1 to n do
if
离散作业-河北工业大学 来自淘豆网m.daumloan.com转载请标明出处.