离散数学实验指导书

合集下载

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

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

“离散数学”实验报告(实验3ABC)专业班级学号姓名日期:2011.12.19目录一、实验目的 (3)二、实验内容 (3)三、实验环境 (3)四、实验原理和实现过程(算法描述) (3)1实验原理 (3)2实验过程 (5)五、实验数据及结果分析 (6)六、源程序清单 (10)七、其他收获及体会 (16)一、实验目的理解图论的基本概念,图的矩阵表示,图的连通性,图的遍历,以及求图的连通支方法。

二、实验内容以偶对的形式输入一个无向简单图的边,建立该图的邻接矩阵,判断图是否连通(A)。

并计算任意两个结点间的距离(B)。

对不连通的图输出其各个连通支(C)。

三、实验环境C或C++语言编程环境实现。

四、实验原理和实现过程(算法描述)1、实验原理(1)建立图的邻接矩阵,判断图是否连通根据图的矩阵表示法建立邻接矩阵A,并利用矩阵的乘法和加法求出可达矩阵,从而判断图的连通性。

连通图的定义:在一个无向图G 中,若从顶点vi到顶点vj有路径相连(当然从vj到vi也一定有路径),则称vi和vj是连通的。

如果G 是有向图,那么连接vi和vj的路径中所有的边都必须同向。

如果图中任意两点都是连通的,那么图被称作连通图。

判断连通图的实现:在图中,从任意点出发在剩余的点中,找到所有相邻点循环,直到没有点可以加入为止,如果有剩余的点就是不连通的,否则就是连通的。

或者也可用WallShell算法,由图的邻接矩阵判断图是否连通。

(2)计算任意两个结点间的距离图中两点i,j间的距离通过检验A l中使得a ij为1的最小的l值求出。

路径P中所含边的条数称为路径P的长度。

在图G<V,E>中,从结点Vi到Vj最短路径的长度叫从Vi到Vj的距离,记为d<Vi,Vj>。

设图的邻接矩阵是A,则所对应的aij的值表示,点Vi到点Vj距离为n的路径有aij条。

若aij(1),aij(2),…,aij(n-1),中至少有一个不为0,则可断定Vi与Vj可达,使aij(l)≠0的最小的l即为d(Vi,Vj)。

离散数学上机实验指导

离散数学上机实验指导

离散数学上机实验指导徐凤生如果你需要索取源程序,请发邮件至xfs@。

实验11实验内容(1)求任意一个命题公式的真值表。

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

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

注:(2)和(3)可在(1)的基础上完成。

2实验目的真值表是命题逻辑中的一个十分重要的概念,利用它几乎可以解决命题逻辑中的所有问题。

例如,利用命题公式的真值表,可以判断命题公式的类型、求命题公式的主范式、判断两命题公式是否等价,还可以进行推理等。

本实验通过编写一个程序,让计算机给出命题公式的真值表,并在此基础上进行命题公式类型的判定、求命题公式的主范式等。

目的是让学生更加深刻地理解真值表的概念,并掌握真值表的求解方法及其在解决命题逻辑中其他问题中的应用。

3算法的主要思想利用计算机求命题公式真值表的关键是:①给出命题变元的每一组赋值;②计算命题公式在每一组赋值下的真值。

真值表中命题变元的取值具有如下规律:每列中0和1是交替出现的,且0和1连续出现的个数相同。

n个命题变元的每组赋值的生成算法可基于这种思想。

含有n个命题变元的命题公式的真值的计算采用的方法为“算符优先法”。

为了程序实现的方便,约定命题变元只用一个字母表示,非、合取、析取、条件和双条件联结词分别用!、&、|、-、+来表示。

算符之间的优先关系如表1-32所示:为实现算符优先算法,另一个称作OPND,用以寄存操作数或运算结果。

算法的基本思想是:(1)首先设置操作数栈为空栈,符号“@”为运算符的栈底元素;(2)调用函数Divi(exp,myopnd)得到命题公式包含的命题变元序列myopnd(按字典序排列,同一个命题变元只出现一次);(3)依次读入命题公式中的每个字符,若是命题变元则其对应的赋值进OPND栈,若是运算符,则和OPTR栈的栈顶运算符比较后作相应操作,直至整个命题公式求值完毕。

实验21实验内容(1)求任意两个集合的交集、并集、差集。

(2)求任意一个集合的幂集。

【最新文档】离散数学学习指导书-实用word文档 (23页)

【最新文档】离散数学学习指导书-实用word文档 (23页)

本文部分内容来自网络整理,本司不为其真实性负责,如有异议或侵权请及时联系,本司将立即删除!== 本文为word格式,下载后可方便编辑和修改! ==离散数学学习指导书篇一:离散数学学习指导书第1章集合1.1 集合1.1.1基本知识点:集合、元素、基数、包含、子集、集合相等、空集、全集、幂集等。

基本理论:两个集合相等的充分必要条件是它们的元素相同;如果有限集合A有n个元素,则幂集合2A有2n个元素。

基本计算:判断一个元素是否属于某个集合;判断两个集合是否具有包含关系;求一个集合的幂集;1.1.2重点与难点(1) 集合与元素:集合是一个不能精确定义的基本概念,通常把具有某种共同性质的事物归纳成一个整体,就形成一个集合,一般用大写字母A,B,C等表示集合的名称。

把组成集合的事物称为元素,一般用小写字母a,b,c等表示。

(2)集合的表示方法:集合通常有两种表示方法,即列举法、描述法。

(3)包含与子集:对任意两个集合A和B,若对任意的a?A,必有a?B,则称A被B包含,或者B包含A,记作A?B。

若A?B则称A是B的子集。

(4)空集、全集和幂集:不包含任何元素的集合称为空集,记作?。

在一定范围内所有集合均为某一集合的子集,则称该集合为全集,记为U。

由集合A的所有子集所构成的集合称为集合A的幂集,记为2A。

典型题解例1:下面是用列举法表示的集合:A?{sun,earth,moon}B?{a,b,c,?,z}C?{1,2,3,4,?}有时列出集合中所有元素是不现实或不可能的,如上面的B和C,但只要在省略号前或后列出一定数量的元素,能使人们一看就能了解那些元素属于这个集合就可以。

例2:下面是用描述法表示的集合:A?{x|x?Nx?1且x?1000}B?{x|x?R?x2?1?0}例3:集合{a,a,b,b,c}与集合{a,b,c}没有区别,集合{a,b,c}与集合{c,b,a} 没有区别,即{a,a,b,b,c}?{a,b,c},{a,b,c}?{c,b,a}。

离散数学实验指导书

离散数学实验指导书

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

二、实验内容从键盘输入两个命题P和Q的真值,求它们的合取、析取、条件和双条件的真值。

用C语言或MATLAB实现。

三、实验报告要求列出实验目的、实验内容、实验步骤、源程序和实验结果。

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

二、实验内容从键盘输入一个关系的关系矩阵,计算其自反闭包、对称闭包和传递闭包,计算传递闭包时使用Warshall算法。

用C语言或MATLAB实现。

三、实验报告要求列出实验目的、实验内容、实验步骤、源程序和实验结果。

实验三计算两结点间长度为m的路的数目一、实验目的熟悉邻接矩阵和两结点间长度为m的路的数目的关系并编程计算。

二、实验内容从键盘输入图的邻接矩阵和一正整数m,计算结点两两之间长度为m的路的数目。

考虑有向图和无向图。

