繁体   English   中英

NetworkX:如何返回 Bool 判断节点是否具有边缘?

[英]NetworkX: How to Return Bool over whether a node has an edge?

我有一个要连接的 nx 个节点的列表,并且需要断言父节点只能绘制一条边,而子节点可以绘制多条边。 为了帮助解释,下面是我渲染的点文件。 我不希望顶部节点为找到它的每个实例绘制一条边。 只是它下面的下一个逻辑节点(超集),即 (1,4) -> (1,4,8) 和 (1,4,8)->(1,4,8,13):

在此处输入图片说明

我想如果我可以确保任何节点只能在父节点 (i) 没有子节点 (j) 连接到它的情况下才能继续执行 for 循环,那么我的想法应该可行。 任何帮助或文档参考将不胜感激。

我的代码:

for i in G.nodes:
    # Possible (if i does not have edge):
    for j in G.nodes:
        if i != j and set(i).issubset(set(j)):
            G.add_edge(i, j)

解决了! 供将来参考:使用 networkx 属性和标记节点。 然后,您可以创建父条件并在绘制边时将其打开或关闭:

for i in G.nodes:
    G.nodes[i]['parent'] = False

for i in node_list:
    G.add_node(i, parent=False)
for i in G.nodes:
    if not G.nodes[i]['parent']:
        for j in G.nodes:
            if i != j and set(i).issubset(set(j)):
                G.add_edge(i, j)
                G.nodes[i]['parent'] = True

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM