Spaces:
Paused
Paused
| """ | |
| Functions for identifying isolate (degree zero) nodes. | |
| """ | |
| import networkx as nx | |
| __all__ = ["is_isolate", "isolates", "number_of_isolates"] | |
| 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 | |
| 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) | |
| 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`. | |
| """ | |
| # TODO This can be parallelized. | |
| return sum(1 for v in isolates(G)) | |