离散数学实验报告

合集下载

离散数学 实验报告

离散数学 实验报告

离散数学实验报告

离散数学实验报告

引言:

离散数学是一门研究离散结构的数学学科,它对于计算机科学、信息技术等领域具有重要的应用价值。本实验报告旨在通过实际案例,探讨离散数学在现实生活中的应用。

一、图论在社交网络中的应用

社交网络已成为人们日常生活中不可或缺的一部分。图论作为离散数学的重要分支,对于分析和研究社交网络具有重要意义。以微信为例,我们可以通过图论的方法,分析微信中的好友关系、群组关系等。通过构建好友关系图,我们可以计算某个人在社交网络中的影响力,进而预测他的行为模式。

二、布尔代数在电路设计中的应用

布尔代数是离散数学中的重要内容,它在电路设计中扮演着重要的角色。通过布尔代数的运算规则和定理,我们可以简化复杂的逻辑电路,提高电路的可靠性和效率。例如,我们可以使用布尔代数中的与、或、非等逻辑运算符,设计出满足特定功能需求的逻辑电路。

三、排列组合在密码学中的应用

密码学是离散数学的一个重要应用领域。排列组合是密码学中常用的数学工具之一。通过排列组合的方法,我们可以设计出强大的密码算法,保障信息的安全性。例如,RSA加密算法中的大素数的选择,就涉及了排列组合的知识。

四、概率论在数据分析中的应用

概率论是离散数学中的一门重要学科,它在数据分析中具有广泛的应用。通过

概率论的方法,我们可以对数据进行统计和分析,从而得出一些有意义的结论。例如,在市场调研中,我们可以通过抽样调查的方法,利用概率论的知识,对

整个市场的情况进行推断。

五、图论在物流规划中的应用

物流规划是现代物流管理中的一个重要环节。图论作为离散数学的重要分支,

离散实验报告

离散实验报告

实验一真值计算

一、实验目的

熟悉联结词合取、析取、条件和双条件的概念,编程求其真值。

二、实验内容

从键盘输入两个命题P和Q的真值,求它们的合取、析取、条件和双条件的真值。用C语言实现。

三、程序源代码

#include <iostream>

#include <iomanip>

using namespace std;

void main()

{

bool p,q,h,x,d,s;

cout<<"请输入p的真值";

cin >> p ;

cout<<"请输入q的真值";

cin>>q;

h=p && q;

x=p || q;

if (p=0)

d=1;

else

d=p && q;

s=h;

cout <<"p合取q的值为"<<h<<" ; "<<"p析取q的值为"<<x<<"\n";

cout <<"p到q的条件值为"<<d<<" ; "<<"p到q的双条件值为"<<s<<"\n";

}

四、程序运行结果

实验二关系闭包计算

一、实验目的

熟悉Warshall算法,掌握求关系的自反闭包、对称闭包和传递闭包的方法。

二、实验内容

从键盘输入一个关系的关系矩阵,计算其自反闭包、对称闭包和传递闭包,传递闭包要求使用两种算法,即R+和Warshall算法。用C语言实现。

三、程序源代码

#include <iostream>

离散实验报告

离散实验报告

离散实验报告

专业:数学与应用数学

班级:091121

学号:2009112125

姓名:张鼎珩

日期:2011.06.23

实验内容:

实验一真值计算

实验二两个集合运算

实验三关系闭包计算

实验四关系与函数

进行试验:

实验一真值计算

一、实验目的

熟悉联结词合取、析取、条件和双条件的概念,编程求其真值。

二、实验内容

(1)求任意一个命题公式的真值表:从键盘输入两个命题P 和Q

的真值,求它们的合取、析取、蕴含和等价的真值

(2)利用真值表求任意一个命题公式的主范式

(3)利用真值表进行逻辑推理

三实验程序:

#include<stdio.h>/*标准输入输出头文件*/

#include<stdlib.h>/*该文件包含了的C语言标准库函数的定义*/

#include<string.h>/*字符串数组的函数定义的头文件*/

#include<conio.h>/*通用输入输出库*/

#include<math.h>

#define N 50

void jisuan();

void zhenzhibiao();

void panduan(int b[N],int f);

int tkh (char sz[N], char ccu[N], int icu[N], int h0);

int fkh (char sz[N], char ccu[N], int icu[N], int h0);

main()

