【GRAPH】Weisfeiler-Lehman算法测试图同构

本文详细介绍了Weisfeiler-Lehman算法的工作原理,包括标签复合集的定义、排序与压缩,以及如何通过比较不同图的标签变化判断同构。通过实例演示和时间复杂度分析,帮助理解其在图论中的应用。

背景

Weisfeiler-Lehman算法(威斯费勒-莱曼算法)是测试图同构的经典算法之一,我在这儿记录一下它的实现原理,参考文章为Weisfeiler-Lehman Graph Kernels

伪代码

论文中的伪代码如下所示

 假设要测试同构的两张图为G和G`,那么在结点v的第i次迭代里,算法都分别做了四步处理:标签复合集定义、复合集排序、标签压缩和重标签。

标签复合集定义

如果是第一次迭代, v的标签复合集里只有一个元素,就是v的标签。

如果不是第一次迭代,v的标签复合集元素就是v的所有邻居在上一轮迭代里,生成的标签。

复合集排序

首先,对复合集里的元素进行升序排序,并把排序好的元素拼接为一个字符串s;然后把v在上一轮迭代生成的标签作为前缀,添加到这个s里。

标签压缩

对两张图G和G`中所有结点的字符串s,进行升序排列;然后通过映射函数f,把每一个s映射成一个压缩标签,并且当且仅当s1 = s2时,生成的压缩标签才一样。

也是说,压缩标签类似于s的标识符,而映射函数f完全可以用计数函数来实现。其实只要能让s和压缩标签一一对应,前面的对s进行升序排列这一步就没必要做了。

重标签

将压缩标签作为结点v在两张图中的第i轮标签。

如果G和G`在这一轮生成的标签集不一样,那么这两张图就不是同构的,算法直接结束。

举例

以下面的图为例,图a到图d显示了威斯费勒-莱曼算法在G和G`上的第一轮迭代过程

 

图a是初始形态,结点的标签对应结点类型。

图b则是复合集的生成与排序拼接的结果。对于某个结点v,他的复合集是邻居在上一轮迭代生成的标签集。但是这里的上一轮迭代为初始化,那么邻居在上一轮迭代生成的标签就是邻居的初始标签(也就是结点类型)。因此,以图G为例,两个1号结点的复合集就都是{4},4号结点的复合集就是{1, 1, 3, 5}(要升序排列),其余以此类推。完成之后,把排序好的复合集中的元素,依次拼接成字符串s,然后把结点标签本身,作为前缀拼接到s前面。在G中,对于结点1,生成的s就是"1, 4";对于结点4,生成的s就是"4, 1135"。最后,用s替代结点v的标签。

