networkx
имеет набор алгоритмов для таких задач: центральность . Например, вы можете использовать простейшую функцию: closeness_centrality :
# Create a random graph
G = nx.gnp_random_graph(50, 0.1)
nx.closeness_centrality(G)
{0: 0.3888888888888889,
1: 0.45794392523364486,
2: 0.35507246376811596,
3: 0.4375,
4: 0.4083333333333333,
5: 0.3684210526315789,
...
# Draw the graph
labels = {n: n for n in G.nodes}
nx.draw(G, with_labels=True, labels=labels)
А самые удаленные (менее центральные) узлы можно перечислить, возвращая узлы с наименьшим closeness_centrality
(обратите внимание на идентификаторы узлов и узлы в синих кружках на верхнем рисунке:
c = nx.closeness_centrality(G)
sorted(c.items(), key=lambda x: x[1])[:5]
[(48, 0.28823529411764703),
(7, 0.33793103448275863),
(11, 0.35251798561151076),
(2, 0.35507246376811596),
(46, 0.362962962962963)]