NeuDs 数据结构 图论

这篇具有很好参考价值的文章主要介绍了NeuDs 数据结构 图论。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一.判断题


在一个有权无向图中,若ba的最短路径距离是12,且cb之间存在一条权为2的边,则ca的最短路径距离一定不小于10。T

解析: 我们首先来分析b->a有几种可能,首先是b到a有直接的路径,其次b通过其他的结点到达a点。

如果是b通过c点到达a点我们就可以知道,min{b->c}+min{c->a}>=12;

但是我们知道min{b->c}<=2,因此12<=min{b->c}+min{c->a}<=2+min{c->a};

我们可以知道min{c->a}>=10;
————————————————
版权声明:本文为CSDN博主「你倒是敲代码啊.」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_43446165/article/details/102875160


如果 e 是有权无向图 G 唯一的一条最短边,那么边 e 一定会在该图的最小生成树上。T


Prim 算法是维护一个森林,每一步把两棵树合并成一棵。F

  • prim算法是通过每步添加一条边及其相连的顶点到一棵树,从而逐步生成最小生成树;

  • Kruskal 算法是维护一个森林,每一步把两棵树合并成一棵;


对于带权无向图 G = (V, E),M 是 G 的最小生成树,则 M 中任意两点 V1 到 V2 的路径一定是它们之间的最短路径。F

最小生成树的总权最小,不是其中的任意路径最小;


P 是顶点 S 到 T 的最短路径,如果该图中的所有路径的权值都加 1,P 仍然是 S 到 T 的最短路径。F

假如说最短路径上一共有10条边,而另一条路径虽然比最短路径长,但它只有一条边,如果全加1,就会导致边少的路径成为新的最短路径。


在图G的最小生成树G1中,可能会有某条边的权值超过未选边的权值。T

最小生成树的性质:

1.不唯一

2.边的权值总是唯一的,虽然最小生成树不唯一,但其对应的边的权值之和总是唯一的,而且是最小的。

3.最小生成树的边数为顶点数减1.

最小生成树总体权重值最小,可能会存在某条边的权值超过未选边的权值


最小生成树的KRUSKAL算法是一种贪心法(GREEDY)。T


二.单选题


1.Prim算法中dist数组中dist[i]存放的是( )

A.进入到顶点i的边上的最小权值

B.从顶点i出发的边上的最小权值

C.从起点到顶点i的最短路径长度

D.从顶点i到起点的最短路径长度

Prim算法

(2条消息) 最小生成树——Prim算法(详细图解)_skynesser的博客-CSDN博客


2.我们用一个有向图来表示航空公司所有航班的航线。下列哪种算法最适合解决找给定两城市间最经济的飞行路线问题?

A.深度优先搜索

B.Dijkstra算法

C.拓扑排序算法

D.Kruskal算法

深度优先/广度优先搜索——迷宫探索算法(2条消息) DFS深度优先搜索---最短路径问题全攻略,图文解析与算法实例

广度优先搜索(BFS)算法详解 (biancheng.net)


单源最短路径——Dijkstra算法

(2条消息) Dijkstra算法图文详解_black-hole6的博客-CSDN博客


最短路径算法全套(floyed+dijstra+Bellman+SPFA)_哔哩哔哩_bilibili


每对顶点最短路径——Floyd算法

Floyd算法详解 通俗易懂 - 知乎 (zhihu.com)


最短路径算法全套(floyed+dijstra+Bellman+SPFA)_哔哩哔哩_bilibili


拓扑排序算法

(2条消息) 拓扑排序及算法实现_拓扑排序算法_ShyTan的博客-CSDN博客


3.数据结构中Dijkstra算法用来解决哪个问题?

A.最短路径

B.字符串匹配

C.关键路径

D.拓扑排序


4.试利用Floyed算法,求下图所示有向图的各对顶点之间的最短路径。下列选项哪个给出了正确的最短路径长度矩阵和最短路径矩阵?

NeuDs 数据结构 图论

A.

NeuDs 数据结构 图论

B.

NeuDs 数据结构 图论

C.

NeuDs 数据结构 图论

D.

NeuDs 数据结构 图论

 Floyed算法
 

最短路径算法全套(floyed+dijstra+Bellman+SPFA)_哔哩哔哩_bilibili

(2条消息) 【无标题】最短路径问题_试利用floyed算法,求下图所示有向图的各对顶点之间的最短路径。下列选项哪个给出_cuisl37186486的博客-CSDN博客


5.使用 Dijkstra 算法求下图中从顶点 1 到其余各顶点的最短路径,将当前找到的从顶点 1 到顶点 2、3、4、5 的最短路径长度保存在数组 dist 中,求出第二条最短路径后,dist 中的内容更新为:

NeuDs 数据结构 图论

A.26、3、14、6

B.21、3、14、6

C.15、3、14、6

D.25、3、14、6