{

int a1;

start:

do

{

printf(" 1.求P、Q的合取、析取、条件和双条件的真值\n 2.求任意一个命题公式的真值表,并根据真值表求主范式\n 3.退出\n");

(1)中南大学离散数学实验报告

(1)中南大学离散数学实验报告

离散数学实验报告

目录

第一章实验概述 (3)

1.1实验目的 (3)

1.2实验内容 (3)

1.3实验环境 (3)

第二章实验原理和实现过程 (4)

2.1实验原理 (4)

2.1.1 逻辑连接词的运算 (4)

2.1.2 真值表与主范式 (4)

2.2实验过程(算法描述) (4)

2.2.1 程序整体思路 (4)

2.2.2 实现实验A算法 (4)

2.2.3 实现实验BC算法 (5)

第三章实验数据及结果分析 (7)

3.1主程序ABC.C的功能测试及结果分析 (7)

3.1.1输入数字“1” (7)

3.1.2输入数字“2” (7)

3.1.3输入数字“3” (8)

3.1.4输入其他字符时 (8)

3.2实验A的功能测试和结果分析 (8)

3.2.1测试数据为“p=T和q=F” (9)

3.2.2测试数据为“p=F和q=F” (9)

3.2.3测试数据为“p=A和q=F” (9)

3.2.4测试数据为“p=T和q=A” (9)

3.2.5测试数据为“p=F和q=F”,之后返回主界面 (10)

3.3实验BC的功能测试和结果分析 (10)

3.3.1测试数据为“a&b|c#” (10)

3.3.2测试数据为“(a>b)|(c&d)#” (11)

3.3.3测试数据为“(a>b)|(c&d)” (12)

3.3.4测试数据为“a&b|c” (13)

第四章实验收获和心得体会 (14)

4.1实验收获 (14)

4.2心得体会 (14)

第五章实验源程序清单 (15)

5.1主程序ABC.C的代码 (15)

5.2头文件A.H的代码 (17)

离散数学试验报告

离散数学试验报告

学院理学院

学生姓名 xxx

学号 xxxxxxxxxxx

实验:编程二元关系的传递性判别,二元关系闭包方法一.前言引语:二元关系是离散数学中重要的内容。因为事物之间总是可以

根据需要确定相应的关系。从数学的角度来看,这类联系就是某个集合中元素之间存在的关系。

二.数学原理:

1.传递关系:对任意的x,y,z∈A,如果∈R且∈R,那么∈R,则称关系R是传递的,或称R具有传递性,即R在A上是传递的⇔ (∀x)(∀y)(∀z)[(x ∈A)∧(y∈A)∧(z∈A)∧((∈R)∧(∈R)→(∈R))]=1

2.自反闭包、对称闭包、传递闭包:设R是定义在A上的二元关系,若存在A 上的关系R′满足:

1)R′是自反的(或对称的、或可传递的),

2)R⊆ R′,

3)对A上任何其它满足1)和2)的关系R〞,都有:R′⊆R〞。

则称R′为R的自反闭包(或对称闭包、或传递闭包),分别记为r(R)、(s(R)和t(R))。

三.实验编程语言:c++

四.实验程序源代码:

#include

using namespace std;

int cdx(int a[100][100],int n)

