离散数学实验指导书

合集下载

中南大学离散数学实验报告(实验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语言中的运算符非(!),与(&&)和或(||)算出任何两元变量的真值。

  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)输出判断结果。

相关文档
最新文档