k_crust(G, k=None, core_number=None)[source]#

Returns the k-crust of G.

The k-crust is the graph G with the edges of the k-core removed and isolated nodes found after the removal of edges are also removed.

Deprecated since version 3.3: k_crust will not accept MultiGraph objects in version 3.5.

GNetworkX graph

A graph or directed graph.

kint, optional

The order of the shell. If not specified return the main crust.

core_numberdictionary, optional

Precomputed core numbers for the graph G.

GNetworkX graph

The k-crust subgraph


The k-crust is not implemented for multigraphs or graphs with self loops.

See also



This definition of k-crust is different than the definition in [1]. The k-crust in [1] is equivalent to the k+1 crust of this algorithm.

For directed graphs the node degree is defined to be the in-degree + out-degree.

Graph, node, and edge attributes are copied to the subgraph.


[1] (1,2)

A model of Internet topology using k-shell decomposition Shai Carmi, Shlomo Havlin, Scott Kirkpatrick, Yuval Shavitt, and Eran Shir, PNAS July 3, 2007 vol. 104 no. 27 11150-11154 http://www.pnas.org/content/104/27/11150.full


>>> degrees = [0, 1, 2, 2, 2, 2, 3]
>>> H = nx.havel_hakimi_graph(degrees)
>>> H.degree
DegreeView({0: 1, 1: 2, 2: 2, 3: 2, 4: 2, 5: 3, 6: 0})
>>> nx.k_crust(H, k=1).nodes
NodeView((0, 4, 6))