2013-05-14 2 views
2

두 개의 다른 가장자리 세트로 구성된 그래프가 있습니다. 첫 번째 세트는 가중치 1 (목록 1)의 가장자리로 구성됩니다. 두 번째 세트는 가중치 2 (목록 2)의 가장자리로 만들어집니다. 먼저 networkx로 그래프를 만든 다음 add_edges_from을 사용하여 목록 1과 목록 2를 추가합니다.이 가중치 그래프에서 모든 최단 경로를 계산하고 싶습니다. 기본적으로 "all_shortest_paths"와 유사하지만 가중치 ("dijkstra"모듈은 주어진 소스와 주어진 타겟 사이의 가능한 모든 경로를 알 수 없습니다)를 찾고 있습니다. "all_shortest_path"가중 링크 (3 튜플, 두 노드 및 가중치)를 사용하려고하면 오류가 발생합니다. 아무도 나를 도울 수 있습니까? 감사합니다.networkx 가중 그래프의 모든 최단 경로?

+0

all_shortest_paths()가 작동하는 방법을 보여주는 간단한 예입니다, 미안 해요. 관리자가 이전 댓글을 삭제할 수도 있습니다 (문제가 없으므로 좋지 않습니다). 기본적으로 나는 W_nx.Graph() W.add_weighted_edges_from (edges_W1)의 행 목록 인 edges_W1 (각 행은 3 개의 항목, 노드는 2 개, 링크를 연결하는 링크의 가중치는 1)을 가지고 있습니다. 내가 print nx.all_shortest_paths (W, 0,1)를 출력하면 "<0>과 <1> 사이의 0x9b8ed9c에서 생성기 객체 all_shortest_paths가 발생합니다. – user2382948

답변

3

여기 내 설명이 완전히 명확하지 않다 것으로 나타났습니다

import networkx as nx 
import StringIO 
edges = StringIO.StringIO(""" 
a b 1 
a bb 1 
b c 2 
bb c 2 
c d 1 
a d 10""") 
G = nx.read_weighted_edgelist(edges, nodetype=str) 
print list(nx.all_shortest_paths(G, 'a', 'd', weight='weight')) 
# [['a', 'b', 'c', 'd'], ['a', 'bb', 'c', 'd']] 
+0

친애하는 Aric, 정말 고마워요! – user2382948

+0

FYI, ''nx.all_shortest_paths''는 dijkstra 메서드를 사용하여 각 꼭지점의''pred''와''dist''를 얻습니다. 그래서 그래프에 음의 가중치가 포함되어 있으면 올바른 결과를 얻지 못합니다. – Dzhuang