最新离散数学实验报告.docx

上传人:b****8 文档编号:11126503 上传时间:2023-02-25 格式:DOCX 页数:15 大小:70.35KB
下载 相关 举报
最新离散数学实验报告.docx_第1页
第1页 / 共15页
最新离散数学实验报告.docx_第2页
第2页 / 共15页
最新离散数学实验报告.docx_第3页
第3页 / 共15页
最新离散数学实验报告.docx_第4页
第4页 / 共15页
最新离散数学实验报告.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

最新离散数学实验报告.docx

《最新离散数学实验报告.docx》由会员分享,可在线阅读,更多相关《最新离散数学实验报告.docx(15页珍藏版)》请在冰豆网上搜索。

最新离散数学实验报告.docx

最新离散数学实验报告

3.www。

oh/ov。

com/teach/student/shougong/

手工艺品,它运用不同的材料,通过不同的方式,经过自己亲手动手制作。

看着自己亲自完成的作品时,感觉很不同哦。

不论是01年的丝带编织风铃,02年的管织幸运星,03年的十字绣,04年的星座手链,还是今年风靡一时的针织围巾等这些手工艺品都是陪伴女生长大的象征。

为此,这些多样化的作品制作对我们这一创业项目的今后的操作具有很大的启发作用。

“碧芝”最吸引人的是那些小巧的珠子、亮片等,都是平日里不常见的。

据店长梁小姐介绍,店内的饰珠有威尼斯印第安的玻璃珠、秘鲁的陶珠、奥地利的施华洛世奇水晶、法国的仿金片、日本的梦幻珠等,五彩缤纷,流光异彩。

按照饰珠的质地可分为玻璃、骨质、角质、陶制、水晶、仿金、木制等种类,其造型更是千姿百态:

珠型、圆柱型、动物造型、多边形、图腾形象等,美不胜收。

全部都是进口的,从几毛钱一个到几十元一个的珠子,做一个成品饰物大约需要几十元,当然,还要决定于你的心意尽管售价不菲,却仍没挡住喜欢它的人。

喜欢□一般□不喜欢□

在大学生对DIY手工艺品价位调查中,发现有46%的女生认为在十元以下的价位是可以接受;48%的认为在10-15元;6%的则认为50-100元能接受。

如图1-2所示

据调查统计,有近94%的人喜欢亲戚朋友送给自己一件手工艺品。

无论是送人,个人兴趣,装饰还是想学手艺,DIY手工制作都能满足你的需求。

下表反映了同学们购买手工艺制品的目的。

如图(1-4)

为了解目前大学生对DIY手工艺品制作的消费情况,我们于己于人2004年3月22日下午利用下课时间在校园内进行了一次快速抽样调查。

据调查本次调查人数共50人,并收回有效问卷50份。

调查分析如下:

一、消费者分析

5、你认为一件DIY手工艺制品在什么价位可以接受?

动漫书籍□化妆品□其他□

《离散数学》实验报告

 

专业

网络工程

班级

姓名

学号

授课教师

 

二O一六年十二月

 

实验一联结词的运算

实验二根据矩阵的乘法求复合关系

实验三利用warshall算法求关系的传递闭包

实验四图的可达矩阵实现

 

实验一联结词的运算

一.实验目的

通过上机实验操作,将命题连接词运算融入到C语言的程序编写中,一方面加强对命题连接词运算的理解,另一方面通过编程实现命题连接词运算,帮助学生复习和锻炼C语言知识,将理论知识与实际操作结合,让学生更加容易理解和记忆命题连接词运算。

二.实验原理

(1)非运算,符号:

⎤,当P=T时,⎤P为F,当P=F时,⎤P为T。

(2)合取,符号:

∧,当且仅当P和Q的真值同为真,命题P∧Q的真值才为真;否则,P∧Q的真值为假。

(3)析取,符号:

∨,当且仅当P和Q的真值同为假,命题P∨Q的真值才为假;否则,P∨Q的真值为真。

(4)异或,符号:

▽,当且仅当P和Q的真值不同时,命题P▽Q的真值才为真;否则,P▽Q的真值为真。

(5)蕴涵,符号:

