离散数学实验3报告讲解

离散数学实验3报告讲解
离散数学实验3报告讲解

实验报告

目录

第一章实验概述 (3)

1.1实验目的 (3)

1.2实验内容 (3)

1.3实验环境 (3)

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

2.1实验原理 (4)

2.1.1建立图的邻接矩阵,判断图是否连通 (4)

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其他功能的功能测试和结果分析 (9)

3.2.1计算节点间的距离 (9)

3.2.2判断图的连通性 (9)

3.2.3输出图的连通支 (10)

3.2.4退出系统 (10)

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

4.1实验收获 (11)

4.2心得体会 (12)

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

5.1程序代码 (13)

第一章实验概述

1.1 实验目的

理解图论的基本概念,图的矩阵表示,图的连通性,图的遍历,以及求图的连通支方法。

通过实验,帮助学生更好地掌握计算机科学技术常用的离散数学中的概念、性质和运算,培养逻辑思维;通过实验提高学生编写实验报告、总结实验结果的能力,提高理论联系实际的能力;使学生具备程序设计的思想,能够独立完成简单的算法设计和分析。

1.2 实验内容

以偶对的形式输入一个无向简单图的边,建立该图的邻接矩阵,判断图是否连通(A),并计算任意两个结点间的距离(B),对不连通的图输出其各个连通支(C)。

注意:题目类型分为A,B,C三类,其中A为基本题,完成A类题目可达到设计的基本要求,其他均为加分题,并按字母顺序分数增加越高。

基本要求如下:程序需具有基本的容错控制,在输入错误时有处理手段;程序界面友好,需要输入的地方有输入说明,说明输入的内容和格式要求等;实验原理和实现过程应该详细分析问题,给出解决思路,描述算法思想,不能用源程序代替算法;测试数据应全面,包括非法输入的处理结果等都应包含在内。

1.3 实验环境

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

第二章实验原理和实现过程

2.1 实验原理

2.1.1建立图的邻接矩阵,判断图是否连通

根据图的矩阵表示法建立邻接矩阵A,并利用矩阵的乘法和加法求出可达矩阵,从而判断图的连通性。

连通图的定义:在一个无向图 G 中,若从顶点vi到顶点vj有路径相连(当然从vj到vi也一定有路径),则称vi和vj是连通的。如果 G 是有向图,那么连接vi 和vj的路径中所有的边都必须同向。如果图中任意两点都是连通的,那么图被称作连通图。

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

2.1.2 计算任意两个结点间的距离

图中两点i,j间的距离通过检验A l中使得a ij为1的最小的l值求出。

路径P中所含边的条数称为路径P的长度。在图G中,从结点Vi到Vj最短路径的长度叫从Vi到Vj的距离,记为d

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

的路径有aij条。

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

问题求解原理为:

(1)先构造初始邻接矩阵A=Vij,Vij为顶点Vi到顶点Vj的权。如果Vi 和Vj之间不存在弧段或者是负向回路或者是i=j,则令Vij其值为∞。

(2)再构造初始中间顶点矩阵。

(3)然后开始迭代计算(迭代的次数等于顶点的个数1)

(4)最后查找Vi到Vj的最短路径。

计算节点Vi与Vj之间的距离的方法为:

利用邻接矩阵相互间相乘后得到的矩阵来判断节点间的距离。如果

c2[s][i][j]==0,则这两个节点的距离为无穷大。如果

c2[s-2][i][j]==0,c2[s-1][i][j]==1时,则这两点间的距离为s。

2.1.3对不连通的图输出其各个连通支

图的连通支的求法则可采用图的遍历算法,图的遍历有深度优先和广度优先两种方法,其中深度优先算法又分为递归和非递归两种。

在无向图中,如果任何两点可达,则称图G是连通的,如果G的子图G’是连通的,没有包含G’的更大的子图G’’是连通的,则称G’是G的连通支。

当有判断出关系不是连通的之后,将需要求出分支模块

实现方法如下:先定义一个二维数组用来存放相应的分块,先选定一个点,并将它放在数组中,然后判断,如果后面的和他是联通的便将它也放在同一个数组中,否则将其存入其他的数组中,后面以此类推,在输出相应的数组,便可判断出连通分支。

2.2 实验过程(算法描述)

2.2.1 程序整体思路

本程序完成了实验所要求的全部功能,其基本思路是——“运用模块化的思想,将实现“求连通支”、“输入结点关系”、“输出邻接矩阵”、“显示两结点间的距离”、“求可达矩阵”和“图的遍历”的子函数分开编写,然后将它们以子函数的形式添加到主函数main的代码后面,在要使用相应的子函数时,进行子函数调用就可以实现相应的功能了。”

本程序的一大特色就是开发者灵活使用了C语言中的数组概念来进行开发,用数组来模拟矩阵的运算,通过相应的算法实现了全部的功能。

2.2.2具体算法流程

在main(){系统界面显示;用do…while循环语句和switch语句实现功能

1,2,3……的选择,并调用相关的子程序;用start、goto start实现控制流的转移;} liantongzhi(){求连通支,此子函数通过一个for循环控制遍历每个结点,并调用函数DFS()求每个结点的连通支;}

DFS(int a){通过实参与形参,将结点数据代入函数;定义顺序栈变量;通过for循环初始化;为a置已访问标志,已经访问了的元素为1;定义顺序栈的第一个元素;通过while循环实现结点遍历,栈不为空时执行循环;栈顶元素赋值;通过for循环寻找v的下个未访问的邻接点;通过if条件句,若x,i是边和节点i未被访问过,处理结点的访问,并进行访问标志,进栈等操作;通过if条件句,若v已访问到的出点,则将其退栈;}

shuru(){输入结点关系;通过for循环先将矩阵所有元素赋值0;再通过另一for循环,根据输入结点的关系,将矩阵中相应的元素赋值,有关系则为1;} linjiejuzhen(){输出邻接矩阵;通过for循环,依次按格式输出邻接矩阵的元素;} julijuzhen(){根据A的n次方矩阵及其中元素,判断并显示两结点间的距离;调用子函数linjiejuzhen(),以确定并显示距离为1的两结点;通过for循环显示距离为1的结点对;再通过一系列的for循环,计算A的n次方矩阵并显示结果,根据其中的元素,判断并显示结点间的距离;详细算法请见附录相关部分的注释;}

