Link Graph Encyclopedia

Network structure

k-core decomposition

Repeatedly peel off every node with fewer than k links until none is left. The layer at which a node falls off, its core number, measures how deeply it is embedded in a dense part of the graph, in linear time.

The k-core of a graph is the largest subgraph in which every node has at least kk neighbours within the subgraph. Stephen Seidman introduced it in 1983 as a way to find cohesive groups in social networks. Computing every node’s core number, the largest kk for which it belongs to the kk-core, takes a simple peeling procedure that runs in time linear in the number of links. The result separates a graph into nested shells, from the loosely attached periphery to the densest core, and it is one of the cheapest structural signals for spotting artificially dense groups such as link farms.

Definition and peeling

On an undirected graph:

  1. Set k=1k = 1.
  2. Repeatedly remove every node with fewer than kk remaining neighbours. Removing a node lowers its neighbours’ degrees, which may trigger more removals.
  3. When no node can be removed, the survivors form the kk-core. Nodes removed at this stage have core number k−1k - 1. Increase kk and continue.

The cores are nested: the 3-core lies inside the 2-core, which lies inside the 1-core. The largest kk with a non-empty core is the graph’s degeneracy. The set of nodes with core number exactly kk is the kk-shell.

Batagelj and Zaversnik showed how to compute all core numbers in O(m)O(m) time by keeping nodes in buckets by current degree and always peeling from the lowest bucket.

Worked example

Ignore directions in the running example. Degrees are A 3, B 2, C 5, D 3, E 3, F 1, G 1.

Core numbers: A, B, C, D and E have 2; F and G have 1. The degeneracy is 2. C has the highest degree, 5, yet its core number is no higher than B’s: degree measures how many neighbours a node has, core number how well connected those neighbours are to each other.

Directed graphs

Link graphs are directed, and two variants keep the direction. An in-core requires every node to have at least kk in-links from within the subgraph; an out-core requires kk out-links. Giatsidis, Thilikos and Vazirgiannis combined the two in D-cores: subgraphs where every node has at least kk in-links and ℓ\ell out-links inside. A group of domains that all link to each other forms a D-core with large kk and ℓ\ell; a popular site linked from everywhere but linking to few of its linkers does not.

What core numbers are good for

Limits

Core numbers are coarse: in a large graph many nodes share each value, so they rank poorly on their own. They are also sensitive to a handful of links near the threshold, since one removed link can drop a node, and through it its neighbours, by a whole shell. Use them as a structural feature next to degree, PageRank and community detection, not as a centrality in their own right.

References

Edit this entry on GitHub