离散数学实验报告四——图的应用
离散数学实验报告四——图的应用
预习内容:
1.图的基本概念
1.1图的定义:现实世界中许多现象能用某种图形表示,这种图形是由一些点和一些连接两点间的连线所组成。
1.2邻接点: 同一条边的两个端点。
1.3孤立点: 没有边与之关联的结点。
1.4邻接边: 关联同一个结点的两条边。
1.5孤立边: 不与任何边相邻接的边。
1.6自回路(环):关联同一个结点的一条边((v,v)或〈v,v〉)。
1.7平行边(多重边):关联同一对结点的多条边。
2. 图的矩阵表示
2.1邻接矩阵:设G=〈V ,E〉是有n个结点的简单图, 则n阶方阵A=(aij)称为G的邻接矩阵。
2.2可达性矩阵:设G=〈V ,E〉是一个有n个结点的有向图, 则n阶方阵P=(pij)称为图G的可达性矩阵。
实验目的与要求(及主要实验仪器、设备):
1.通过实验,帮助学生更好地掌握计算机科学技术常用的离散数学中的概念、性质和运算;
2. 通过实验提高学生编写实验报告、总结实验结果的能力;
3. 使学生具备程序设计的思想,能够独立完成简单的算法设计和分析。
实验环境:软件:vc++6.0 ,硬件:电脑
实验原理(方法与与原理分析):
- 一个图G是一个序偶〈V(G), E(G)〉, 记为G=〈V(G), E(G)〉。 其中V(G)是非空结点集合, E(G)是边集合, 对E(G)中的每条边, 有V(G)中的结点的有序偶或无序偶与之对应。
- 在完全m叉树中, 若树叶数为 t, 分枝点数为 i, 则 (m-1)i=t-1
- 设有一棵二叉树, 有t片树叶。 使其树叶分别带权w1, w2, …, wt的二叉树称为带权的二叉树。
实验步骤(程序代码与实验过程):
#include<stdio.h>
#define BIG 9999
void dijkstra(int cost[][6], int n, int st, int distance[])
{ int s[6];
int mindis, dis;
int i, j, u;
for (i = 0; i < n; i++)
{
distance[i] = cost[st][i];
s[i] = 0;}
s[st] = 1;
for (i = 0; i < n; i++)
{ mindis = BIG;
for (j = 0; j < n; j++)
{if (s[j] == 0 && distance[j] < mindis)
{ mindis = distance[j];
u = j;
}
}
for (j = 0; j < n; j++)
{if (s[j] == 0)
{dis = distance[u] + cost[u][j];
distance[j] = (distance[j] < dis) ? distance[j] : dis;}}
s[u] = 1;}}
void main()
{ int y, j;
char* vertex[6] = { “V1”,“V2”,“V3”,“V4”,“V5”,“V6” };
int cost[6][6];
for (y = 0; y < 6; y++)
{for (j = 0; j < 6; j++)
{cost[y][j] = BIG;}}
int start, end, weight, i;
{ scanf_s("%d", &weight);
}
printf(“输入定点以及边的权重:”);
for (i = 0; weight != 0; i++)
{scanf_s("%d,%d,%d", &start, &end, &weight);
cost[start - 1][end - 1] = weight;
cost[end - 1][start - 1] = weight;}
int distance[6];
int s, e;
printf(“输入起始节点和最终节点,计算其最小距离(输入的数字不超过6,以逗号分隔):”);
scanf_s("%d,%d", &s, &e);
dijkstra(cost, 6, s - 1, distance);
printf("%s---->%s %d\n", vertex[s - 1], vertex[e - 1], distance[e - 1]);}
实验结果(数据分析与结论)
:
问题讨论:
问:如果使用计算机使用其加法指令,可用其计算3个数之和,那么如果要计算9个数X1,X2,…,X9之和,其至少要执行几次加法指令?
答:
由 (m-1)i=t-1
可得(3-1)i=9-1
得 i=4
综上所述至少要执行 4 次加法指令。
离散数学实验报告四——图的应用相关推荐
- 数据结构实验报告四 图的表示与遍历
一.实验目的 1.掌握图的邻接矩阵和邻接表表示 2.掌握图的深度优先和广度优先搜索方法 3.理解图的应用方法 二.实验内容和要求 1.阅读并运行下面程序,根据输入写出运行结果. #include< ...
- 离散数学实验报告 实验3 欧拉路的确定
离散数学实验报告 实验3 欧拉路的确定 一.实验目的 理解欧拉图的概念,掌握欧拉通/回路的判定方法. 二.实验内容 输入一个无向简单图的邻接矩阵,判定该图是否含有欧拉通/回路.若有,请给出一条欧拉通/ ...
- 离散数学实验报告三——真值表与主范式
离散数学实验报告三--真值表与主范式 一.预习内容: 1.真值表:把变量的各种可能取值与想对应的函数值,用表格的形式一一列举出来,这种表格就叫做真值表 2.命题公式的析(合)取范式 ⑴文字:命题变元及 ...
- 离散数学范式c语言实验报告,离散数学实验报告-利用真值表法求主析取范式及主合取范式的实现...
1.实 验 报 告( / 学年 第 一 学期)课程名称离散数学实验名称利用真值表法求主析取范式及主合取范式的实现实验时间年月日指导单位指导教师学生姓名班级学号学院(系)专 业 实 验 报 告实验名称利 ...
- c 语言差错编码实验结果,C语言程序设计实验报告(四).doc11111111111111111.doc
C语言程序设计实验报告(四).doc11111111111111111 C语言程序设计实验报告 姓 名吴文重学 号52系 别数学系班级2班主讲教师徐时芳指导教师徐时芳实验日期2011-11-8专业10 ...
- matlab m文件的编写,Matlab实验报告(四)M文件的编写.doc
Matlab实验报告(四)M文件的编写.doc 实验目的 学习MATLAB屮的关系运算和逻辑运算,掌握它们的表达形式和川法. 掌握MATLAB中的选择结构和循环结构. 学会用MATLAB进行M文件的编 ...
- Java实验实现一个circle类_Java实验报告四
Java实验报告四 一.题目 1.根据下面的要求实现圆类Circle. 1).圆类Circle的成员变量:radius表示圆的半径. 2).圆类Circle的方法成员: Circle():构造方法,将 ...
- OpenGL南邮计算机图形学实验报告四——用键盘控制物体
OpenGL南邮计算机图形学实验报告四--用键盘控制物体 计算机图形学的新题目要求 OpenGL配置参考: 南邮老前辈wonz哥的OpenGL配置(Shader.h始终不用改).SOIL2 环境配置. ...
- mysql数据库实验报告四
实验报告四 实验目的: 实验内容和主要步骤: 实验中遇到的问题和心得体会: 实验目的: 1.熟练掌握SQL的常用数据更新操作. 2.熟练应用INSERT,UPDATE,DELETE语句. 3.掌握更新 ...
最新文章
- 模糊集的例子(年轻 年老)
- Oauth2.0协议 http://www.php20.com/forum.php?mod=viewthreadtid=28 (出处: 码农之家)
- mysql insert limit_Mysql Limit 调优
- 朗读评价语言集锦_英语老师批改作业时的精彩评语集锦,超实用!
- java dos窗口小工具下载,maxdos 9 3-maxdos工具箱 v9.3 官方版
- ListT转换为DataTable
- 拼多多市值超2100亿美元 黄峥成中国第二大富豪
- ×××数据库导数据ora-01400错误小计
- deepin安装卡在deepin标志界面解决方案
- 小米扫地机器人换了边刷很响_科沃斯除菌地宝N8 PRO VS 小米扫拖一体机,谁更强?...
- Android学习目录
- kafka集群安装配置
- SWFUpload使用指南
- oracle 两表关联查询
- 安全测试-渗透性测试
- 如何建立一个网站(我的5年经验谈)
- codeforces 268E Playlist(数学期望)
- ICP许可证有多重要
- r910服务器增加内存,dellr910服务器硬件手册及安装方法
- 第二讲 单片机C语言之12864液晶显示