Weisfeiler Leman graph isomorphism test

Last updated

In graph theory, the Weisfeiler Leman graph isomorphism test is a heuristic test for the existence of an isomorphism between two graphs G and H. [1] It is a generalization of the color refinement algorithm and has been first described by Weisfeiler and Leman in 1968. [2] The original formulation is based on graph canonization, a normal form for graphs, while there is also a combinatorial interpretation in the spirit of color refinement and a connection to logic.

Contents

There are several versions of the test (e.g. k-WL and k-FWL) referred to in the literature by various names, which easily leads to confusion. Additionally, Andrey Leman is spelled `Lehman' in several older articles.

Weisfeiler-Leman-based Graph Isomorphism heuristics

All variants of color refinement are one-sided heuristics that take as input two graphs Gand H and output a certificate that they are not different or 'I don't know'. This means that if the heuristic is able to tell G and H apart, then they are definitely different, but the other direction does not hold: for every variant of the WL-test (see below) there are non-isomorphic graphs where the difference is not detected. Those graphs are highly symmetric graphs such as regular graphs for 1-WL/color refinement.

1-dimensional Weisfeiler-Leman (1-WL)


The 1-dimensional graph isomorphism test is essentially the same as the color refinement algorithm (the difference has to do with non-edges and is irrelevant for all practical purposes as it is trivial to see that graphs with a different number of nodes are non-isomorphic). The algorithm proceeds as follows:

Initialization All nodes are initialized with the same color 0

Refinement Two nodes u,v get a different color if a) they had a different color before or b) there is a color c such that u and v have a different number of c-colored neighbors

Termination The algorithm ends if the partition induced by two successive refinement steps is the same.

In order to use this algorithm as a graph isomorphism test, one runs the algorithm on two input graphs G and H in parallel, i.e. using the colors when splitting such that some color c (after one iteration) might mean `a node with exactly 5 neighbors of color 0'. In practice this is achieved by running color refinement on the disjoint union graph of G and H. One can then look at the histogram of colors of both graphs (counting the number of nodes after color refinement stabilized) and if they differ, this is a certificate that both graphs are not isomorphic.

The algorithm terminates after at most rounds where is the number of nodes of the input graph as it has to split one partition in every refinement step and this can happen at most until every node has its own color. Note that there are graphs for which one needs this number of iterations, although in practice the number of rounds until terminating tends to be very low (<10).

The refinement of the partition in each step is by processing for each node its label and the labels of its nearest neighbors. Therefore WLtest can be viewed as a message passing algorithm which also connects it to graph neural networks.

Higher-order Weisfeiler-Leman

This is the place where the aforementioned two variants of the WL algorithm appear. Both the k-dimensional Weisfeiler-Leman (k-WL) and the k-dimensional folklore Weisfeiler-Leman algorithm (k-FWL) are extensions of 1-WL from above operating on k-tuples instead of individual nodes. While their difference looks innocent on the first glance, it can be shown that k-WL and (k-1)-FWL (for k>2) distinguish the same pairs of graphs.

k-WL

Input: a graph G = (V,E) # initialize  HASH(type) for all repeat for all until (both colorings induce identical partitions of ) return

Here the neighborhood of a k-tuple is given by the set of all k-tuples reachable by exchanging the i-th position of :

k-FWL (k>1)

Input: a graph G = (V,E) # initialize  HASH(type) for all repeat for all until (both colorings induce identical partitions of ) return

Note that there is one major difference here: FWL checks what happens if a single node w is placed at any position of the k-tuple (and then computes the multiset of these k-tuples) while k-WL looks at the multisets that you get when changing the i-th component only of the original k-tuple. It then uses all those multisets in the hash that computes the new color.

It can be shown (although only through the connection to logic) that k-FWL and (k+1)-WL are equivalent (for ). Since both algorithms scale exponentially in k (both iterate over all k-tuples), the use of k-FWL is much more efficient than using the equivalent (k+1)-WL.

Examples and Code for 1-WL

Code

# ALGORITHM WLpairs# INPUT: two graphs G and H to be tested for isomorphism# OUTPUT: Certificates for G and H and whether they agreeU=combineTwo(G,H)glabels=initializeLabels(U)# dictionary where every node gets the same label 0labels={}# dictionary that will provide translation from a string of labels of a node and its neighbors to an integernewLabel=1done=Falsewhilenot(done):glabelsNew={}# set up the dictionary of labels for the next stepfornodeinU:label=str(glabels[node])+str([glabels[x]forxinneighborsofnode].sort())ifnot(labelinlabels):# a combination of labels from the node and its neighbors is encountered for the first timelabels[label]=newLabel# assign the string of labels to a new number as an abbreviated labelnewLabel+=1# increase the counter for assigning new abbreviated labelsglabelsNew[node]=labels[label]if(numberofdifferentlabelsinglabels)==(numberofdifferentlabelsinglabelsNew):done=Trueelse:glabels=glabelsNew.copy()certificateG=certificateforGfromthesortedlabelsoftheG-partofUcertificateH=certificateforHfromthesortedlabelsoftheH-partofUifcertificateG==certificateH:test=Trueelse:test=False

