当前位置: 首页 > 知识库问答 >
问题:

Dijkstra算法需要什么样的图?C

魏臻
2023-03-14

我想学习更多关于图和Dijkstra算法的知识,所以我有一个函数,可以随机生成加权无向图,保存在如下文件中:

numbers_of_vertices number_of_nodes
node_a node_b distance_from_a_to_b
etc.

然后我运行Dijkstra,输出从节点0到所有其他节点的距离,但有时从节点0到其他节点的距离是0,这意味着从节点0到该节点没有连接<我还有另一个问题,Dijkstra的作品是什么样的?

共有1个答案

洪博涛
2023-03-14

Dijkstra的算法是BFS遍历的变体。不同的是,它每次都使用最小堆遍历到最近的节点。

随机生成加权无向图的函数不应在节点a和节点b的距离为0的情况下创建一对节点。这意味着节点处于相同的精确位置-因此,无需遍历。

Dijkstra的算法适用于任何有起始和结束条件的加权图(只有正权重)。

下面是一段10分钟的视频,解释算法:https://www.youtube.com/watch?v=pVfj6mxhdMw

 类似资料:
  • 我一直试图理解Dijkstra算法的内在原理,以找到加权图的最短路径。 在访问一个顶点后,为什么我们必须将相邻顶点存储到优先级队列而不是普通队列中? 我问上述问题的原因是:我知道使用PriorityQueue,我们可以从队列中获得最大/最小的数字。但是在Dijkstra算法的情况下,我们无论如何都会访问所有的顶点,而不管距离/优先级如何。在这种情况下,为什么我们需要使用具有O(log N)复杂度的

  • 本文向大家介绍Dijkstra的Java算法,包括了Dijkstra的Java算法的使用技巧和注意事项,需要的朋友参考一下 Dijkstra的算法是一种用于在加权图中的节点之间找到最短路径的算法。创建图形时,我们将使用新的addEdge和addDirectedEdge方法向边缘添加权重。让我们看看这个算法是如何工作的- 创建一个距离集合,并将除源节点以外的所有顶点距离设置为无穷大。 当距离为0时,

  • 维基百科说A*在O(E)中运行,其中E是图中的边数。但我的朋友说a*只是Dijkstra算法的一般情况,而Dijkstra算法运行在O(E+V log V)中。所以我很困惑为什么A*比Dijkstra的算法跑得更快。

  • 我们将用于确定最短路径的算法称为“Dijkstra算法”。Dijkstra算法是一种迭代算法,它为我们提供从一个特定起始节点到图中所有其他节点的最短路径。这也类似于广度优先搜索的结果。 为了跟踪从开始节点到每个目的地的总成本,我们将使用顶点类中的 dist 实例变量。 dist实例变量将包含从开始到所讨论的顶点的最小权重路径的当前总权重。该算法对图中的每个顶点重复一次;然而,我们在顶点上迭代的顺序

  • 一、迪杰斯特拉算法介绍 迪杰斯特拉(Dijkstra)算法是典型最短路径算法,用于计算一个节点到其他节点的最短路径。 它的主要特点是以起始点为中心向外层层扩展(广度优先搜索思想),直到扩展到终点为止。 基本思想 ​ 通过Dijkstra计算图G中的最短路径时,需要指定起点s(即从顶点s开始计算)。 ​ 此外,引进两个集合S和U。S的作用是记录已求出最短路径的顶点(以及相应的最短路径长度),而U则是

  • 问题内容: 我正在尝试编写Dijkstra的算法,但是我在努力如何在代码中“说”某些事情而苦苦挣扎。为了可视化,这是我要使用数组表示的列: 因此,将有几个数组,如下面的代码所示: 粗体部分是我要坚持的地方-我正在尝试实现算法的这一部分: 3.对于当前节点,请考虑其所有未访问的邻居并计算其暂定距离。 例如,如果当前节点(A)的距离为6,并且将其与另一个节点(B)相连的边为2,则通过A到B的距离将为6