Warning

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

strong_product

strong_product(G, H)[source]

Return the strong product of G and H.

The strong 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) imes V(H)$. P has an edge ((u,v),(x,y)) if and only if u==v and (x,y) is an edge in H, or x==y and (u,v) is an edge in G, or (u,v) is an edge in G and (x,y) is an edge in H.

Parameters:

G, H: graphs

Networkx graphs.

Returns:

P: NetworkX graph

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.

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.

For example >>> G = nx.Graph() >>> H = nx.Graph() >>> G.add_node(0,a1=True) >>> H.add_node(‘a’,a2=’Spam’) >>> P = nx.strong_product(G,H) >>> P.nodes() [(0, ‘a’)]

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