离散作业_河北工业大学
实验一 真值计算
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的置换等。但本实验在操作易于理解方面也有很大的体现。
4.源程序:
(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
using namespace std;
int main(){
char P,Q;
int i;
cout<
for(i=1;i<=4;i++){
cin>>P;
cin>>Q;
if(P=='T'&&Q=='T')
cout<
else if(P=='T'&&Q=='F')
cout<
else if(P=='F'&&Q=='T')
cout<
else if(P=='F'&&Q=='F')
cout<
}
}
5.实验结果:
(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 A[j,i]=1 then do
for k=1 to n do
A[j,k]:=A[j,k]+A[i,k]
i=i+1;
if i<=n then to (3)
else st