几种求解最小生成树的算法 (论文)

合集下载

最小生成树及算法

最小生成树及算法

|S|=n-1, 说明是树 最后S={a1, a2, a3,… ,an-1}
B. 破圈法
算法2 步骤如下: (1) 从图G中任选一棵树T1. (2) 加上一条弦e1,T1+e1中 生成一个圈. 去掉此圈中最大权边,得到新树T2, 以T2代T1,重复(2)再检查剩余的弦,直到全部弦 检查完毕为止.
例 n个城市,各城市之间的距离如下表(距离为 ∞,表示两个城市之间没有直接到达的线路)。 从一个城市出发走遍各个城市,如何选择最优的 旅行路线.
性质 任何一棵树至少有两片树叶。 证明 设树T=(V,E),结点数为v,因T是连通的,因 此,树中每个结点vi,有deg(vi)1,且 deg(vi)=2(v-1)=2v-2. 若T中结点度数都大于2,则 deg(vi) 2v,矛盾。 若T中只有一个结点度数为1,则 deg(vi) 2(v-1)+1=2v-1 矛盾。
4 3
v5 3 v6
3.5 生成树的计数
1、一些概念 • • ① 设 G 是一个连通图。 T , T 分别是 G 的两个生成树,如果 E (T ) E (T ) ,则认为 T , T 是 G 的两个不同的生成树。 G 的 不同的生成树个数用 (G) 表示。 如:
v1 v3 v2 v3 v1 v2 v3 v1 v2 v3 v1 v2
证明:⑴⑵ 当 n=2时, e=1, 显然 e=n-1. 假设n=k-1时命题成立,当n=k时,因G无圈、连 通,则至少有一条边(u,v),deg(u)=1,删去u,得到 连通无圈的图G1, G1的边数e1,结点数n1满足: e1=n1-1= k-2 将u,边(u,v)加到 G1中,得到T,且 e=n-1.
( K3 ) 3。 则:
② G-e: 从G中去掉边e后所得的图。

一种求解最小生成树问题的算法

一种求解最小生成树问题的算法

c m pe t fteag rtm ea ay e . t p l steag rtm otehg wa y tm ngn ei gc nsrcinpln, er s l r v h aiiy o lxi o lo h a n lz d I pi lo i y h i r a e h h t h ih y s se e i e rn o t t a t e ut p o et ev l t u o h s d

要: 基于节 点合并和反向追踪的思想 ,提出一种求解最小 生成树 问题 的算法 。该算法依据 网络邻接矩 阵,将与源 节点相邻 的节点逐步
合并 为新的源 节点 , 网络中的所有节点合树 ,对算法正确性与 算法复杂 度进 使 行分析 。将该算法应用于某高速公路 网工程建设 方案,结果证 明了算法的有效性。
o h e ag rt ft l o hm. i
[ e o d lMi m m S an g r ( T ; o e o b ao ;ee e i c o ai ; o t o t bl r y aj e t a i K yw r s n u n i e MS )n m i t n r r r t n c g f n i e a a; d c n m tx i p nT e d c ni v s d ei t n r p n l r r a a r D : 03 6 0 s . 0 — 2 . 1 . . 2 OI 1 . 9 .s 1 03 8 0 1 3 8 9 in 0 4 2 20
3 GeeaAr met e at n layR pee tt eO c inh i e in B oi 2 0 6 Chn ) . nrl ma n pr D met i r e rsna v f enTa su go , aj7 10 , ia Mit i i i R

量子遗传算法求解度约束最小生成树