Here is some actual Python code which includes the description of the first examples.

g5_00={0:{1,2,4},1:{0,2},2:{0,1,3},3:{2,4},4:{0,3}}g5_01={0:{3,4},1:{2,3,4},2:{1,3},3:{0,1,2},4:{0,1}}g5_02={0:{1,2,4},1:{0,3},2:{0,3},3:{1,2,4},4:{0,3}}defcombineTwo(g1,g2):g={}n=len(g1)fornodeing1:s=set()forneighboring1[node]:s.add(neighbor)g[node]=s.copy()fornodeing2:s=set()forneighboring2[node]:s.add(neighbor+n)g[node+n]=s.copy()returngg=combineTwo(g5_00,g5_02)labels={}glabels={}foriinrange(len(g)):glabels[i]=0glabelsCount=1newlabel=1done=Falsewhilenot(done):glabelsNew={}glabelsCountNew=0fornodeing:label=str(glabels[node])s2=[]forneighboring[node]:s2.append(glabels[neighbor])s2.sort()foriinrange(len(s2)):label+="_"+str(s2[i])ifnot(labelinlabels):labels[label]=newlabelnewlabel+=1glabelsCountNew+=1glabelsNew[node]=labels[label]ifglabelsCount==glabelsCountNew:done=Trueelse:glabelsCount=glabelsCountNewglabels=glabelsNew.copy()print(glabels)g0labels=[]foriinrange(len(g0)):g0labels.append(glabels[i])g0labels.sort()certificate0=""foriinrange(len(g0)):certificate0+=str(g0labels[i])+"_"g1labels=[]foriinrange(len(g1)):g1labels.append(glabels[i+len(g0)])g1labels.sort()certificate1=""foriinrange(len(g1)):certificate1+=str(g1labels[i])+"_"ifcertificate0==certificate1:test=Trueelse:test=Falseprint("Certificate 0:",certificate0)print("Certificate 1:",certificate1)print("Test yields:",test)

Examples

The first three examples are for graphs of order 5. [3]

Graph G0Graph G1Graph G2

Graph0.svg

WL5 01b.svg

WL5 02b.svg

WLpair takes 3 rounds on 'G0' and 'G1'. The test succeeds as the certificates agree.

WLpair takes 4 rounds on 'G0' and 'G2'. The test fails as the certificates disagree. Indeed 'G0' has a cycle of length 5, while 'G2' doesn't, thus 'G0' and 'G2' cannot be isomorphic.

WLpair takes 4 rounds on 'G1' and 'G2'. The test fails as the certificates disagree. From the previous two instances we already know .

G0 vs. G1G0 vs. G2G1 vs. G2

WLGraph01.svg

WLGraph02.svg

Graph12.svg

Indeed G0 and G1 are isomorphic. Any isomorphism must respect the components and therefore the labels. This can be used for kernelization of the graph isomorphism problem. Note that not every map of vertices that respects the labels gives an isomorphism. Let and be maps given by resp. . While is not an isomorphism constitutes an isomorphism.

When applying WLpair to G0 and G2 we get for G0 the certificate 7_7_8_9_9. But the isomorphic G1 gets the certificate 7_7_8_8_9 when applying WLpair to G1 and G2. This illustrates the phenomenon about labels depending on the execution order of the WLtest on the nodes. Either one finds another relabeling method that keeps uniqueness of labels, which becomes rather technical, or one skips the relabeling altogether and keeps the label strings, which blows up the length of the certificate significantly, or one applies WLtest to the union of the two tested graphs, as we did in the variant WLpair. Note that although G1 and G2 can get distinct certificates when WLtest is executed on them separately, they do get the same certificate by WLpair.

The next example is about regular graphs. WLtest cannot distinguish regular graphs of equal order, [4] :31 but WLpair can distinguish regular graphs of distinct degree even if they have the same order. In fact WLtest terminates after a single round as seen in these examples of order 8, which are all 3-regular except the last one which is 5-regular.

All four graphs are pairwise non-isomorphic. G8_00 has two connected components, while the others do not. G8_03 is 5-regular, while the others are 3-regular. G8_01 has no 3-cycle while G8_02 does have 3-cycles.

WLtest applied to four regular graphs of order 8.WLpair applied to G8_00 and G8_01 of same degree.WLpair applied to G8_02 and G8_03 of distinct degree.

