pygraphviz:使用后继者找到最大秩节点

杰森

我正在尝试找到最大等级节点和深度。这是我的代码。

import pygraphviz as pgv


class Test:
    def __init__(self):
        self.G = pgv.AGraph(directed=True)

        self.G.add_node('a')
        self.G.add_node('b')
        self.G.add_node('c')
        self.G.add_node('d')
        self.G.add_node('e')
        self.G.add_node('f')

        self.G.add_edge('a', 'b')
        self.G.add_edge('b', 'c')
        self.G.add_edge('b', 'd')
        self.G.add_edge('d', 'e')
        self.G.add_edge('e', 'f')
        print(self.G.string())
        self.find_max_rank_node()

    def find_max_rank_node(self):
        nodes = self.G.nodes()
        depth = 0
        for n in nodes:
            layer1 = self.G.successors(n)
            if layer1:
                depth = depth + 1
                for layer_one in layer1:
                    layer2 = self.G.successors(layer_one)
                    print(n, layer2)


if __name__ == '__main__': Test()

输出应为f4我开始对其进行编码,但是意识到我不会知道分支的深度...而且我不确定如何编写循环。

MichałSłapek

使用NetworkX Python库中的算法进行图形处理。

使用安装NetworkX pip install networkx然后:

import networkx as nx
from networkx.drawing.nx_agraph import from_agraph
import pygraphviz as pgv

# constructing graph with pygraphviz
G = pgv.AGraph(directed=True)

G.add_node('a')
G.add_node('b')
G.add_node('c')
G.add_node('d')
G.add_node('e')
G.add_node('f')

G.add_edge('a', 'b')
G.add_edge('b', 'c')
G.add_edge('b', 'd')
G.add_edge('d', 'e')
G.add_edge('e', 'f')

# converting pygraphviz graph to networkx graph
X = from_agraph(G)

# dictionary {node: length}
lengths = nx.shortest_path_length(X, 'a')

result = max(lengths.items(), key=lambda p: p[1])

结果是('f', 4)


边注

因为问题是关于pygraphviz,所以我提供了将pygraphviz对象转换为的解决方案networkx

您也可以networkx在软件中仅使用图形,然后再使用转换为pygraphviz图形networkx.drawing.nx_agraph.to_agraph

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在SML / NJ中使用后继ML

来自分类Dev

如何证明从最小节点在BST中找到n-1次后继者是O(n)?

来自分类Dev

pygraphviz:在子图/图中找到最低排名的节点

来自分类Dev

如何使用后继硒VBA遍历各种类

来自分类Dev

使用递归确定序言中的后继者

来自分类Dev

如何使用pygraphviz为点连接记录中的graphviz节点?

来自分类Dev

如何使用pygraphviz为点连接记录中的graphviz节点?

来自分类Dev

通过使用密集秩函数获得第二个最大值

来自分类Dev

如何找到树中节点的最大总和

来自分类Dev

使用后继兄弟查找xpath并在Python Selenium中包含文本

来自分类Dev

Neuraxle的RandomSearch()后继者

来自分类Dev

搜索BST节点的后继者,“克隆以满足借用检查器”灾难

来自分类Dev

在pyGraphViz中设置节点的颜色

来自分类Dev

删除使用XPath找到的节点

来自分类Dev

使用递归以三者为参数找到二叉树中叶节点的最长路径

来自分类Dev

使用pygraphviz_layout时,即使节点位于networkx图形中,也会出现“ KeyError:节点不在图形中”

来自分类Dev

删除B树中的节点-使用有序的前任vs后继作为替换密钥

来自分类Dev

防止边缘越过pygraphviz中的节点

来自分类Dev

使用Matlab的矩阵低秩逼近

来自分类Dev

为wilcoxon符号秩检验找到排斥区域

来自分类Dev

使用加权关系找到与节点最近的邻居

来自分类Dev

木偶:无法使用名称找到默认节点

来自分类Dev

在函数调用后继续运行脚本

来自分类Dev

完成ajax调用后继续在js程序中

来自分类Dev

熊猫:在滚动窗口中找到最大值,然后为最大值行返回另一列的总和,然后继续四行

来自分类Dev

未找到 Puppet 节点,未使用默认节点

来自分类Dev

如何使用 Roslyn 在给定节点之前找到节点?

来自分类Dev

networkx-遍历从节点A到节点A的所有路径,执行操作并找到最大值

来自分类Dev

找到一个节点和具有最大连接边的节点的连接边数

Related 相关文章

  1. 1

    在SML / NJ中使用后继ML

  2. 2

    如何证明从最小节点在BST中找到n-1次后继者是O(n)?

  3. 3

    pygraphviz:在子图/图中找到最低排名的节点

  4. 4

    如何使用后继硒VBA遍历各种类

  5. 5

    使用递归确定序言中的后继者

  6. 6

    如何使用pygraphviz为点连接记录中的graphviz节点?

  7. 7

    如何使用pygraphviz为点连接记录中的graphviz节点?

  8. 8

    通过使用密集秩函数获得第二个最大值

  9. 9

    如何找到树中节点的最大总和

  10. 10

    使用后继兄弟查找xpath并在Python Selenium中包含文本

  11. 11

    Neuraxle的RandomSearch()后继者

  12. 12

    搜索BST节点的后继者,“克隆以满足借用检查器”灾难

  13. 13

    在pyGraphViz中设置节点的颜色

  14. 14

    删除使用XPath找到的节点

  15. 15

    使用递归以三者为参数找到二叉树中叶节点的最长路径

  16. 16

    使用pygraphviz_layout时,即使节点位于networkx图形中,也会出现“ KeyError:节点不在图形中”

  17. 17

    删除B树中的节点-使用有序的前任vs后继作为替换密钥

  18. 18

    防止边缘越过pygraphviz中的节点

  19. 19

    使用Matlab的矩阵低秩逼近

  20. 20

    为wilcoxon符号秩检验找到排斥区域

  21. 21

    使用加权关系找到与节点最近的邻居

  22. 22

    木偶:无法使用名称找到默认节点

  23. 23

    在函数调用后继续运行脚本

  24. 24

    完成ajax调用后继续在js程序中

  25. 25

    熊猫:在滚动窗口中找到最大值,然后为最大值行返回另一列的总和,然后继续四行

  26. 26

    未找到 Puppet 节点,未使用默认节点

  27. 27

    如何使用 Roslyn 在给定节点之前找到节点?

  28. 28

    networkx-遍历从节点A到节点A的所有路径,执行操作并找到最大值

  29. 29

    找到一个节点和具有最大连接边的节点的连接边数

热门标签

归档