我正在尝试对杜威十进分类进行一些图分析,以便我可以在两本书之间制作一段距离。 DDC有几个关系:“层次结构”,“另见”,“别处的类别”,在这里我用不同的颜色表示它们。由于这些关系不对称,您会注意到我们有一个有向图。以下是距离394.1最远4个边的所有顶点图的图片。有效枚举网络中DiGraph的所有简单路径x
的距离分类A和B,应该是A和B之间的最短路径之间度量然而颜色没有固有的加权值或偏好。但用户会提供一个。因此给出一个权重字典,例如:
weights_dict_test = {'notational_hiearchy':1,
'see_reference':0.5,
'class_elsewhere':2}
我想返回加权的最短路径。我认为如果我可以预处理两个节点之间的所有简单路径,然后找到权重字典中最短的路径,这不会成为问题。但由于该图包含> 50,000个节点。在计算24小时后,计算nx.all_simple_paths(G, a, b)
还没有返回。是否有任何建议可以并行查找all_simple_paths
。或者是一种计算给定weights_dict
的最短路径的技术,它不涉及计算all_simple_paths
?
您的问题的答案是:是的,有这方面的技术,但范围太宽了,没有一个好的答案在这里。尝试从这里开始:http://en.wikipedia.org/wiki/Shortest_path – jonrsharpe
我想也更具体一点,它将实施[有非负权的有向图]之一(http://en.wikipedia.org/wiki/) Shortest_path#Directed_graphs_with_nonnegative_weights)。 – notconfusing
你怎么代表不同的关系?这只是如果边缘有这个属性?根据属性和输入字典更新边缘属性'weight'可能不需要太长时间,然后只需使用内置的'shortest_path',它已经支持加权。此外,networkx是纯粹的python,并且最短路径的代码是可用的,如果您需要修改它以适应这种特殊情况。 –