Python networkx:生成具有权重的JSON树

Python networkx:生成具有权重的JSON树,python,json,tree,flask,networkx,Python,Json,Tree,Flask,Networkx,对于一个更有经验的程序员来说,这可能很容易解决,但我真的还没有找到解决方案 我有一个networkx有向图(在Python w/flask中),其中包含元组作为节点,以及带权重的边 我想提取从开始节点到结束节点的所有路径的树,以及它们的权重。这基本上是所有简单路径(),但带有权重,并将它们以JSON格式导出为树,有一个根(开始节点),所有(简单)路径直到结束节点 我研究的解决方案(除其他外): 所有_simple_path()忽略权重,并且还不会生成树 bfs_tree()似乎很接近,但忽略了

对于一个更有经验的程序员来说,这可能很容易解决,但我真的还没有找到解决方案

我有一个networkx有向图(在Python w/flask中),其中包含元组作为节点,以及带权重的边

我想提取从开始节点到结束节点的所有路径的树,以及它们的权重。这基本上是所有简单路径(),但带有权重,并将它们以JSON格式导出为树,有一个根(开始节点),所有(简单)路径直到结束节点

我研究的解决方案(除其他外):

  • 所有_simple_path()忽略权重,并且还不会生成树
  • bfs_tree()似乎很接近,但忽略了权重,我可以不添加结束节点(可能没有重复节点?)
  • 我认为使用[d | b]fs_()的递归函数可以完成这项工作,但我不知道如何构建它

如有任何关于如何操作的提示,我们将不胜感激。:)

这个问题需要一些特殊性,但这里需要为节点构造一些带有元组的虚拟数据,提取任意路径,并转储为JSON格式

设置一些虚拟数据 创建图形 结果 有关其他JSON导出格式,请参见

{'directed': True, 
 'graph': [], 
 'nodes': [{'id': ('g', 'h', 'i')}, 
           {'id': ('p', 'q', 'r')}, 
           {'id': ('a', 'b', 'c')}, 
           {'id': ('m', 'n', 'o')}, 
           {'id': ('v', 'w', 'x')}], 
 'links': [{'source': 0, 'target': 1, 'weight': 0.5156976823289995}, 
           {'source': 1, 'target': 4, 'weight': 0.7392883299553644}, 
           {'source': 3, 'target': 0, 'weight': 0.2109456825712841}, 
           {'source': 4, 'target': 2, 'weight': 0.8368736026881095}], 
 'multigraph': False}

这太模糊了,你能展示一些代码或者你试过什么吗
import networkx as nx
from networkx.readwrite import json_graph

G = nx.DiGraph()
G.add_edges_from(edges)

# Extract a Path between Two Arbitrary Nodes
u = ('m', 'n', 'o')
v = ('a', 'b', 'c')
paths = list(nx.all_simple_paths(G, u,v))
path = paths[0]

# Extract the Subgraph of G using the Selected Nodes
H = G.subgraph(path)

# Output to JSON in Node-Link Format
print json_graph.node_link_data(H)
{'directed': True, 
 'graph': [], 
 'nodes': [{'id': ('g', 'h', 'i')}, 
           {'id': ('p', 'q', 'r')}, 
           {'id': ('a', 'b', 'c')}, 
           {'id': ('m', 'n', 'o')}, 
           {'id': ('v', 'w', 'x')}], 
 'links': [{'source': 0, 'target': 1, 'weight': 0.5156976823289995}, 
           {'source': 1, 'target': 4, 'weight': 0.7392883299553644}, 
           {'source': 3, 'target': 0, 'weight': 0.2109456825712841}, 
           {'source': 4, 'target': 2, 'weight': 0.8368736026881095}], 
 'multigraph': False}