50 lines
1.0 KiB
Python
50 lines
1.0 KiB
Python
"""
|
|
==========
|
|
Properties
|
|
==========
|
|
|
|
Compute some network properties for the lollipop graph.
|
|
"""
|
|
|
|
import matplotlib.pyplot as plt
|
|
import networkx as nx
|
|
|
|
G = nx.lollipop_graph(4, 6)
|
|
|
|
pathlengths = []
|
|
|
|
print("source vertex {target:length, }")
|
|
for v in G.nodes():
|
|
spl = dict(nx.single_source_shortest_path_length(G, v))
|
|
print(f"{v} {spl} ")
|
|
for p in spl:
|
|
pathlengths.append(spl[p])
|
|
|
|
print()
|
|
print(f"average shortest path length {sum(pathlengths) / len(pathlengths)}")
|
|
|
|
# histogram of path lengths
|
|
dist = {}
|
|
for p in pathlengths:
|
|
if p in dist:
|
|
dist[p] += 1
|
|
else:
|
|
dist[p] = 1
|
|
|
|
print()
|
|
print("length #paths")
|
|
verts = dist.keys()
|
|
for d in sorted(verts):
|
|
print(f"{d} {dist[d]}")
|
|
|
|
print(f"radius: {nx.radius(G)}")
|
|
print(f"diameter: {nx.diameter(G)}")
|
|
print(f"eccentricity: {nx.eccentricity(G)}")
|
|
print(f"center: {nx.center(G)}")
|
|
print(f"periphery: {nx.periphery(G)}")
|
|
print(f"density: {nx.density(G)}")
|
|
|
|
pos = nx.spring_layout(G, seed=3068) # Seed layout for reproducibility
|
|
nx.draw(G, pos=pos, with_labels=True)
|
|
plt.show()
|