python networkx模块里面计算最短路径时,如何处理等价路径?我怎么测试只能显示1条路径,请大神赐教。

importnetworkxasnxG=nx.MultiDiGraph()G.add_nodes_from(['北京','上海''广东''辽宁'])G.add_weigh... import networkx as nx
G = nx.MultiDiGraph()
G.add_nodes_from (['北京','上海''广东''辽宁'])
G.add_weighted_edges_from ([('北京','上海',2000) ,('北京','辽宁',2000) ,('上海','广东',2000),('辽宁','广东',2000)] )
pos = nx.spring_layout(G)
path = nx.dijkstra_path(G,source="北京",target= "广东")
length = nx.dijkstra_path_length(G,source="北京",target= "广东")
print (path)
print (length)
程序运行的结果如下,按理来说,北京-上海-广东、北京-辽宁-广东这2条路径是等价的。
['北京', '上海', '广东']
4000
展开
 我来答
  • 你的回答被采纳后将获得:
  • 系统奖励15(财富值+成长值)+难题奖励20(财富值+成长值)
腾讯电脑管家
2018-11-04 · 百度知道官方认证企业
腾讯电脑管家
腾讯电脑管家是腾讯公司推出的免费安全管理软件,能有效预防和解决计算机上常见的安全风险,并帮助用户解决各种电脑“疑难杂症”、优化系统和网络环境,是中国综合能力最强、最稳定的安全软件。
向TA提问
展开全部
if source is None: if target is None: ## Find paths between all pairs. if weight is None: paths=nx.all_pairs_shortest_path(G) else: paths=nx.all_pairs_dijkstra_path(G,weight=weight) else: ## Find paths from all nodes co-accessible to the target. directed = G.is_directed() if directed: G.reverse(copy=False) if weight is None: paths=nx.single_source_shortest_path(G,target) else: paths=nx.single_source_dijkstra_path(G,target,weight=weight) # Now flip the paths so they go from a source to the target. for target in paths: paths[target] = list(reversed(paths[target])) if directed: G.reverse(copy=False) else: if target is None: ## Find paths to all nodes accessible from the source. if weight is None: paths=nx.single_source_shortest_path(G,source) else: paths=nx.single_source_dijkstra_path(G,source,weight=weight) else: ## Find shortest source-target path. if weight is None: paths=nx.bidirectional_shortest_path(G,source,target) else: paths=nx.dijkstra_path(G,source,target,weight)
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式