【图论】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)
相关推荐
m0_5793936618 小时前
C++中的命令模式
开发语言·c++·算法
VelinX19 小时前
【个人学习||算法】动态规划
学习·算法·动态规划
汉克老师19 小时前
GESP5级C++考试语法知识(九、二分算法(一))
c++·算法·二分算法·gesp5级·gesp五级
2401_8796938719 小时前
C++跨平台开发实战
开发语言·c++·算法
浅念-19 小时前
Linux 基础命令与核心知识点
linux·数据结构·c++·经验分享·笔记·算法·ubuntu
旺仔.29119 小时前
C++ String 详解
开发语言·c++·算法
2301_8166512219 小时前
模板代码跨平台适配
开发语言·c++·算法
m0_7434703719 小时前
C++代码静态检测
开发语言·c++·算法
m0_7380980219 小时前
C++中的代理模式实战
开发语言·c++·算法
The_Ticker19 小时前
日股实时行情接口使用指南
java·经验分享·笔记·python·算法·区块链