量子遗传算法求解度约束最小生成树
可行 解 ; 与 深度 优 先搜 索的 思想结合 , 证得 到树 的连 通 性 ; 并 保 通过 数值 试 验 验证 新算 法 的 可行 性 , 与其 他 算法进行 比较 , 并 取得 了 良好 的效果 。 关键词 : 小 生成树 ; 子遗传 算法 ; 最 量 网络优 化 ;
中 图法分 类 号:P 0 . T 3 1 文 献标识 码 : 6 A 文章 编号 :6 2 2 6 (0 0 0 — 0 8 0 17 — 8 8 2 1 )6 0 3 — 5
( ) 度 约束 , 1为 约束 条 件 ( ) ( ) 2 ,3 保证 了所得 到 的是一 棵 生成树 。
22量 子遗 传 算 法 .
遗 传算 法 (e e ca oi m, A) 模拟 生 物进 化过 程 中优 胜劣 汰 规则 与 群体 内部 染 色体信 息 交换 gn t l r h G 是 i g t
mn =∑ ∑ i Z 鳓
i =l = 1
() 1
() 2
≤}f1 ̄ CV s S _ , S ,≠
i dE
∑ ∑ : 一 n1
i1 j l Leabharlann = () 3 ∈(, , , ∈V 0 1) iJ
这里, 1边(√ 在最优树中, , ) 产0为其他。 变量 II s为集合S中所含图 G的接点个数。 约束条件
有 成熟 的算法 进行 有 效求解 。 圆但如果 对生 成树 中的各 顶点 度数(er) d ge再加 上一 定 的限制 。 能超 过 即不 预 先 给定 的数值 , 问题 的性 质 将变 得截 然不 同 。在解 决不 同研 究领 域 中的实 际 问题 时 , 则 由于 要求 不 同 , 往会 对最 小 生成 树 问题 产 生许 多 限制 , 往 节点 带 有 度约束 的最小 生 成树 就 是其 中一类重 要 的度 约

求最小生成树问题,常用的方法

求最小生成树问题,常用的方法

求最小生成树问题,常用的方法最小生成树(Minimum Spanning Tree)问题是一个经典的图论问题,其涉及到给定一个加权无向图,求其最小的生成树。

在实际问题中,求解最小生成树问题非常重要。

例如,最小生成树问题被广泛应用于网络设计、电路布线、机器学习等众多领域。

本文将介绍求解最小生成树问题的常用方法,包括Kruskal算法、Prim算法和Boruvka算法。

我们将详细介绍这些算法的原理和步骤,并给出各种算法的优缺点和适用情况。

1. Kruskal算法Kruskal算法是一种基于贪心策略的算法。

它首先将所有边按照权重大小排序,然后从小到大遍历边。

对于每个边,如果它连接了两个不同的连通块,则将这两个连通块合并成一个。

重复这个过程,直到所有的边都被考虑完。

最终的联通块就构成了最小生成树。

Kruskal算法具有简单、高效、容易实现的特点。

它的时间复杂度为O(E log E),其中E为边的数量。

Kruskal 算法的实现需要使用并查集。

Kruskal算法的优点是它是一种局部最优的策略,因此它能够在众多情况下得到最优解。

另外,它能够处理稀疏图和稠密图,因为它不需要全局访问图的结构。

2. Prim算法Prim算法也是一种基于贪心策略的算法。

它从一个任意的节点开始,不断加入与已经加入的节点相邻的最短边,直到所有节点都被加入。

这个过程类似于将一个连通块逐渐扩张为最小生成树。

Prim算法的时间复杂度为O(E log V),其中E为边的数量,V为节点的数量。

Prim算法的实现需要使用堆数据结构来进行边的最短距离的管理。

Prim算法的优点是它比Kruskal算法更加容易实现和理解。

另外,Prim算法能够处理不连通图,因为它从任意一个节点开始加入边。

此外,Prim算法也能够处理含有负权重的边的图。

3. Boruvka算法Boruvka算法是一种基于分治策略的算法。

它首先将所有的节点看作单独的连通块,然后每个连通块都选择当前权重最小的边加入。

用破圈法求最小生成树的算法

用破圈法求最小生成树的算法

用破圈法求最小生成树的算法
求最小生成树是搜索树上每条边将权值加起来最小的那棵树,也就是要
求在给定顶点的一组边的条件下求出最小的生成树,一般采用贪心算法来求解。

其中最常用的算法就是破圈法。

破圈法实质上是 Prim 算法的改进,是一种贪心算法。

它的基本思想是:试着将边依次加入最小生成树中,当已生成的最小生成树中的边形成了一个
环的时候,其中的边中权值最大的一条被舍弃,存在于两个不同的顶点间。

