This documents an unmaintained version of NetworkX. Please upgrade to a maintained version and see the current NetworkX documentation.


contracted_nodes(G, u, v, self_loops=True)[source]

Returns the graph that results from contracting u and v.

Node contraction identifies the two nodes as a single node incident to any edge that was incident to the original two nodes.

  • G (NetworkX graph) – The graph whose nodes will be contracted.
  • v (u,) – Must be nodes in G.
  • self_loops (Boolean) – If this is True, any edges joining u and v in G become self-loops on the new node in the returned graph.

A new graph object of the same type as G (leaving G unmodified) with u and v identified in a single node. The right node v will be merged into the node u, so only u will appear in the returned graph.

Return type:

Networkx graph


Contracting two nonadjacent nodes of the cycle graph on four nodes \(C_4\) yields the path graph (ignoring parallel edges):

>>> import networkx as nx
>>> G = nx.cycle_graph(4)
>>> M = nx.contracted_nodes(G, 1, 3)
>>> P3 = nx.path_graph(3)
>>> nx.is_isomorphic(M, P3)


This function is also available as identified_nodes.