→,当且仅当P为T,Q为F时,命题P→Q的真值才为假;否则,P→Q的真值为真。

(6)等价,符号:

↔,当且仅当P,Q的真值不同时,命题P↔Q的真值才为假;否则,P→Q的真值为真。

三.实验内容

编写一个程序实现非运算、合取运算、析取运算、异或运算、蕴涵运算、等价运算。

4.算法程序

#include

voidmain()

{

printf("请输入P、Q的真值\n");

inta,b;

scanf("%d%d",&a,&b);

intc,d;

if(a==1)

c=0;

elsec=1;

if(b==1)

d=0;

elsed=1;

printf("非P、Q的结果为%d,%d\n",c,d);

inte;

if(a==1&&b==1)

e=1;

elsee=0;

printf("合取的结果为%d\n",e);

intf;

if(a==0&&b==0)

f=0;

elsef=1;

printf("析取的结果为%d\n",f);

intg;

if(a==1&&b==0)

g=0;

elseg=1;

printf("单条件的结果为%d\n",g);

inth;

if(a==b)

h=1;

elseh=0;

printf("双条件的结果为%d\n",h);

}

内容格式:

新罗马,五号,行间距固定值18磅

五.实验结果

六.心得体会

通过编程,学会了析取、合取、单条件连接词、双条件连接词的用法。

 

实验二根据矩阵的乘法求复合关系

一.实验目的

复合运算是一种重要的二元关系运算,可用于二元关系的合成,二元关系的性质判断,二元关系传递闭包的运算等方面,通过编程实现二元关系的复合运算,帮助同学们理解复合运算的过程,复合形成新的二元关系中的序偶是如何产生的。

二.实验原理

复合运算能由两个二元关系生成一个新的二元关系。

设X→Y(R关系),Y→Z(S关系),则称X→Z(R◦S关系)为R和S的复合关系,并规定为:

R◦S={|x∈X∧z∈Z∧∃y(y∈Y∧∈R∧∈S)}

关系可用矩阵表示,故复合运算也可用矩阵表示。

设有三个集合:

X={x1,x2…xm},Y={y1,y2…yn},Z={z1,z2…zp},

,|X|=m,|Y|=n,|Z|=p,MR=[aik]m×n,MS=[akj]n×p则复合关系R◦S的关系矩阵为:

MR◦S=MR◦MS=[cij]m×p

∨代表逻辑加,满足0∨0=0,0∨1=1,1∨0=1,1∨1=1

∧代表逻辑乘,满足0∧0=0,0∧1=0,1∧0=0,1∧1=1

三.实验内容

将二元关系用关系矩阵表示,通过两个关系矩阵对应行列元素先进行逻辑乘,后进行逻辑加生成新的关系矩阵中的每一个元素。

新的关系矩阵所对应的二元关系就是两个二元关系复合形成的,编程实现这一复合过程。

四.算法程序

#include

intmain()