破圈法求最小生成树算法基本步骤如下:
1.初始化最小生成树,构造一个空集合;
2.从贴源点开始,找出所有连接源点的边中权值最小的增加一条边到空集合中;
3.重复上述步骤,在剩余边权中选出最小值,增加一条边,并保证了加入当
前边后不产生环;
4.当把所有边都添加到集合中,即得到最小生成树;
破圈法的复杂度是O(n^2),由于它具有简单的求解过程和易于实现的特性,因而得到广泛的应用。

破圈法非常适合在网络中采用,它可以容易的获
得一条路径的最小权值生成树从而实现网络的最佳路径匹配。

破圈法可以证明:当每一条边都属于给定顶点集合时,最小生成树一定
存在。

因此它在可以用来求解最小生成树的问题中是非常有效的。

最小生成树及克鲁斯卡尔算法

最小生成树及克鲁斯卡尔算法

最小生成树及克鲁斯卡尔算法
最小生成树是指在一个连通的无向图中,找到一棵生成树,使得所有
边的权值之和最小。

克鲁斯卡尔算法是一种用来求解最小生成树的贪
心算法。

克鲁斯卡尔算法的基本思想是将所有边按照权值从小到大排序,然后
依次加入生成树中,如果加入某条边会形成环,则不加入该边。

直到
生成树中有n-1条边为止,其中n为图中节点的个数。

克鲁斯卡尔算法的时间复杂度为O(ElogE),其中E为边的数量。

因为需要对所有边进行排序,所以时间复杂度与边的数量有关。

最小生成树的应用非常广泛,例如在网络设计、电力传输、交通规划
等领域都有重要的应用。

在网络设计中,最小生成树可以用来构建网
络拓扑结构,使得网络的总成本最小。

在电力传输中,最小生成树可
以用来确定输电线路的布局,使得电力传输的成本最小。

在交通规划中,最小生成树可以用来确定道路的布局,使得交通运输的成本最小。

除了克鲁斯卡尔算法,还有其他求解最小生成树的算法,例如Prim算法、Boruvka算法等。

这些算法的基本思想都是贪心算法,但具体实
现方式有所不同。

总之,最小生成树是图论中的一个重要问题,克鲁斯卡尔算法是一种常用的求解最小生成树的算法。

在实际应用中,需要根据具体情况选择合适的算法,并结合实际需求进行优化。

k-means论文

k-means论文

对k-means聚类算法的改进研究摘要:本文针对k-means算法对初值的依赖性,基于最小生成树原理选取聚类中心进行聚类。

根据寻找最优初值的思想提出了一种改进的k-means算法,将最小生成树的构造算法之一的卡斯克鲁尔(Kruskal Algorithm)算法以及贪心算法(Greedy Algorithm)的思想引入到k-means算法中。

关键字:k-means算法最小生成树贪心策略一、算法的改进思路的形成无论是原始的k-means算法还是加入了聚类准则函数的k-means算法,都有一个共同的特点,即采用两阶段反复循环过程,算法结束的条件是不再有数据元素被重新分配:1)指定聚类,即指定数据x i到某一个聚类,使得它与这个聚类中心的距离比它到其它聚类中心的距离要近;2)修改聚类中心。

k-means算法中急需解决的问题主要有三个:(l)在k-means算法中,k是事先给定的,这个k值的选定是很难估计的。

很多时候,我们事先并不知道给定的数据集应分成多少类最合适,这也是k-means 算法的一个不足。

有的算法是通过类的自动合并和分裂,得到较为合理的类型数目k,例如ISODALA算法。

关于k-means算法中聚类数目k值的确定,有些根据方差分析理论,应用混合F统计量来确定最佳分类数,并应用了模糊划分墒来验证最佳分类数的正确性。

在文献[26]中,使用了一种结合全协方差矩阵的RPCL算法,并逐步删除那些只包含少量训练数据的类。

而其中使用的是一种称为次胜者受罚的竞争学习规则,来自动决定类的适当数目。

它的思想是:对每个输入而言,不仅竞争获胜单元的权值被修正以适应输入值,而且对次胜单元采用惩罚的方法,使之远离输入值。

(2)在k-means算法中常采用误差平方和准则函数作为聚类准则函数,考察误差平方和准则函数发现:如果各类之间区别明显且数据分布稠密,则误差平方和准则函数比较有效;但是如果各类的形状和大小差别很大,为使误差平方和的值达到最小,有可能出现将大的聚类分割的现象。

