2013-06-25 3 views
10

여기에서 찾고있는 것은 networkx에 내장 된 함수 일 수 있으며 수학적 이름이 있습니다. 그렇다면 무엇인지 알고 싶습니다. 그것은 Google에게는 매우 어렵습니다. networkx를 사용하여 '근처'노드를 계산하는 방법

그래프 G 및 시작 노드 i, 나는 i에서 " P 가장자리에서"모든 노드의 서브 그래프를 찾으려면 감안할 때 - 즉, 이하 P의 경로 i에 연결되어있는 자들을 가장자리. 이것에 대한

내 초안 구현은 다음과 같습니다

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 라이브러리에 의해 제공되는지를 알고 싶을뿐입니다.

코드가 충돌 할 때 매우 유용합니다. 왜 그런지 알고 싶을 때 - 문제 노드 근처의 그래프의 "지역/지역"만 렌더링 할 수 있습니다. p

뭔가 등의 컷오프

답변

9

사용 single_source_shortest_path 또는 single_source_shortest_path_length :

nx.single_source_shortest_path_length(G ,source=i, cutoff=p) 
+1

실제로 nx.single_source_shortest_path_length가 더 좋을 것 같습니다. 그보다 적은 양의 데이터가 반환되기 때문입니다. 하지만 그래,이 최소한의 코드를 작성/유지, 감사합니다! – tehwalrus

17

2 년 늦게, 그러나 나는이 같은 일을 찾고 발견 된 내장 내가 얻을 것이다 생각 원하는 하위 그래프 : ego_graph. 함수 서명 및 문서 : 노드에서 n은 주어진 반경을 중심으로 이웃의 서브 그래프를 유도

ego_graph(G, n, radius=1, center=True, undirected=False, distance=None) 

돌아갑니다.

+0

정말 유용한 것들! +1 – FaCoffee

관련 문제