{

int b[100][100],i,j;

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

{

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

{

if(a[1][j]==a[i+1][j] && a[1][j]==0)

b[i][j]=0;

else

b[i][j]=1;

}

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

{

if(b[i][j]!=a[1][j])

return 0;

}

}

return 1;

离散数学实验报告(两篇)

离散数学实验报告(两篇)

引言:

离散数学是一门基础性的数学学科,广泛应用于计算机科学、电子信息等领域。本文是《离散数学实验报告(二)》,通过对离散数学实验的深入研究和实践,总结了相关的理论知识和应用技巧,希望能够对读者对离散数学有更加深入的理解。

概述:

本实验主要涉及离散数学中的集合、关系、图论等基本概念及其应用。通过对离散数学的实验学习,深入掌握了这些概念和应用,对于在实际问题中的应用和拓展具有重要的意义。

正文内容:

一、集合相关概念及应用

1.定义:集合是由元素组成的无序的整体。介绍了集合的基本概念、集合的表示法以及集合的运算。

2.集合的应用:介绍了集合在数学、计算机科学中的应用,如数据库的查询、关系代数等。

二、关系相关概念及应用

1.定义:关系是一个元素与另一个元素之间的对应关系。介绍了关系的基本概念、关系的表示方法及其运算。

2.关系的应用:介绍了关系在图像处理、社交网络分析等领域的应用,如图像中的像素点之间的关系、社交网络中用户之间的关系等。

三、图论基础知识及应用

1.定义:图是由顶点和边组成的抽象的数学模型。介绍了图的基本概念、图的表示方法和图的运算。

2.图论的应用:介绍了图论在路由算法、电子商务等领域的应用,如路由器的路由选择、电子商务中的商品推荐等。

四、布尔代数的概念及应用

1.定义:布尔代数是一种基于集合论和逻辑学的代数系统。介绍了布尔代数的基本概念、布尔表达式及其化简方法。

2.布尔代数的应用:介绍了布尔代数在电路设计、开关控制等方面的应用,如逻辑门电路的设计、开关控制系统的建模等。

五、递归的概念及应用

离散数学实验报告

离散数学实验报告

《离散数学》实验报告

专业网络工程

班级

姓名

学号

授课教师

二 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 的真值为真。

三.实验内容

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

#include<>

void main()

{

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

int a,b;

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

离散数学实验报告心得

离散数学实验报告心得

离散数学实验报告心得

写离散数学实验报告心得时,可以考虑以下几个方面:

1. 实验目的和背景:描述实验的目的和背景,包括实验的重要性和意义,与相关领域的联系和应用。

2. 实验设计:详细描述实验的设计过程,包括实验的步骤、数据收集方法、实验结果的分析和总结。

3. 实验结果:描述实验结果,包括数据的统计分析和图表展示。如果实验结果有预测,可以说明预测的准确性。如果实验结果与预期不符,可以说明原因并提出改进建议。

4. 实验体会:分享实验过程中的感受和体会,包括实验的难点、收获和启示。还可以谈谈对离散数学的理解和应用,以及对该领域未来的看法。

5. 实验反思:反思实验过程中的教训和不足之处,提出改进方案和今后的研究方向。

在写实验报告心得时,应尽可能客观、准确地描述实验过程和结果,并在文中引用相关数据、图表和文献支持。同时,应注重实验体会和启示的阐述,以便读者从中受到启发和借鉴。

离散数学计算机实验报告

离散数学计算机实验报告

《离散数学》实验

一、实验目的

《离散数学》是现代数学的一个重要分支,是计算机科学与技术专业的基础理论课,也是该专业的核心课程和主干课程。“离散数学”是计算机专业一门重要的专业技术基础课程,是计算机专业的一门核心的关键性课程。该课程一方面为后继课程如数据结构、编绎原理、操作系统、数据库原理、人工智能和形式语言与自动机等提供必要的理论基础;同时,更为重要的是培养学生的抽象思维能力和逻辑推理能力,为今后的学习和工作打好基础。无论从计算机学科发展的过去、现在和未来看,《离散数学》都是计算机科学与技术专业不可缺少的重要组成部分。这门课程有着其它课程不可替代的地位和作用,是一门承前启后的课程。

根据《离散数学》课程本身的理论性较强的特性,为了帮助学生更好地学习本课程,理解和掌握所学基本概念和方法,为整个专业学习打好基础,要求运用所学知识,上机解决一些典型问题,设置实践环节十分重要。通过实验实践内容的训练,突出逻辑性思维训练的特征, 目的是学习离散数学中的基本算法和方法,掌握数理逻辑、关系和图论中的基本算法,提高学生学习的兴趣及实际动手的能力。通过分析、设计、编码、调试等各环节的训练,使学生深刻理解、牢固掌握所学知识,培养分析、解决实际问题的能力。

二、实验要求

掌握真值表技术,熟悉联结词合取、析取、条件和双条件的概念。熟悉Warshall算法,掌握求关系的自反闭包、对称闭包和传递闭包的方法。熟悉邻接矩阵和两结点间长度为m 的路的数目的关系。熟悉最优树的构造算法,掌握最优树的构造过程。实验前作好准备,分析问题并确定算法,设计代码。做实验过程中认真分析和调试程序,记录并分析实验结果。实验后完成实验报告,实验报告包括实验目的、实验内容、源程序、运行结果及分析。可以使用C、VC或MATLAB完成实验。实验题目包括真值计算、关系闭包计算、计算两结点间长度为m的路的数目、最优树的构造四个实验,每个实验要求2个学时完成。

离散数学实验报告()

离散数学实验报告()

《离散数学》实验报告

专业网络工程

班级

姓名

学号

授课教师

二 O 一六年十二月

目录

实验一联结词的运算

实验二根据矩阵的乘法求复合关系实验三利用算法求关系的传递闭包实验四图的可达矩阵实现

实验一联结词的运算

一.实验目的

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

(1) 非运算, 符号:⎤ ,当时,⎤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为为F时,命题P→Q的真值才为假;否则,P→Q 的真值为真。

(6) 等价, 符号: ↔, 当且仅当的真值不同时,命题P↔Q的真值才为假;否则,P→Q 的真值为真。

三.实验内容

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

<>

()

{

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

;

("");

;

(1)

0;

1;

(1)

0;

1;

("非P、Q的结果为,\n");

e;

(11)

1;

0;

("合取的结果为\n");

离散数学--最小生成树实验报告

离散数学--最小生成树实验报告

创作编号:

GB8878185555334563BT9125XW

创作者:凤呜大王*

一、实验目的:掌握图的存储表示和以及图的最小生成树算法。

二、实验内容:

1.实现图的存储,并且读入图的内容。

2.利用克鲁斯卡尔算法求网络的最小生成树。

3.实现构造生成树过程中的连通分量抽象数据类型。

4.以文本形式输出对应图的最小生成树各条边及权值。

三、实验要求:

1.在上机前写出全部源程序;

2.能在机器上正确运行程序;

3.用户界面友好。

需求分析:

1、利用克鲁斯卡尔算法求网的最小生成树;

2、以用户指定的结点为起点,分别输出每种遍历下的结点访问序列;

3、输入为存在边的顶点对,以及它们之间的权值;输出为所得到的邻

接矩阵以及按权排序后的边和最后得到的最小生成树;

克鲁斯卡尔算法:假设WN=(V,{E}) 是一个含有n 个顶点的连通网,按照构造最小生成树的过程为:先构造一个只含n 个顶点,而边

集为空的子图,之后,从网的边集 E 中选取一条权值最小的边,若该条边的两个顶点分属不同的树,则将其加入子图,反之,若该条边的两个顶点已落在同一棵树上,则不可取,而应该取下一条权值最小的边再试之。依次类推,直至只有一棵树,也即子图中含有n-1条边为止。

测试数据:

自行指定图进行运算

四、详细设计

源程序

#include<stdio.h>

#include<stdlib.h>

#define M 20

#define MAX 20

typedef struct

{

int begin;

int end;

int weight;

}edge;

离散数学实验报告

离散数学实验报告

实验一

一实验内容(选作AB类)

1. 从键盘输入两个命题变元P和Q的真值,求它们的合取、析取、条件和双条件的真值。(A)

2. 求任意一个命题公式的真值表(B,并根据真值表求主范式(C))二实验目的

熟悉掌握命题逻辑中的联接词、真值表、主范式等,进一步能用它们来解决实际问题。

三实验环境

C语言编程环境实现。

四 1、实现A类算法原理

根据析取、合取的定义可用简单的算术运算求出结果,并将结果转换成逻辑值。同样根据等价关系可将条件式及双条件式转换成析取和合取的运算。此题较简单

2、实现BC类算法原理

算法逻辑如下:

(1)将二进制加法模拟器赋初值0

(2)计算模拟器中所对应的一组真值指派下合式公式的真值。

(3)输出真值表中对应于模拟器所给出的一组真值指派及这组真

值指派所对应的一行真值。

(4)产生下一个二进制数值,若该数值等于2n-1,则结束,否则转(2)。

(5)在进行表达式求值的时候,可先将带括号的中缀表达式利用栈结构转换为不带括号的后缀表达式(逆波兰式),然后进行计算。具体方法请参考数据结构中有关“栈”的知识。

五实验数据及结果分析

1(A类)

2(B类)

从实验结果可以看到:当输入的数据不是逻辑值时须重新输入,当输入符合逻辑值才能继续下去。从结果来看完全正确,由于界面有限没有把所有结果都贴上,根据运行情况来看没有错误

六源程序清单

1(A类)

#include

//#include

main()

{

while(1) //输入符合逻辑值的命题变元P值

{

int a,b,c,d,e,f,g;

while(1)

{

printf("\ninput the logic value of the minti P(0 or 1):");

离散数学实验报告

离散数学实验报告

实验一命题逻辑推理

1.实验用例

根据下面的命题,试用逻辑推理方法确定谁是作案者,写出推理过程。

(1)营业员A或B偷了手表;

(2)若A作案,则作案不在营业时间;

(3)若B提供的证据正确,则货柜末上锁;

(4)若B提供的证据不正确,则作案发生在营业时间;

(5)货柜上了锁。

2.实验目的

加深对命题逻辑推理方法的理解。

3.实验内容

用命题逻辑推理的方法解决逻辑推理问题。

4.实验原理和方法

(1)符号化上面的命题,将它们作为条件,营业员A偷了手表作为结论,得一个复合命题。

(2)将复合命题中要用到的联结词定义成C语言中的函数,用变量表示相应的命题变元。将复合命题写成一个函数表达式。

(3)函数表达式中的变量赋初值1。如果函数表达式的值为1,则结论有效,A偷了手表,否则是B偷了手表。

用命题题变元表示:

A:营业员A偷了手表

B:营业员B偷了手表

C:作案不在营业时间

D:B提供的证据正确

E:货柜末上锁

则上面的命题符号化为 (A||B) && (!A||C) && (!D||E) && (D||!C) && !E 要求找到满足上面式子的变元A,B的指派便是结果。

5.实验代码

6.实验结果B偷了手表

实验二关系的运用

1.实验原理和方法

在三种闭包中自反和对称闭包的求解很容易,对矩阵表示的关系,其自反闭包只要将矩阵的主对角线全部置为1就可;对称闭包则加上关系的转置矩阵(逻辑加法)

2.实验代码

5.实验结果1.自反闭包

2.传递闭包

3.对称闭包

实验三图论

1.实验用例

如下图所示的赋权图表示某七个城市及预先算出它们之间的一些直接通信成路造价(单位:万元),试给出一个设计方案,使得各城市之间既能够通信又使总造价最小并计算其最小值.

离散研究报告

离散研究报告

离散研究报告

离散研究报告

一、研究目的和背景

离散数学是数学的一个分支,主要研究离散结构及其之间的关系和性质。它在计算机科学、信息技术、通信工程等领域有着广泛的应用。本研究报告旨在对离散数学进行深入的研究,分析其相关概念、原理和应用,为相关领域的科学研究和实际应用提供理论支持。

二、研究内容和方法

1.研究内容:

(1)离散数学的基本概念和原理;

(2)图论及其在网络分析中的应用;

(3)布尔代数及其在逻辑电路设计中的应用;

(4)组合数学及其在密码学中的应用;

(5)离散数学在计算机科学和信息技术中的具体应用。

2.研究方法:

(1)文献调研:对相关离散数学的研究文献进行深入的查阅和分析;

(2)数学建模:通过建立数学模型来研究和解决实际问题;(3)实验验证:对离散数学的应用进行实验验证,检验其有效性和可靠性。

三、研究结果和讨论

1.研究结果:

通过对离散数学的研究,我们深入了解了离散数学的基本概念和原理,了解了图论、布尔代数和组合数学在实际问题中的应用,并且验证了离散数学在计算机科学和信息技术中的重要性。

2.讨论:

离散数学的研究和应用对于计算机科学和信息技术领域具有重要的意义。它不仅为计算机算法设计提供了基础,还在网络分析、逻辑电路设计、密码学等领域中发挥着重要的作用。离散数学的研究还为解决实际问题提供了一种新的思路和方法。

四、结论和建议

1.结论:

离散数学是一门重要的数学分支,在计算机科学、信息技术等领域有着广泛的应用。通过对离散数学的研究,我们可以深入了解其基本概念和原理,并且应用于实际问题的解决中。

2.建议:

离散实验报告

离散实验报告

离散实验报告

离散实验报告

概述:

离散实验是一种基于离散数学原理的实验方法,旨在通过实际操作与观察,验

证离散数学理论的正确性与应用性。本报告将围绕离散实验的目的、方法、结

果与分析展开,以期为读者提供一份全面的实验报告。

实验目的:

离散实验的目的在于通过实际操作,验证离散数学理论在现实世界中的应用。

具体来说,本次实验旨在验证集合论、图论以及逻辑推理等离散数学的基本概

念与原理在实际问题中的有效性。

实验方法:

本次实验采用了多种实验方法,包括实地观察、数据收集与分析、计算机模拟等。首先,我们选择了几个实际问题,如社交网络中的好友关系、物流网络中

的最短路径问题等,以验证图论在解决网络问题中的可行性。然后,我们进行

了一系列数据收集,包括好友关系的网络拓扑结构、物流网络中各节点之间的

距离等。最后,我们利用计算机模拟工具,如Python编程语言,实现了离散数学中的算法,如Dijkstra算法、最小生成树算法等,来解决实际问题。

实验结果与分析:

通过本次实验,我们得出了一系列实验结果,并对其进行了深入的分析。首先,在社交网络中的好友关系实验中,我们发现图论中的邻接矩阵与邻接表等数据

结构能够很好地表示好友关系,并且通过深度优先搜索与广度优先搜索等算法,能够高效地找到两个人之间的联系路径。其次,在物流网络中的最短路径实验

中,我们发现Dijkstra算法能够快速地找到两个节点之间的最短路径,并且通

过最小生成树算法,能够有效地规划物流网络的布局,降低总体成本。

结论:

通过本次离散实验,我们验证了离散数学理论在实际问题中的应用性与有效性。图论、集合论以及逻辑推理等离散数学的基本概念与原理,为解决实际问题提

离散数学实验报告

离散数学实验报告

离散数学闭包实验报告

专业12计算机科学与技术

学号12407127

姓名周谦益

时间2011—11--15

一、实验目的

1.通过上机程序,进一步加深对关系中自反闭包,对称闭包,传递闭包

的理解。

2.掌握Warshall算法。

3.学会用程序解决离散数学中的问题。

4.增强我们编写程序的能力。

二、实验内容

求有限集上给定关系的自反、对称和传递闭包(用Warshall算法)。

三、实验环境

我的实验是在Vs2008实验环境下完成的,而所设计的程序也在这个环境下通过了编译,运行和测试。

四、实验原理和实现过程

设计思路

在三种闭包中自反和对称闭包的求解很容易,对矩阵表示的关系,其自反闭包只要将矩阵的主对角线全部置为1就可;对称闭包则只需要将矩阵中数值为1的元素关于主对角线对称的元素数值也设为1就可以了;而对于传递闭包,用Warshall算法可以很方便的计算出来。下面我就来具体分析一下每一种闭包运算的设计。

自反闭包的设计:我们只要把关系矩阵的对角线的元素全赋值为1就可以啦。

具体程序如下:

求自反闭包的程序:

int Relation::Reflexive()//求自反闭包的函数

{

for(int i=0;i

if(!R[i][i])return(0);

return(1);

};

对称闭包的求法:对于对称闭包,我们只只需要将矩阵中数值为1的元素的对称位置的元素数值也设为1就可以了。具体程序如下:

对称闭包:

int Relation::Symmetric()//对称闭包的函数

{

int i,j,K=Len-1;

for(i=0;i

for(j=i+1;j

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《离散数学》实验报告专业网络工程

班级

姓名

学号

授课教师

二 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的真值为真。

三.实验内容

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

#include

void main()

{

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

int a,b;

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

int c,d;

if(a==1)

c=0;

else c=1;

if(b==1)

d=0;

else d=1;

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

int e;

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

e=1;

else e=0;

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

int f;

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

f=0;

else f=1;

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

int g;

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

g=0;

else g=1;

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

int h;

if(a==b)

h=1;

else h=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={x 1,x 2…x m },Y={y 1,y 2…y n },Z={z 1,z 2…z p }, Z Y X S

R −→−−→−,|X|=m, |Y|=n, |Z|=p,M R =[a ik ]m ×

n ,M S

=[a kj ]n ×p 则复合关系R ◦S 的关系矩阵为: M R ◦S = M R ◦M S =[c ij ] m ×p )(1kj

ik n

k ij b a c ∧=∨=

∨代表逻辑加,满足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 int main() { int a[100][100],b[100][100],c[100][100],i,j,k,n; printf("请输入集合X 中元素个数:");

scanf("%d",&n);

printf("请输入关系矩阵Mr 的格式:\n"); for(i=0;i

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");

}

return 0;

}

五.实验结果

实验结果截图大小为:宽(10cm)×高(8cm)

相关文档
最新文档