Kruskal's 算法 (最小生成树)2025年4月24日 | 阅读 4 分钟 在本文中,我们将讨论 Kruskal's 算法。在此,我们还将讨论 Kruskal's 算法的复杂性、工作原理、示例和实现。 但在直接进入算法之前,我们应该先理解一些基本术语,如生成树和最小生成树。 生成树 - 生成树是无向连通图的子图。 最小生成树 - 最小生成树可以定义为所有边权重之和最小的生成树。生成树的权重是给生成树的边赋予的权重的总和。 现在,让我们开始讨论主要话题。 Kruskal's 算法 用于查找连通加权图的最小生成树。该算法的主要目标是找到一个边的子集,用它我们可以遍历图中的所有顶点。它遵循贪心方法,在每个阶段都寻找最优解,而不是关注全局最优。 Kruskal's 算法是如何工作的?在 Kruskal's 算法中,我们从权重最低的边开始,并不断添加边,直到达到目标。实现 Kruskal's 算法的步骤如下:
Kruskal's 算法的应用包括:
Kruskal's 算法示例现在,让我们通过一个例子来了解 Kruskal's 算法的工作原理。通过示例更容易理解 Kruskal's 算法。 假设一个加权图是 - ![]() 上述图的边权重如下表所示:
现在,将上面给出的边按权重升序排序。
现在,让我们开始构建最小生成树。 步骤 1 - 首先,将权重为 1 的边 AB 添加到 MST 中。 ![]() 步骤 2 - 将权重为 2 的边 DE 添加到 MST 中,因为它没有形成环。 ![]() 步骤 3 - 将权重为 3 的边 BC 添加到 MST 中,因为它没有形成任何环路。 ![]() 步骤 4 - 现在,选择权重为 4 的边 CD 添加到 MST 中,因为它没有形成环。 ![]() 步骤 5 - 之后,选择权重为 5 的边 AE。包含此边将形成环,因此将其丢弃。 步骤 6 - 选择权重为 7 的边 AC。包含此边将形成环,因此将其丢弃。 步骤 7 - 选择权重为 10 的边 AD。包含此边也将形成环,因此将其丢弃。 因此,通过 Kruskal's 算法从给定的加权图中获得的最终最小生成树是 - ![]() MST 的成本为 = AB + DE + BC + CD = 1 + 2 + 3 + 4 = 10。 现在,上图中的边数等于顶点数减一。所以,算法在这里停止。 算法Kruskal's 算法的复杂性现在,让我们看一下 Kruskal's 算法的时间复杂度。
Kruskal's 算法的实现现在,让我们看一下 kruskal's 算法的实现。 程序:编写一个 C++ 程序来实现 kruskal's 算法。 输出 ![]() 所以,这就是关于本文的全部内容。希望本文能对您有所帮助并提供信息。 下一主题数据结构中的图类型 |
图可以定义为一组顶点和连接这些顶点的边。图可以看作是一个环形树,其中顶点(节点)之间保持任何复杂的关系,而不是父子关系。定义 图 G...
阅读 3 分钟
图数据结构用于存储计算所需的数据,以解决许多计算机编程问题。图用于解决实际问题,其中问题区域表示为网络,例如电话网络、电路网络、LinkedIn、Facebook 等。在计算机...
阅读 12 分钟
在本文中,我们将讨论表示图的方法。图表示的意思是用于将某个图存储在计算机内存中的技术。图是一种数据结构,它包含一组顶点(称为节点)和...
7 分钟阅读
深度优先搜索 (DFS) 算法 在本文中,我们将讨论数据结构中的 DFS 算法。它是一种递归算法,用于搜索树数据结构或图的所有顶点。深度优先搜索 (DFS) 算法从初始节点开始...
7 分钟阅读
(最小生成树) 在本文中,我们将讨论 Prim's 算法。除了算法之外,我们还将看到 Prim's 算法的复杂性、工作原理、示例和实现。在开始主要主题之前,我们应该讨论基本和重要的术语,如生成树和...
阅读 8 分钟
广度优先搜索 (BFS) 算法 在本文中,我们将讨论数据结构中的 BFS 算法。广度优先搜索是一种图遍历算法,它从根节点开始遍历图,并探索所有相邻节点。然后,它选择最近的节点...
阅读9分钟
(MST) 在本文中,我们将讨论生成树和最小生成树。但在直接进入生成树之前,让我们先简要介绍一下图及其类型。图图可以定义为一组顶点和...
阅读 4 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India