【图论】Graphs.jl 最小生成树算法文档

文章目录

  • Boruvka 算法
  • Kruskal 算法
  • Prim 算法

最小生成树是图论常见的问题之一,要求输入图为连通无向图,即任意两个顶点存在一个链路相连,而树结构是简单图,且无圈结构。

Boruvka 算法

julia 复制代码
boruvka_mst(g, distmx = weights(g); minimize = true)

返回一个元组 (mst, weights),其中 mst 是表示连通无向图 g 的最优(默认最小)生成树的边向量,distmx 为可选的权重矩阵用于提供不同的边权重,weights 则是通过 Boruvka 算法求解得到的生成树所有边的权重总和。该算法要求所有边必须具有不同的权重,以确保能正确生成最小/最大生成树。

可选参数

minimize=true:若设置为 false,则计算最大生成树。

julia 复制代码
using Graphs
a=complete_graph(4)
distmx=sparse([0 0.5 0.8 0.3;
               0.5 0 0.7 0.4; 
               0.8 0.7 0 0.6; 
               0.3 0.4 0.6 0])
results=boruvka_mst(a,  distmx,minimize=true)
println(results[1])
println(results[2])

Kruskal 算法

julia 复制代码
Kruskal_mst(g, distmx = weights(g); minimize = true)

返回一个树结构mst, 其中 mst 是表示连通无向图 g 的最优(默认最小)生成树的边向量,distmx 为可选的权重矩阵用于提供不同的边权重。该算法要求所有边必须具有不同的权重,以确保能正确生成最小/最大生成树。

可选参数

minimize=true:若设置为 false,则计算最大生成树。

julia 复制代码
using Graphs
a=complete_graph(4)
distmx=sparse([0 0.5 0.8 0.3;
               0.5 0 0.7 0.4; 
               0.8 0.7 0 0.6; 
               0.3 0.4 0.6 0])
result=kruskal_mst(a,  distmx, minimize=true)
println(result)

Prim 算法

julia 复制代码
prim_mst(g, distmx = weights(g))

返回一个树结构mst, 其中 mst 是表示连通无向图 g 的最优(默认最小)生成树的边向量,distmx 为可选的权重矩阵用于提供不同的边权重。该算法要求所有边必须具有不同的权重,以确保能正确生成最小/最大生成树。

可选参数

minimize=true:若设置为 false,则计算最大生成树。

julia 复制代码
using Graphs
a=complete_graph(4)
distmx=sparse([0 0.5 0.8 0.3;
               0.5 0 0.7 0.4; 
               0.8 0.7 0 0.6; 
               0.3 0.4 0.6 0])
result=prim_mst(a,distmx)
println(result)
相关推荐
伊玛目的门徒8 小时前
试用leetcode之典中典 二数之和问题
java·算法·leetcode
Jerry9 小时前
LeetCode 226. 翻转二叉树
算法
想做小南娘,发现自己是女生喵10 小时前
【无标题】
数据结构·算法
Kx_Triumphs12 小时前
HDU4348 To the moon(主席树区间修改模板)
算法·题解
旖-旎12 小时前
《LeetCode647 回文子串 || LeetCode 5 最长回文子串》
c++·算法·leetcode·动态规划·哈希算法
轻颂呀13 小时前
约瑟夫环问题
算法
科技大视界15 小时前
投资AI项目,传统尽调不够用了——李章虎律师拆解算法、数据、算力三大雷区
人工智能·算法·数据挖掘
郝学胜-神的一滴15 小时前
算法实战:最小k个数——大顶堆的优雅解法
开发语言·数据结构·c++·python·程序人生·算法·排序算法
Irissgwe15 小时前
算法滑动窗口
数据结构·算法