离散课后复习河北工业大学.docx
《离散课后复习河北工业大学.docx》由会员分享,可在线阅读,更多相关《离散课后复习河北工业大学.docx(14页珍藏版)》请在冰豆网上搜索。
![离散课后复习河北工业大学.docx](https://file1.bdocx.com/fileroot1/2022-10/13/6bec474d-0c2a-4be9-a3a4-da4b6bdc97ca/6bec474d-0c2a-4be9-a3a4-da4b6bdc97ca1.gif)
离散课后复习河北工业大学
实验一真值计算
1、实验目的熟悉五个常用联结词合取、析取、条件和双条件的概念,掌握真值表技术。
2、实验内容与要求
定义1设P表示一个命题,由命题联结词「和命题P连接成「P,称「P为P的否定式复合命题,「P读非P'。
称「为否定联结词。
「P是真,当且仅当P为假;「P是假,当且仅当P为真。
定义2设P和Q为两个命题,由命题联结词人将P和Q连接成PAQ,称PAQ为命题P和Q的合取式复合命题,PAQ读做“P与Q,或“P且Q。
称A为合取联结词。
当且仅当P和Q的真值同为真,命题PAQ的真值才为真;否则,PAQ的真值为假。
定义3设P和Q为两个命题,由命题联结词V把P和Q连接成PVQ,称PVQ为命题P和Q的析取式复合命题,PVQ读做“P或Q。
称V为析取联结词。
当且仅当P和Q的真值同为假,PVQ的真值为假;否则,PVQ的真值为真。
定义4设P和Q为两个命题,由命题联结词t把P和Q连接成PtQ,称PtQ为命题P和Q的条件式复合命题,简称条件命题。
PtQ读做“p条件Q'或者若P则Q。
称t
为条件联结词。
当P的真值为真而Q的真值为假时,命题PtQ的真值为假;否则,PtQ的真值为真。
定义5令P、Q是两个命题,由命题联结词把P和Q连接成PQ,称PQ为命题P和Q的双条件式复合命题,简称双条件命题,PQ读做“P当且仅当Q,或“P等
价Q'。
称为双条件联结词。
当P和Q的真值相同时,PQ的真值为真;否则,PQ的真值为假。
本实验要求从键盘输入两个命题P和Q的真值,求它们的合取、析取、条件和双条件的真值。
用C语言或MATLAB实现。
3.实验步骤:
在输入P、Q真值后,会依次输出合取、析取、条件、双条件的真值。
本实验源程序力求简洁易懂,所以在设计时应用简单的语句并省去了许多繁杂的选择,
如1与T、0与F的置换等。
但本实验在操作易于理解方面也有很大的体现。
4.源程序:
(1)方法一:
#include
voidmain(void){
printf("输入P、Q的真值(1为T,0为F):
\n");
intP,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
usingnamespacestd;
intmain(){
charP,Q;
inti;
(2)方法
实验二关系闭包计算
1实验目的
熟悉Warshall算法,掌握求关系的自反闭包、对称闭包和传递闭包的方法。
2、实验内容与要求
定义6设R是A上的二元关系,R的自反(对称、传递)闭包是关系R1,则
1R1是自反的(对称的、传递的)
2RR1
3对任何自反的(对称的、传递的)关系R2,若RR2,则R1R2。
R的自反、对称和传递闭包分别记为r(R)、s(R)和t(R)。
定理1令RAA,贝U
1r(R)=RUIA
2s(R)=RUR-1
3t(R)=RUR2UR3...
Warshall算法:
设R是n个元素集合上的二元关系,M是R的关系矩阵;
(1)置新矩阵A:
=M
(2)置i:
=1;
(3)forj=1tondo
ifA[j,i]=1thendo
fork=1tondo
A[j,k]:
=A[j,k]+A[i,k]
(4)i=i+1;
(5)ifi<=nthento(3)
elsestop
本实验要求从键盘输入一个关系的关系矩阵,计算其自反闭包、对称闭包和传递闭包,
计算传递闭包时使用Warshall算法。
用C语言或MATLAB实现。
3•实验步骤:
输入一个3*3维矩阵由r(R)=RUIA;s(R)=RUR-1;t(R)=RUR2UR3…列出的算
法计算自反、对称、传递闭包并输出。
本实验源程序力求简洁易懂,所以在设计时应用简单的语句并省去了许多繁杂的选择,
且每步均有注释,使程序更清晰。
但本实验在操作易于理解方面也有很大的体现。
4•源程序:
/*熟悉Warshall算法,掌握求关系的自反闭包、对称闭包和传递闭包的方法令RAXA,则
r(R)=RUIA
s(R)=RUR-1
t(R)=RUR2UR3…
*/
#include
voidmain(void){
inti,j,k;
intI[3][3]={1,0,0,0,1,0,0,0,1};
inta[3][3],b[3][3],c[3][3];
printf("请输入3x3的二维矩阵:
\n");for(i=0;i<3;i++)//输入矩阵
for(j=0;j<3;j++)
scanf("%d",&a[i][j]);
printf("自反闭包:
\n");for(i=0;i<3;i++){//自反闭包
for(j=0;j<3;j++){b[i][j]=a[i][j]||I[i][j];printf("%3d",b[i][j]);
}
printf("\n");
}
printf("对称闭包:
\n");
for(i=0;i<3;i++){//对称闭包
for(j=0;j<3;j++){c[i][j]=a[i][j]||a[j][i];printf("%3d",c[i][j]);
}
printf("\n");
}
printf("传递闭包:
\n");
for(i=0;i<3;i++){//传递闭包
for(j=0;j<3;j++)
if(a[j][i]==1)for(k=0;k<3;k++)
a[j][k]=a[j][k]||a[i][k];
}
for(i=0;i<3;i++){〃传递闭包的输出
for(j=0;j<3;j++)
printf("%3d",a[i][j]);
printf("\n”);
}
}
5•实验结果:
实验三计算两结点间长度为m的路的数目
1实验目的
熟悉邻接矩阵和两结点间长度为m的路的数目的关系并编程计算。
2、实验内容与要求
定义7给定简单图G=,V={v1,v2,…,vn},V中的结点按下标由小到大编
序,贝Vn阶方阵A=(aij)称为图G的邻接矩阵。
其中
1viadjvj
aij
0mnadjVjOriji,j=i,2,…,n。
定理2设A为简单图G的邻接矩阵,则Am中的i行j列元素am等于G中联结viji
到Vj的长度为m的链(或路)的数目。
本实验要求从键盘输入图的邻接矩阵和一正整数m,计算结点两两之间长度为m的路
的数目。
考虑有向图和无向图。
用C语言或MATLAB实现。
3.实验步骤:
本实验在编写源程序时,对实验要求进行了两种方式的阐释:
一种是输入关系矩阵及其阶数,然后依次列出路长度为1~n的关系矩阵;另一种是输入关系矩阵及其阶数,然后指定路长度的关系矩阵。
本实验源程序力求简洁易懂,所以在设计时应用简单的语句并省去了许多繁杂的选择,且每步均有注释,使程序更清晰。
但本实验在操作易于理解方面也有很大的体现。
4.程序:
(1)方法一:
#include//计算两结点间长度为m的路的数目usingnamespacestd;
intmain(){
inti,j,k;
intm,n,t;
inta[100][100],b[100][100];
intc[100][100];
ints;
cOut<<"请输入关系矩阵阶数:
"<cin>>m;
n=m;
cOut<<"请输入关系矩阵:
"<fOr(i=0;ifOr(j=0;jcin>>a[i][j];
}
fOr(i=0;ifOr(j=0;jb[i][j]=a[i][j];
}
cout<<"长度为1的路的矩阵:
"<for(i=0;icout<
cout<}
for(t=0;tcout<<"长度为"<"<for(k=0;ks+=a[i][k]*b[k][j];
c[i][j]=s;
}
}
for(i=0;ifor(j=0;jb[i][j]=c[i][j];
for(i=0;ifor(j=0;jcout<}
}
return0;
}
运行结果:
(2)方法二
#include〃计算两结点间长度为m的路的数目
usingnamespacestd;
intmain(){
inti,j,k;
intm,n,t;
inta[100][100],b[100][100];
intc[100][100];
ints;
cout<<"请输入关系矩阵阶数:
"<cin»m;
cout<<"请输入路的长度:
"<cin»n;
cout<<"请输入关系矩阵:
"<for(i=0;ifor(j=0;jcin>>a[i][j];
}
for(i=0;icout<<"长度为"<"<for(t=0;tfor(i=0;ifor(k=0;ks+=a[i][k]*b[k][j];
c[i][j]=s;
}
}
for(i=0;ifor(j=0;j}
for(i=0;ifor(j=0;jcout<
cout<}
return0;
}
5.运行结果:
实验四最优树的构造
1实验目的
熟悉最优树的构造算法,掌握最优树的构造过程。
2、实验内容与要求
定义8在权分别为w”w?
,…,Wf的加权二叉树T中,若权是Wi的叶结点,其级
t
为L(wp,贝yW仃)WjL(Wi)称为加权二叉树T的权,并记为w(T)。
已知w〔,w?