图c则是标签压缩过程,把G和G`中所有的复合集按升序排列,并且按顺序依次标号。这里的排序规则是按元素数值的升序进行排列,因此{2, 3}在{1, 4}前面,{2, 4, 5}在{2, 3, 5}前面。由于经过上一轮迭代(初始迭代),图中已经出现了5类结点,那么这里的编号从6开始。

图d则是最后一步重排序,用生成的编号代替每个结点的复合集,得到结点在这一轮迭代中生成的新标签。

对于上面的两张图来说,第1轮生成的新标签集合就已经不一样了,因此他们俩是异构图。
 

时间复杂度

由于每一轮迭代主要处理的是排序,那么假设对于某个图G,每一次迭代可以生成的复合集中有m个元素,根据计数排序,迭代时间复杂度就是O(m)。每一轮生成的复合集的元素数量m是>=结点数n的,因为每个结点的复合集都至少包含自己的标签。

如果迭代次数为h,那么威斯费勒-莱曼算法计算复杂度就是O(hm)

<think>好的,用户想了解Weisfeiler-Lehman(WL)测试的局限性和适用场景,特别是关于图同构的问题。我需要先回顾一下WL测试的基本原理,然后分析它的局限性和适用情况。 首先,WL测试是一种用于图同构检验的算法,通过迭代颜色细化来区分不同的图结构。如果两个图在某一轮细化后颜色分布不同,则它们不同构。不过,WL测试并不是万能的,存在无法区分的图案例。比如,著名的Cai-Fürer-Immerman图,即使结构不同,WL测试也无法区分。这部分可能需要引用文献中的例子,比如引用[1]或[4]。 接下来是局限性。除了无法区分某些强正则图和非同构图外,WL测试对图的结构特性敏感。例如,对于高度对称的图,如完全图或循环图,WL测试可能在早期停止细化,导致无法正确判断。需要提到的是,WL测试的计算复杂度是多项式的,但只能作为必要条件,而非充分条件。这一点在引用[2]中提到的GNN可能无法区分所有图的情况相关,因为GNN的表达能力受限于WL测试。 适用场景方面,WL测试在多数实际图结构中可以有效区分,特别是当图的区分度较高时。例如,在社交网络或分子结构分析中,WL测试可以作为预处理步骤,快速排除不同构的情况。此外,WL测试的变体(如k-WL)能提升区分能力,但计算成本增加。这里可能需要引用到文献中提到的应用场景,比如引用[4]中提到的WL Test的应用。 然后需要生成相关问题,这些问题应该围绕WL测试的扩展、与其他算法的比较、实际应用中的调整,以及其在图神经网络中的作用。例如,如何扩展WL测试的能力,或者它与图神经网络的关系,如引用[3]提到的模型层次结构。 最后,要确保回答结构清晰,分点列出局限性和适用场景,并正确引用文献。注意用户要求使用中文,数学公式用$...$和$$...$$格式,如WL测试的颜色更新公式可能需要用LaTeX表达。同时,检查是否有遗漏的引用点,确保每个引用标识符正确对应。</think>### Weisfeiler-Lehman (WL) 测试的局限性与适用场景 #### WL 测试基本原理 Weisfeiler-Lehman 测试通过迭代的 **颜色细化(Color Refinement)** 来区分图的拓扑结构。具体步骤为: 1. 初始时,所有节点根据其度数(或标签)分配颜色; 2. 每轮迭代中,节点颜色更新为自身颜色与邻居颜色的哈希组合: $$c^{(t+1)}(v) = \text{HASH}\left(c^{(t)}(v), \{c^{(t)}(u) \mid u \in \mathcal{N}(v)\}\right)$$ 3. 若两图在某一轮颜色分布不同,则判定为不同构;否则继续直到收敛。 #### 局限性 1. **无法区分所有非同构图** WL 测试对某些非同构但高度对称的图失效,例如: - **强正则图**:如两个非同构的强正则图可能具有相同的颜色分布[^1]; - **Cai-Fürer-Immerman (CFI) 图**:WL 测试无法区分此类构造的特例[^4]。 2. **对图结构敏感** - 对于完全图、循环图等高度对称结构,WL 测试可能在早期终止迭代,导致误判。 3. **计算复杂度限制** - 虽然时间复杂度为多项式级($O(n^2)$),但仅能提供 **必要条件**(颜色不同则图不同构),而非充分条件。 #### 适用场景 1. **实际图数据的快速筛选** - 在社交网络、分子结构等实际场景中,WL 测试能高效排除大部分不同构图。 2. **图神经网络的表达能力边界** - 图神经网络(GNN)的区分能力不超过 1-WL 测试[^2][^3],因此 WL 测试可用于分析 GNN 的局限性。 3. **扩展版本的增强能力** - **k-WL 测试**(如 2-WL 或 3-WL)可提升区分能力,但计算复杂度显著增加[^1]。 #### 示例:WL 测试失效的图 考虑两个非同构图 $G_1$ 和 $G_2$,其节点度数相同且颜色细化过程一致,但实际拓扑不同。此时 WL 测试无法区分它们。 ```python # 示例:构造 CFI 图的简化代码 def build_cfi_graph(): # 实现需具体构造步骤 pass ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值