💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
# 生成树和最小生成树 > 原文: [https://www.programiz.com/dsa/spanning-tree-and-minimum-spanning-tree](https://www.programiz.com/dsa/spanning-tree-and-minimum-spanning-tree) #### 在本教程中,您将通过示例和图形学习有关生成树和最小生成树的信息。 在学习生成树之前,我们需要了解两个图:无向图和连接图。 **无向图**是其中边没有指向任何方向的图(即,边是双向的)。 ![Undirected Graph](https://img.kancloud.cn/41/7f/417f9fa613bab69f3bb844499704870b_362x362.png "Undirected Graph") 无向图 **连通图**是其中始终存在从顶点到任何其他顶点的路径的图。 ![Connected Graph](https://img.kancloud.cn/36/6d/366d4b14ba04a4def7b0094b18e92445_362x362.png "Connected Graph") 连通图 * * * ## 生成树 生成树是无向图和连通图的子图,其中包括图的所有顶点,这些顶点的边数最少。 如果缺少顶点,则它不是生成树。 边可以分配权重,也可以不分配权重。 可以从完整图形创建的具有`n`顶点的生成树总数等于`n^(n-2)`。 如果我们有`n = 4`,则最大可能的生成树数等于`4^(4-2) = 16`。 因此,可以从具有 4 个顶点的完整图形中形成 16 个生成树。 * * * ## 生成树的示例 让我们通过以下示例了解生成树: 让原始图为: ![initial tree](https://img.kancloud.cn/ef/d1/efd162dbedd3643ca1536eacf91d83dc_362x362.png "normal graph") 普通的图 可以从上图创建的一些可能的生成树是: ![spanning tree](https://img.kancloud.cn/bf/dc/bfdc35ebda2d24aac7510685acf9c441_362x362.png "example of spanning tree") 一棵生成树 ![spanning tree](https://img.kancloud.cn/9e/a9/9ea9455b007c0a49a2ea00b4af419500_362x362.png "example of spanning tree") 一棵生成树 ![spanning tree](https://img.kancloud.cn/b7/d0/b7d0035c3726f3b709e01ff711f6e55c_362x362.png "example of spanning tree") 一棵生成树 ![spanning tree](https://img.kancloud.cn/df/b2/dfb270c9bfb3bd05fca965649e66a4b2_362x362.png "example of spanning tree") 一棵生成树 ![spanning tree](https://img.kancloud.cn/58/be/58be5304793173df5fbd31a1f027d416_362x362.png "example of spanning tree") 一棵生成树 ![spanning tree](https://img.kancloud.cn/2f/1a/2f1a09458ac3097b8b09e5f6cfb8854f_362x362.png "example of spanning tree") 一棵生成树 * * * ## 最小生成树 最小生成树是其中边的权重之和尽可能最小的生成树。 * * * ## 生成树的示例 让我们借助下面的示例了解上面的定义。 初始图形为: ![initial graph](https://img.kancloud.cn/47/f9/47f9ae6478a53e640d0e206cdfe4dfb9_362x362.png "Initial weighted graph") 带权图 上图可能的生成树是: ![minimum spanning tree (mst)](https://img.kancloud.cn/0e/3c/0e3c2cd031e67dab6fb6bf6219dda949_362x440.png "minimum spanning tree (mst)") 最小生成树 - 1 ![minimum spanning tree (mst)](https://img.kancloud.cn/e7/53/e753ae99c0c92aefd6eedc43ad8196c4_362x440.png "minimum spanning tree (mst)") 最小生成树- 2 ![minimum spanning tree (mst)](https://img.kancloud.cn/db/9c/db9c7a6c6e857a9be4e115746d199b9b_362x440.png "minimum spanning tree (mst)") 最小生成树 - 3 ![minimum spanning tree (mst)](https://img.kancloud.cn/d9/48/d94860467d495850261c208ea9545be9_362x440.png "minimum spanning tree (mst)") 最小生成树 - 4 上述生成树中的最小生成树为: ![minimum spanning tree (mst)](https://img.kancloud.cn/d9/48/d94860467d495850261c208ea9545be9_362x440.png "minimum spanning tree (mst)") 最小生成树 使用以下算法可找到图中的最小生成树: 1. [Prim 的算法](/dsa/prim-algorithm) 2. [Kruskal 算法](/dsa/kruskal-algorithm) * * * ## 生成树应用 * 计算机网络路由协议 * 聚类分析 * 民用网络规划 * * * ## 最小生成树应用 * 在地图中查找路径 * 设计诸如电信网络,供水网络和电网的网络。