Skip to main content
`Ctrl`+`K`

# core_number

core_number(G)

  Returns the core number for each node.

  A k-core is a maximal subgraph that contains nodes of degree k or more.

  The core number of a node is the largest value k of a k-core containing that node.

  Parameters:
    G NetworkX graph

      An undirected or directed graph

  Returns:
    core_number dictionary

      A dictionary keyed by node to the core number.

  Raises:
    NetworkXNotImplemented

      If `G` is a multigraph or contains self loops.

  Notes

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

  References

  [1]

  An O(m) Algorithm for Cores Decomposition of Networks Vladimir Batagelj and Matjaz Zaversnik, 2003. https://arxiv.org/abs/cs.DS/0310049

  Examples

      >>> degrees = [0, 1, 2, 2, 2, 2, 3]
      >>> H = nx.havel_hakimi_graph(degrees)
      >>> nx.core_number(H)
      {0: 1, 1: 2, 2: 2, 3: 2, 4: 1, 5: 2, 6: 0}
      >>> G = nx.DiGraph()
      >>> G.add_edges_from([(1, 2), (2, 1), (2, 3), (2, 4), (3, 4), (4, 3)])
      >>> nx.core_number(G)
      {1: 2, 2: 2, 3: 2, 4: 2}