用C语言或MATLAB实现。

三、实验报告要求列出实验目的、实验内容、实验步骤、源程序和实验结果。

实验四最优树的构造一、实验目的熟悉最优树的构造算法,掌握最优树的构造过程。

二、实验内容从键盘输入一组权值,构造出对应的最优树,列出构造过程。

用C语言或MATLAB实现。

三、实验报告要求列出实验目的、实验内容、实验步骤、源程序和实验结果。

部分参考答案:实验二C++源程序#include<iostream.h>int num;class guanxi{public:int jz[100][100];void set(){cout<<"shu ru yuan su shu"<<endl;cin>>num;cout<<"put in the guanxi"<<endl;int i,j;for(i=0;i<num;i++)for(j=0;j<num;j++)cin>>jz[i][j];cout<<"关系剧阵是:"<<endl;for(i=0;i<num;i++)for(j=0;j<num;j++){cout<<jz[i][j]<<" ";if (j==num-1)cout<<endl;}cout<<endl;}friend void zifan();friend void duichen();friend void chuandi();};void zifan(guanxi ox){int i,j;for(i=0;i<num;i++)ox.jz[i][i]=1;for(i=0;i<num;i++)for(j=0;j<num;j++){cout<<ox.jz[i][j]<<" ";if (j==num-1)cout<<endl;}}void duichen(guanxi ox){int i,j;for(i=0;i<num;i++)for(j=0;j<num;j++){if(ox.jz[i][j]==1)ox.jz[j][i]=1;}for(i=0;i<num;i++)for(j=0;j<num;j++){cout<<ox.jz[i][j]<<" ";if (j==num-1)cout<<endl;}}void chuandi(guanxi ox){int i,j,k;for(i=0;i<num;i++)for(k=0;k<num;k++)if(ox.jz[k][i]==1){for(j=0;j<num;j++)if(ox.jz[i][j]==1)ox.jz[k][j]=1;}for(i=0;i<num;i++)for(j=0;j<num;j++){cout<<ox.jz[i][j]<<" ";if (j==num-1)cout<<endl;}}main(){guanxi o1;o1.set();cout<<"它的自反闭包是:"<<endl;zifan(o1);cout<<"它的对称闭包是:"<<endl;duichen(o1);cout<<"它的传递闭包是:"<<endl;chuandi(o1);return 0;}C源程序#include<stdio.h>int main(){int i,j,k,n;static int str[122],zifan[122],chuandi[122],duich[122];printf("Please input the jie:\n");scanf("%d",&n);printf("A=%d\n",n);for(i=0;i<n*n;i++){scanf("%d",&str[i]);}printf("The shu zu is:\n");for(j=0;j<n*n;j++){printf("%4d",str[j]);if((j+1)%n==0)printf("\n");}for(j=0;j<n*n;j++){zifan[j]=str[j];chuandi[j]=str[j];duich[j]=str[j];}printf("The zifan bibao is:\n");for(i=0;i<n*n;i++){if(i%(n+1)==0)zifan[i]=zifan[i]||1;printf("%4d",zifan[i]);if((i+1)%n==0)printf("\n");}printf("The duich bibao is:\n");for(i=0,j=0;i<n*n&&j<n;i++){if(i>j*(n+1)&&i<(j+1)*n){ duich[i]=duich[(i-j*(n+1))*(n-1)+i]||duich[i];duich[(i-j*(n+1))*(n-1)+i]=duich[(i-j*(n+1))*(n-1)+i]||duich[i];}else if(i>=(j+1)*n)j++;}for(i=0;i<n*n;i++){printf("%4d",duich[i]);if((i+1)%n==0)printf("\n");}printf("The chuandi bibao is:\n");for(i=0;i<n;i++)for(j=0;j<n;j++)if(chuandi[j*n+i]){for(k=0;k<n;k++)chuandi[j*n+k]=chuandi[j*n+k]||chuandi[i*n+k];}for(i=0;i<n*n;i++){printf("%4d",chuandi[i]);if((i+1)%n==0)printf("\n");}return 0;}实验三#include <iostream.h>class luchang{private:int N;int **p;public:luchang(int n);~luchang();int input();luchang &operator =(luchang &A);luchang &mul(luchang &A,luchang &B);void disply();int disply(int M);};luchang::luchang(int n){N=n;int i;p=new int*[N];for (i=0;i<N;i++)p[i]=new int[N];}luchang::~luchang(){int i;for (i=0;i<N;i++)delete p[i];delete p;}int luchang::input(){int i,j;for (i=0;i<N;i++){for (j=0;j<N;j++)cin>>p[i][j];}return 0;}luchang& luchang::operator =(luchang &A){int i,j;for (i=0;i<N;i++){for(j=0;j<N;j++)p[i][j]=A.p[i][j];}return *this;}luchang& luchang::mul(luchang &A,luchang &B) {int i,j,k,sum=0;for (i=0;i<N;i++){for (j=0;j<N;j++){for (k=0;k<N;k++){sum+=B.p[i][k]*A.p[k][j];p[i][j]=sum;}sum=0;}}return *this;}void luchang::disply(){for (int i=0;i<N;i++){for (int j=0;j<N;j++)cout<<p[i][j]<<" ";cout<<endl;}}int luchang::disply(int M){int i,j;int count=0;for (i=0;i<N;i++){for (j=0;j<N;j++){if (p[i][j]==M)count++;else continue;}}cout<<count<<endl;return 0;}void main(){cout<<"请输入图中的点数V"<<endl;int n=0;cin>>n;luchang ob1(n),ob2(n),ob3(n);cout<<"请输入邻接矩阵"<<endl;ob1.input();ob2=ob1;ob3=ob1;cout<<"请输入要查找的路长M"<<endl;int M=0;cin>>M;for (int i=0;i<M-1;i++){ob3.mul(ob1,ob2);ob2=ob3;}ob3.disply();ob3.disply(M);cout<<endl;}。

离散数学实验指导书_工程认证(实验4:穿衣问题)

离散数学实验指导书_工程认证(实验4:穿衣问题)

实验四穿衣问题●实验所属系列:离散数学课程设计实验●实验对象:本科●相关课程及专业:离散数学,计算机科学与技术●实验类型:综合型实验●实验时数(学分):4学时实验目的通过一个与日常生活有关的问题求解,加深对于关系性质和偏序关系的理解,巩固课堂学到的知识,锻炼动手能力。

实验内容与要求如图是一个人穿衣服时的顺序要求。

比如,必须要先穿衬衫(shirt)才能穿毛衣(sweater)。

编写程序给出按照什么样的顺序穿衣服才是合适的。

实验的软硬件环境PC机一台,装有VC++6.0或其它C语言集成开发环境。

实验过程和方法1)对给定问题进行前期分析;可利用偏序关系来表达穿衣的顺序。

由于有些衣物只有在其它某些衣物穿好之后才能穿,所以这个问题其实是一个拓扑排序问题。

项目安排和工作调度中,经常会遇到一类拓扑排序问题。

比如,一个项目由若干个工作任务构成。

某些工作任务只有在其它某些工作任务完成后才能开始。

那么,我们如何能找到完成这个项目的工作任务的顺序?构造一个任务集合上的偏序关系,a,b是任务,a≤b当且仅当直到a结束后b才能开始。

我们可以使用如下的算法来求出任务的完成顺序(其中,S是任务集合)。