kedajuzhen(){求可达矩阵;通过一系列for循环,根据公式,计算可达矩阵;通过for循环,将矩阵中不为0的一切值赋为1以生成可达矩阵并显示;通过for 循环和if条件句的组合,根据可达矩阵的元素特点,判断图的连通性,若可达矩阵矩阵中有0,则跳出循环,显示不可连接;根据判断结果显示内容,不可连通或可连通;}

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

3.1建立图的邻接矩阵并判断图是否连通的功能测试及结果分析

简单无向图的输入界面友好,有清楚的操作说明,方便用户进行使用。

这就是集合的输入界面。

3.1.1输入无向图的边

当“6,5”时,表示输入的是六个节点五条边的树。

程序会在屏幕上显示输入节点间关系的界面,输入的关系为“1,2;2,3;3,4;4,5;5,6”

3.1.2建立图的连接矩阵

程序返回主界面后,选择“2”,程序会显示建立的连接矩阵。

3.2 其他功能的功能测试和结果分析

3.2.1计算节点间的距离

当选择“3”时,程序便会输出各节点间的距离。

3.2.2判断图的连通性

当选择“4”时,程序会根据可达矩阵判断图的连通性。

3.2.3输出图的连通支

当选择“5”时,程序会输出个连通支。

3.2.4退出系统

当选择“6”时,程序会退出系统。

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

4.1 实验收获

这次离散数学实验是基于图论方面知识,以图的各种矩阵为基础,来研究图的一些性质、特点。

我独立完成了本次实验设计,实现了A、B、C三个功能,满足了实验的基本要求,心得如下。

通过这次实验,我学会了用C语言根据图的矩阵表示法建立邻接矩阵A,并利用矩阵的乘法和加法求出可达矩阵,从而判断图的连通性。巩固了课堂所学的图论方面的有关知识,并在实践中学到:图中两点i,j间的距离可以通过检验A l中使得a ij为1的最小的l值求出;图的连通支的求法可采用图的遍历算法,图的遍历有深度优先和广度优先两种方法,其中深度优先算法又分为递归和非递归两种。我选择的算法是较为简单、易于实现的深度优先算法最简单,查阅了相关资料,掌握了此算法的核心,最后独立完成了本次实验设计。

这次离散数学实验,从拿到题目到完成整个编程,从理论到实践的日子里,我学到很多东西,不仅可以巩固了以前所学过的知识,而且通过查阅相关资料,学到了很多在书本上所没有学到过的知识。在这段时间里,我对于离散数学中的“逻辑”有了进一步的理解,对C语言的理解也更进了一步,并提高了编写实验报告、总结实验结果的能力,提高了理论联系实际的能力,初步具备程序设计的思想,能够独立完成简单的算法设计和分析。

感受最深的是,大量的上机实践是成为“编程高手”的必由之路,“质变”需要有“量”的积累。

完成程序的编写,决不意味着万事大吉。曾经自己认为万无一失的程序,实际上机运行时可能不断出现麻烦,如编译程序检测出一大堆错误。有时程序本身不存在语法错误,也能够顺利运行,但是运行结果显然是错误的。开发环境所提供的编译系统无法发现这种程序逻辑错误,只能靠自己的上机经验分析判断错误所在。有时候一个小小错误会消耗我好的时间去找,而高手一眼就看出错误所在,这就是熟练程度的不同,量变到质变的不同。

4.2 心得体会

这次真的使我意识到了很多原来没有意识到的问题,有时候一些很小的问题,也会令人很是头痛。

在刚开始编写程序的时候,为了实现最基本的输入和输出功能,我却花了大量的时间在那上面。原因在后来查阅的很多资料后才知道的,像scanf函数之类的小函数,其实是还有很多需要注意的地方的。

之后,在编写数组和指针的过程中,花了很大的一部分时间去研发算法,开发程序,在理论上反复证明没有问题之后,再在计算机上进行操作,编写代码,进行调试,反复了很久,才慢慢的实现了全部的功能,真的是来之不易。

在实验的过程中我们要培养自己的独立分析问题,和解决问题的能力。培养这种能力的前题是你对每次实验的态度。如果你在实验这方面很随便,抱着等老师教你怎么做,拿同学的报告去抄,尽管你的成绩会很高,但对将来工作是不利的。在写实验报告,对于思考题,有很多不懂,于是去问老师,老师的启发了我,其实答案早就摆在报告中的公式,电路图中,自己要学会思考。

最后,通过这次的实验我不但对理论知识有了更加深的理解,对于实际的操作和也有了质的飞跃。经过这次的实验,我们整体对各个方面都得到了不少的提高,希望以后学校和系里能够开设更多类似的实验,能够让我们得到更好的锻炼。

第五章实验源程序清单5.1 程序代码

#include /*头文件*/

#include

#include

#define MAX 100/*宏定义*/

typedef struct { int elem[MAX];

int top;

}SqStack;/*定义栈的结构体,顺序栈的类型标识符*/

void shuru();/*各子函数声明*/

void linjiejuzhen();

void julijuzhen();

void kedajuzhen();

void liantongzhi();

void DFS(int a);

int A[9][9],B[9][9],C[9][9],D[9][9];

int i,j,k,t,v,e;

int main()

{

int a1;

start:

do

{

printf("\n");

printf("********************************************************************* **********\n");

printf("\n");

printf("\t\t\t\t系统主菜单\n");

printf("\n\t\t1.输入无向图的边\n\t\t2.建立图的邻接矩阵\n\t\t3.计算节点间的距离\n");

printf("\t\t4.由可达矩阵判断图的连通性\n\t\t5.输出各个连通支(深度优先DFS法)\n\t\t6.退出系统\n");

printf("\n");

printf("********************************************************************* ***********\n");

printf("\n");

printf("\n\t\t\t\t请输入功能选项:");

fflush(stdin);/*清空输入缓冲区,通常是为了确保不影响后面的数据读取*/

scanf("%d",&a1);

switch(a1)/*switch语句实现选择功能*/

{

case 1:system("cls");shuru();break;/*输入节点关系,计算邻接矩阵*/

case 2:system("cls");fflush(stdin);linjiejuzhen();break;/*输出邻接矩阵*/

case 3:system("cls");fflush(stdin);julijuzhen();break;/*求距离矩阵*/

case 4:system("cls");fflush(stdin);kedajuzhen();break;/*求可达矩阵*/

case 5:system("cls");fflush(stdin);liantongzhi();break;/*求连通支*/

case 6:system("exit");exit(0);/*结束整个程序的运行*/

default:system("cls");

goto start;/*控制流转移到start处*/

}

}while(1);

}

