【图论】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)
相关推荐
地平线开发者4 小时前
profiler debug 工具用法与高一致性策略
算法·自动驾驶
编程大师哥4 小时前
匿名函数 lambda + 高阶函数
java·python·算法
我叫袁小陌5 小时前
算法解题思路指南
算法
地平线开发者5 小时前
Conv+BN+Add+ReLU 融合机制简介
算法·自动驾驶
yuanyuan2o25 小时前
模型预训练:Hugging Face Transformers 基础
算法·ai·语言模型·自然语言处理·nlp·深度优先
杨充5 小时前
1.3 浮点型数据设计灵魂
开发语言·python·算法
妄想出头的工业炼药师6 小时前
GS slam mono
算法·开源
_日拱一卒6 小时前
LeetCode:207课程表
java·数据结构·算法·leetcode·职场和发展
用户987409238878 小时前
llamafactory 0.6.3 没有 llamafactory-cli
算法