1.k=12.若S≠Ø,则ak=S的极小元素,S=S-{ak},k=k+1,回到2,否则到3.a1,a2,….an就是所求的任务执行次序。

2)实现求解偏序关系中极小元素的算法;在一个偏序关系R中,根据极小元素的定义,如果一个元素a和集合中任意元素x符合下面两种情况之一,则此元素为一个极小元素。

情况一:<a,x>∉R并且<x,a>∉R;情况二:<a,x>∈R换句话说,只要任意x≠a都满足<x,a>∉R即可。

3)实现拓扑排序算法,并利用这个算法求解穿衣问题,将结果显示在计算机屏幕上。

实验开设方式个人实验。

上机4学时。

实验思考分别从时间复杂度和空间复杂度两个方面,考虑对算法的优化。

离散数学实验指导书(2010)

离散数学实验指导书(2010)

《离散数学》实验指导一实验课的任务、性质与目的本实验课程是信息专业学生的一门专业基础课程,通过实验,帮助学生更好地掌握计算机科学技术常用的离散数学中的概念、性质和运算;通过实验提高学生编写实验报告、总结实验结果的能力;使学生具备程序设计的思想,能够独立完成简单的算法设计和分析。

二实验目标1. 掌握离散数学中涉及的相关概念。

2. 培养学生的逻辑思维能力和算法设计的思想。

3. 熟练掌握C/C++语言程序设计的基本方法和各种调试手段。

4. 熟练掌握包括数组、链表以及邻接表或邻接矩阵等数据结构的建立和运用。

5. 通过实验掌握递归程序设计的基本方法。

6. 掌握图的存储和遍历方法。

三实验要求1.实验前,复习《离散数学》课程中的有关内容。

2.上机前编好程序,上机时调试。

3.编程要独立完成,程序应加适当的注释。

4.完成实验报告。

四实验报告要求文字用小4号或4号;程序和注释用5号以班为单位交.实验报告文件名:080x姓名学号(实验xA/B/C)实验报告上交时间:做完实验后一到两周内,在课间拷贝到教室机器的指定目录中。

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

(A)2. 求任意一个命题公式的真值表(B,并根据真值表求主范式(C))注意:题目类型分为A,B,C三类,其中A为基本题,完成A类题目可达到设计的基本要求,其他均为加分题,并按字母顺序分数增加越高。

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

三实验环境C或C++语言编程环境实现。

四实验说明1.逻辑联接词的运算本实验要求大家利用C/C++语言,实现二元合取、析取、条件和双条件表达式的计算。

充分利用联接词和逻辑运算符之间的相似性实现程序功能。

2. 求任意一个命题公式的真值表本实验要求大家利用C/C++语言,实现任意输入公式的真值表计算。

一般我们将公式中的命题变元放在真值表的左边,将公式的结果放在真值表的右边。

离散数学(集合地运算)实验报告材料

离散数学(集合地运算)实验报告材料

民族学院计算机科学与工程学院实验报告实验题目:集合的运算课程名称:离散数学实验类型:□演示性□验证性□操作性□设计性□综合性专业:网络工程班级:网络111班学生:山学号:2011083123实验日期:2013年12月22日实验地点:I区实验机房实验学时:8小时实验成绩:指导教师签字:年月日老师评语:实验题目:集合的运算实验原理:1、实验容与要求:实验容:本实验求两个集合间的运算,给定两个集合A、B,求集合A与集合B 之间的交集、并集、差集、对称差集和笛卡尔乘积。

实验要求:对于给定的集合A、B。

用C++/C语言设计一个程序(本实验采用C++),该程序能够完成两个集合间的各种运算,可根据需要选择输出某种运算结果,也可一次输出所有运算结果。

2、实验算法:实验算法分为如下几步:(1)、设计整体框架该程序采取操作、打印分离(求解和输出分开)的思想。

即先设计函数求解各部分运算并将相应结果传入数组(所求集合)中,然后根据需要打印运算结果。

(2)、建立一个集合类(Gather)类体包括的数组a、b、c、d、e、f、g分别存储集合A、B以及所求各种运算的集合。

接口(实现操作的函数)包括构造函数,菜单显示函数,求解操作函数,打印各种运算结果等函数。

(3)、设计类体中的接口构造函数:对对象进行初始化,建立集合A与集合B。

菜单显示函数:设计提示选项,给使用者操作提示。

操作函数:该函数是程序的主题部分,完成对集合的所有运算的求解过程,并将结果弹入(存入)对应数组(集合)中,用于打印。

具体操作如下:1*求交集:根据集合集的定义,将数组a、b中元素挨个比较,把共同元素选出来,并存入数组c(交集集合)中,即求得集合A、B的交集。

2*求并集:根据集合中并集的定义,先将数组a中元素依次存入数组g(并集集合)中,存储集合A中某元素前,先将其与已存入g中的元素依次比较,若相同则存入下一个元素,否则直接存入g中,直到所有A中元素存储完毕。

离散数学实验

离散数学实验

离散数学实验报告(实验一)专业:自动化班级:学号:姓名:日期2010.10.28一实验内容(二选一)1. 从键盘输入两个命题变元P和Q的真值,求它们的合取、析取、条件和双条件的真值(A)2. 求任意一个命题公式的真值表(B),并根据真值表求主范式(C)。

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

三实验环境进入Visual C++ 环境后,选择菜单“File | New”,在弹出的对话框中单击上方的选项卡“Projects”,选择“Win32 Console Application”工程类型,在“Project name”一栏中填写工程名例如MyFirst,在“Location”一栏中填写工程路径(目录). 选择菜单“Project | Add to Project | New”,为工程添加新的C++源文件。

选择菜单为工程添加新源文件在“File Name”栏填入新添加的源文件名,如MyFirst.cpp,“Location”一栏指定文件路径,按按钮“OK”完成C++源程序的系统新建操作。

编译源程序:选择Build | Build菜单(F7为快捷键),系统将会在Output窗口给出所有的错误信息和警告信息。

当所有错误修正之后,系统将会生成扩展名为.exe的可执行文件。

对于Output窗口给出的错误信息,双击可以使输入焦点跳转到引起错误的源代码处以进行修改。

执行程序:选择Build | Execute菜单项(Ctrl + F5为快捷键),执行程序,将会出现一个DOS窗口,按照程序输入要求正确输入数据后,程序即正确执行。

四实验原理和实现过程(算法描述)1.程序主界面本程序界面主要有两个操作,1:求真值。

2:求任何公式的真值。

操作1完成A 类题要求,操作2完成A,B类题要求。

如果出输入的操作项不是0,1,2,则会提示出错,再次选择。

其界面如图所示:2.算法描述和实现过程在做A类题时,算法实现,首先判断输入格式是否正确,在把蕴含(→),等值(←→),通过变换,化成只有非,合取和析取的等价公式,在利用C语言中的运算符非(!),与(&&)和或(||)算出任何两元变量的真值。

《离散数学》实验课程指导书

