离散数学(集合的运算)实验报告
集合的运算实验报告
一、实验目的1. 理解集合的概念和性质。
2. 掌握集合的基本运算,包括并集、交集、差集和补集。
3. 通过实际操作,加深对集合运算的理解和应用。
二、实验环境1. 操作系统:Windows 102. 编程语言:Python3.83. 集合运算库:Python内置的set模块三、实验内容1. 集合的定义与创建2. 集合的基本运算:并集、交集、差集和补集3. 集合运算的实际应用四、实验步骤1. 集合的定义与创建(1)定义集合:集合是由若干个元素组成的无序、互不相同的集合。
(2)创建集合:使用花括号{}或set()函数创建集合。
```python# 使用花括号创建集合set1 = {1, 2, 3, 4, 5}# 使用set()函数创建集合set2 = set([1, 2, 3, 4, 5])```2. 集合的基本运算(1)并集(union):两个集合中所有元素的集合。
```python# 计算set1和set2的并集union_set = set1.union(set2)print(union_set) # 输出:{1, 2, 3, 4, 5}```(2)交集(intersection):两个集合中共有的元素组成的集合。
```python# 计算set1和set2的交集intersection_set = set1.intersection(set2)print(intersection_set) # 输出:{1, 2, 3, 4, 5}```(3)差集(difference):一个集合中存在,另一个集合中不存在的元素组成的集合。
```python# 计算set1和set2的差集difference_set = set1.difference(set2)print(difference_set) # 输出:{5}```(4)补集(symmetric_difference):两个集合中不同时存在的元素组成的集合。
离散数学实验报告
“离散数学”实验报告目录一、实验目的 (3)二、实验内容 (3)三、实验环境 (3)四、实验原理和实现过程(算法描述) (3)1、实验原理........................................................................................................2、实验过程.......................................................................................................五、实验数据及结果分析 (13)六、源程序清单 (24)源代码 (24)七、其他收获及体会 (45)一、实验目的实验一:熟悉掌握命题逻辑中的联接词、真值表、主范式等,进一步能用它们来解决实际问题。
实验二:掌握关系的概念与性质,基本的关系运算,关系的各种闭包的求法。
理解等价类的概念,掌握等价类的求解方法。
实验三:理解图论的基本概念,图的矩阵表示,图的连通性,图的遍历,以及求图的连通支方法。
二、实验内容实验一:1. 从键盘输入两个命题变元P和Q的真值,求它们的合取、析取、条件和双条件的真值。
(A)2. 求任意一个命题公式的真值表(B,并根据真值表求主范式(C))实验二:1.求有限集上给定关系的自反、对称和传递闭包。
(有两种求解方法,只做一种为A,两种都做为B)2. 求有限集上等价关系的数目。
(有两种求解方法,只做一种为A,两种都做为B)3. 求解商集,输入集合和等价关系,求相应的商集。
(C)实验三:以偶对的形式输入一个无向简单图的边,建立该图的邻接矩阵,判断图是否连通(A)。
并计算任意两个结点间的距离(B)。
对不连通的图输出其各个连通支(C)。
三、实验环境C或C++语言编程环境实现。
四、实验原理和实现过程(算法描述)实验一:1.实验原理(1)合取:二元命题联结词。
离散数学实验报告(两篇)
引言:离散数学是一门基础性的数学学科,广泛应用于计算机科学、电子信息等领域。
本文是《离散数学实验报告(二)》,通过对离散数学实验的深入研究和实践,总结了相关的理论知识和应用技巧,希望能够对读者对离散数学有更加深入的理解。
概述:本实验主要涉及离散数学中的集合、关系、图论等基本概念及其应用。
通过对离散数学的实验学习,深入掌握了这些概念和应用,对于在实际问题中的应用和拓展具有重要的意义。
正文内容:一、集合相关概念及应用1.定义:集合是由元素组成的无序的整体。
介绍了集合的基本概念、集合的表示法以及集合的运算。
2.集合的应用:介绍了集合在数学、计算机科学中的应用,如数据库的查询、关系代数等。
二、关系相关概念及应用1.定义:关系是一个元素与另一个元素之间的对应关系。
介绍了关系的基本概念、关系的表示方法及其运算。
2.关系的应用:介绍了关系在图像处理、社交网络分析等领域的应用,如图像中的像素点之间的关系、社交网络中用户之间的关系等。
三、图论基础知识及应用1.定义:图是由顶点和边组成的抽象的数学模型。
介绍了图的基本概念、图的表示方法和图的运算。
2.图论的应用:介绍了图论在路由算法、电子商务等领域的应用,如路由器的路由选择、电子商务中的商品推荐等。
四、布尔代数的概念及应用1.定义:布尔代数是一种基于集合论和逻辑学的代数系统。
介绍了布尔代数的基本概念、布尔表达式及其化简方法。
2.布尔代数的应用:介绍了布尔代数在电路设计、开关控制等方面的应用,如逻辑门电路的设计、开关控制系统的建模等。
五、递归的概念及应用1.定义:递归是一种通过调用自身来解决问题的方法。
介绍了递归的基本原理、递归的应用技巧。
2.递归的应用:介绍了递归在算法设计、树的遍历等方面的应用,如快速排序算法、树结构的遍历等。
总结:通过本次离散数学的实验学习,我深入掌握了集合、关系、图论等基本概念与应用。
集合的应用在数据库查询、关系代数等方面起到了重要的作用。
关系的应用在图像处理、社交网络分析等领域有广泛的应用。
离散数学实验报告求集合的运算——并运算
【实验目的】通过编程实现求给定集合A和B的并集C(C=A∪B)的运算。
【实验内容】已知所给集合A和B,求A与B 的并集C(C=A∪B)。
【实验原理】因为并集的定义为:C={x|x∈A∨x∈B},所以,只要将集合A与B合在一起就得到了并集C。
但是,在一个集合中,同样的元素没必要出现两次或两次以上,所以,在将集合A送入并集C后,应将集合B中与A中相同的元素删除,再将集合B送入并集C之中。
【程序代码】#include<stdio.h>int main(){int a[101],b[101],c[201]={0};int m,n;scanf("%d%d",&m,&n);for(int i=1;i<=m;i++)scanf("%d",&a[i]);for(int i=1;i<=n;i++)scanf("%d",&b[i]);for(int i=1;i<=m;i++)c[i]=a[i];int i=m+1;int k;for(int j=1;j<=n;j++){int t=1;for(k=1;k<=m;k++){if(a[k]==b[j])t=0;}if(t==1){c[i]=b[j];i++;}}for(int i=1;i<=m+n;i++){if(c[i]!=0)printf("%d ",c[i]);}}【实验结果】【实验心得】首先想到的是数组,先将数组a[],赋值给c[],然后通过两层for循环来判断b[],是否与a[]重复,如若不重复,将b[]赋值给c[]。
在开始的时候由于for循环套错位置出错,后设置一flag来判断b[]和a[]是否有重复的元素。
离散数学集合的运算实验报告
大连民族学院计算机科学与工程学院实验报告实验题目:集合的运算课程名称:离散数学实验类型:□演示性□验证性□操作性□设计性□综合性专业:网络工程班级:网络111班学生姓名:张山学号:2011083123实验日期:2013年12月22日实验地点:I区实验机房实验学时:8小时实验成绩:指导教师签字:年月日老师评语:1实验题目:集合的运算实验原理: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。
菜单显示函数:设计提示选项,给使用者操作提示。
操作函数:该函数是程序的主题部分,完成对集合的所有运算的求解过程,并将结果弹入(存入)对应数组(集合)中,用于打印。
具体操作如下:21*求交集:根据集合中交集的定义,将数组a、b中元素挨个比较,把共同元素选出来,并存入数组c(交集集合)中,即求得集合A、B的交集。
2*求并集:根据集合中并集的定义,先将数组a中元素依次存入数组g(并集集合)中,存储集合A中某元素前,先将其与已存入g中的元素依次比较,若相同则存入下一个元素,否则直接存入g中,直到所有A中元素存储完毕。
离散数学实验报告
离散数学实验报告一、实验目的离散数学是现代数学的一个重要分支,它在计算机科学、信息科学、人工智能等领域有着广泛的应用。
本次离散数学实验的目的在于通过实际操作和编程实现,深入理解离散数学中的基本概念、原理和算法,提高解决实际问题的能力,培养逻辑思维和创新能力。
二、实验环境本次实验使用的编程语言为 Python,开发环境为 PyCharm。
同时,还使用了一些相关的数学库和工具,如 sympy 库用于符号计算。
三、实验内容1、集合运算集合是离散数学中的基本概念之一。
在实验中,我们首先定义了两个集合 A 和 B,然后进行了并集、交集、差集等运算。
通过编程实现这些运算,加深了对集合运算定义和性质的理解。
```pythonA ={1, 2, 3, 4, 5}B ={4, 5, 6, 7, 8}并集union_set = Aunion(B)print("并集:", union_set)交集intersection_set = Aintersection(B)print("交集:", intersection_set)差集difference_set = Adifference(B)print("A 与 B 的差集:", difference_set)```2、关系的表示与性质判断关系是离散数学中的另一个重要概念。
我们使用矩阵来表示关系,并通过编程判断关系的自反性、对称性和传递性。
```pythonimport numpy as np定义关系矩阵relation_matrix = nparray(1, 0, 1, 0, 1, 0, 1, 0, 1)判断自反性is_reflexive = all(relation_matrixii == 1 for i inrange(len(relation_matrix)))print("自反性:", is_reflexive)判断对称性is_symmetric = all(relation_matrixij == relation_matrixji for i in range(len(relation_matrix)) for j in range(len(relation_matrix)))print("对称性:", is_symmetric)判断传递性is_transitive = Truefor i in range(len(relation_matrix)):for j in range(len(relation_matrix)):for k in range(len(relation_matrix)):if relation_matrixij == 1 and relation_matrixjk == 1 and relation_matrixik == 0:is_transitive = Falsebreakprint("传递性:", is_transitive)```3、图的遍历图是离散数学中的重要结构。
离散数学(集合地运算)实验报告材料
民族学院计算机科学与工程学院实验报告实验题目:集合的运算课程名称:离散数学实验类型:□演示性□验证性□操作性□设计性□综合性专业:网络工程班级:网络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中元素存储完毕。
离散实验报告集合运算
一、实验目的1. 理解集合的基本概念和运算;2. 掌握集合的交、并、差、补等运算方法;3. 通过编程实现集合运算,提高编程能力。
二、实验原理集合是数学中的一种基本概念,用于描述一组具有某种共同属性的元素。
集合的运算主要包括交、并、差、补等。
以下是对这些运算的简要介绍:1. 交集(∩):两个集合A和B的交集是指同时属于A和B的元素组成的集合。
2. 并集(∪):两个集合A和B的并集是指属于A或B或同时属于A和B的元素组成的集合。
3. 差集(-):两个集合A和B的差集是指属于A但不属于B的元素组成的集合。
4. 补集(∁A):集合A的补集是指全集U中不属于A的元素组成的集合。
三、实验内容1. 编写程序,实现以下集合运算:(1)输入两个集合A和B,输出它们的交集C。
(2)输入两个集合A和B,输出它们的并集C。
(3)输入两个集合A和B,输出它们的差集C。
(4)输入一个集合A和全集U,输出A的补集C。
2. 编写程序,验证以下性质:(1)交换律:A∩B = B∩A,A∪B = B∪A。
(2)结合律:A∩(B∩C) = (A∩B)∩C,A∪(B∪C) = (A∪B)∪C。
(3)分配律:A∩(B∪C) = (A∩B)∪(A∩C),A∪(B∩C) = (A∪B)∩(A∪C)。
四、实验步骤1. 定义一个函数用于输入集合,使用数组存储集合元素。
2. 定义一个函数用于计算两个集合的交集,使用嵌套循环遍历两个集合,将相同的元素添加到新集合中。
3. 定义一个函数用于计算两个集合的并集,使用嵌套循环遍历两个集合,将所有元素添加到新集合中。
4. 定义一个函数用于计算两个集合的差集,使用嵌套循环遍历两个集合,将属于A但不属于B的元素添加到新集合中。
5. 定义一个函数用于计算集合的补集,使用嵌套循环遍历全集和集合A,将不属于A的元素添加到新集合中。
6. 编写主函数,调用上述函数,输入集合,输出运算结果。
五、实验结果与分析1. 实验结果(1)输入集合A:{1, 2, 3, 4, 5},集合B:{3, 4, 5, 6, 7},输出交集C:{3, 4, 5}。
离散数学(集合的运算)实验报告
大连民族学院计算机科学与工程学院实验报告实验题目:集合的运算课程名称:离散数学实验类型:□演示性□验证性□操作性□设计性□综合性专业:网络工程班级:网络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中元素存储完毕。
最新离散数学集合运算C++或C语言实验报告
离散数学实验报告专业班级:12级计算机本部一班姓名:鲍佳珍学号:201212201401016 实验成绩:1.【实验题目】命题逻辑实验四2.【实验目的】掌握用计算机求集合的交、并、差和补运算的方法。
3.【实验内容】编程实现集合的交、并、差和补运算。
4、【实验要求】C或C++语言编程实现5.【算法描述】(1)用数组A,B,C,E表示集合。
假定A={1,3,4,5,6,7,9,10}, B={2,,3,4,7,8,10}, E={1,2,3,4,5,6,7,8,9,10}, 输入数组A,B,E(全集),输入数据时要求检查数据是否重复(集合中的数据要求不重复),要求集合A,B是集合E的子集。
以下每一个运算都要求先将集合C置成空集。
(2)二个集合的交运算:A⋂B={x|x∈A且x∈B}把数组A中元素逐一与数组B中的元素进行比较,将相同的元素放在数组C 中,数组C便是集合A和集合B的交。
C语言算法:for(i=0;i<m;i++)for(j=0;j<n;j++)if(a[i]= =b[j]) c[k++]=a[i];(3)二个集合的并运算:A⋃B={x|x∈A或x∈B}把数组A中各个元素先保存在数组C中。
将数组B中的元素逐一与数组A中的元素进行比较,把不相同的元素添加到数组C中,数组C便是集合A和集合B 的并。
C语言算法:for(i=0;i<m;i++)c[i]=a[i];for(i=0;i<n;i++){for(j=0;j<m;j++)if(b[i]= =c[j]) break;if(j= =m){ c[m+k]=b[i];k++;}}(4)二个集合的差运算:A-B={x|x∈A且x∉B}将数组A中的元素逐一与数组B中的元素进行比较,把数组A与数组B不同的元素保存在数组C中,数组C便是集合A和集合B的差A-B。
C语言算法:for (j=0;j<m;j++){ for (i=0;i<n;i++){ if (A[j]= =B[i]){ C[k]=A[j];k++;break; }if (j= =n){ C[k]=A[i];k++; } }(5)集合的补运算:~A=B-A={x|x∈B且x∉A}将数组E中的元素逐一与数组A中的元素进行比较,把不相同的元素保存到数组C中,数组C便是集合A关于集合E的补集。
离散数学实验报告四个实验
《离散数学》课程设计学院计算机学院学生姓名学号指导教师评阅意见提交日期 2011 年 11 月 25 日引言《离散数学》是现代数学的一个重要分支,也是计算机科学与技术,电子信息技术,生物技术等的核心基础课程。
它是研究离散量(如整数、有理数、有限字母表等)的数学结构、性质及关系的学问。
它一方面充分地描述了计算机科学离散性的特点,为学生进一步学习算法与数据结构、程序设计语言、操作系统、编译原理、电路设计、软件工程与方法学、数据库与信息检索系统、人工智能、网络、计算机图形学等专业课打好数学基础;另一方面,通过学习离散数学课程,学生在获得离散问题建模、离散数学理论、计算机求解方法和技术知识的同时,还可以培养和提高抽象思维能力和严密的逻辑推理能力,为今后爱念族皮及用计算机处理大量的日常事务和科研项目、从事计算机科学和应用打下坚实基础。
特别是对于那些从事计算机科学与理论研究的高层次计算机人员来说,离散数学更是必不可少的基础理论工具。
实验一、编程判断一个二元关系的性质(是否具有自反性、反自反性、对称性、反对称性和传递性)一、前言引语:二元关系是离散数学中重要的内容。
因为事物之间总是可以根据需要确定相应的关系。
从数学的角度来看,这类联系就是某个集合中元素之间存在的关系。
二、数学原理:自反、对称、传递关系设A和B都是已知的集合,R是A到B的一个确定的二元关系,那么集合R 就是A×B的一个合于{()∈A×}的子集合设R是集合A上的二元关系:自反关系:对任意的x∈A,都满足<>∈R,则称R是自反的,或称R具有自反性,即R在A上是自反的⇔(∀x)((x∈A)→(<>∈R))=1对称关系:对任意的∈A,如果<>∈R,那么<>∈R,则称关系R是对称的,或称R具有对称性,即R在A上是对称的⇔ (∀x)(∀y)((x∈A)∧(y∈A)∧(<>∈R)→(<>∈R))=1传递关系:对任意的∈A,如果<>∈R且<>∈R,那么<>∈R,则称关系R是传递的,或称R具有传递性,即R在A上是传递的⇔ (∀x)(∀y)(∀z)[(x∈A)∧(y∈A)∧(z ∈A)∧((<>∈R)∧(<>∈R)→(<>∈R))]=1三、实验原理:通过二元关系与关系矩阵的联系,可以引入N维数组,以数组的运算来实现二元关系的判断。
安徽工业大学离散数学实验报告
安徽工业大学离散数学实验报告Prepared on 21 November 2021《离散数学》实验报告专业软件工程班级163班姓名周掌珍学号授课教师杨思春二 O 一七年六月目录实验一联结词的运算实验二集合的运算实验三二元关系的性质判定实验四图的矩阵运算实验一联结词的运算一.实验目的通过上机实验操作,将命题连接词运算融入到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的真值不同时,命题PQ的真值才为假;否则,P→Q的真值为真。
三.实验内容编写一个程序实现非运算、合取运算、析取运算、异或运算、蕴涵运算、等价运算。
四.算法程序内容格式:新罗马,小五号,行间距固定值18磅#include<>int main(){char m;int P,Q;printf("请输入P,Q的真值与逻辑连接词:(P逻辑联结Q)\na:与\tb:或\tc(请先输入0):非\td:蕴含\te:等价\tf:异或\n");scanf("%d%c%d",&P,&m,&Q);switch(m){case 'a': if(P==1&&Q==1) printf("P与Q=1\n");else printf("p合取Q=0\n");break;case 'b': if(P==0&&Q==0) printf("P或Q=0\n");else printf("P或Q=1\n");break;case 'c': if(P==1) printf("非P=0\n");else printf("非P=1\n");break;case 'd': if(P==1&&Q==0) printf("P蕴含Q=0\n");else printf("P蕴含Q=1\n");break;case 'e': if(P==Q) printf("P等价Q=1\n");else printf("P等价Q=0\n");break;case 'f': if(P==Q) printf("P异或Q=0\n");else printf("P异或Q=1\n");break;}五.实验结果实验结果截图大小为:宽(10cm)×高(8cm)六.心得体会内容格式:宋体,五号,行间距固定值18磅实验二集合的运算一.实验目的集合运算主要包括并运算,交运算,相对差,对称差运算,集合论的语言适合于描述和研究离散对象及其关系,所以也是计算机科学与工程的理论基础,在程序设计、关系数据库、排队论、开关理论,形式语言和自动机理论等学科领域中都有重要的应用。
离散数学实验报告求集合的运算——并运算
【实验目的】通过编程实现求给定集合A和B的并集C(C=A∪B)的运算。
【实验内容】已知所给集合A和B,求A与B 的并集C(C=A∪B)。
【实验原理】因为并集的定义为:C={x|x∈A∨x∈B},所以,只要将集合A与B合在一起就得到了并集C。
但是,在一个集合中,同样的元素没必要出现两次或两次以上,所以,在将集合A送入并集C后,应将集合B中与A中相同的元素删除,再将集合B送入并集C之中。
【程序代码】#include<stdio.h>int main(){int a[101],b[101],c[201]={0};int m,n;scanf("%d%d",&m,&n);for(int i=1;i<=m;i++)scanf("%d",&a[i]);for(int i=1;i<=n;i++)scanf("%d",&b[i]);for(int i=1;i<=m;i++)c[i]=a[i];int i=m+1;int k;for(int j=1;j<=n;j++){int t=1;for(k=1;k<=m;k++){if(a[k]==b[j])t=0;}if(t==1){c[i]=b[j];i++;}}for(int i=1;i<=m+n;i++){if(c[i]!=0)printf("%d ",c[i]);}}【实验结果】【实验心得】首先想到的是数组,先将数组a[],赋值给c[],然后通过两层for循环来判断b[],是否与a[]重复,如若不重复,将b[]赋值给c[]。
在开始的时候由于for循环套错位置出错,后设置一flag来判断b[]和a[]是否有重复的元素。
离散数学 实验报告
离散数学实验报告离散数学实验报告一、引言离散数学是一门研究离散结构及其运算规则的数学学科,它在计算机科学、信息科学、通信工程等领域具有重要的应用价值。
本实验旨在通过实际案例,探索离散数学在现实生活中的应用。
二、实验目的本实验的目的是通过离散数学的理论知识,解决一个实际问题。
我们选择了图论中的最短路径问题作为案例,以展示离散数学在网络路由、物流规划等领域的应用。
三、实验过程1.问题描述我们的实验场景是一个城市的交通网络,其中各个交叉路口被看作是图的节点,而道路则是图的边。
我们需要找到两个给定节点之间的最短路径,以便规划出行路线。
2.建模为了解决这个问题,我们需要将实际情况抽象成数学模型。
我们将交通网络表示为一个有向图,每个节点代表一个交叉路口,每条边代表一条道路。
每条边上还需要标注距离或时间等权重。
3.算法选择在离散数学中,有多种算法可以解决最短路径问题,如迪杰斯特拉算法、弗洛伊德算法等。
根据实际情况和需求,我们选择了迪杰斯特拉算法。
4.算法实现我们使用编程语言实现了迪杰斯特拉算法,并将其应用于我们的交通网络模型。
算法的核心思想是通过不断更新节点之间的最短距离,逐步找到最短路径。
5.实验结果经过实验,我们成功找到了两个给定节点之间的最短路径,并计算出了最短距离。
这对于规划出行路线具有重要意义,可以帮助人们节省时间和资源。
四、实验总结通过这个实验,我们深入理解了离散数学在实际问题中的应用。
离散数学的概念和算法不仅仅是理论上的抽象,它们可以帮助我们解决现实生活中的复杂问题。
离散数学的应用远不止于此,它还可以用于密码学、数据压缩、人工智能等领域。
通过学习离散数学,我们能够培养出良好的抽象思维和问题解决能力,为未来的科学研究和工程实践打下坚实的基础。
总之,离散数学是一门具有广泛应用前景的学科,通过实验,我们对其应用领域有了更深入的了解。
希望未来能有更多的人关注和研究离散数学,为推动科学技术的发展做出贡献。
离散数学实验3报告
实验报告目录第一章实验概述 (3)1.1实验目的 (3)1.2实验内容 (3)1.3实验环境 (3)第二章实验原理和实现过程 (4)2.1实验原理 (4)2.1.1建立图的邻接矩阵, 判断图是否连通 (3)2.1.2 计算任意两个结点间的距离 (4)2.1.3对不连通的图输出其各个连通支 (5)2.2实验过程(算法描述) (5)2.2.1 程序整体思路 (5)2.2.2具体算法流程 (5)第三章实验数据及结果分析 (7)3.1建立图的邻接矩阵并判断图是否连通的功能测试及结果分析 (7)3.1.1输入无向图的边 (7)3.1.2建立图的连接矩阵 (8)3.2其他功能的功能测试和结果分析 (8)3.2.1计算节点间的距离 (8)3.2.2判断图的连通性 (8)3.2.3输出图的连通支 (8)3.2.4退出系统 (9)第四章实验收获和心得体会 (9)4.1实验收获 (9)4.2心得体会 (10)第五章实验源程序清单 (11)5.1程序代码 (11)第一章实验概述1.1 实验目的理解图论的基本概念, 图的矩阵表示, 图的连通性, 图的遍历, 以及求图的连通支方法。
通过实验, 帮助学生更好地掌握计算机科学技术常用的离散数学中的概念、性质和运算, 培养逻辑思维;通过实验提高学生编写实验报告、总结实验结果的能力, 提高理论联系实际的能力;使学生具备程序设计的思想, 能够独立完成简单的算法设计和分析。
1.2 实验内容以偶对的形式输入一个无向简单图的边, 建立该图的邻接矩阵, 判断图是否连通(A), 并计算任意两个结点间的距离(B), 对不连通的图输出其各个连通支(C)。
注意: 题目类型分为A, B, C三类, 其中A为基本题, 完成A类题目可达到设计的基本要求, 其他均为加分题, 并按字母顺序分数增加越高。
基本要求如下:程序需具有基本的容错控制, 在输入错误时有处理手段;程序界面友好, 需要输入的地方有输入说明, 说明输入的内容和格式要求等;实验原理和实现过程应该详细分析问题, 给出解决思路, 描述算法思想, 不能用源程序代替算法;测试数据应全面, 包括非法输入的处理结果等都应包含在内。
离散数学实验报告
离散数学实验报告离散数学实验报告一、引言离散数学是现代数学的一个重要分支,它研究离散的数学结构和离散的数学对象。
本实验报告将介绍我对离散数学的学习和实践的一些心得体会。
二、集合论集合论是离散数学的基础,它研究集合及其运算。
在实验中,我学习了集合的表示方法和运算规则。
集合的表示方法有枚举法、描述法和图示法等。
集合的运算包括并、交、差和补等。
通过实践操作,我深刻理解了集合的概念和运算规则。
三、逻辑与命题逻辑是离散数学的另一个重要内容,它研究推理和思维的规律。
在实验中,我学习了逻辑的基本概念和符号表示法。
逻辑中的命题是逻辑推理的基本单位,它可以是真或假。
通过实践操作,我能够正确地分析和判断命题的真值,并进行逻辑推理。
四、关系与函数关系与函数是离散数学中的重要内容,它们描述了元素之间的联系。
在实验中,我学习了关系的定义和性质,包括自反性、对称性和传递性等。
函数是一种特殊的关系,它将一个集合的元素映射到另一个集合。
通过实践操作,我能够正确地定义和分析关系与函数。
五、图论图论是离散数学中的重要分支,它研究图及其性质。
在实验中,我学习了图的基本概念和表示方法。
图由顶点和边组成,可以分为有向图和无向图。
通过实践操作,我能够正确地定义和分析图的性质,如度、路径和连通性等。
六、组合数学组合数学是离散数学的另一个重要分支,它研究离散对象的组合和排列。
在实验中,我学习了组合数学的基本原理和方法。
组合数学中的排列和组合是常见的计数问题,通过实践操作,我能够正确地计算排列和组合的数量。
七、实践应用离散数学在计算机科学、通信工程和运筹学等领域有着广泛的应用。
在实验中,我了解了离散数学在实际问题中的应用。
例如,图论可以用于网络路由算法的设计,组合数学可以用于密码学中的加密算法设计。
通过实践操作,我能够将离散数学的知识应用到实际问题中,提高问题的解决效率。
八、总结通过本次离散数学实验,我深入了解了离散数学的基本概念和方法,并通过实践操作加深了对离散数学的理解。
集合运算 离散数学·实验报告
HUNAN UNIVERSITY 离散数学课程实验报告题目:集合运算学生姓名:学生学号:专业班级:完成日期:一.实验目的1.熟悉集合的交,并,差,对称差和直积等集合运算;2.使用c++语言工具解决集合的运算问题;二.实验内容编写程序实现集合的交,并,差,对称差和直积集合运算三.实验过程算法分析1.集合的交:使用两个字符串数组A和B存储两个集合,依次遍历两个数组,找到相同的元素,就输出该元素,直到两个数组都遍历完毕为止,输出的所有的元素就是这两个集合的交;2.集合的并:依次遍历这两个数组,在第二个数组中,若找到与第一个数组中的某个元素相同的元素时,在第二个数组中删除该元素,最后输出第一个数组和第二个数组的所有元素,得到的结果即集合的并;3.集合的差:遍历数组A和B,在数组A中,若找到与B中某一元素相同的元素,则在数组A中删除该元素,最后一次输出数组A即可;4.集合的对称差:定义一个新的字符串数组C,将A的值全部赋给C(C==A).。
遍历数组A和B,若在A中找到与B中某一元素相同的元素,则在A中删除该元素;遍历C与B,若在B中找到与C中某一元素相同的元素,则删除B中的该元素,最后依次遍历输出数组A和B即可;5.集合的直积:从数组A的第一个元素开始,每输出A中的一个元素的同时,对应输出B中所有的元素,中间用<,>连接,直到A中所有元素都输出完毕。
最后得到的序列便是A和B的直积流程图实验数据和分析测试数据:请输入第一个集合:a b 1 4请输入第二个集合:b g 4两个集合的交为:b 4两个集合的并为:a b 1 4 g第一个集合-第二个集合为:a 1两个集合的对称差为:a 1 g两个集合的直积为:<a,b> <a,g> <a,4> <b,b> <b,g> <b,4><1,b> <1,g> <1,4> <4,b> <4,g> <4,4>按照实验的算法设计程序,实现集合的各种基本运算。