Warning

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

networkx.algorithms.operators.product.cartesian_product

cartesian_product(G, H)[source]

Return the Cartesian product of G and H.

The Cartesian product P of the graphs G and H has a node set that is the Cartesian product of the node sets, V(P)=V(G)×V(H). P has an edge ((u,v),(x,y)) if and only if either u is equal to x and both v and y are adjacent in H or if v is equal to y and both u and x are adjacent in G.

Parameters:G, H (graphs) – Networkx graphs.
Returns:P – The Cartesian product of G and H. P will be a multi-graph if either G or H is a multi-graph. Will be a directed if G and H are directed, and undirected if G and H are undirected.
Return type:NetworkX graph
Raises:NetworkXError – If G and H are not both directed or both undirected.

Notes

Node attributes in P are two-tuple of the G and H node attributes. Missing attributes are assigned None.

Examples

>>>
>>> G = nx.Graph()
>>> H = nx.Graph()
>>> G.add_node(0, a1=True)
>>> H.add_node('a', a2='Spam')
>>> P = nx.cartesian_product(G, H)
>>> list(P)
[(0, 'a')]

Edge attributes and edge keys (for multigraphs) are also copied to the new product graph