《离散数学》实验课程指导书
printf("**************************************************\n\n");
printf("您要在多少个数中进行线性查找,请输入(1~100):");
scanf("%d",&n);
printf("\n");
while(n<1 || n>100) //如果输入的数据列表长度不在[1,100]之间
scanf("%d",&a[i]);
i=0;
do
{
exchanged=0;
for(j=0;j<l-1-i;j++)
if(a[j]>a[j+1])
{
k=a[j];
a[j]=a[j+1];
a[j+1]=k;
exchanged=1;
}
if (i==0)
printf("\n");
printf("第%d趟冒泡排序法由小到大排序后:\n",i+1);
{ int r[50];
int length;
}list,*sqlist;
int CreateSqlist(sqlist s)
{
int i;
printf("请输入您要进行搜索的数据队列的长度:\n");
scanf("%d",&(s->length));
printf("\n请输入您要进行搜索的%d个数据:\n",s->length);
printf("冒泡排序算法\n");

中南大学离散数学实验分析方案(实验ABC)

中南大学离散数学实验分析方案(实验ABC)

“离散数学”实验报告(实验1ABC>专业班级学号姓名日期:2018.12.05目录一、实验目的3二、实验内容3三、实验环境3四、实验原理和实现过程<算法描述)31、实验原理32、实验过程4五、实验数据及结果分析7A题型7B、C题型9六、源程序清单13A题部分源代码13B、C题部分源代码14七、其他收获及体会22一、实验目的熟悉掌握命题逻辑中的联接词、真值表、主范式等,进一步能用它们来解决实际问题。

二、实验内容1. 从键盘输入两个命题变元P和Q的真值,求它们的合取、析取、条件和双条件的真值。

<A)2. 求任意一个命题公式的真值表<B,并根据真值表求主范式<C))三、实验环境C或C++语言编程环境实现。

四、实验原理和实现过程<算法描述)1.实验原理<1)合取:二元命题联结词。

将两个命题P、Q联结起来,构成一个新的命题P∧Q, 读作P、Q的合取, 也可读作P与Q。

这个新命题的真值与构成它的命题P、Q的真值间的关系为只有当两个命题变项P = T, Q = T时方可P∧Q =T, 而P、Q只要有一为F则P∧Q = F。

这样看来,P∧Q可用来表示日常用语P与Q, 或P并且Q。

<2)析取:二元命题联结词。

将两个命题P、Q联结起来,构成一个新的命题P∨Q, 读作P、Q的析取, 也可读作P或Q。

这个新命题的真值与构成它的命题P、Q的真值间的关系为只有当两个命题变项P = F, Q = F时方可P∨Q =F, 而P、Q只要有一为T则P∨Q = T。

这样看来,P∨Q可用来表示日常用语P或者Q。

<3)条件:二元命题联结词。

将两个命题P、Q联结起来,构成一个新的命题P→Q, 读作P条件Q, 也可读作如果P,那么Q。

这个新命题的真值与构成它的命题P、Q的真值间的关系为只有当两个命题变项P = T, Q = F时方可P→Q =F, 其余均为T。

<4)双条件:二元命题联结词。

离散数学实验

离散数学实验

离散数学实验实验一真值计算一、实验目的熟悉联结词合取、析取、条件和双条件的概念,编程求其真值。

二、实验内容(1)求任意一个命题公式的真值表:从键盘输入两个命题P 和Q 的真值,求它们的合取、析取、蕴含和等价的真值(2)利用真值表求任意一个命题公式的主范式(3)利用真值表进行逻辑推理三、实验报告要求列出实验目的、实验内容、实验步骤、源程序和实验结果。

#include#includeint main(){int p,q,hequ,xiqu,yunhan,dengjia;printf("请输入命题P和Q的真值(0或1)");scanf("%d%d",&p,&q);if(p!=0&&p!=1||q!=0&&q!=1)printf("输入错误");else{if(p==0&&q==0){hequ=0;xiqu=0;yunhan=1;dengjia=1;}else if(p==0&&q==1){hequ=0;xiqu=1;yunhan=1;dengjia=0;}else if(p==1&&q==0){hequ=0;xiqu=1;yunhan=0;dengjia=0;}else if(p==1&&q==1){hequ=1;xiqu=1;yunhan=1;dengjia=1;}printf("合取的真值为:%d\n",hequ);printf("析取的真值为:%d\n",xiqu);printf("蕴含的真值为:%d\n",yunhan);printf("等价的真值为:%d\n",dengjia);system("pause");return 0;}}实验二两个集合运算(交、并、补)一、实验目的集合论是一切数学的基础,也是计算机科学不可或缺的,在数据结构,数据库理论,开关理论,自动机理论和可计算理论等领域都有广泛的应用。

《离散数学》实验指导书-2019版

《离散数学》实验指导书-2019版

《离散数学》课程实验指导书《离散数学》实验指导书合肥工业大学计算机与信息学院王晓华,杨娟,李书杰,汪荣贵2019年09月目录目录 (1)概述 (3)第一篇数理逻辑 (4)实验1 逻辑运算表示与验证 (4)1.1 实验要求和目的 (4)1.2 实验课时 (4)1.3 实验环境 (4)1.4 实验平台简介 (4)实验2 交通信号灯模型设计 (6)2.1 实验要求和目的 (6)2.2 实验课时 (6)2.3 实验环境 (6)2.4 思考题 (6)第二篇集合与关系 (7)实验3 小型关系数据库系统实现 (7)3.1 实验要求和目的 (7)3.2 实验课时 (7)3.3 实验环境 (7)3.4 实验平台简介 (7)实验4 关系的闭包运算及Floyd-Warshall算法求解 (10)4.1 实验要求和目的 (10)4.2 实验课时 (10)4.3 实验环境 (10)4.4 实验平台简介 (10)第三篇整数论 (12)实验5 数论之模运算 (12)5.1 实验要求和目的 (12)5.2 实验课时 (12)5.3 实验环境 (12)5.4 实验平台简介 (12)第四篇图论 (16)实验6 最短路径的Dijstra与Floyd-Warshal算法实现 (16)6.1 实验要求和目的 (16)6.2 实验课时 (16)6.3 实验环境 (16)6.4 实验平台简介 (16)实验7 欧拉回路的DFS或Fleury算法求解 (20)7.1 实验要求和目的 (20)7.2 实验课时 (20)7.3 实验环境 (20)7.4 实验平台简介 (20)实验8 最优树的Huffman算法求解 (22)8.1 实验要求和目的 (22)8.2 实验课时 (22)8.3 实验环境 (22)8.4 实验平台简介 (22)实验9 多相位交通信号灯智能控制模型设计与算法实现 (24)9.1 实验要求和目的 (24)9.2 实验课时 (25)9.3 实验环境 (25)9.4 思考题 (25)附录A:实验报告 (26)概述(1)实验概述运用某种程序设计语言选择并设计实现离散数学的数理逻辑系统、集合与关系、整数论、图论四个篇章共8个实验的相关内容,以检验和巩固离散数学中的基本知识、加深对本课程定义、定理、算法的理解,锻炼和培养学生的计算思维能力,完成系统设计,实现问题求解,达到有效提升综合实践能力和创新能力的目的,并有效缓解离散数学课程概念多、理论性强、高度抽象等特点给学生带来的畏难情绪。

(完整版)离散数学实验指导书及其答案

(完整版)离散数学实验指导书及其答案

实验一命题逻辑公式化简【实验目的】加深对五个基本联结词(否定、合取、析取、条件、双条件)的理解、掌握利用基本等价公式化简公式的方法。

【实验内容】用化简命题逻辑公式的方法设计一个表决开关电路。

实验用例:用化简命题逻辑公式的方法设计一个5人表决开关电路,要求3人以上(含3人)同意则表决通过(表决开关亮)。

【实验原理和方法】(1)写出5人表决开关电路真值表,从真值表得出5人表决开关电路的主合取公式(或主析取公式),将公式化简成尽可能含五个基本联结词最少的等价公式。

