NetworkX

Previous topic

networkx.generators.directed.scale_free_graph

Next topic

networkx.generators.geometric.geographical_threshold_graph

networkx.generators.geometric.random_geometric_graph

networkx.generators.geometric.random_geometric_graph(n, radius, dim=2, pos=None)

Return the random geometric graph in the unit cube.

The random geometric graph model places n nodes uniformly at random in the unit cube Two nodes u,v are connected with an edge if d(u,v)<=r where d is the Euclidean distance and r is a radius threshold.

Parameters :

n : int

Number of nodes

radius: float :

Distance threshold value

dim : int, optional

Dimension of graph

pos : dict, optional

A dictionary keyed by node with node positions as values.

Returns :

Graph :

Notes

This uses an n^2 algorithm to build the graph. A faster algorithm is possible using k-d trees.

The pos keyword can be used to specify node positions so you can create an arbitrary distribution and domain for positions. If you need a distance function other than Euclidean you’ll have to hack the algorithm.

E.g to use a 2d Gaussian distribution of node positions with mean (0,0) and std. dev. 2

>>> import random
>>> n=20
>>> p=dict((i,(random.gauss(0,2),random.gauss(0,2))) for i in range(n))
>>> G = nx.random_geometric_graph(n,0.2,pos=p)

References

[R166]Penrose, Mathew, Random Geometric Graphs, Oxford Studies in Probability, 5, 2003.

Examples

>>> G = nx.random_geometric_graph(20,0.1)