两种算法都是基于贪心的方法。
Prim算法:
适用于稠密图。时间复杂度为O(V^2)
。(V为顶点数)
与Dijkstra算法相似,每次选择离离原点最近的点,加入到现有的生成树中。
Kruskal算法:
适用于稀疏图。时间复杂度为O(E*logE)
。(E为边数)
将边按照长度由小到大进行排序(边的结构体内要存入连接的两个顶点的信息),每次选择最短的一条边出来,在确认加入新边不会形成环后,将其加入生成树中。如何判断是否会形成环的方法是,建立一个关于边的并查集,加入新边时判断边连接的两个端点是否在同一个集合中。若是,则加入新边,随后将其加入到新边,将边连接的两个端点实施并查集union操作。