pseudo_diameter#
- graph_tool.topology.pseudo_diameter(g, source=None, weights=None)[source]#
Compute the pseudo-diameter of the graph.
- Parameters:
- g
Graph
Graph to be used.
- source
Vertex
(optional, default: None) Source vertex of the search. If not supplied, the first vertex in the graph will be chosen.
- weights
EdgePropertyMap
(optional, default: None) The edge weights.
- g
- Returns:
- pseudo_diameterint
The pseudo-diameter of the graph.
- end_pointspair of
Vertex
The two vertices which correspond to the pseudo-diameter found.
Notes
The pseudo-diameter is an approximate graph diameter. It is obtained by starting from a vertex source, and finds a vertex target that is farthest away from source. This process is repeated by treating target as the new starting vertex, and ends when the graph distance no longer increases. A vertex from the last level set that has the smallest degree is chosen as the final starting vertex u, and a traversal is done to see if the graph distance can be increased. This graph distance is taken to be the pseudo-diameter.
The paths are computed with a breadth-first search (BFS) or Dijkstra’s algorithm [dijkstra], if weights are given.
The algorithm runs in \(O(V + E)\) time, or \(O(V \log V)\) if weights are given.
References
[pseudo-diameter][dijkstra]E. Dijkstra, “A note on two problems in connexion with graphs.” Numerische Mathematik, 1:269-271, 1959.
Examples
>>> from numpy.random import poisson >>> g = gt.random_graph(300, lambda: (poisson(3), poisson(3))) >>> dist, ends = gt.pseudo_diameter(g) >>> print(dist) 8.0 >>> print(int(ends[0]), int(ends[1])) 0 157