NeuDs 数据结构 图论

 引用自:(2条消息) PTA算法 图练习题改错_无向图的邻接矩阵可用一维数组存储。_浮而不实的博客-CSDN博客


6. 给出如下图所示的具有 7 个结点的网 G,采用Prim算法,从4号结点开始,给出该网的最小生成树。下列哪个选项给出了正确的树结点收集顺序?

NeuDs 数据结构 图论

A.4526301

B.4563201

C.4501362

D.4561023


 7.以下哪个不是给定无向带权图的最小生成树? A

NeuDs 数据结构 图论

A.

NeuDs 数据结构 图论

B.

NeuDs 数据结构 图论

C.

NeuDs 数据结构 图论

D.

NeuDs 数据结构 图论


 8.Prim算法通过( )方法保证不构成回路

A.BFS

B.并查集

C.DFS

D.标记数组


9.若要求在找到从S到其他顶点最短路的同时,还给出不同的最短路的条数,我们可以将Dijkstra算法略作修改,增加一个count[]数组:count[V]记录S到顶点V的最短路径有多少条。则count[V]应该被初始化为:

A.对所有顶点都有count[V]=0

B.count[S]=1; 对于其他顶点V则令count[V]=0

C.对所有顶点都有count[V]=1

D.count[S]=0; 对于其他顶点V则令count[V]=1


10.已知无向图 G 如下所示,使用克鲁斯卡尔(Kruskal)算法求图 G 的最小生成树,加入到最小生成树中的边依次是:

NeuDs 数据结构 图论

A.(a,e), (c,e), (b,e), (b,f), (b,d)

B.(b,f), (b,d), (a,e), (c,e), (b,e)

C.(a,e), (b,e), (c,e), (b,d), (b,f)

D.(b,f), (b,d), (b,e), (a,e), (c,e)


11.使用迪杰斯特拉(Dijkstra)算法求下图中从顶点1到其他各顶点的最短路径,依次得到的各最短路径的目标顶点是:

NeuDs 数据结构 图论

A.2, 4, 3, 6, 5, 7

B.2, 3, 4, 5, 6, 7

C.6, 2, 5, 7, 3, 4

D.6, 7, 5, 3, 2, 4


12.试利用 Dijkstra 算法求下图中从顶点 A 到其他顶点的最短距离及对应的路径。下列那个序列给出了可能的顶点收集顺序?

NeuDs 数据结构 图论

A.ACFEDBG

B.ACDBFEG

C.ABCDEFG

D.ACDGFBE


13.给定有权无向图的邻接矩阵如下,其最小生成树的总权重是:

NeuDs 数据结构 图论

A.17

B.18

C.23

D.24


三.填空题


下列代码的功能是使用Prim算法求出无向图的最小生成树权值总和,请补全。

给出的图用邻接矩阵存储。若两顶点之间没有直接路径,则对应权值为 INF,且题目保证 INF 值足够大;若找不到距离最短的顶点或者无法求出权值总和,则返回 ERROR

 (2条消息) 下列代码的功能是使用Prim算法求出无向图的最小生成树权值总和,请补全。_白术_竹苓的博客-CSDN博客文章来源地址https://www.toymoban.com/news/detail-479230.html

typedef int WeightType;
typedef int VertexType;
typedef struct {
    int Nv;
    WeightType G[MAX_GRAPH_SIZE][MAX_GRAPH_SIZE];
} GNode, * MGraph;

VertexType FindMinDist(MGraph Graph, WeightType dist[]) {
    VertexType MinV = -1, V;
    WeightType MinDist = INF;
    for (V = 0; V < Graph->Nv; V++) {
        if (dist[V] != 0 && dist[V] < MinDist) {
            MinDist = dist[V];
            MinV = V;
        }
    }
    if (MinDist < INF) {
        return MinV;
    }
    else {
        return ERROR;
    }
}

int Prim(MGraph Graph) {
    int dist[MAX_GRAPH_SIZE];
    int TotalWeight = 0, VCount = 0;
    VertexType  V, W;
    for (V = 0; V < Graph->Nv; V++) {
        dist[V] = Graph->G[0][V];
    }
    dist[0] = 0;
    VCount++;
    while (1) {
        VertexType MinV;
        if ((MinV = FindMinDist(Graph, dist)) == ERROR) {
            break;
        }
        TotalWeight += dist[MinV];
        dist[MinV] = INF;
        VCount++;
        for (W = 0; W < Graph->Nv; W++) {
            if (dist[W] != 0 && dist[W] > Graph->G[MinV][W])
            {
                dist[W] = Graph->G[MinV][W];
            }
        }
    }
    if(!TotalWeight)
    {
        return ERROR;
    }
    else {	
        return TotalWeight;
    }
}