(2)上面公式中的每一个联结词是一个开关元件,将它们定义成C语言中的函数。

(3)输入5人表决值(0或1),调用上面定义的函数,将5人表决开关电路真值表的等价公式写成一个函数表达式。

(4)输出函数表达式的结果,如果是1,则表明表决通过,否则表决不通过。

参考代码:#include<stdio.h>int vote(int a,int b,int c,int d,int e){//五人中任取三人的不同的取法有10种。

i f( a&&b&&c || a&&b&&d || a&&b&&e || a&&c&&d || a&&c&&e || a&&d&&e || b&&c&&d || b&&c&&e || b&&d&&e || c&&d&&e)return 1;e lsereturn 0;}void main(){i nt a,b,c,d,e;p rintf("请输入第五个人的表决值(0或1,空格分开):");s canf("%d%d%d%d%d",&a,&b,&c,&d,&e);i f(vote(a,b,c,d,e))printf("很好,表决通过!\n");e lseprintf("遗憾,表决没有通过!\n");}//注:联结词不定义成函数,否则太繁实验二命题逻辑推理【实验目的】加深对命题逻辑推理方法的理解。

离散数学实验指导书(附带模板)

离散数学实验指导书(附带模板)

《离散数学》实验指导书一、实验目的《离散数学》是现代数学的一个重要分支,是计算机科学与技术专业的基础理论课,也是该专业的核心课程和主干课程。

“离散数学”是计算机专业一门重要的专业技术基础课程,是计算机专业的一门核心的关键性课程。

该课程一方面为后继课程如数据结构、编绎原理、操作系统、数据库原理、人工智能和形式语言与自动机等提供必要的理论基础;同时,更为重要的是培养学生的抽象思维能力和逻辑推理能力,为今后的学习和工作打好基础。

无论从计算机学科发展的过去、现在和未来看,《离散数学》都是计算机科学与技术专业不可缺少的重要组成部分。

这门课程有着其它课程不可替代的地位和作用,是一门承前启后的课程。

根据《离散数学》课程本身的理论性较强的特性,为了帮助学生更好地学习本课程,理解和掌握所学基本概念和方法,为整个专业学习打好基础,要求运用所学知识,上机解决一些典型问题,设置实践环节十分重要。

通过实验实践内容的训练,突出逻辑性思维训练的特征, 目的是学习离散数学中的基本算法和方法,掌握数理逻辑、关系和图论中的基本算法,提高学生学习的兴趣及实际动手的能力。

通过分析、设计、编码、调试等各环节的训练,使学生深刻理解、牢固掌握所学知识,培养分析、解决实际问题的能力。

二、实验要求掌握真值表技术,熟悉联结词合取、析取、条件和双条件的概念。

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

熟悉邻接矩阵和两结点间长度为m 的路的数目的关系。

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

实验前作好准备,分析问题并确定算法,设计代码。

做实验过程中认真分析和调试程序,记录并分析实验结果。

实验后完成实验报告,实验报告包括实验目的、实验内容、源程序、运行结果及分析。

可以使用C、VC或MATLAB完成实验。

实验题目包括真值计算、关系闭包计算、计算两结点间长度为m的路的数目、最优树的构造四个实验,每个实验要求2个学时完成。

三、实验设备及环境PC机一台,软件C、VC或MATLAB四、实验内容实验一真值计算1、实验目的熟悉五个常用联结词合取、析取、条件和双条件的概念,掌握真值表技术。

离散数学实践指导书

离散数学实践指导书

《离散数学实践》实验指导书课程类型:必修课适应专业:计算机科学与技术总学时:20学时实验学时:20(上机)实验次数:7先修课程:C(++)语言一、前言《离散数学》课程实验的目的是培养学生使用所学过的计算机程序设计语言求解一些简单的离散数学问题,通过实验帮助实验者理解有关的重要概念,加深了解和更好地掌握《离散数学》课程教学大纲要求的内容。

在《离散数学实践》的课程实验过程中,要求学生做到:1. 预习实验指导书有关部分,认真做好实验内容的准备,就实验可能出现的情况提前做出思考和分析;2. 认真书写实验报告。

实验报告包括实验目的和要求,实验情况及其分析;写出程序设计说明,给出源程序框图和清单;3. 实验完成之后,应对算法与源程序进行评价,对运行结果进行分析,提交源程序及两组调试数据及其实验结果;4. 遵守机房纪律,爱护实验设备。

二、实验目的1. 培养学生动手编程解决实际问题的能力;2. 训练学生分析问题和调试程序的能力;3. 锻炼学生分析科技实验结果的能力;4. 为后续的课程学习和工作奠定良好的基础。

三、实验要求1. 问题分析:充分地分析和理解问题本身,弄清要求做什么,用什么算法。

2. 程序设计1) 根据所采用的算法,设计数据结构,画出流程图并编程;2) 最后准备调试程序的数据及测试方案。

3. 上机调试1) 对程序进行编译,纠正程序中可能出现的语法错误;2) 调试前,先运行一遍程序看看究竟将会发生什么;3) 如果情况不好,根据事先设计的测试方案并结合现场情况进行错误跟踪,包括单步调试. 设置观察窗输出中间变量值等手段。

4. 整理实验报告1) 实验内容:采用的算法名称;2) 问题描述:包括目标. 任务. 条件约束描述等;3) 设计:数据结构设计和核心算法设计. 主要功能模块的输入. 处理(算法框架)和输出;4) 测试范例:测试结果的分析讨论. 测试过程中遇到的主要问题及所采用的解决措施;5) 心得:包括程序的改进设想,经验和体会;6) 程序清单:源程序,其中包括变量说明及详细的注释。

离散数学实验指导书_工程认证(实验5:分油问题)

离散数学实验指导书_工程认证(实验5:分油问题)

实验五分油问题●实验所属系列:离散数学课程实验●实验对象:本科●相关课程及专业:离散数学,计算机科学与技术●实验类型:综合型实验●实验时数(学分):4学时实验目的通过编写程序来解决有趣的逻辑问题,锻炼逻辑分析能力,熟悉离散数学知识的综合运用,提高程序设计水平。

实验内容与要求两个小孩去打油,一人带了一个一斤的空瓶,另一个带了一个七两和一个三两的空瓶。

原计划各打一斤油,可是由于所带的钱不够,只好合打了一斤油,在回家的路上,二人想平分这一斤油,可是又没有其它工具。

现只用这三个瓶子(一斤、七两、三两)精确地分出两个半斤油来。

实验的软硬件环境PC机一台,装有C/C++/JA V A语言集成开发环境。

实验过程和方法1)对分油问题进行逻辑分析。

分油问题的初始状态可表示为(10,0,0),然后经过一系列的循环倒油,直到所求的目标状态(5,5,0)由于没有其它工具,因此这里只有两种基本倒油操作:倒空源瓶或倒满目标瓶。

倒油过程中,若目标瓶已达到容量极限或倒油操作导致的状态之前曾经出现过,则此次倒油是没有必要的。

可见,这个问题的实质在于对所有倒油状态进行搜索。

搜索的方法可以是深入优先或者广度优先。

2)设计主要的搜索算法。

搜索就是用问题的所有可能去试探,按照一定的顺序、规则,不断去试探,直到找到问题的解,试完了也没有找到解,那就是无解,试探时一定要试探完所有的情况。

