【问题标题】:Networkx get ancestors with depthNetworkx 获得深度的祖先
【发布时间】:2021-01-26 22:17:56
【问题描述】:

NetworkX 中是否有任何东西可以结合祖先的功能并提供每个对象的深度?

我想获取所有ancestors in NetworkX 的字典,并从源中获取其中每一个的深度。现在该函数返回一个集合,但我想知道每个项目在对象的依赖项中的深度。

我的源是一个 sql 表,它具有管道的输入和输出,然后我将其转换为有向图。示例:

input   output
b       a
c       a
x       b
y       b
z       b
w       b
l       c
m       c

在运行祖先之后,我拥有链中所有内容的集合,但我需要一种方法来也能够说 x 是 3 级或深度 3 对象。

我一直在查看traversal 等各种功能,但没有什么能提供此功能。此时我是否需要创建自己的循环来重新创建具有深度的祖先?

【问题讨论】:

  • 查找树中每个节点的深度是一个由来已久的算法。我提供了一个指向先前问题的链接,该问题显示了基本递归;您只需要在完成子节点时将计算的深度分配给每个节点。这确实是您在基本图算法中查找的内容。
  • 这是一个关于 NetworkX 的问题,而不仅仅是如何搜索深度。可以重新打开,因为链接的问题不是我要问的吗?

标签: python networkx


【解决方案1】:

我假设你已经完成了预处理,并且有一个图表pipe,并且你知道根节点a

single_source_shortest_path_length(path, a)

这将返回节点和路径长度的字典。深度是路径长度加 1。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多