WLGraph8 00e.svg

WLGraph8 01b.svg

WLGraph8 02b.svg

Another example example of two non-isomorphic graphs that WLpair cannot distinguish is given here. [5]


Applications

The theory behind the Weisfeiler Leman test is applied in graph neural networks.

Weisfeiler Leman graph kernels

In machine learning of nonlinear data one uses kernels to represent the data in a high dimensional feature space after which linear techniques such as support vector machines can be applied. Data represented as graphs often behave nonlinear. Graph kernels are method to preprocess such graph based nonlinear data to simplify subsequent learning methods. Such graph kernels can be constructed by partially executing a Weisfeiler Leman test and processing the partition that has been constructed up to that point. [6] These Weisfeiler Leman graph kernels have attracted considerable research in the decade after their publication. [1] They are also implemented in dedicated libraries for graph kernels such as GraKeL. [7]

Note that kernels for artificial neural network in the context of machine learning such as graph kernels are not to be confused with kernels applied in heuristic algorithms to reduce the computational cost for solving problems of high complexity such as instances of NP-hard problems in the field of complexity theory. As stated above the Weisfeiler Leman test can also be applied in the later context.

See also

Related Research Articles

<span class="mw-page-title-main">Isomorphism</span> In mathematics, invertible homomorphism

In mathematics, an isomorphism is a structure-preserving mapping between two structures of the same type that can be reversed by an inverse mapping. Two mathematical structures are isomorphic if an isomorphism exists between them. The word isomorphism is derived from the Ancient Greek: ἴσοςisos "equal", and μορφήmorphe "form" or "shape".

<span class="mw-page-title-main">Breadth-first search</span> Algorithm to search the nodes of a graph

Breadth-first search (BFS) is an algorithm for searching a tree data structure for a node that satisfies a given property. It starts at the tree root and explores all nodes at the present depth prior to moving on to the nodes at the next depth level. Extra memory, usually a queue, is needed to keep track of the child nodes that were encountered but not yet explored.

<span class="mw-page-title-main">Hypergraph</span> Generalization of graph theory

In mathematics, a hypergraph is a generalization of a graph in which an edge can join any number of vertices. In contrast, in an ordinary graph, an edge connects exactly two vertices.

<span class="mw-page-title-main">Graph isomorphism</span> Bijection between the vertex set of two graphs

In graph theory, an isomorphism of graphsG and H is a bijection between the vertex sets of G and H

In theoretical computer science, the subgraph isomorphism problem is a computational task in which two graphs G and H are given as input, and one must determine whether G contains a subgraph that is isomorphic to H. Subgraph isomorphism is a generalization of both the maximum clique problem and the problem of testing whether a graph contains a Hamiltonian cycle, and is therefore NP-complete. However certain other cases of subgraph isomorphism may be solved in polynomial time.

<span class="mw-page-title-main">Cograph</span> Graph formed by complementation and disjoint union

In graph theory, a cograph, or complement-reducible graph, or P4-free graph, is a graph that can be generated from the single-vertex graph K1 by complementation and disjoint union. That is, the family of cographs is the smallest class of graphs that includes K1 and is closed under complementation and disjoint union.

<span class="mw-page-title-main">Multigraph</span> Graph with multiple edges between two vertices

In mathematics, and more specifically in graph theory, a multigraph is a graph which is permitted to have multiple edges, that is, edges that have the same end nodes. Thus two vertices may be connected by more than one edge.

The graph isomorphism problem is the computational problem of determining whether two finite graphs are isomorphic.

In mathematics, a Klein geometry is a type of geometry motivated by Felix Klein in his influential Erlangen program. More specifically, it is a homogeneous space X together with a transitive action on X by a Lie group G, which acts as the symmetry group of the geometry.

<span class="mw-page-title-main">Circulant graph</span> Undirected graph acted on by a vertex-transitive cyclic group of symmetries

In graph theory, a circulant graph is an undirected graph acted on by a cyclic group of symmetries which takes any vertex to any other vertex. It is sometimes called a cyclic graph, but this term has other meanings.

In mathematics, a graph partition is the reduction of a graph to a smaller graph by partitioning its set of nodes into mutually exclusive groups. Edges of the original graph that cross between the groups will produce edges in the partitioned graph. If the number of resulting edges is small compared to the original graph, then the partitioned graph may be better suited for analysis and problem-solving than the original. Finding a partition that simplifies graph analysis is a hard problem, but one that has applications to scientific computing, VLSI circuit design, and task scheduling in multiprocessor computers, among others. Recently, the graph partition problem has gained importance due to its application for clustering and detection of cliques in social, pathological and biological networks. For a survey on recent trends in computational methods and applications see Buluc et al. (2013). Two common examples of graph partitioning are minimum cut and maximum cut problems.