对于问题的第一个状态,叫初始状态,要求的状态叫目标状态。

搜索就是把规则应用于实始状态,在其产生的状态中,直到得到一个目标状态为止。

产生新的状态的过程称为扩展(即由一个状态,通过应用规则,产生新状态的过程)。

搜索的要点是:A.初始状态;B.重复产生新状态;C.检查新状态是否为目标,是结束,否转B;如果搜索是以接近起始状态的程序依次扩展状态的,叫广度优先搜索。

如果扩展是首先扩展新产生的状态,则叫深度优先搜索。

利用程序实现深度优先搜索时,可用一个数组存放产生的所有状态。

离散数学实验指导书_工程认证(实验6:洒水车路线问题)

离散数学实验指导书_工程认证(实验6:洒水车路线问题)

实验六洒水车路线问题●实验所属系列:离散数学课程实验●实验对象:本科●相关课程及专业:离散数学,计算机科学与技术●实验类型:设计型实验●实验时数(学分):4学时实验目的解决与图论中欧拉回路有关的实际问题,扩展对于书本知识的理解,提高程序设计能力和逻辑思维能力。

实验内容与要求一辆洒水车从所在的市政办公点出发,需要在所有负责的街道上洒水,并最后回到原点。

问洒水车如何设计路线才能使得走的路程最短。

实验的软硬件环境PC机一台,装有C/C++/JA V A语言集成开发环境。

实验过程和方法1)对给定问题进行理论分析;将这个问题抽象成图论的语言,就是给定一个连通图,每条边的权值就是街道的长度,本问题转化为在图中求一条回路,使得回路的总权值最小。

如果街道的连通图为欧拉图,则只要求出图中的一条欧拉回路即可。

否则,洒水车要完成任务就必须在某些街道上重复走若干次。

如果重复走一次,就加一条平行边,于是原来对应的图形就变成了多重图。

只是要求加进的平行边的总权值最小就行了。

于是,问题就转化为,在一个有奇度数结点的赋权连通图中,增加一些平行边,使得新图不含奇度数结点,并且增加的边的总权值最小。

因此,问题的关键在于如何增加这些平行边。

设V1为图中所有奇度数节点的集合,下面给出了算法:1.使用弗洛伊德算法计算图中任一两结点间的最短路径长度。

2.构成一个|V1|×|V1|的矩阵,这个矩阵给出了图中每两个奇度数结点间的最短路径长度,3.将矩阵中的结点进行两两组合,找出一个最佳的组合情况,这种组合使得他们的最短路径长度之和最小。

4.根据前面得到的最佳组合,求出各对组合的最短路径。

并将最短路径上的每条边都加一条平行边。

5.利用Fleury算法求欧拉回路。

下面举例说明这个算法:上图的奇度数结点为1,3,6,11奇度数结点构成的矩阵为136111-153876315-247663824-5211767652-结点的最佳组合为:136111-153876315-247663824-5211767652-由于是对称的矩阵,我们只关心上三角部分:136111-153876315-247663824-5211767652-现在我们得到1和3,6和11之间的最短路径(1;3) (6;9), (9;11)将最短路径上的边各添加一条平行边。

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

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

“离散数学”实验报告(实验2AC)专业班级学号姓名日期:2011.12.12目录一、实验目的 (3)二、实验内容 (3)三、实验环境 (3)四、实验原理和实现过程(算法描述) (3)A题型 (3)C题型 (4)五、实验数据及结果分析 (7)A题型 (7)B题型 (9)六、源程序清单 (11)A题型 (11)B题型 (12)七、其他收获及体会 (18)一、实验目的掌握关系的概念与性质,基本的关系运算,关系的各种闭包的求法。

理解等价类的概念,掌握等价类的求解方法。

二、实验内容1. 求有限集上给定关系的自反、对称和传递闭包。

(有两种求解方法,只做一种为A,两种都做为B)2. 求有限集上等价关系的数目。

(有两种求解方法,只做一种为A,两种都做为B)3. 求解商集,输入集合和等价关系,求相应的商集。

(C)三、实验环境C或C++语言编程环境实现。

四、实验原理和实现过程(算法描述)A题型求有限集上等价关系的数目。

集合上的等价关系与该集合的划分之间存在一一对应关系。

一个等价关系对应一个划分,一个划分也对应一个等价关系。

我们把n个元素的集合划分成k 块的方法数叫第二类Stirling数,表示为S(n,k)。

给定S(n,n) = S(n,1) = 1,有递归关系:S(n,k) = S(n − 1,k − 1) + kS(n − 1,k)集合上所有等价类的个数即为k从1到n,所有S(n,k)之和。

这个问题的算法比较简单,仅需两步就可完成,首先根据上式,定义一个递归函数S(n,k),然后对k从1到n,求取sum=∑S(n,k),sum的值就是给定n元集合上的等价关系数目,最后将其输出即可。

A题型的流程图如下所示:开始输入要计算的集合的元素数nSum=0k=1S(n,k)=1Sum=Sum+S(n,k)k++ S(n,k)=S(n-1,k-1)+k*S(n-1,k)k<n?YNS(n,k)=1Sum=Sum+S(n,k)输出Sum结束C题型求解商集,输入集合和等价关系,求相应的商集商集即等价类构成的集合,要求商集,首先需要判断输入的关系是否为等价关系,否则没有商集。

离散数学实验指导书_工程认证(实验2:海底管道问题)

离散数学实验指导书_工程认证(实验2:海底管道问题)

实验二海底管道问题●实验所属系列:离散数学课程设计实验●实验对象:本科●相关课程及专业:离散数学,计算机科学与技术●实验类型:基础型实验●实验时数(学分):2学时实验目的通过与实际相结合的应用问题,熟练应用图论基础知识和程序设计语言来求解最小生成树相关问题。

实验内容与要求某石油公司在海湾拥有几个石油钻井平台,每个平台开采出的石油需要运往海岸上的炼油厂。

要在平台与炼油厂之间建造一个石油运输网络。

问管道如何设计,才能使成本最低?下图给出了钻井平台及炼油厂(图的顶点),并给出了经过勘测之后可能的管道铺设走向和建设费用。

实验的软硬件环境PC机一台,装有C/C++/JA V A软件开发环境。

实验过程和方法1)对海底管道问题进行前期分析;海底管道的勘测图是一个带权无向图。

由于要求各个钻井平台及炼油厂之间以最小的代码能够通过管道连通,这实际上是一个最小生成树的问题。

求解最小生成树的算法很多,其中最主要的是克鲁斯卡尔算法和普里姆算法。

2)选择一种求最小生成树的算法来进行程序实现;Kruskal算法:(1)在G中选取最小权边e1,置i = 1。

(2)当i = n-1时,结束,否则转(3)。

(3)设已选取的边为e1, e2, …, e i,在G中选取不同于e1, e2, …, e i的边e i+1,使{e1, e2, …, e i, e i+1}中无回路且e i+1是满足此条件的最小权边。

(4)置i = i+1,转(2)。

Prim算法:(1)在G中任意选取一个结点v1,置V T = {v1}, E T= Φ,k = 1;(2)在V-V T中选取与某个v i∈V T邻接的结点v j,使得边(v i, v j)的权最小,置V T = V T∪{v j}, E T = E T∪{(v i, v j)},k = k+1;(3)重复步骤2,直到k = |V|。

3)添加其它必要的代码,将结果打印在计算机屏幕上。

实验开设方式个人实验;上机2学时。

