Skip to content

其他算法总览

mbtgraph 在 8 大核心算法领域之外,还提供了以下重要算法模块。


16 种随机图生成算法,用于测试、基准和教学:

// 生成一个 100 节点 500 边的随机图
let er = @generators.erdos_renyi(100, 500, true) // 有向
let ws = @generators.watts_strogatz(100, 4, 0.3) // 小世界
let ba = @generators.barabasi_albert(100, 2) // 无标度
生成器模型特点
erdos_renyiG(n,m) / G(n,p)经典随机图
watts_strogatz小世界高聚类 + 短路径
barabasi_albert无标度幂律度分布
grid_2d网格规整结构
complete完全图最密图
tree随机树无环

对已有图进行变换操作:

let complement = @operators.complement(g) // 补图
let reversed = @operators.reverse(g) // 反转有向边
let union = @operators.union(g1, g2) // 并图
let product = @operators.cartesian(g1, g2) // 笛卡尔积
算子用途
complement图着色下界估计
reverse逆向关系分析
union / intersection图合并/求交
cartesian / tensor图乘积(网络科学)

@recognition.is_bipartite(graph) // ✅ 是否为二分图
@recognition.is_complete(graph) // ✅ 是否为完全图
@recognition.is_tree(graph) // ✅ 是否为树
@recognition.is_regular(graph) // ✅ 是否为正则图
@recognition.is_chordal(graph) // ✅ 是否为弦图

let kcore = @dense.k_core_decomposition(graph, 3) // 3-核分解
let ktruss = @dense.k_truss(graph, 4) // 4-truss分解
let triangles = @dense.triangle_count(graph) // 三角计数
let cc = @dense.clustering_coefficient(graph) // 聚类系数

基于局部拓扑相似度的链接预测指标:

let cn = @link_prediction.common_neighbors(g, u, v)
let jc = @link_prediction.jaccard_coefficient(g, u, v)
let aa = @link_prediction.adamic_adar(g, u, v)
let pa = @link_prediction.preferential_attachment(g, u, v)
指标复杂度直觉
共同邻居 (CN)O(d)共同好友越多越可能连接
Jaccard 系数O(d)归一化的共同邻居
Adamic-AdarO(d)稀有共同好友权重更高
优先连接 (PA)O(1)度数高的节点更可能获得新连接

模块API用途
@generators.*16 种随机图生成
@operators.*9 种图变换
@recognition.*8 种图性质判定
@dense.*5 种稠密子图分析
@link_prediction.*5 种链接预测
@euler.*1 种欧拉路径

相关文档: