离散数学实验报告四——图的应用

离散数学实验报告四——图的应用

预习内容:

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 ,硬件:电脑

实验原理(方法与与原理分析):

  1. 一个图G是一个序偶〈V(G), E(G)〉, 记为G=〈V(G), E(G)〉。 其中V(G)是非空结点集合, E(G)是边集合, 对E(G)中的每条边, 有V(G)中的结点的有序偶或无序偶与之对应。
  2. 在完全m叉树中, 若树叶数为 t, 分枝点数为 i, 则 (m-1)i=t-1
  3. 设有一棵二叉树, 有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 次加法指令。

  • 0
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

轩辕椿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值