使用Networkx在Python中查找1跳,2跳,...,k跳邻居

时间:2019-04-19 12:03:51

标签: python-3.x networkx dijkstra

我正在尝试使用l在图中查找某些特定节点(例如nx.single_source_dijkstra_path_length节点)的1跳,2跳以及k跳邻居。

  1. 根据每个步骤(1跳,2跳,...)和
  2. 的时间复杂度是多少
  3. 有没有更快的算法?

1 个答案:

答案 0 :(得分:0)

如果您正在查看未加权图,则可以使用广度优先搜索,并且小k的时间复杂度应平均为O(<k>^k),其中<k>是所考虑图的平均程度

如果要计算加权图中的多个距离,则应使用multi_source_dijkstra_path_length。我不确定该算法具有哪个运行时,但是与Dijkstra的多次运行相比,这是一个改进,Dijkstra具有O(|V|log(|V|)+|E|)(取决于实现)。

如果要在加权图中使用最大距离阈值,则可能取决于边缘上的权重分布以及最小或平均边缘权重,这会影响计算达到阈值所需的节点数。