<aside> <img src="/icons/condense_green.svg" alt="/icons/condense_green.svg" width="40px" /> 多层网络 同构和自同构 复杂网络 异构图 图分割 节点秩 图拓扑
</aside>
🎯多层图和多路复用图结构模型 | 🎯图结构变换、读写图、聚类系数、可视化、同构、图基分析 | 🎯稀疏网络边数和节点数线性扩展 | 🎯耦合边的生成和惰性评估 | 🎯层内布局计算、多层网络绘图、层间边绘制,嵌入的网络布局、降低嵌入维数、动态多路复用网络可视化、异构网络分解
📜Python和MATLAB网络尺度结构和幂律度大型图生成式模型算法
pie title 语言分比
"Python":90
"C":30
"C++":20
"Java":20
pie title 内容分比
"图论":90
"数学":70
"概率":40
"图形分析":50
"网络理论":60
"算法":40
此连续图形布局算法是一种力导向布局:它模拟物理系统,以便将网络空间化。节点像带电粒子一样相互排斥,而边缘像弹簧一样吸引其节点。这些力会产生一种运动,最终达到平衡状态。
力导向绘图具有根据其他节点放置每个节点的特殊性。此过程仅取决于节点之间的连接。从不考虑节点的最终属性。这种策略有其缺点。结果取决于初始状态。该过程可能会陷入局部最小值。它不是确定性的,每个点的坐标不反映任何特定变量。结果不能读作笛卡尔投影。节点的位置不能单独解释,必须与其他节点进行比较。尽管存在这些问题,但该技术的优势在于允许对结构进行视觉解释。它的本质是将结构近似性转化为视觉近似性,从而促进分析,特别是社交网络分析。力导向布局产生的视觉密度表示结构密度。其他类型的布局允许对结构进行视觉解释,例如确定性布局“蜂巢图”,但它们不描绘结构的模块化方面。
每个力导向算法都依赖于特定的吸引力公式和特定的排斥力公式。 “弹簧电动”布局是受现实生活启发的模拟。它使用带电粒子的斥力公式$\left(F_r=k / d^2\right)$和弹簧的吸引力公式$\left(F_a=-k \cdot d\right)$,涉及几何距离两个节点之间的 d。 Fruchterman 和 Rheingold 使用自定义力创建了一种高效算法(吸引力 $F_a=d^2 / k$ 和斥力 $F_r=-k^2 / d$,其中 k 调整网络的缩放比例)。请注意,实际上,从一开始就使用了非现实力,尤其是 Eades 在他的先驱算法中。 Fruchterman 和 Rheingold 受到 Eades 工作的启发,他们注意到尽管使用弹簧比喻来解释他的算法,但吸引力并不是弹簧的力量。
十六年后,Noack 解释说,力导向算法之间最重要的区别是距离在图空间化中所扮演的角色。在物理系统中,力取决于相互作用的实体之间的距离:较远的实体比较近的实体吸引较少,排斥较多,反之亦然。距离和力之间的相互依赖性可以是线性的、指数的或对数的。例如,弹簧模型精确地复制了激发它的物理力,从而建立了距离和力之间的线性比例(对于弹簧吸引力)以及距离和力之间的平方比例,对于电磁力排斥力。Noack将布局的能量模型或“(吸引,斥力)模型”定义为用于计算吸引力和斥力的公式中距离所取的指数($\log$ 被视为 $0^{\text {th }}$ 功率)。例如,弹簧电动布局的模型为(1,-2)。
Python伪码实现算法
import networkx as nx
import matplotlib.pyplot as plt
from fx import Fax
import numpy as np
fax = Fax(
outboundAttractionDistribution=True,
linLogMode=False,
adjustSizes=False,
edgeWeightInfluence=1.0,
jitterTolerance=1.0,
barnesHutOptimize=True,
barnesHutTheta=1.2,
multiThreaded=False,
scalingRatio=2.0,
strongGravityMode=False,
gravity=1.0,
verbose=True)