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