aboutsummaryrefslogtreecommitdiff
path: root/.venv/lib/python3.12/site-packages/networkx/algorithms/isolate.py
diff options
context:
space:
mode:
Diffstat (limited to '.venv/lib/python3.12/site-packages/networkx/algorithms/isolate.py')
-rw-r--r--.venv/lib/python3.12/site-packages/networkx/algorithms/isolate.py107
1 files changed, 107 insertions, 0 deletions
diff --git a/.venv/lib/python3.12/site-packages/networkx/algorithms/isolate.py b/.venv/lib/python3.12/site-packages/networkx/algorithms/isolate.py
new file mode 100644
index 00000000..1ea8abe9
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/networkx/algorithms/isolate.py
@@ -0,0 +1,107 @@
+"""
+Functions for identifying isolate (degree zero) nodes.
+"""
+
+import networkx as nx
+
+__all__ = ["is_isolate", "isolates", "number_of_isolates"]
+
+
+@nx._dispatchable
+def is_isolate(G, n):
+ """Determines whether a node is an isolate.
+
+ An *isolate* is a node with no neighbors (that is, with degree
+ zero). For directed graphs, this means no in-neighbors and no
+ out-neighbors.
+
+ Parameters
+ ----------
+ G : NetworkX graph
+
+ n : node
+ A node in `G`.
+
+ Returns
+ -------
+ is_isolate : bool
+ True if and only if `n` has no neighbors.
+
+ Examples
+ --------
+ >>> G = nx.Graph()
+ >>> G.add_edge(1, 2)
+ >>> G.add_node(3)
+ >>> nx.is_isolate(G, 2)
+ False
+ >>> nx.is_isolate(G, 3)
+ True
+ """
+ return G.degree(n) == 0
+
+
+@nx._dispatchable
+def isolates(G):
+ """Iterator over isolates in the graph.
+
+ An *isolate* is a node with no neighbors (that is, with degree
+ zero). For directed graphs, this means no in-neighbors and no
+ out-neighbors.
+
+ Parameters
+ ----------
+ G : NetworkX graph
+
+ Returns
+ -------
+ iterator
+ An iterator over the isolates of `G`.
+
+ Examples
+ --------
+ To get a list of all isolates of a graph, use the :class:`list`
+ constructor::
+
+ >>> G = nx.Graph()
+ >>> G.add_edge(1, 2)
+ >>> G.add_node(3)
+ >>> list(nx.isolates(G))
+ [3]
+
+ To remove all isolates in the graph, first create a list of the
+ isolates, then use :meth:`Graph.remove_nodes_from`::
+
+ >>> G.remove_nodes_from(list(nx.isolates(G)))
+ >>> list(G)
+ [1, 2]
+
+ For digraphs, isolates have zero in-degree and zero out_degre::
+
+ >>> G = nx.DiGraph([(0, 1), (1, 2)])
+ >>> G.add_node(3)
+ >>> list(nx.isolates(G))
+ [3]
+
+ """
+ return (n for n, d in G.degree() if d == 0)
+
+
+@nx._dispatchable
+def number_of_isolates(G):
+ """Returns the number of isolates in the graph.
+
+ An *isolate* is a node with no neighbors (that is, with degree
+ zero). For directed graphs, this means no in-neighbors and no
+ out-neighbors.
+
+ Parameters
+ ----------
+ G : NetworkX graph
+
+ Returns
+ -------
+ int
+ The number of degree zero nodes in the graph `G`.
+
+ """
+ return sum(1 for v in isolates(G))