python有向图遍历_用Networkx进行有向图遍历

python有向图遍历_用Networkx进行有向图遍历好吧 我要介绍的解决方案有点老套 但我愿意接受更多优化建议 在首先 我们将创建一个用于测试的虚拟图 importnetwor nx balanced tree 2 4 create using nx DiGraph 接下来 我们将使用 networkx 的 dfs treeAPI 使用最新版本 并使用 depth limit 属性来提取深度为 n 和 的树 其中 n 1 是用户输入的深

好吧,我要介绍的解决方案有点老套,但我愿意接受更多优化建议。在

首先,我们将创建一个用于测试的虚拟图import networkx as nx

G = nx.balanced_tree(2,4,create_using=nx.DiGraph())

接下来,我们将使用networkx的dfs_treeAPI(使用最新版本),并使用depth_limit属性来提取深度为n和{}的树,其中n+1是用户输入的深度(因为它从1开始索引深度)

^{pr2}$

然后对深度n+1执行相同的操作T2 = nx.dfs_tree(G, source=0,depth_limit=4)

T2_edges =list(T2.edges())

#[(0, 1), (0, 2), (1, 3), (1, 4), (2, 5), (2, 6), (3, 8), (3, 7), (4, 9), (4, 10), (5, 11), (5, 12), (6, 13), (6, 14), (7, 16), (7, 15), (8, 17), (8, 18), (9, 19), (9, 20), (10, 21), (10, 22), (11, 24), (11, 23), (12, 25), (12, 26), (13, 27), (13, 28), (14, 29), (14, 30)]

现在来看看这两个列表的XORedges_left = list(set(T1_edges).symmetric_difference(T2_edges))

#[(14, 30), (11, 23), (10, 21), (7, 16), (11, 24), (7, 15), (10, 22), (9, 20), (12, 25), (13, 28), (8, 17), (14, 29), (12, 26), (13, 27), (8, 18), (9, 19)]

这些是3级的边。现在提取这些级别的节点nodes_at_level = set([x[0] for x in edges_left])

#{7, 8, 9, 10, 11, 12, 13, 14}

然后使用bfs_tree在这些节点提取树for n in nodes_at_level:

tree = nx.bfs_tree(G, n)

print tree.edges() #Do whatever you want with those subgraphs

#[(7, 16), (7, 15)]

#[(8, 17), (8, 18)]

#[(9, 19), (9, 20)]

#[(10, 21), (10, 22)]

#[(11, 24), (11, 23)]

#[(12, 25), (12, 26)]

#[(13, 27), (13, 28)]

#[(14, 29), (14, 30)]

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/219454.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 下午10:31
下一篇 2026年3月17日 下午10:31


相关推荐

  • 马哥学习—-李洋个人笔记—-ansible学习心得

    马哥学习—-李洋个人笔记—-ansible学习心得

    2021年6月9日
    120
  • shell编程入门_unix编程

    shell编程入门_unix编程1.Shell的概念shell是一个命令行解释器,它为客户提供了一个Linux内核发送请求一边运行程序界面系统级程序,用汉语可以通过shell启动、挂起、停止甚至编写一些程序。shell还是一个功能强大的编程语言,易于编辑,易于调试,灵活性强,shell是结识知识性的脚本语言,在我们shell中直接调用Linux的系统命令操作即可。2.Shell的分类(1)BourneShell(bshell)从1979年在unix系统就开始使用了。它的主要…

    2025年6月19日
    3
  • 更新 Openclaw ​

    更新 Openclaw ​

    2026年3月13日
    6
  • 优化算法——梯度下降法

    优化算法——梯度下降法最近一直在看机器学习的材料,归纳起来就是把一个学习的问题转化为优化的问题,机器学习算法的本质就是如何对问题抽象建模,使一个学习的问题变为一个优化的问题。优化的算法有很多种,从最基本的梯度下降法到现在的一些启发式算法,如遗传算法(GA),差分演化算法(DE),粒子群算法(PSO)和人工蜂群算法(ABC)。梯度下降法又被称为最速下降法(Steepestdescendmethod),其理论基

    2025年7月13日
    4
  • VB编程:ReleaseCapture&SendMessage拖动无标题栏的窗体-57

    VB编程:ReleaseCapture&SendMessage拖动无标题栏的窗体-57 PrivateDeclareFunctionReleaseCaptureLib"user32"()AsLongPrivateDeclareFunctionSendMessageLib"user32"Alias"SendMessageA"(ByValhwndAsLong,ByValwMsgAsLong,ByValwP…

    2022年5月22日
    46
  • QComboBox样式表

    QComboBox样式表样式基本格式 QComboBox font family MicrosoftYaH 字体类型 font size 25px 字体大小 像素 color bdc8e2 字体颜色 background color rgba r g b a 值 transparent 为透明 设置字体样式 font family Microsoft

    2026年3月16日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号