到了这里,关于NeuDs 数据结构 图论的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【数据结构与算法】图论及其相关算法

    线性表局限于一个直接前驱和一个直接后继的关系,树也只能有一个直接前驱也就是父节点,当我们需要表示多对多的关系时, 这里我们就用到了图。 图是一种数据结构,其中结点可以具有零个或多个相邻元素。两个结点之间的连接称为边。 结点也可以称为顶点。如图:

    2024年02月09日
    浏览(40)
  • 期末复习(3)C语言数据结构_图论基础

    目录 导言:  定义: 一、边和度的概念: 1.1 无向图中的边和度: 1.2 有向图中的边和度: 1.3 度序列和握手定理: 二、弧和度的关系: 2.1 有向图中的弧和度: 2.2 度序列和握手定理在有向图中的应用: 2.3 邻接矩阵和邻接表在有向图中的表示: 2.4 强连通图: 三、完全图:

    2024年02月03日
    浏览(43)
  • 数据结构的应用场景:如社交网络、路由算法、图论、网络协议等

    作者:禅与计算机程序设计艺术 数据结构(Data Structure)是计算机科学中存储、组织、管理数据的方式,主要用于解决信息检索、处理和运算时的效率及空间占用问题。它是指数据元素(elements)之间的关系、顺序和逻辑结构,以及相互作用的算法。数据结构通常采用抽象数据类

    2024年02月14日
    浏览(47)
  • 数据结构学习记录——图-最短路径问题(无权图单源最短路径算法、有权图单源最短路径算法、多源最短路径算法、Dijkstra(迪杰斯特拉)算法、Floyd算法)

    目录 问题分类  无权图单源最短路径算法 思路 伪代码 时间复杂度 代码实现(C语言) 有权图单源最短路径算法 Dijkstra(迪杰斯特拉)算法 伪代码  时间复杂度  代码实现(C语言) 多源最短路径算法 两种方法 Floyd算法 代码实现(C语言) 最短路径问题的抽象 在网络中,求

    2024年02月08日
    浏览(59)
  • 7-1 回文判断(数据结构) PTA C语言

    回文是指正读反读均相同的字符序列,如“abba”和“abdba”均是回文,但“good”不是回文。编写一个程序,使用栈判定给定的字符序列是否为回文。 若用C++,可借助STL的容器实现。 输入格式: 输入待判断的字符序列,按回车键结束,字符序列长度20。 输出格式: 若字符序列是

    2024年02月02日
    浏览(47)
  • 数据结构之循环队列队空队满判断

    目录 一、指针类别 二、循环队列结构图  三、循环队列各种情况的判断 1. 空队列 2.队列初始化  3.队满条件  四、例子详解  五、出队、入队指针变化情况 在队列的题目中,队头指针(front)和队尾指针(rear)有两种指示方法。 (1) 队头指针 front     ①指向队头元素     ②指

    2024年02月02日
    浏览(37)
  • 数据结构:栈(Stack)的各种操作(入栈,出栈,判断栈非空,判断栈已满,附源码)

    前言: 在前面的文章中,我们讲解了 顺序表,单链表,双向链表 。而我们今天要分享的栈则是基于之前的数据结构上搭建的,但是相较于顺序表和链表来说,栈的实现就非常简单了。 目录 一.栈(Stack)的概念 二.栈的数据结构 三.栈的实现 判断栈已满 判断栈非空 入栈push 出栈

    2024年02月05日
    浏览(38)
  • 【C++数据结构 | 图速通】10分钟掌握邻接矩阵 & 邻接表 | 快速掌握图论基础 | 快速上手抽象数据类型图

    by.Qin3Yu 请注意:严格来说,图不是一种数据结构,而是一种抽象数据类型。但为了保证知识点之间的相关性,也将其列入数据结构专栏。 本文需要读者掌握顺序表和单链表的操作基础,若需学习,可参阅我的往期文章: 【C++数据结构 | 顺序表速通】使用顺序表完成简单的成

    2024年02月05日
    浏览(45)
  • lua变量、数据类型、if判断条件和数据结构table以及【lua 函数】

    Lua 变量有三种类型: 全局变量 和 局部变量 和 表中的域 。 ▪ 全局变量:默认情况下,Lua中所有的变量都是全局变量。 ▪ 局部变量:使用 local 显式声明在函数内的变量,以及函数的参数,都是局部变量。在函数外即使用 local 去声明,它的作用域也是当前的整个文件,这相

    2023年04月19日
    浏览(70)
  • 【C语言/数据结构】二叉树(层序遍历|判断完全二叉树|性质)

     🌈个人主页: 秦jh__https://blog.csdn.net/qinjh_?spm=1010.2135.3001.5343 🔥 系列专栏: 《数据结构》https://blog.csdn.net/qinjh_/category_12536791.html?spm=1001.2014.3001.5482 ​ ​​​ 目录  层序遍历  层序遍历函数实现 判断二叉树是否为完全二叉树 二叉树性质        💬 hello! 各位铁子们大

    2024年01月24日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包