【问题标题】:NetworkX: How to Return Bool over whether a node has an edge?NetworkX:如何根据节点是否有边返回布尔值?
【发布时间】:2020-05-29 16:10:14
【问题描述】:

我有一个我正在尝试连接的 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)

【问题讨论】:

    标签: python networkx graphviz dot


    【解决方案1】:

    解决了!供将来参考:使用 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
    

    【讨论】:

      猜你喜欢
      • 2019-10-09
      • 2012-11-20
      • 2018-07-28
      • 1970-01-01
      • 1970-01-01
      • 2019-06-10
      • 2011-12-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多