离散数学实验指导书(2011516)

离散数学实验指导书(2011516)

离散数学实验指导书姜楠焉德军李笑牛(校内自编教材)大连民族学院计算机科学与工程学院2011年3月前言通常人们对离散数学教学的认识就是概念、定理、公式和解题。

但是,离散数学不仅仅是这些,还有实验。

在理论教学过程中,学生的活动只是“智力活动”,或更为直接地说是解题活动,教师在上面讲离散数学,而学生则每天在课堂上听课并在纸上做题目。

这样,对多数学生而言,离散数学的发现探索活动没有能够真正开展起来。

离散数学实验教学,通常由教师提出问题,让学生在计算机上做实验,利用小组合作学习或者组织全班讨论,开展研究性学习活动;实验过程中,依靠计算机,让学生主动参与发展、探究、解决问题,从中获得离散数学研究、解决实际问题的过程体验、情感体验,产生成就感,进而开发学生的创新潜能,因而对离散数学实验课程教学进行研究具有重要意义。

利用计算机进行离散数学实验教学,不仅是开展离散数学研究性学习的一种有效方式,而且也为数据结构及程序设计课程教学的开展提升了层次。

知识经济时代对创新人才的需求与离散数学教育中忽视学生创造性能力培养的矛盾日益凸显。

在教学中倡导研究性学习,开展离散数学实验课程教学的研究与探索,与当前社会对离散数学教学的需求是一致的。

目前国内外很少有人对离散数学实验课程教学进行研究,尤其是国内进行这方面研究的人员更少,人们更重视离散数学理论课程教学的研究,忽视了离散数学实验课程对理论课程教学的辅助与促进作用,也忽视了离散数学实验课程与数据结构等课程的有机联系。

因而我准备进行离散数学实验课程教学的研究与探索,以便更好的做好离散数学课程的教学改革工作。

本课程主要包括四个部分:集合与关系、图论、代数系统、数理逻辑。

要求学生了解算法,理解运用C或C++语言把书中的部分内容的算法编写出能在计算机上运行的程序的思想,掌握实现离散数学部分算法程序设计的基本编程技术。

目录前言 1 第一章集合 3 实验一集合的运算 3 实验二求集合的笛卡儿乘积 6 第二章关系7 实验三判断关系R的性质7 实验四判断关系R是否为等价关系10 实验五求等价类11 实验六由两个已知关系通过合成构造新的关系12 实验七关系的闭包运算13 实验八求关系个数的运算14 实验九求自反关系和对称关系的运算15 实验十求集合A上所有等价关系和偏序关系16 二、求集合A上的所有偏序关系17实验十一求满射函数18 第三章图论19 实验十二求可达矩阵的Warshall算法19 实验十三最小生成树的Kruskal算法20 实验十四判别图的连通性21 实验十五求无向图中顶点的度数23 实验十六求有向图中顶点的度数24 第四章代数系统25 实验十七判断是否为代数系统的算法25 实验十八判断是否为群的算法26 第五章数理逻辑28 实验十九构造合式公式的真值表28第一章集合实验一集合的运算一、求集合的并集1、实验类型:操作性2、实验目的通过编程实现求给定集合A和B的并集C(C=A∪B)的运算。

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

离散数学实验指导书2015 年3月6 日绪言通常对离散数学教学的认识就是上课老师讲述一个个概念、定理、公式和例题,学生背概念、公式,理解基础上记忆定理,然后据此做证明题、计算以及解题。

实质上离散数学不仅仅是这些,还有实验。

在理论教学过程中,学生的活动只是“智力活动”,或更为直接地说是解题活动,教师在上面讲离散数学,而学生则每天在课堂上听课并在纸上做题目。

这样,对多数学生而言,离散数学的发现探索活动没有能够真正开展起来。

离散数学实验教学,通常由教师提出问题,让学生在计算机上做实验,利用小组合作学习或者组织全班讨论,开展研究性学习活动;实验过程中,依靠计算机,让学生主动参与发展、探究、解决问题,从中获得离散数学研究、解决实际问题的过程体验、情感体验,产生成就感,进而开发学生的创新潜能,因而对离散数学实验课程教学进行研究具有重要意义。

利用计算机进行离散数学实验教学,不仅是开展离散数学研究性学习的一种有效方式,而且也为数据结构及程序设计课程教学的开展提升了层次。

知识经济时代对创新人才的需求与离散数学教育中忽视学生创造性能力培养的矛盾日益凸显。

在教学中倡导研究性学习,开展离散数学实验课程教学的研究与探索,与当前社会对离散数学教学的需求是一致的。

目前国内外很少有人对离散数学实验课程教学进行研究,尤其是国内进行这方面研究的人员更少,人们更重视离散数学理论课程教学的研究,忽视了离散数学实验课程对理论课程教学的辅助与促进作用,也忽视了离散数学实验课程与数据结构等课程的有机联系。

因而本学期离散数学课程组依据“2014培养方案”准备进行离散数学实验课程教学的研究与探索,以便更好的做好离散数学课程的教学改革工作。

主要包括四个部分:集合与关系、数理逻辑、代数系统、图论。

要求学生了解算法,理解运用C或C++语言(也可以是其他高级程序设计语言)把书中的部分内容的算法编写出能在计算机上运行的程序的思想,掌握实现离散数学部分算法程序设计的基本编程技术。

目录绪言 (2)实验一求集合的运算——并运算 (4)实验二求集合的运算——交运算 (6)实验三求集合的运算——差运算 (8)实验四求集合的笛卡儿乘积 (10)实验五判断关系R是否为自反关系 (12)实验六判断关系R是否为对称关系 (14)实验七判关系R是否为可传递关系 (16)实验八判断关系R是否为等价关系 (18)实验九求等价类 (19)实验十由两个已知关系通过合成构造新的关系 (20)实验十一关系的闭包运算 (21)实验十二求满射函数 (22)实验十三命题逻辑实验一——构造命题公式的真值表 (24)实验十三命题逻辑实验二——三个老师问题 (26)实验十四判断是否为代数系统的算法 (28)实验十五判断是否为群的算法 (29)实验十六求可达矩阵的Warshall算法 (31)实验十七最小生成树的Kruskal算法 (32)实验十八判别图的连通性 (34)实验一求集合的运算——并运算1、实验类型:基础实验2、实验目的通过编程实现求给定集合A和B的并集C(C=A∪B)的运算。

3、实验内容已知所给集合A和B,求A与B 的并集C(C=A∪B)。

4、实验原理因为并集的定义为:C={x|x∈A∨x∈B},所以,只要将集合A与B合在一起就得到了并集C。

但是,在一个集合中,同样的元素没必要出现两次或两次以上,所以,在将集合A送入并集C后,应将集合B中与A中相同的元素删除,再将集合B送入并集C之中。

5、实验仪器设备或软件环境及工具长春工业大学计算机科学与工程学院计算机与信息综合实验中心提供相关软、硬件环境;学生也可自带实验设备。

6、实验要求复习集合运算中交集的定义,实验由一人一组完成。

所编程序能够通过编译,并能够实现求两个给定集合的并运算。

7、实验步骤及注意事项(1)集合B的元素个数送M,集合A的元素个数送N。

(2)A⇒C。

(3)1⇒i。

(4)若i> M,则结束。

(5)否则,对于j=1,2,…….,n,判断:bi =aj,若相等,则转(7)。

(6)否则,bi⇒C。