void liantongzhi()/*求连通支,此子函数控制遍历每个结点*/

{

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

{

printf("%d",i);

DFS(i);/*调用子函数求连通支*/

printf("\n");

}

}

void DFS(int a)/*由深度优先DFS法求出并显示各个连通支*/

{

int i,x;

int top=0;

int visited[MAX];

SqStack s;/*定义s为顺序栈变量*/

for (i=0;i<100;i++)

visited[i]=0;/*初始化为0*/

visited[a-1]=1;/*为a置已访问标志,已经访问了的元素为1*/

top=top+1;

s.elem[top]=a-1;/*顺序栈的第一个元素*/

while(top!=0)/*栈不为空时执行循环*/

{

x=s.elem[top];/*将栈顶元素付给x*/

for(i=0;i

if(D[x][i]!=0 &&(!visited[i]))/*若x,i是边和节点i未被访问过*/

{

printf("->%d",i+1);

visited[i]=1;/*为i置已访问标准*/

top=top+1;

s.elem[top]=i;/*i进栈*/

break;

}

if(i==v)/*若v已访问到的出点,则将其退栈*/

top--;

}

}

void shuru()/*输入结点关系*/

{

printf("********************************************************************* **********\n");

printf("\n");

printf("\t\t请输入结点数和边数(形式如6,5):\n");

scanf("%d,%d",&v,&e);/*输入结点和边数*/

for(i=0;i

{

for(j=0;j

{

A[i][j]=0;

C[i][j]=0;

B[i][j]=0;

D[i][j]=0;

}

}

printf("\n");

printf("********************************************************************* **********\n");

printf("\t\t请输入结点间的关系(形式如:1,2):\n");

printf("\n");

for(k=0;k

{

scanf("%d,%d",&i,&j);

A[i-1][j-1]=1;/*根据输入结点的关系,将矩阵中相应的元素赋值*/

A[j-1][i-1]=1;

B[i-1][j-1]=1;

B[j-1][i-1]=1;

D[i-1][j-1]=1;

D[j-1][i-1]=1;

}

system("cls");

}

void linjiejuzhen()/*输出邻接矩阵*/

{

printf("邻接矩阵A为:\n");

for(i=0;i

{

for(j=0;j

{

printf("\t%5d",A[i][j]);/*显示邻接矩阵*/

}

printf("\n");

}

printf("\n");

}

void julijuzhen()/*根据A的n次方矩阵及其中元素,判断并显示两结点间的距离*/ {

linjiejuzhen();/*调用子函数,以确定并显示距离为1的两结点*/

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

{

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

{

if(A[i-1][j-1]==1)

printf("结点%d与结点%d的距离为:%d\n",i,j,1);

}

}

for(k=2;k<=v-1;k++)/*计算并显示距离大于1的两节点*/

{

printf("\n\n");

printf("距离为%d的矩阵(即A%d)为:\n",k,k);

{

for(i=0;i

for(j=0;j

{

for(t=0;t

C[i][j]=C[i][j]+B[i][t]*A[t][j];/*计算矩阵中的元素*/

}

for(i=0;i

for(j=0;j

{

B[i][j]=C[i][j];/*将计算出的结果赋予B矩阵*/

C[i][j]=0;

}

}

for(i=0;i

{

for(j=0;j

printf("\t%5d",B[i][j]);/*显示距离矩阵*/

printf("\n");

}

printf("\n");

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

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

{

if(A[i-1][j-1]==0 && B[i-1][j-1] != 0 && i!=j)/*判断条件,以确定输出对象(相关的点)*/

printf("结点%d与结点%d的距离为:%d\n",i,j,k);

}

}

printf("\n");

}

void kedajuzhen()/*求可达矩阵*/

{

int l=1;

printf("可达矩阵为:\n");

for(i=0;i

for(j=0;j

{

B[i][j]=A[i][j];

(完整版)离散数学作业答案一

离散数学作业7 离散数学数理逻辑部分形成性考核书面作业 本课程形成性考核书面作业共3次,内容主要分别是集合论部分、图论部分、 数理逻辑部分的综合练习,基本上是按照考试的题型(除单项选择题外) 安排练习题目,目的是通过综合性书面作业,使同学自己检验学习成果,找出掌握的薄弱知识点,重点复习,争取尽快掌握。本次形考书面作业是第三次作业,大家要认真及时地完成数理逻辑部分的综合练习作业。 要求:将此作业用A4纸打印出来,手工书写答题,字迹工整,解答题要有解答过程,要求本学期第17周末前完成并上交任课教师(不收电子稿)。并在07任务界面下方点击“保存”和“交卷”按钮,以便教师评分。 一、填空题 1 .命题公式P (Q P)的真值是T或1 ______ . 2?设P:他生病了,Q:他出差了. R:我同意他不参加学习.则命题“如果他生病或出差了,我就同意他不参加学习”符号化的结果为(P V Q)-R 3. ____________________________________________________________ 含有三个命题变项P,Q,R的命题公式P Q的主析取范式是__________________ _(P Q R) (P Q R)_ 4. 设P(x): x是人,Q(x): x去上课,则命题“有人去上课.” 可符号化为— x(P(x) Q(x))_ 5. 设个体域D = {a, b},那么谓词公式xA(x) yB(y)消去量词后的等值式为 (A(a) A(b)) (B(a) B(b))_ 6 .设个体域D = {1,2, 3},A(x)为“x大于3”,则谓词公式(x)A(x)的真值为F 或0 ________________ . 7.谓词命题公式(x)((A(x) B(x)) C(y))中的自由变元为 ________ . 8 .谓词命题公式(x)(P(x) Q(x) R(x,y))中的约束变元为x _______ . 三、公式翻译题 1 .请将语句“今天是天晴”翻译成命题公式

编译原理实验指导书2010

《编译原理》课程实验指导书 课程编号: 课程名称:编译原理/Compiler Principles 实验总学时数: 8 适用专业:计算机科学与技术、软件工程 承担实验室:计算机学院计算机科学系中心实验室、计算机技术系中心实验室 一、实验教学的目的与要求 上机实习是对学生的一种全面综合训练,是与课堂听讲、自学和练习相辅相成的必不可少的一个教学环节。通常,实习题中的问题比平时的练习题要复杂,也更接近实际。编译原理这门课程安排的2次上机实验都属于一种设计类型的实验,每个实验的训练重点在于基本的编译技术和方法,而不强调面面俱到;实验的目的是旨在使学生进一步巩固课堂上所学的理论知识,深化理解和灵活掌握教学内容;培养学生编制算法的能力和编程解决实际问题的动手能力。 要求学生在上机前应认真做好各种准备工作,熟悉机器的操作系统和语言的集成环境,独立完成算法设计和程序代码的编写;上机时应随带有关的编译原理教材或参考书;要学会程序调试与纠错。 每次实验后要交实验报告,实验报告的内容应包括: (1)实验题目、班级、学号、姓名、完成日期; (2)简要的需求分析与概要设计; (3)详细的算法描述; (4)源程序清单; (5)给出软件的测试方法和测试结果; (6)实验的评价、收获与体会。 开发工具: (1)DOS环境下使用Turbo C; (2)Windows环境下使用Visual C++ 。 考核: 实验成绩占编译原理课程结业成绩的10%。 三、单项实验的内容和要求: 要求每个实验保证每个学生一台微机。 实验一(4学时):单词的词法分析程序设计。 (一)目的与要求 1.目的 通过设计、编制、调试一个具体的词法分析程序,加深对词法分析原理的理解,并掌握在对程序设计语言源程序进行扫描过程中将其分解为各类单词的词法分析方法。

离散数学实验报告

《离散数学》实验报告专业网络工程 班级 姓名 学号 授课教师 二 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);

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

实验一命题逻辑公式化简 【实验目的】加深对五个基本联结词(否定、合取、析取、条件、双条件)的理解、掌握利用基本等价公式化简公式的方法。 【实验内容】用化简命题逻辑公式的方法设计一个表决开关电路。 实验用例:用化简命题逻辑公式的方法设计一个 5 人表决开关电路,要求 3 人以上(含 3 人)同意则表决通过(表决开关亮)。 【实验原理和方法】 (1)写出5人表决开关电路真值表,从真值表得出5 人表决开关电路的主合取公式(或主析取公式),将公式化简成尽可能含五个基本联结词最少的等价公式。 (2)上面公式中的每一个联结词是一个开关元件,将它们定义成 C 语言中的函数。 (3)输入5人表决值(0或1),调用上面定义的函数,将5人表决开关电路真值表的等价公式写成一个函数表达式。 (4)输出函数表达式的结果,如果是1,则表明表决通过,否则表决不通过。 参考代码: #include 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; else return 0; } void main() { i nt a,b,c,d,e; printf(" 请输入第五个人的表决值(0 或1,空格分开):"); scanf ("%d%d%d%d%d",&a,&b,&c,&d,&e); i f(vote(a,b,c,d,e)) printf(" 很好,表决通过!\n"); else printf(" 遗憾,表决没有通过!\n"); } // 注:联结词不定义成函数,否则太繁 实验二命题逻辑推理 【实验目的】加深对命题逻辑推理方法的理解。【实验内容】用命题逻辑推理的方法解决逻辑

离散数学实验报告

离散数学实验报告(实验ABC) 专业班级 学生姓名 学生学号 指导老师 完成时间

目录 第一章实验概述..................................... 错误!未定义书签。 实验目的....................................... 错误!未定义书签。 实验内容....................................... 错误!未定义书签。 实验环境....................................... 错误!未定义书签。第二章实验原理和实现过程........................... 错误!未定义书签。 实验原理....................................... 错误!未定义书签。 建立图的邻接矩阵,判断图是否连通 ............ 错误!未定义书签。 计算任意两个结点间的距离 ................... 错误!未定义书签。 对不连通的图输出其各个连通支 ................ 错误!未定义书签。 实验过程(算法描述)........................... 错误!未定义书签。 程序整体思路 ............................... 错误!未定义书签。 具体算法流程 ................................ 错误!未定义书签。第三章实验数据及结果分析........................... 错误!未定义书签。 建立图的邻接矩阵并判断图是否连通的功能测试及结果分析错误!未定义书签。 输入无向图的边 .............................. 错误!未定义书签。 建立图的连接矩阵 ............................ 错误!未定义书签。 其他功能的功能测试和结果分析................... 错误!未定义书签。 计算节点间的距离 ............................ 错误!未定义书签。 判断图的连通性 .............................. 错误!未定义书签。 输出图的连通支 .............................. 错误!未定义书签。 退出系统 .................................... 错误!未定义书签。第四章实验收获和心得体会........................... 错误!未定义书签。

电大 离散数学作业7答案

离散数学作业7 离散数学数理逻辑部分形成性考核书面作业 本课程形成性考核书面作业共3次,内容主要分别是集合论部分、图论部分、数理逻辑部分的综合练习,基本上是按照考试的题型(除单项选择题外)安排练习题目,目的是通过综合性书面作业,使同学自己检验学习成果,找出掌握的薄弱知识点,重点复习,争取尽快掌握。本次形考书面作业是第三次作业,大家要认真及时地完成数理逻辑部分的综合练习作业。 要求:将此作业用A4纸打印出来,手工书写答题,字迹工整,解答题要有解答过程,要求本学期第17周末前完成并上交任课教师(不收电子稿)。并在07任务界面下方点击“保存”和“交卷”按钮,以便教师评分。 一、填空题 1.命题公式()P Q P →∨的真值是 1或T . 2.设P :他生病了,Q :他出差了.R :我同意他不参加学习. 则命题“如 果他生病或出差了,我就同意他不参加学习”符号化的结果为 (P ∨Q )→R . 3.含有三个命题变项P ,Q ,R 的命题公式P ∧Q 的主析取范式是 (P ∧Q ∧R)∨(P ∧Q ∧?R) . 4.设P (x ):x 是人,Q (x ):x 去上课,则命题“有人去上课.” 可符号化为 ?x(P(x) ∧Q(x)) . 5.设个体域D ={a , b },那么谓词公式)()(y yB x xA ?∨?消去量词后的等值式为 (A(a) ∨A(b)) ∨((B(a) ∧B(b)) . 6.设个体域D ={1, 2, 3},A (x )为“x 大于3”,则谓词公式(?x )A (x ) 的真值为 0(F) . 7.谓词命题公式(?x )((A (x )∧B (x )) ∨C (y ))中的自由变元为 y . 8.谓词命题公式(?x )(P (x ) →Q (x ) ∨R (x ,y ))中的约束变元为 x . 三、公式翻译题 1.请将语句“今天是天晴”翻译成命题公式. 设P :今天是晴天。 姓 名: 学 号: 得 分: 教师签名:

7离散数学(集合的运算)实验报告

大连民族学院 计算机科学与工程学院实验报告 实验题目:集合的运算 课程名称:离散数学 实验类型:□演示性□验证性□操作性□设计性□综合性专业:网络工程班级:网络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中元素存储完毕。接着把b中元素依次存入数组g(并集集合)中,存储前将b中每个元素依次与已存入数组g中的集合A的元素比较,若数组g中没有与该元素相同的元素,则将该元素存入g(并集集合)中,否则进行下一次比较,直到所有b中元素比较并存储完毕,即求得A与B 的并集。 3*求差集:根据集合中差集的定义知,差集分为两部分,A对B的差集(数组d)和B对A的差集(e)。设计求解A对B的差集,将集合A中元素依次与B中元素比较,若B中无元素与该元素相同,则将其存入数组d中(同时删除d中相同的元素,操作方法与求并集时删除相同元素类似),否则进行下一轮比较,直到A中所有元素比较完毕,即求得A对B的差集(数组d)。求解B对A的差集方法与求解A对B 的差集类似,这里不再重复。 4*求对称差:根据集合中对称差集的定义,将3*中所求两部分差集求并集并存入数组f中即可。操作过程与求并集相似,这里不再重复。 5*求笛卡尔乘积:根据集合中笛卡尔乘积集的定义,分为A*B和B*A。先设计A*B是我算法,将a中元素循环依次与b中元素配对即可。求B*A与求A*B类似,这里不再重复。 实验步骤: 一、分析实验 阅读实验指导书和离散数学课本,充分理解整个实验的实验内容及要求,以便对实验进行科学的设计。然后对整个实验进行“解剖”,即把整个实验系统地分成若干

离散数学作业答案一

离散数学作业7 离散数学数理逻辑部分形成性考核书 面作业 本课程形成性考核书面作业共3次,内容主要分别就是集合论部分、图论部分、数理逻辑部分的综合练习,基本上就是按照考试的题型(除单项选择题外)安排练习题目,目的就是通过综合性书面作业,使同学自己检验学习成果,找出掌握的薄弱知识点,重点复习,争取尽快掌握。本次形考书面作业就是第三次作业,大家要认真及时地完成数理逻辑部分的综合练习作业。 要求:将此作业用A4纸打印出来,手工书写答题,字迹工整,解答题要有解答过程,要求本学期第17周末前完成并上交任课教师(不收电子稿)。并在07任务界面下方点击“保存”与“交卷”按钮,以便教师评分。 一、填空题 1.命题公式()P Q P →∨的真值就是 T 或1 . 2.设P :她生病了,Q :她出差了.R :我同意她不参加学习、 则命题“如果她生病或出差了,我就同意她不参加学习”符号化的结果为 (P ∨Q)→R . 3.含有三个命题变项P ,Q ,R 的命题公式P ∧Q 的主析取范式就是 )()(R Q P R Q P ?∧∧∨∧∧ . 4.设P (x ):x 就是人,Q (x ):x 去上课,则命题“有人去上课.” 可符号化为 ))()((x Q x P x ∧? . 5.设个体域D ={a , b },那么谓词公式)()(y yB x xA ?∨?消去量词后的等值式为 ))()(())()((b B a B b A a A ∧∨∨ . 6.设个体域D ={1, 2, 3},A (x )为“x 大于3”,则谓词公式(?x )A (x ) 的真值为 F 或0 . 7.谓词命题公式(?x )((A (x )∧B (x )) ∨C (y ))中的自由变元为 y . 8.谓词命题公式(?x )(P (x ) →Q (x ) ∨R (x ,y ))中的约束变元为 x . 三、公式翻译题 1.请将语句“今天就是天晴”翻译成命题公式. P 。,P 则今天是天晴设答:: 2.请将语句“小王去旅游,小李也去旅游.”翻译成命题公式. Q 。P ;,Q P ∧则小李去旅游小王去旅游设答::: 3.请将语句“如果明天天下雪,那么我就去滑雪”翻译成命题公式. Q 。P ;,Q P →则我去滑雪明天下雪设答;:: 4.请将语句“她去旅游,仅当她有时间.”翻译成命题公式.

离散数学实验报告--四个实验!!!

《离散数学》 课程设计 学院计算机学院 学生姓名 学号 指导教师 评阅意见 提交日期 2011 年 11 月 25 日

引言 《离散数学》是现代数学的一个重要分支,也是计算机科学与技术,电子信息技术,生物技术等的核心基础课程。它是研究离散量(如整数、有理数、有限字母表等)的数学结构、性质及关系的学问。它一方面充分地描述了计算机科学离散性的特点,为学生进一步学习算法与数据结构、程序设计语言、操作系统、编译原理、电路设计、软件工程与方法学、数据库与信息检索系统、人工智能、网络、计算机图形学等专业课打好数学基础;另一方面,通过学习离散数学课程,学生在获得离散问题建模、离散数学理论、计算机求解方法和技术知识的同时,还可以培养和提高抽象思维能力和严密的逻辑推理能力,为今后爱念族皮及用计算机处理大量的日常事务和科研项目、从事计算机科学和应用打下坚实基础。特别是对于那些从事计算机科学与理论研究的高层次计算机人员来说,离散数学更是必不可少的基础理论工具。 实验一、编程判断一个二元关系的性质(是否具有自反性、反自反性、对称性、反对称性和传递性) 一、前言引语:二元关系是离散数学中重要的内容。因为事物之间总是可以 根据需要确定相应的关系。从数学的角度来看,这类联系就是某个集合中元素之间存在的关系。 二、数学原理:自反、对称、传递关系 设A和B都是已知的集合,R是A到B的一个确定的二元关系,那么集合R 就是A×B的一个合于R={(x,y)∈A×B|xRy}的子集合 设R是集合A上的二元关系: 自反关系:对任意的x∈A,都满足∈R,则称R是自反的,或称R具有自反性,即R在A上是自反的?(?x)((x∈A)→(∈R))=1 对称关系:对任意的x,y∈A,如果∈R,那么∈R,则称关系R是对称的,或称R具有对称性,即R在A上是对称的? (?x)(?y)((x∈A)∧(y∈A)∧(∈R)→(∈R))=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 三、实验原理:通过二元关系与关系矩阵的联系,可以引入N维数组,以数 组的运算来实现二元关系的判断。 图示:

离散数学作业答案完整版

离散数学作业答案 HEN system office room 【HEN16H-HENS2AHENS8Q8-HENH1688】

离散数学集合论部分形成性考核书面作 业 本课程形成性考核书面作业共3次,内容主要分别是集合论部分、图论部分、数 理逻辑部分的综合练习,基本上是按照考试的题型(除单项选择题外)安排练习题 目,目的是通过综合性书面作业,使同学自己检验学习成果,找出掌握的薄弱知识 点,重点复习,争取尽快掌握。本次形考书面作业是第一次作业,大家要认真及时地 完成集合论部分的综合练习作业。 要求:将此作业用A4纸打印出来,手工书写答题,字迹工整,解答题要有解答 过程,要求本学期第11周末前完成并上交任课教师(不收电子稿)。并在03任务界 面下方点击“保存”和“交卷”按钮,完成并上交任课教师。 一、填空题 1.设集合{1,2,3},{1,2} ==,则P(A)- A B P(B )={{3},{1,3},{2,3},{1,2,3}},A? B={<1,1>,<1,2>,<2,1>,<2,2>,<3,1>,<3,2>} . 2.设集合A有10个元素,那么A的幂集合P(A)的元素个数为 1024 . 3.设集合A={0, 1, 2, 3},B={2, 3, 4, 5},R是A到B的二元关系, 则R的有序对集合为{<2,2>,<2,3>,<3,2>,<3,3>} . 4.设集合A={1, 2, 3, 4 },B={6, 8, 12},A到B的二元关系 R=} ∈ y x∈ y < > = {B , , x , 2 y A x 那么R-1={<6,3>,<8,4>} 5.设集合A={a, b, c, d},A上的二元关系R={, , , },则R具有的性质是没有任何性质. 6.设集合A={a, b, c, d},A上的二元关系R={, , , },若在R中再增加两个元素{,} ,则新得到的关系就具有对 称性. 7.如果R1和R2是A上的自反关系,则R1∪R2,R1∩R2,R1-R2中自反关系有 2 个. 8.设A={1, 2}上的二元关系为R={|x?A,y?A, x+y =10},则R的自反闭 包为 {<1,1>,<2,2>} . 9.设R是集合A上的等价关系,且1 , 2 , 3是A中的元素,则R中至少包含 <1,1>,<2,2>,<3,3> 等元素. 10.设集合A={1, 2},B={a, b},那么集合A到B的双射函数是 {<1,a>,<2,b>}或{<1,b>,<2,a>} . 二、判断说明题(判断下列各题,并说明理由.)

数据库原理与应用实验指导总结

1实验前的准备 1.1 课程实验标准 《数据库原理与应用》是计算机科学与技术专业及相近各专业的一门重要基础理论课程。课程概括性的介绍了数据库技术发展历程,详细介绍了数据库系统的基本概念、基本原理、基本方法,阐述了数据库设计、实现的基本过程,同时也介绍了数据库系统的最新进展。通过本课程的学习,使学生牢固掌握数据库系统的基本概念和基本原理,熟悉数据库系统的主要实现方法,能够根据应用需要分析设计实用的数据库管理系统。 《数据库原理与应用》是一门实践性很强的课程,通过实验实践,配合课堂教学内容加深对数据库系统的基本概念、基本原理、基本方法的理解,掌握数据库系统设计的基本思想和基本步骤,熟悉关系数据库的标准语言SQL,并对关系数据库系统的某一典型系统(如SQL Server 2000)有较深入的了解,使学生对数据库系统有一个完整的、全面的认识。 1.课程实验的目标 《数据库原理与应用》课程上机实验的主要目标是: (1)通过上机操作,加深对数据库系统理论知识的理解。 (2)通过使用具体的数据库管理系统,了解一种实际的数据库管理系统,并掌握 其操作技术。 (3)通过实验题目的上机实践,提高学生的实践动手能力,提高学生的分析问题 和解决问题的能力。 2.主要软件实验环境 操作系统为Microsoft Windows 2000或更高级的版本。 数据库管理系统为Microsoft SQL Server 2000标准版或更高级的版本。 3.课程实验的基本要求 (1)每次实验前,教师需要向学生讲清楚本次实验的目的和基本要求;学生应当先弄清楚相关的理论知识,预习实验内容、方法和步骤,认真准备好实验程序和数据,避免出现盲目上机的行为。 (2)实验1人1组,在规定的时间内,由学生独立完成,出现问题时,教师要做好指导,但不能包办代替。 (3)任课教师要在实验课前清点学生人数,实验中按要求做好学生实验情况及结果记录,实验后认真填写实验记录、批改实验报告。 (4)学生最好自备计算机,课下能多做练习,以便能够熟悉和精通实验内容。 4. 实验项目设置及考核 本课程设置了八个实验项目,共计20学时。具体情况如下: 实验1 数据库和数据表基本操作 4学时

离散数学实验报告()

《离散数学》实验报告 专业网络工程 班级 姓名 学号 授课教师 二 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;

离散数学作业答案

第一章 1.假定A是ECNU二年级的学生集合,B是ECNU必须学离散数学的学生的集合。请用A 和B表示ECNU不必学习离散数学的二年级的学生的集合。 2.试求: (1)P(φ) (2)P(P(φ)) (3)P(P(P(φ))) 3.在1~200的正整数中,能被3或5整除,但不能被15整除的正整数共有多少个? 能被5整除的有40个, 能被15整除的有13个, ∴能被3或5整除,但不能被15整除的正整数共有 66-13+40-13=80个。 第三章 1.下列语句是命题吗? (1)2是正数吗? (2)x2+x+1=0。 (3)我要上学。 (4)明年2月1日下雨。 (5)如果股票涨了,那么我就赚钱。 2.请用自然语言表达命题(p?→r)∨(q?→r),其中p、q、r为如下命题: p:你得流感了 q:你错过了最后的考试

3.通过真值表求p→(p∧(q→p))的主析取范式和主合取范式。 4.给出p→(q→s),q,p∨?r?r→s的形式证明。 第四章 1.将?x(C(x)∨?y(C(y)∧F(x,y)))翻译成汉语,其中C(x)表示x有电脑,F(x,y) 表示x和y是同 班同学,个体域是学校全体学生的集合。 解: 学校的全体学生要么自己有电脑,要么其同班同学有电脑。 2.构造?x(P(x)∨Q(x)),?x(Q(x)→?R(x)),?xR(x)??xP(x)的形式证明。 解: ①?xR(x) 前提引入 ②R(e) ①US规则 ③?x(Q(x)→?R(x)) 前提引入 ④Q(e) →?R(e) ③US规则 ⑤?Q (e) ②④析取三段论 ⑥?x(P(x)∨Q(x)) 前提引入 ⑦P(e) ∨Q(e) ⑥US规则 ⑧P(e) ⑤⑦析取三段论 ⑨?x (P(x)) ⑧EG规则 第五章

SQL实验指导大纲

广东水利电力职业技术学院 《关系数据库与SQL》 实验指导书 2004.6修订 计算机信息工程系

目录 实验大纲 (1) 实验一:SQL SERVER 2000安装、配置与操作 (2) 实验二:数据库和数据表的创建 (3) 实验三:数据库表结构修改和表操作 (6) 实验四:数据表的查询 (7) 实验五:链接查询和子查询 (8) 实验六:创建和使用视图 (11) 实验七:T-SQL程序设计 (12) 实验八:数据完整性技术 (15) 实验九:存储过程 (16) 实验十:触发器 (20) 实验十一:ADO连接技术 (22)

高等职业技术教育计算机应用技术专业《关系数据库与SQL》实验大纲 一、实验项目 1、SQL Server2000的安装和服务器的配置与注册 2、创建数据库和表格。 3、数据库表数据操作 4、数据基本检索 5、连接和子查询 6、建立和使用视图 7、流程控制程序设计 8、数据索引、数据完整性约束 9、存储过程 10、触发器 11、使用ADO技术访问数据库 二、实验的能力要求 1、掌握SQL Server2000软件的安装、配置。 2、掌握数据库和表格的创建和修改 3、掌握数据表记录的插入、修改和删除操作。 4、掌握数据的检索、汇总和排序。 5、掌握多表信息的联合检索 6、掌握建立和使用视图 7、掌握用T-SQL进行流程控制程序设计 8、掌握数据索引、数据完整性约束的作用和建立 9、掌握存储过程的编写和执行 10、掌握触发器的创建 11、掌握开发平台通过ADO技术连接访问数据库

实验一:SQL SERVER 2000安装、配置与操作 一、实验目的: 熟悉SQL SERVER 2000操作环境,掌握SQL Server2000软件的安装、配置。 二、实验内容: 1、用一台机去管理SQL SERVER服务器,都必须先做什么设置? 2、企业管理器能完成什么功能? 3、描述查询分析询器能完成的功能 4、描述对象浏览器的作用。如何显示/隐藏? 5、服务管理器是用来_______、_______和______SQL Server 服务的。这些服务 在Windows NT/2000下也可以通过控制面板的服务项来启动或停止。 6、在“开始”菜单的Microsoft SQL Server程序中选择Enterprise Manager即可 启动______管理器。 7、在查询窗口中用户可以输入SQL语句,并按_______键,或单击工具栏上的 运行按钮,将其送到服务器执行,执行的结果将显示在输出窗口中。用户可 以打开一个含有SQL语句的文件来执行,执行的结果同样显示在输出窗口中。 8、分别用界面和T-SQL语句(SELECT * FROM 表名)显示pubs的一个表信息, 并保存显示结果(文件名为“实验一显示结果”)和T-SQL脚本(文件名“实 验一语句”)。 9、试用界面建一个“学生管理”数据库,在其内建一个“学生表”(属性自已定 义),输入几个信息,浏览一下你所录入的信息。 三、实验要求: 1、先操作再回答下面的内容,提交的答案内容用蓝色字体 2、文件以文件名:”xx专业xx班xx号xxxx(姓名)”保存,如:”03网络1班 2号李红”

《程序设计课程设计》指导书2017(1)

程序设计课程设计 指导书 软件学院软件工程系 2017 年 6 月 1 日

太原理工大学课程设计任务书 学生姓名专业班级软件 课程名称程序设计课程设计(Programming Curriculum Design) 设计名称相邻数对,ISBN 识别码,文本文件单词统计等设计周数 2 设计 1.基本要求 掌握C或C++语言、结构化程序和面向对象程序设计方法、数据结构和离任务散数学理论知识,熟悉C或C++程序的开发环境及调试过程,巩固和加深对理论课中知识的理解,提高学生对所学知识的综合运用能力。 主要 2.培养学生以下技能 ①培养学生查阅参考资料、手册的自学能力,通过独立思考深入钻研问题, 设计学会自己分析、解决问题。 ②通过对所选题目分析,找出解决方法,设计算法,编制程序与调试程序。 参数③能熟练调试程序,在教师的指导下,完成课题任务。 ④按课程设计报告的要求撰写设计报告。 1.设计内容 ①相邻数对;②ISBN 识别码;③文本文件单词统计;④构造可以使 n 个城 设计内容市连接的最小生成树;⑤送货;⑥学生信息管理系统 2.设计要求 设计要求 ①至少完成上述设计内容中的 4 个设计题目;②对每个题目要给出设计方 案、功能模块划分、算法思想;③选择使用的数据结构;④给出题目的程序实 现;⑤按要求撰写设计报告。 主要参考 1.《程序设计课程设计》指导书; 2.《程序设计技术》、《数据结构》等课程教材; 资料 3. 其他自选的相关资料。 学生提交课程设计报告封面应给出专业、班级、姓名、学号、指导教师和完成日期。 每个设计题目的内容包括以下几项:设计题目、问题描述、问题分析、功能实归档文件现、测试实例及运行结果、源程序清单。 注: 1.课程设计完成后,学生提交的归档文件应按照:封面—任务书—说明书—图纸的顺序进行装订上交(大张图纸不必装订)。 2.可根据实际内容需要续表,但应保持原格式不变。 指导教师签名:日期:2017.6.3

离散数学实验报告

离散数学实验报告 姓名: 学号: 班级: 实验地点: 实验时间:

1 实验目的和要求 运用最小生成树思想和求最小生成树程序解决实际问题。实际问题描述如下: 八口海上油井相互间距离如下表,其中1号井离海岸最近,为5km 。问从海岸经1号井铺设油管把各井连接起来,怎样连油管长度最短(为便于检修,油管只准在油井处分叉)? 2 实验环境和工具 实验环境:Windows 7 旗舰版 工具:Dev-C++ 5.8.3 3 实验过程 3.1 算法流程图

3.2程序核心代码 //油管铺设问题Prim算法实现 #include #include using namespace std; #define MAXV 10 #define INF 32767 //INF表示∞ typedef int InfoType; typedef struct{ int no; //顶点编号 InfoType info; //顶点其他信息 } VertexType; //顶点类型 typedef struct{ //图的定义 float edges[MAXV][MAXV]; //邻接矩阵 int vexnum; //顶点数 VertexType vexs[MAXV]; //存放顶点信息 } MGraph; //图的邻接矩阵类型

/*输出邻接矩阵g*/ void DispMat(MGraph g){ int i,j; for (i=0;i

离散数学 作业及答案

2011-2012学年第一学期离散数学作业及参考答案---信息安全10级5-1 1.利用素因子分解法求2545与360的最大公约数。 解:掌握两点:(1) 如何进行素因子分解 从最小素数2的素数去除n。 (2) 求最大公约数的方法 gcd(a,b) = p1min(a1,b1)p2min(a2,b2)pn min(an,bn) 360=2332515090 2545=2030515091 gcd(2545,360) =2030515090=5 2.求487与468的最小公倍数。 解:掌握两点:(1) 如何进行素因子分解 从最小素数2的素数去除n。 (2) 求最小公倍数的方法 lcm(a,b) = p1max(a1,b1)p2max(a2,b2)pn max(an,bn) ab=gcd(a, b)﹡lcm (a, b) 487是质数,因此gcd(487,468)=1 lcm(487,468)= (487*468)/1=487*468=227916 3.设n是正整数,证明:6|n(n+1)(2n+1) 证明:用数学归纳法: 归纳基础:当n=1时,n(n+1)(2n+1)=1*2*3=6,6|6 归纳假设:假设当n=m时,6|m(m+1)(2m+1) 归纳推导:当n=m+1时, n(n+1)(2n+1)=(m+1)(m+1+1)[2(m+1)+1] =(m+1)(m+2)(2m+3) = m(m+1)(2m+3)+2(m+1)(2m+3) = m(m+1)(2m+1+2)+2(m+1)(2m+3) = m(m+1)(2m+1)+2 m(m+1)+ 2(m+1)(2m+3) = m(m+1)(2m+1)+ 2(m+1)(m+2m+3) = m(m+1)(2m+1)+ 2(m+1)(3m+3) = m(m+1)(2m+1)+ 6(m+1)2 因为由假设6|m(m+1)(2m+1)成立。 而6|6(m+1)2 所以6|m(m+1)(2m+1)+ 6(m+1)2 故当n=m+1时,命题亦成立。 所以6| n(n + 1)(2n + 1) 5-2 1 已知 6x ≡7 (mod 23),下列式子成立的是( D ): A. x ≡7 (mod 23) B. x ≡8 (mod 23) C. x ≡6 (mod 23) D. x ≡5 (mod 23) 2 如果a ≡b (mod m) , c是任意整数,则(A ):

实践指导书_多表查询与子查询

一、实验题目:多表查询与子查询 二、实验目的: 掌握如何进行多表查询与子查询 三、实验步骤: 附加XSCJ数据库,改名为XSCJ学号姓名,完成以下习题后把习题语句保存为学号姓名.sql 文件并上传至教师机指定共享文件夹 连接习题: --1、查找XSCJ数据库每个学生的情况以及选修的课程情况。 --2、查询xscj数据库中学号,姓名,课程号,成绩 --3、查询xscj数据库中学号,姓名,课程名,成绩 --4、查询xscj数据库中选修了计算机基础课程同学的学号,姓名,成绩 --5、查询xscj数据库中程明选修的课程名,成绩 --6、查询班级表中学制相同的班级编号 一、连接 1.什么是连接 连接是两元运算,可以两个或多个表进行查询,其结果通常是含有参加连接运算的两个表(或多个表)的指定列的表。 在实际应用中,多数情况下,用户查询的列都来自于多个表。 涉及多个表的查询被称为连接查询。 2.连接表现形式 在T-sql语言中连接查询有两大类表示形式 1)符合sql标准连接谓词表示形式。 2)T-sql扩展的使用关键字join的表示形式。 3.连接分类 内连接表名1 join 表名2 on 条件 外连接左连接left join ,右连接right join,全连接full join 自连接 谓词连接:where 条件(两个表中的字段条件) 4.建立连接的步骤 1)要连接哪几个表 2)以什么条件连接——关系:主键、外键,等值 3)查询记录的条件 4)要查询什么信息 如:查询studentscore数据库中学生信息表和学生成绩表的全部信息 附加studentscore数据库 Select From Where

离散数学实验报告格式

《离散数学》实验报告 专业 班级 姓名 学号 授课教师 二 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 的真值为真。 三.实验内容 编写一个程序实现非运算、合取运算、析取运算、异或运算、蕴涵运算、等价运算。四.算法程序 <> () { ; ("请选择运算方式\n"); ("1.析取\n"); ("2.合取\n"); ("3.非\n"); ("4.蕴含\n"); ("5.等价\n");

m; (""); ( m>=1 m<=4 ) { ("请输入P Q的值\n"); (" " ); = 1; (m) { 1( ( >= 1)( < 4 ) ) { (0 0) ("P 析取Q = 0\n"); ("P 析取Q = 1\n"); ; (4) ; ("请输入P Q的值\n"); (" " ); } ; 2( ( >= 0)( < 4 ) ) { (1 1) ("P 合取Q = 1\n"); ("P 合取Q = 0\n"); ; (4) ; ("请输入P Q的值\n"); (" " ); } ; 3( ( >= 0)( < 4 ) ) { (0) ("非Q = 1\n"); ("非Q = 0\n");

相关文档
最新文档