克鲁斯卡尔算法求最小生成树完整代码

克鲁斯卡尔算法求最小生成树完整代码

克鲁斯卡尔算法是一种用来求解最小生成树(Minimum Spanning Tree)的经典算法,它采用了贪心策略,能够高效地找到图中的最小生成树。

下面将为大家介绍克鲁斯卡尔算法的完整代码,希望对大家有所帮助。

1. 算法思路克鲁斯卡尔算法的基本思路是:首先将图中的所有边按照权值进行排序,然后从小到大依次考虑每条边,如果加入该边不会构成环,则将其加入最小生成树中。

在算法执行过程中,我们需要使用并查集来判断是否会构成环。

2. 代码实现接下来,我们将给出克鲁斯卡尔算法的完整代码,代码使用C++语言编写,具体如下:```cpp#include <iostream>#include <vector>#include <algorithm>using namespace std;// 定义图的边struct Edge {int u, v, weight;Edge(int u, int v, int weight) : u(u), v(v), weight(weight) {} };// 定义并查集class UnionFind {private:vector<int> parent;public:UnionFind(int n) {parent.resize(n);for (int i = 0; i < n; i++) {parent[i] = i;}}int find(int x) {if (parent[x] != x) {parent[x] = find(parent[x]);}return parent[x];}void Union(int x, int y) {int root_x = find(x);int root_y = find(y);if (root_x != root_y) {parent[root_x] = root_y;}}};// 定义比较函数用于排序bool cmp(const Edge a, const Edge b) {return a.weight < b.weight;}// 克鲁斯卡尔算法vector<Edge> kruskal(vector<Edge> edges, int n) { // 先对边进行排序sort(edges.begin(), edges.end(), cmp);// 初始化最小生成树的边集vector<Edge> res;UnionFind uf(n);for (int i = 0; i < edges.size(); i++) {int u = edges[i].u, v = edges[i].v, weight = edges[i].weight; // 判断是否构成环if (uf.find(u) != uf.find(v)) {uf.Union(u, v);res.push_back(edges[i]);}}return res;}// 测试函数int m本人n() {vector<Edge> edges;edges.push_back(Edge(0, 1, 4));edges.push_back(Edge(0, 7, 8));edges.push_back(Edge(1, 2, 8));edges.push_back(Edge(1, 7, 11));edges.push_back(Edge(2, 3, 7));edges.push_back(Edge(2, 5, 4));edges.push_back(Edge(2, 8, 2));edges.push_back(Edge(3, 4, 9));edges.push_back(Edge(3, 5, 14));edges.push_back(Edge(4, 5, 10));edges.push_back(Edge(5, 6, 2));edges.push_back(Edge(6, 7, 1));edges.push_back(Edge(6, 8, 6));edges.push_back(Edge(7, 8, 7));vector<Edge> res = kruskal(edges, 9);for (int i = 0; i < res.size(); i++) {cout << res[i].u << " " << res[i].v << " " << res[i].weight << endl;}return 0;}```3. 算法实例上述代码实现了克鲁斯卡尔算法,并对给定的图进行了最小生成树的求解。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
n 几种求解最小生成树的算法及其应用
孔祥男
(青海师范大学数学系,青海 810000) 摘要:本文讲述了几种求解最小生成树的算法(Kruskal 算法、Prim 算法、破圈法和 DNA 算法),重点介绍了一种求解最小生成树问题的 DNA 算法,进而比较这几种算法的优 缺点以及介绍最小生成树的几个实际应用。 关键字:最小生成树 Kruskal 算法 Prim 算法 破圈法 DNA 算法
4 key[r] ← 0 5 Q ←VG 6 while Q≠ ∅ 7 8 9 10 11 4.2 Prim 算法的复杂性 下面简单分析一下 Prim 算法的复杂性。第一次执行第 2 步是 n-2 次比较, 第二次为 n-3 次比较,第三次是 n-4 比较,„,因此总的比较为2 n − 2 (n − 1)次。在执行第 3 步时,第一次是 n-2 次比较,第二次 n-3 次比较,„,因此 总的比较为(n-2)(n-1)次。由此算法的总计算量约为 O n2 .
1 引言 最小生成树是网络最优化中一个重要的图论问题,它在交通网、电力网、 电话网、管道网等设计中均有广泛的应用。比如要在 n 个城市间建立通信联络 网,要考虑的是如何保证 n 点连通的前提下最节省经费,就应用到了最小生成 树。 求图的最小生成树有两种常见的算法,一种是 Kruskal(克鲁斯卡尔)算 法,另一种是 Prim(普里姆)算法。这两个算法的基本思想均是基于避圈法, 而从相反的角度,破圈法也可构造最小生成树算法。 本文讲述 Kruskal 算法、Prim 算法和破圈法的同时,也着重介绍了一种求 解最小生成树问题的 DNA 算法。 2 有关最小生成树的理论基础 2.1 有关最小生成树的概念 2.1.1 定义一(图) 一个图 G 定义为一个偶对(V,E),记作 G=(V,E),其中 (1) (2) V 是一个集合,其中的元素称为顶点; E 是无序积 V������V 中的一个子集合,其元素称为边;
Several algorithm of solving minimum spanning tree and its application
Xiangnan-kong
(Mathematics Department of Qinghai Normal University, Qinghai 810000) Abstract: This paper describes several algorithm of solving minimum spanning tree (Kruskal algorithm、Prim algorithm、Broken circle method and DNA algorithm), and focuses on discussing the DNA algorithm. Then it compares the advantages and disadvantages of several algorithms and introduces several practical applications of the minimum spanning tree . Keyword: Minimum spanning tree;Kruskal algorithm;Prim algorithm; Broken circle method ;DNA algorithm.
5
图4 6 一种求解最小生成树问题的 DNA 算法 6.1 DNA 算法介绍 基于生化反应的生物智能计算是现阶段计算领域研究的热点,DNA 计算是 通过 DNA 分子之间的生化反应来进行计算的一种计算模式,凭借运算巨大的并 行性和海量存储的优势,DNA 计算在解决复杂运算问题方面的计算能力显而易 见。设计了一种利用 DNA 计算来求解图的最小生成树的计算模型,采用一种特 殊的编码方式来对顶点,边和权值进行编码,从而解决最小生成树问题。 6.1.1 DNA 计算的基本原理 DNA 计算的本质就是利用大量不同的核酸分子杂交,产生类似于某种数学 过程的一种组合的结果,并根据限定条件对其进行筛选的。单链 DNA 可看作由 符号 A、C、G、T 组成的串,同电子计算机中编码 0 和 1 一样,可表示成 4 字母的 集合来译码信息。特定的酶可充当“软件”来完成所需的各种信息处理工作。 DNA 计算的基本思想是:利用 DNA 分子的双螺旋结构和碱基互补配对的性 质,将所要处理的问题编码成特定的 DNA 分子,在生物酶的作用下,生成各种数据
图5 从图 5 中 K-臂 DNA 分子的结构可以看出,通过连接酶,我们可以利用 K-臂(K ≤4)DNA 分子构造出任意顶点的最大度为 4 的图。正是利用这一思想,我们 用 K-臂分子来表示图或树中度为 n(n≤4)的顶点的结构,来实现最小生成树 问题解的节点结构。在求解最小生成树问题计算模型的编码方案中,使用的 DNA 分子是由单链和双链进行混合编码的不完全分子。 6.1.3 最小生成树编码的分子结构 本节介绍最小生成树中顶点、支架分子、权值和边的编码方式,以图 6 的 连1,转向第 2 步;否则,置j: = j + 1,转向第 2 步。 MST-KRUSKAL(G,w)
2
1 A→∅ 2 for each vertex ϑ ∈ V G 3 do Make-Set(v)
4 sort the edge of E into nondecreasing order by weight w 5 for each edge μ, ϑ ∈ E,taken in nondecreasing order by weight 6 7 8 9 retuen A 3.2 Kruskal 算法的复杂性 首先在第 1 步中把边按权的大小由小到大地排列起来,这约需 m﹒log 2 m 次比较;其次第 2 步最多循环 n 次;在第 3 步中判断 G [S⋃ aj ]是否构成回路, 判定加边后是否构成回路总共约需 m 次比较,而加边后点的重新标号最多需 n(n-1)次比较。所以总的计算量为 m﹒log 2 m+n+m+ n(n-1)~O n2 log 2 n 由定理一(1)易见上述算法的正确性。 3.3 例如在图 1 所示的网络中,求一个最小树,计算的迭代过程如图 2 所示 do if Find-Set(u)≠Find-Set(v) then A ← A ∪ u, v
2.1.2 定义二(树):不含圈的连通图称为树。
1
2.1.3 定义三(生成树):如果 T 是 G 的一个生成子图而且又是一棵树,则称 T 是图 G 的一棵生成树。 2.1.4 定义四(最小树):设T ∗ 是赋权图 G 的一颗生成树,若对 G 的任意生成 树 T 都有������ T ∗ < ������ (������),则称T ∗ 为 G 的最小树。 2.2 有关最小生成树的定理 2.2.1 定理一(最小树充要条件) 设 T 是 G 的一棵生成树,则下列条件都是 T 为最小树的充要条件 (1) 对任意连枝 e′∈G\T,有������ (e′)=maxe ∈C T (e ′) {(������(e))} (2) 对图 G 中任意圈 C,存在 e′∈C\T,有������ (e′)=maxe ∈C {������ (e)} (3)对任意树枝 e∈T,有������ (e)=mine ∈S T (e) {(������(e′))} (4)对 G 的任意割集 S,在 T∩S 中存在一条边 e,������ (e)=mine ′∈S T (e) {������(e′)} 2.2.2 定理二(唯一最小树充要条件) 设T ∗ 是 G 的一棵生成树,则下列条件都是T ∗ 是 G 的唯一最小树的充要条件 是下列两个条件中的任一个成立: (1)对任意 e∈G\T ∗ ,e 是CT ∗ (e)的唯一权最大的边。 (2)对任意e∗ ∈ T ∗ ,e∗ 是ST ∗ (e∗ )的唯一权最小的边。 3 Kruskal(克鲁斯卡尔)算法 3.1 Kruskal 算法介绍 Kruskal 算法是 1956 年首次提出的求最小生成树的算法。后来 Edmonds 把这个算法称为贪心算法。其基本思路是从 G 的 m 条边中选取 n-1 条权尽量小 的边,并且使得不构成回路,从而构成一个最小树。下面我们就来叙述这个算 法. 第 1 步 开始把图的边按权的大小由小到大地排列起来,即将图的边排序为 a1 , a2 , … , am ,使W a1 ≤ W a2 ≤ ⋯ ≤ W am 置 S=∅,������ = 0, ������ = 1. 第 2 步 若|S|= ������ = n − 1,则停止。这时 G [S]=T 即为所求;否则,转向第 3 步。 第3步 若 G [S⋃ aj ]不构成回路,则置e ������+1 = aj , S = S⋃{e ������+1 }, ������ ≔ ������ +
4
1
do u ← Extract − Min Q for each v ∈ Adj u do if v ∈ Q and w(u,v)< key[v] then π v ← u key[v] ← w(u, v)
4.3 例如在图 1 所示的网络中,求一个最小树,计算的迭代过程如图 3 所示
图3 5 破圈法 5.1 破圈法介绍 该算法的理论依据是存在性定理:连通图至少有一棵生成树。如果我们给 的连通图 G 中没有回路,那么 G 本身就是一棵生成树,若 G 中只有一个回路, 则删去 G 的回路上的一条边(不删除结点),则产生的图仍是连通的,且没有 回路,则得到的子图就是图 G 的一棵生成树,若 G 的回路不止一个,只要删去 每一个回路上的一条边,直到 G 的子图是连通没有回路且与图 G 有一样的结点 集,那么这个子图就是一棵生成树。由于我们破坏回路的方法可以不一样(即 删去的边不一样)所以可得到不同的生成树,但是在求最小生成树的时候,为 了保证求得的生成树的树权 W(T)最小,那么在删去回路上的边的时候,总是 在保证图仍连通的前提下删去权值较大的边。尽量保留权值较小的边。这就是 所谓的破圈法。破圈法就是在带权图的回路中找出权值最大的边,将该边去掉, 重复这个过程,直到图连通且没有圈为止,保留下来的边组成的图即为最小生 成树。破圈法的复杂程度为 O n3 . 5.2 例如在图 1 所示的网络中,求一个最小树,计算的迭代过程如图 4 所示
相关文档
最新文档