aboutsummaryrefslogtreecommitdiff
path: root/.venv/lib/python3.12/site-packages/networkx/algorithms/operators/unary.py
diff options
context:
space:
mode:
authorS. Solomon Darnell2025-03-28 21:52:21 -0500
committerS. Solomon Darnell2025-03-28 21:52:21 -0500
commit4a52a71956a8d46fcb7294ac71734504bb09bcc2 (patch)
treeee3dc5af3b6313e921cd920906356f5d4febc4ed /.venv/lib/python3.12/site-packages/networkx/algorithms/operators/unary.py
parentcc961e04ba734dd72309fb548a2f97d67d578813 (diff)
downloadgn-ai-master.tar.gz
two version of R2R are hereHEADmaster
Diffstat (limited to '.venv/lib/python3.12/site-packages/networkx/algorithms/operators/unary.py')
-rw-r--r--.venv/lib/python3.12/site-packages/networkx/algorithms/operators/unary.py77
1 files changed, 77 insertions, 0 deletions
diff --git a/.venv/lib/python3.12/site-packages/networkx/algorithms/operators/unary.py b/.venv/lib/python3.12/site-packages/networkx/algorithms/operators/unary.py
new file mode 100644
index 00000000..79e44d1c
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/networkx/algorithms/operators/unary.py
@@ -0,0 +1,77 @@
+"""Unary operations on graphs"""
+
+import networkx as nx
+
+__all__ = ["complement", "reverse"]
+
+
+@nx._dispatchable(returns_graph=True)
+def complement(G):
+ """Returns the graph complement of G.
+
+ Parameters
+ ----------
+ G : graph
+ A NetworkX graph
+
+ Returns
+ -------
+ GC : A new graph.
+
+ Notes
+ -----
+ Note that `complement` does not create self-loops and also
+ does not produce parallel edges for MultiGraphs.
+
+ Graph, node, and edge data are not propagated to the new graph.
+
+ Examples
+ --------
+ >>> G = nx.Graph([(1, 2), (1, 3), (2, 3), (3, 4), (3, 5)])
+ >>> G_complement = nx.complement(G)
+ >>> G_complement.edges() # This shows the edges of the complemented graph
+ EdgeView([(1, 4), (1, 5), (2, 4), (2, 5), (4, 5)])
+
+ """
+ R = G.__class__()
+ R.add_nodes_from(G)
+ R.add_edges_from(
+ ((n, n2) for n, nbrs in G.adjacency() for n2 in G if n2 not in nbrs if n != n2)
+ )
+ return R
+
+
+@nx._dispatchable(returns_graph=True)
+def reverse(G, copy=True):
+ """Returns the reverse directed graph of G.
+
+ Parameters
+ ----------
+ G : directed graph
+ A NetworkX directed graph
+ copy : bool
+ If True, then a new graph is returned. If False, then the graph is
+ reversed in place.
+
+ Returns
+ -------
+ H : directed graph
+ The reversed G.
+
+ Raises
+ ------
+ NetworkXError
+ If graph is undirected.
+
+ Examples
+ --------
+ >>> G = nx.DiGraph([(1, 2), (1, 3), (2, 3), (3, 4), (3, 5)])
+ >>> G_reversed = nx.reverse(G)
+ >>> G_reversed.edges()
+ OutEdgeView([(2, 1), (3, 1), (3, 2), (4, 3), (5, 3)])
+
+ """
+ if not G.is_directed():
+ raise nx.NetworkXError("Cannot reverse an undirected graph.")
+ else:
+ return G.reverse(copy=copy)