主页 模型库 竞赛 学习中心 工具箱 论文库 前沿 建模空间 AI建模
学习中心 探索专题 图论与复杂网络 图的基本量

本页实验台

  1. 画一张图
  2. 邻接矩阵与幂
  3. 图的布局
LAB 01

画一张图

鼠标加点连边,实时显示度序列、连通分量、是否二分

问题
电网、地铁、论文引用、蛋白质相互作用——把它们都抽象成"点和线"之后,还剩下什么可以谈?这一台先把最基础的几把尺子摆出来:谁连得多、网散没散、能不能分成两边。
模型
图 G = (V, E)。最基本的三个量:
度 ki = Σj Aij,  平均度 ⟨k⟩ = 2|E| ⁄ |V|,  密度 = 2|E| ⁄ (|V|(|V|−1))
A 是邻接矩阵(相连为 1)。二分图判定用两染色:能把所有点染成两色且每条边两端不同色。
点数 / 边数—
平均度 / 最大度—
连通分量数—
是否二分—
直径 / 平均路径长—
点一下画布加点,拖一个点到另一个点上连边。加边的时候盯住读数:平均度刚过 1 的时候,连通分量数会突然塌下来——这就是上一模块渗流那一页的同一件事,换成了图的语言。另外注意二分性:只要出现一个奇数长度的圈,二分性立刻消失,而"是不是二分图"直接决定了排班、指派这类问题能不能用匹配算法解。
LAB 02

邻接矩阵与幂

矩阵 Aᵏ 的第 (i,j) 项就是长度 k 的路径条数——并排验证

问题
"从 A 到 B 有几条长度恰好为 3 的路?"——逐条数会数到崩溃,但矩阵乘法一次就给出全部答案。这条性质是很多网络算法的地基,也是 PageRank、谱聚类这些方法能成立的原因。
模型
邻接矩阵的幂直接数路径条数(可重复经过点)。
(Ak)ij = 从 i 到 j 长度恰为 k 的路径条数,  (A³)ii ⁄ 2 = 过点 i 的三角形数
Ak 的对角线特别有用:A² 的对角就是度数,A³ 的对角除以 2 就是每个点参与的三角形个数。
长度 k 的途径总数—
对角线之和(回到自己)—
k 步内可达的点对占比—
邻接矩阵的 k 次幂,第 (i,j) 项就是从 i 到 j 长度恰好为 k 的途径条数。这条性质是很多图算法的底层:k=2 时它数的是"共同邻居",直接给出相似度;让 k 增大到矩阵不再出现 0,就得到了图的直径。把它和马尔可夫链那一页对照着看——转移矩阵的幂算的是同一件事,只是把计数换成了概率。
LAB 03

图的布局

力导向、圆周、分层三种布局切换,说明「同一张图可以长得很不一样」

问题
同一张图可以画成完全不同的样子——那么"看起来像什么"到底是图的性质,还是画法的性质?这一台切换三种布局,提醒一件容易忘的事:拓扑不变,图像随便变。
模型
力导向布局把图当成弹簧-斥力系统,最小化一个能量。
E = Σ(i,j)∈E ½k(‖xi−xj‖−L)² + Σi≠j C ⁄ ‖xi−xj‖
第一项是边当弹簧(理想长度 L),第二项是所有点互相排斥。这是一个非凸优化,初值不同结果就不同——所以同一张图每次画出来都不太一样。
边的交叉数—
平均边长—
图本身有没有变—
五种布局画的是同一张图——点数、边数、每条边连的是谁,一个都没变。但读者从图里"看出"的东西完全不同:力导向让社区凸显,分层布局让距离关系凸显,圆周布局什么都不强调因而最"公正"。论文里放网络图时要意识到这一点:布局是你对读者做的一次加工,它和配色、坐标轴一样,属于需要说明的可视化选择。

这一页想说的

这一页没有算法,只有词汇和直觉。但把"度分布、连通性、二分性、直径"这四件事养成习惯先看一眼,后面选算法基本就不会错方向了:稀疏还是稠密决定用邻接表还是矩阵,连不连通决定要不要先分量分解,二不二分决定匹配算法能不能用,直径多大决定 BFS 能不能顶用。

接着看

← 返回模块 ← 返回探索专题