(7)i+1⇒i,转(4)。

8、实验报告要求(1)写出实验过程中遇到的问题及其解决过程。

(2)写出类c的算法并编写一个程序求给定集合A和B的并集。

(3)写出实验结束时的程序清单及运行结果及实验总结。

实验二求集合的运算——交运算1、实验类型:基础实验2、实验目的通过编程实现求给定集合A和B的交集C(C=A∩B)的运算。

3、实验内容已知所给集合A和B,求A与B 的交集C(C=A∩B)4、实验原理根据交集的定义:C={x|x∈A∧x∈B},我们将集合A的各个元素与集合B 的元素进行比较,若在集合B中存在某个元素并和集合A中一元素相等,则将该元素送入交集C之中。

5、实验仪器设备或软件环境及工具长春工业大学计算机科学与工程学院计算机与信息综合实验中心提供相关软、硬件环境;学生也可自带实验设备。

6、实验要求复习集合运算中交运算的定义,实验由一人一组完成。

所编程序能够通过编译,并能够实现求两个给定集合的交运算。

7、实验步骤及注意事项(1)将集合A的元素送N。

(2)1⇒i(3)若i>N,则结束。

(4)否则,将ai 与集合B中的每个元素进行比较,若ai与集合B中所有元素均不相同,则转(6)。

(5)否则,ai⇒C。

(6)i+1⇒i,转(3)。

8、实验报告要求(1)写出实验过程中遇到的问题及其解决过程。

(2)写出类c的算法并编写一个程序给定集合A和B的交集。

(3)写出实验结束时的程序清单及运行结果及实验总结。

实验三求集合的运算——差运算1、实验类型:基础实验2、实验目的通过编程实现求给定集合A和B的差集C(C=A-B)的运算。

3、实验内容已知所给集合A和B,求A与B的差集C(C=A-B)。

4、实验原理差集C的定义:差集C={x|x∈A∧x∉B},即对于集合A中的元素a i,若不存在bj ∈B(j=1,2,…..,m),使得ai=bj,则ai∈差集C。

5、实验仪器设备或软件环境及工具长春工业大学计算机科学与工程学院计算机与信息综合实验中心提供相关软、硬件环境;学生也可自带实验设备。

6、实验要求复习集合运算中差集的定义,实验由一人一组完成。

所编程序能够通过编译,并能够实现求两个给定集合的差集。

7、实验步骤及注意事项(1)将集合A的元素个数送N。

(2)1⇒i。

(3)i>N,则结束。

(4)否则,将ai 与集合B中的每个元素相比较,若ai与集合B中的某个元素相同,则转(6)。

(5)否则,ai⇒C。

(6)i+1⇒i,转(3)。

8、实验报告要求(1)写出实验过程中遇到的问题及其解决过程。

(2)写出类c的算法并编写一个程序给定集合A和B的差集。

(3)写出实验结束时的程序清单及运行结果及实验总结。

实验四求集合的笛卡儿乘积1、实验类型:设计实验2、实验目的通过编程实现求给定集合A和B的笛卡儿乘积C(C=A×B)的运算。

3、实验内容已知所给集合A和B,求A与B的笛卡儿乘积C(C=A×B)。

4、实验原理笛卡儿乘积是以有序偶为元素组成的集合,它的定义为C={<x,y>|x∈A∧y ∈B}。

所以,欲求笛卡儿乘积。

只需取尽由集合A的元素及集合B的元素,并构成序偶<ai ,bj>送入C之中即可。

5、实验仪器设备或软件环境及工具长春工业大学计算机科学与工程学院计算机与信息综合实验中心提供相关软、硬件环境;学生也可自带实验设备。

6、实验要求复习笛卡儿乘积的定义,实验由一人一组完成。

所编程序能够通过编译,并能够实现求两个给定集合的笛卡儿乘积。

7、实验步骤及注意事项(1)将集合A的元素个数送入N。

(2)将集合B的元素个数送入M。

(3)1⇒i。

(4)若i>N,则结束。

(5)1⇒j。

(6)若j>M,则转(9)。

(7)<ai ,bj>⇒C。

(8)j+1⇒j,转(6)。

(9)i+1⇒i,转(4)。

8、实验报告要求(1)写出实验过程中遇到的问题及其解决过程。

(2)写出类c的算法并编写一个程序给定集合A和B的交集。

(3)写出实验结束时的程序清单及运行结果及实验总结。

9、思考题如何编程实现求有限个集合(集合的个数大于2)的笛卡尔乘积。

实验五判断关系R是否为自反关系1、实验类型:设计实验2、实验目的通过算法设计并编程实现对给定集合上的关系是否为自反关系的判断,加深学生对关系性质的理解,掌握用矩阵来判断关系性质的方法。

3、实验内容已知关系R由关系矩阵M给出,要求判断由M表示的这个关系是否为自反关系。

4、实验原理从给定的关系矩阵来断判关系R是否为自反是很容易的。

若M(R的关系矩阵)的主对角线元素均为1,则R是自反关系;若M(R的关系矩阵)的主对角线元素均为0,则R是反自反关系;若M(R的关系矩阵)的主对角线元素既有1又有0,则R既不是自反关系也不是反自反关系。

本算法可以作为判等价关系算法的子程序给出。

5、实验仪器设备或软件环境及工具长春工业大学计算机科学与工程学院计算机与信息综合实验中心提供相关软、硬件环境;学生也可自带实验设备。

6、实验要求复习关系的性质,实验由一人一组完成。

所编程序能够通过编译,并能够实现对给定集合上的关系自反性质的判定。

7、实验步骤及注意事项(1)输入关系矩阵M(M为n阶方阵)。

=0,则R不是自反(2)判断自反性,对于i=1,2,….,n;若存在mii=1,则R是自反的;否则R既不是自反关系也不是的;若存在mii反自反关系。

(3)输出判断结果。

8、实验报告要求(1)写出实验过程中遇到的问题及其解决过程。

(2)写出类c的算法并编写一个程序判断给定集合上的关系是否为自反的。

(3)写出实验结束时的程序清单及运行结果及实验总结。

实验六判断关系R是否为对称关系1、实验类型:设计实验2、实验目的通过算法设计并编程实现对给定集合上的关系是否为对称关系的判断,加深学生对关系性质的理解,掌握用矩阵来判断关系性质的方法。

3、实验内容已知关系R由关系矩阵M给出,要求判断由M表示的这个关系是否为对称关系。

4、实验原理从给定的关系矩阵来判断关系R是否为对称是很容易的。

若M(R的关系矩阵)为对称矩阵,则R是对称关系;若M为反对称矩阵,则R是反对称关系。

因为R为对称的是等价关系的必要条件,所以,本算法可以作为判等价关系算法的子程序给出。

5、实验仪器设备或软件环境及工具长春工业大学计算机科学与工程学院计算机与信息综合实验中心提供相关软、硬件环境;学生也可自带实验设备。

6、实验要求复习关系的性质,实验由一人一组完成。

所编程序能够通过编译,并能够实现对给定集合上的关系对称性质的判定。

7、实验步骤及注意事项(1)输入关系矩阵M(M为n阶方阵);(2)判断对称性,对于i=2,3,….,n;j=1,2,……,i-1,若存在mij =mji,则R是对称的;(3)判断反对称性;(4)判断既是对称的又是反对称的;(5)判断既不是对称的又不是反对称的;(6)输出判断结果。

相关文档
最新文档