离散课后复习河北工业大学.docx

上传人:b****3 文档编号:922998 上传时间:2022-10-14 格式:DOCX 页数:14 大小:84.63KB
下载 相关 举报
离散课后复习河北工业大学.docx_第1页
第1页 / 共14页
离散课后复习河北工业大学.docx_第2页
第2页 / 共14页
离散课后复习河北工业大学.docx_第3页
第3页 / 共14页
离散课后复习河北工业大学.docx_第4页
第4页 / 共14页
离散课后复习河北工业大学.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

离散课后复习河北工业大学.docx

《离散课后复习河北工业大学.docx》由会员分享,可在线阅读,更多相关《离散课后复习河北工业大学.docx(14页珍藏版)》请在冰豆网上搜索。

离散课后复习河北工业大学.docx

离散课后复习河北工业大学

实验一真值计算

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;i

fOr(j=0;j

cin>>a[i][j];

}

 

fOr(i=0;i

fOr(j=0;j

b[i][j]=a[i][j];

}

cout<<"长度为1的路的矩阵:

"<

for(i=0;i

cout<

cout<

}

for(t=0;t

cout<<"长度为"<

"<

for(k=0;k

s+=a[i][k]*b[k][j];

c[i][j]=s;

}

}

for(i=0;i

for(j=0;j

b[i][j]=c[i][j];

for(i=0;i

for(j=0;j

cout<

}

}

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;i

for(j=0;j

cin>>a[i][j];

}

for(i=0;i

cout<<"长度为"<

"<

for(t=0;t

for(i=0;i

for(k=0;k

s+=a[i][k]*b[k][j];

c[i][j]=s;

}

}

for(i=0;i

for(j=0;j

}

for(i=0;i

for(j=0;j

cout<

cout<

}

return0;

}

5.运行结果:

实验四最优树的构造

1实验目的

熟悉最优树的构造算法,掌握最优树的构造过程。

2、实验内容与要求

定义8在权分别为w”w?

,…,Wf的加权二叉树T中,若权是Wi的叶结点,其级

t

为L(wp,贝yW仃)WjL(Wi)称为加权二叉树T的权,并记为w(T)。

已知w〔,w?

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1