| """ |
| 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_degree: |
| |
| >>> 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)) |
|
|