使用 Networkx 在 Python 中查找 1 跳、2 跳、...、k 跳邻居
Finding 1-hop, 2-hop, ..., k-hop neighbors in Python using Networkx
我正在尝试使用 nx.single_source_dijkstra_path_length
在图中找到一些特定节点(比如说 l
节点)的 1 跳、2 跳,如果需要的话,k 跳邻居。
- 根据每个步骤(1 跳、2 跳、...)的时间复杂度是多少,
- 有没有更快的算法?
如果你看的是未加权的图,你可以使用广度优先搜索,小k的时间复杂度应该是平均的O(<k>^k)
,其中<k>
是图的平均度数被视为图表。
如果您想在加权图中计算多个距离,您应该使用 multi_source_dijkstra_path_length。我不确定该算法具有哪个运行时,但与 Dijkstra 的多次运行相比,它可能是一个改进,Dijkstra 具有 O(|V|log(|V|)+|E|)
(取决于实现)。
如果您想在加权图中使用最大距离阈值,它可能取决于边上的权重分布以及最小或平均边权重,这会影响计算达到阈值。
我正在尝试使用 nx.single_source_dijkstra_path_length
在图中找到一些特定节点(比如说 l
节点)的 1 跳、2 跳,如果需要的话,k 跳邻居。
- 根据每个步骤(1 跳、2 跳、...)的时间复杂度是多少,
- 有没有更快的算法?
如果你看的是未加权的图,你可以使用广度优先搜索,小k的时间复杂度应该是平均的O(<k>^k)
,其中<k>
是图的平均度数被视为图表。
如果您想在加权图中计算多个距离,您应该使用 multi_source_dijkstra_path_length。我不确定该算法具有哪个运行时,但与 Dijkstra 的多次运行相比,它可能是一个改进,Dijkstra 具有 O(|V|log(|V|)+|E|)
(取决于实现)。
如果您想在加权图中使用最大距离阈值,它可能取决于边上的权重分布以及最小或平均边权重,这会影响计算达到阈值。