Что я ищу здесь, вполне может быть встроенной функцией в networkx
и иметь математическое имя - если это так, я хотел бы знать, что это такое! Кажется, это очень сложно для Google.Как вычислить «близлежащие» узлы с помощью networkx
Учитывая график G
и начальный узел i
, я хотел бы найти подграф всех узлов «в пределах P
краев» от i
- то есть, те, которые связаны с i
по пути менее чем P
кромки.
Мой проект реализации для этого:
import networkx as nx
N = 30
G = nx.Graph()
# populate the graph...
G.add_cycle(range(N))
# the starting node:
i = 15
# the 'distance' limit:
P = 4
neighborhood = [i]
new_neighbors = [i]
depth = 0
while depth < P:
new_neighbors = list(set(sum([
[k for k in G[j].keys() if k not in neighborhood]
for j in new_neighbors], [])))
neighborhood.extend(new_neighbors)
depth += 1
Gneighbors = G.subgraph(neighborhood)
Этот код работает, кстати, так что я не нужна помощь в реализации. Я просто хотел бы знать, имеет ли это имя, и предоставлена ли она библиотекой networkx
.
Это очень полезно, когда ваш код падает, и вы хотите понять, почему - вы можете отобразить только «локальность/область» графика рядом с проблемным узлом.
Спасибо, на самом деле это выглядит как nx.single_source_shortest_path_length будет лучше, так как это возвращает меньше данных (я предполагаю, что это также делает меньше работы). Но да, это наименьший код для написания/поддержки, спасибо! – tehwalrus