最小生成树 (MST)2025年4月20日 | 阅读5分钟 在本文中,我们将讨论生成树和最小生成树。但在直接进入生成树之前,让我们先简要了解一下图及其类型。 Graph图可以定义为一组顶点和连接这些顶点的边。图的类型如下:
现在,让我们转向生成树这个主题。 什么是生成树?生成树可以定义为无向连通图的子图。它包含所有顶点以及尽可能少的边。如果遗漏了任何一个顶点,它就不是生成树。生成树是图的一个子集,它没有环,也不能是不连通的。 一个生成树包含 (n-1) 条边,其中 'n' 是顶点(或节点)的数量。生成树的边可能有也可能没有分配权重。从给定的图 G 创建的所有可能的生成树将具有相同数量的顶点,但生成树中的边数将等于给定图中的顶点数减 1。 一个完整的无向图可以有 nn-2 个生成树,其中 n 是图中的顶点数。假设,如果 n = 5,最大可能的生成树数量将是 55-2 = 125。 生成树的应用基本上,生成树用于找到连接图中所有节点的最小路径。生成树的一些常见应用如下:
现在,让我们通过一个例子来理解生成树。 生成树的例子假设图如下: ![]() 如上所述,生成树包含与图相同数量的顶点,上图中的顶点数为 5;因此,生成树将包含 5 个顶点。生成树中的边数将等于图中顶点数减 1。所以,生成树中将有 4 条边。 从上图创建的一些可能的生成树如下所示: ![]() 生成树的属性生成树的一些属性如下:
因此,生成树是连通图 G 的一个子集,而不连通图没有生成树。 最小生成树最小生成树可以定义为边的权重之和最小的生成树。生成树的权重是赋予生成树各边的权重之和。在现实世界中,这个权重可以被视为距离、交通负荷、拥堵或任何随机值。 最小生成树的例子让我们通过一个例子来理解最小生成树。 ![]() 上图的边权重之和为 16。现在,从上图创建的一些可能的生成树如下: ![]() 因此,从上述生成树中为给定加权图选择的最小生成树是: ![]() 最小生成树的应用最小生成树的应用如下:
最小生成树的算法可以使用以下算法从加权图中找到最小生成树:
让我们简要介绍一下上面列出的两种算法。 Prim 算法 - 它是一种贪心算法,从一个空的生成树开始。它用于从图中找到最小生成树。该算法找到边的子集,该子集包含图的每个顶点,使得边的权重之和可以最小化。 要了解更多关于 Prim 算法的信息,您可以点击:Prim 算法 Kruskal 算法 - 该算法也用于为连通加权图找到最小生成树。Kruskal 算法也遵循贪心方法,它在每个阶段找到一个最优解,而不是专注于全局最优解。 要了解更多关于 Prim 算法的信息,您可以点击:Kruskal 算法 好了,这就是本文的全部内容。希望这篇文章对您有帮助和启发。在这里,我们讨论了生成树和最小生成树以及它们的属性、例子和应用。 下一主题Prims 算法 |
在本文中,我们将讨论表示图的方法。图表示的意思是用于将某个图存储在计算机内存中的技术。图是一种数据结构,它包含一组顶点(称为节点)和...
7 分钟阅读
图可以定义为一组顶点和连接这些顶点的边。图可以看作是一个环形树,其中顶点(节点)之间保持任何复杂的关系,而不是父子关系。定义 图 G...
阅读 3 分钟
Kruskal's Algorithm (最小生成树) 在本文中,我们将讨论 Kruskal's 算法。在这里,我们还将看到 Kruskal's 算法的复杂性、工作原理、示例和实现。但在直接进入算法之前,我们应该先了解一些基本术语,如生成树和最小...
5 分钟阅读
(最小生成树) 在本文中,我们将讨论 Prim's 算法。除了算法之外,我们还将看到 Prim's 算法的复杂性、工作原理、示例和实现。在开始主要主题之前,我们应该讨论基本和重要的术语,如生成树和...
阅读 8 分钟
深度优先搜索 (DFS) 算法 在本文中,我们将讨论数据结构中的 DFS 算法。它是一种递归算法,用于搜索树数据结构或图的所有顶点。深度优先搜索 (DFS) 算法从初始节点开始...
7 分钟阅读
广度优先搜索 (BFS) 算法 在本文中,我们将讨论数据结构中的 BFS 算法。广度优先搜索是一种图遍历算法,它从根节点开始遍历图,并探索所有相邻节点。然后,它选择最近的节点...
阅读9分钟
图数据结构用于存储计算所需的数据,以解决许多计算机编程问题。图用于解决实际问题,其中问题区域表示为网络,例如电话网络、电路网络、LinkedIn、Facebook 等。在计算机...
阅读 12 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India