<span class="mw-page-title-main">Network motif</span> Type of sub-graph

Network motifs are recurrent and statistically significant subgraphs or patterns of a larger graph. All networks, including biological networks, social networks, technological networks and more, can be represented as graphs, which include a wide variety of subgraphs.

In computer science and graph theory, the term color-coding refers to an algorithmic technique which is useful in the discovery of network motifs. For example, it can be used to detect a simple path of length k in a given graph. The traditional color-coding algorithm is probabilistic, but it can be derandomized without much overhead in the running time.

The random walker algorithm is an algorithm for image segmentation. In the first description of the algorithm, a user interactively labels a small number of pixels with known labels, e.g., "object" and "background". The unlabeled pixels are each imagined to release a random walker, and the probability is computed that each pixel's random walker first arrives at a seed bearing each label, i.e., if a user places K seeds, each with a different label, then it is necessary to compute, for each pixel, the probability that a random walker leaving the pixel will first arrive at each seed. These probabilities may be determined analytically by solving a system of linear equations. After computing these probabilities for each pixel, the pixel is assigned to the label for which it is most likely to send a random walker. The image is modeled as a graph, in which each pixel corresponds to a node which is connected to neighboring pixels by edges, and the edges are weighted to reflect the similarity between the pixels. Therefore, the random walk occurs on the weighted graph.

In theoretical computer science, Baker's technique is a method for designing polynomial-time approximation schemes (PTASs) for problems on planar graphs. It is named after Brenda Baker, who announced it in a 1983 conference and published it in the Journal of the ACM in 1994.

In the study of graph algorithms, Courcelle's theorem is the statement that every graph property definable in the monadic second-order logic of graphs can be decided in linear time on graphs of bounded treewidth. The result was first proved by Bruno Courcelle in 1990 and independently rediscovered by Borie, Parker & Tovey (1992). It is considered the archetype of algorithmic meta-theorems.

In structure mining, a graph kernel is a kernel function that computes an inner product on graphs. Graph kernels can be intuitively understood as functions measuring the similarity of pairs of graphs. They allow kernelized learning algorithms such as support vector machines to work directly on graphs, without having to do feature extraction to transform them to fixed-length, real-valued feature vectors. They find applications in bioinformatics, in chemoinformatics, and in social network analysis.

In mathematical logic and computer science, two-variable logic is the fragment of first-order logic where formulae can be written using only two different variables. This fragment is usually studied without function symbols.

A graph neural network (GNN) belongs to a class of artificial neural networks for processing data that can be represented as graphs.

In graph theory and theoretical computer science, the colour refinement algorithm also known as the naive vertex classification, or the 1-dimensional version of the Weisfeiler-Leman algorithm, is a routine used for testing whether two graphs are isomorphic. While it solves graph isomorphism on almost all graphs, there are graphs such as all regular graphs that cannot be distinguished using colour refinement.

References

  1. 1 2 Huang, Ningyuan; Villar, Soledad (2022), "A Short Tutorial on the Weisfeiler-Lehman Test and Its Variants", ICASSP 2021 - 2021 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP), pp. 8533–8537, arXiv: 2201.07083 , doi:10.1109/ICASSP39728.2021.9413523, ISBN   978-1-7281-7605-5, S2CID   235780517
  2. Weisfeiler, B. Yu.; Leman, A. A. (1968). "A Reduction of a Graph to a Canonical Form and an Algebra Arising during This Reduction" (PDF). Nauchno-Technicheskaya Informatsia. 2 (9): 12–16. Retrieved 2023-10-28.
  3. Bieber, David (2019-05-10). "The Weisfeiler-Lehman Isomorphism Test" . Retrieved 2023-10-28.
  4. Kiefer, Sandra (2020). Power and limits of the Weisfeiler-Leman algorithm (PhD thesis). RWTH Aachen University. Retrieved 2023-10-29.
  5. Bronstein, Michael (2020-12-01). "Expressive Power Of Graph Neural Networks And The Weisfeiler-Lehman Test" . Retrieved 2023-10-28.
  6. Shervashidze, Nino; Schweitzer, Pascal; Van Leeuwen, Erik Jan; Mehlhorn, Kurt; Borgwardt, Karsten M. (2011). "Weisfeiler-lehman graph kernels". Journal of Machine Learning Research. 12 (9): 2539−2561. Retrieved 2023-10-29.
  7. "Weisfeiler Lehman Framework". 2019. Retrieved 2023-10-29. This Weisfeiler Lehman framework operates on top of existing graph kernels and is inspired by the Weisfeiler-Lehman test of graph isomorphism [WL68].