# 5.7. Shortest Path Lengths¶

The next step is to compute the characteristic path length, $$L$$, which is the average length of the shortest path between each pair of nodes. To compute it, we will start with a function provided by NetworkX, shortest_path_length. We will use it to replicate the Watts and Strogatz experiment, then we will see how it works.

Here’s a function that takes a graph and returns a list of shortest path lengths, one for each pair of nodes.

def path_lengths(G):
length_map = nx.shortest_path_length(G)
lengths = [length_map[u][v] for u, v in all_pairs(G)]
return lengths


The return value from nx.shortest_path_length is a dictionary of dictionaries. The outer dictionary maps from each node, u, to a dictionary that maps from each node, v, to the length of the shortest path from u to v.

With the list of lengths from path_lengths, we can compute $$L$$ like this:

def characteristic_path_length(G):
return np.mean(path_lengths(G))


And we can test it with a small ring lattice:

>>> lattice = make_ring_lattice(3, 2)
>>> characteristic_path_length(lattice)
1.0


In this example, all 3 nodes are connected to each other, so the mean path length is $$1$$.