{

inta[100][100],b[100][100],c[100][100],i,j,k,n;

printf("请输入集合X中元素个数:

");

scanf("%d",&n);

printf("请输入关系矩阵Mr的格式:

\n");

for(i=0;i

{

for(j=0;j

scanf("%d",&a[i][j]);

}

printf("请输入关系矩阵Ms的格式:

\n");

for(i=0;i

{

for(j=0;j

scanf("%d",&b[i][j]);

}

for(i=0;i

{

for(j=0;j

for(k=0;k

c[i][k]=1;

}

for(i=0;i

{

for(j=0;j

if(c[i][j]!

=1)

c[i][j]=0;

}

printf("\n");

printf("关系矩阵Mr和Ms的复合运算结果是:

\n");

for(i=0;i

{

for(j=0;j

printf("%d",c[i][j]);

printf("\n");

}

return0;

}

 

五.实验结果

实验结果截图大小为:

宽(10cm)×高(8cm)

六.心得体会

通过编程,更加深入的了解了矩阵复合运算法则。

实验三利用warshall算法求关系的传递闭包

一.实验目的

对于一个二元关系R,它的传递闭包(t(R))就是包含R,并且具有传递性质的最小二元关系。

传递闭包在图论、数据库、编译原理、计算机形式语言中都有重要的应用。

warshall算法是计算传递闭包的一种有效算法,通过编程实现warshall算法,帮助同学们更好地理解传递闭包的生成过程。

二.实验原理

设X是含有n个元素的集合,R是X上的二元关系,则:

以上计算传递闭包时需要按照复合关系定义求

,这是比较麻烦的,特别当有限集合元素比较多时计算量很大。

1962年Warshall提出了一个求t(R)的有效计算方法:

设R是n个元素集合上的二元关系,

是R的关系矩阵:

第一步:

置新矩阵M,

第二步:

置i,

第三步:

,若M的第j行i列处为1,则对

作如下计算:

将M的第j行第k列元素与第i行第k列元素进行逻辑加,然后将结果送到第j行k列处,即

第四步:

第五步:

,转到第三步,否则停止。

三.实验内容

将二元关系用关系矩阵表示,编程实现Warshall算法,获得二元关系传递闭包的关系矩阵。

四.算法程序

#include

#include

voidmain()

{

intA[10][10];

intn,i,j,k;

printf("输入关系矩阵的维数n(n<10)\n");

scanf("%d",&n);

printf("输入n*n个数据(0or1)\n");

for(i=1;i<=n;i++)

{

for(j=1;j<=n;j++)

{

scanf("%d",&A[i][j]);

if(A[i][j]!

=1&&A[i][j])

printf("Thereisanerror");

}

}

for(i=1;i<=n;i++)

{

for(j=1;j<=n;j++)

{

for(k=1;k<=n;k++)

{

if(A[i][j]&&(A[i][k]||A[j][k]))

A[i][k]=1;

}

}

}

printf("传递闭包的关系矩阵:

\n");

for(i=1;i<=n;i++)

{

for(j=1;j<=n;j++)

printf("%2d",A[i][j]);

printf("\n");

}

}

五.实验结果

六.心得体会

通过编程,深入了解什么是Warshall算法,也加深了对传递闭包的了解。

实验四图的可达矩阵实现

一.实验目的

可达矩阵表明了图中任何两个不同的结点之间是否存在至少一条道路,以及在任何结点处是否存在着回路。

可达性矩阵是判别一个有向图是否为强连通图或弱连通图的有效工具,通过编程实现图形的可达矩阵,帮助同学们掌握可达矩阵生成方法。

二.实验原理

定义设G=(V,E)是一个n阶的有向简单图,

定义矩阵

,其中

称P是图G的可达矩阵。

求可达矩阵可以先构造A,

,再构造

,最后利用关系

确定P的元素

从而构造出P。

显然,这种先求

再构造P的方法很费事。

如果我们把邻接矩阵A当作关系矩阵,那么求可达矩阵就相当于求A的传递闭包,因此可以仿照集合论中求关系的传递闭包的办法,求可达矩阵P。

三.实验内容

将图形中的边表达成二元关系,计算该二元关系的传递闭包,并将传递闭包表达成关系矩阵,该关系矩阵就是图形的可达矩阵,编程实现求可达矩阵的过程。

四.算法程序

#include

#defineN4

voidTransitiveClosure(intdist[N][N],intt[N][N])//寻找可达矩阵

{

for(inti=0;i

for(intj=0;j

{

if((i==j)||(dist[i][j])==1)

t[i][j]=1;

else

t[i][j]=0;

}

for(intk=0;k

for(inti=0;i

for(intj=0;j

t[i][j]=t[i][j]||(t[i][k]&&t[k][j]);

}

voidmain()

{

inti,j;

intdist[N][N]={{1,0,0,0},

{0,1,1,1},

{0,1,1,0},

{1,0,1,1}};

printf("邻接矩阵举例如下:

\n");

for(i=0;i

{

for(j=0;j

printf("%d",dist[i][j]);

printf("\n");

}

intt[N][N]={0};

TransitiveClosure(dist,t);

printf("其对应可达矩阵如下:

\n");

for(i=0;i

{

for(j=0;j

printf("%d",t[i][j]);

printf("\n");

}

}

五.实验结果

六.心得体会

有了邻接矩阵,通过遍历,判断是否可达,通过for语句找出可达矩阵。

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

当前位置:首页 > 高等教育 > 经济学

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

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