【问题标题】:Filtering a subgraph in graph-tool在图形工具中过滤子图
【发布时间】:2016-08-31 21:30:06
【问题描述】:

这是一个关于图形工具的可笑的基本问题,想知道如何使用文档来解决这个问题应该很简单,但我在绕圈子。我不怀疑文档的全面性,但它肯定不会让这一切变得容易。

目标:给定一个图 G,根据 G 的顶点列表提取诱导子图。

我知道我应该以某种方式使用GraphView 来执行此操作。我明白了。我也明白我需要为此制作一个顶点PropertyMap。但我究竟应该创造什么?

这里的文档非常缺乏。例如,page on PropertyMaps 表示每个PropertyMap 都可以是某种类型,但我还没有弄清楚这意味着什么。类型代表什么?我什么时候想使用一种类型而不是另一种?显然PropertyMaps 对图形工具的有效使用有多么重要,我对文档的不清楚程度感到有些困惑。

对于这个问题,我有一种模糊的感觉,我需要使用布尔类型,因为也许我想将子图中我想要的顶点设置为“true”,而我不想在子图中设置顶点“错误的。”但这是否意味着我创建的PropertyMap 需要与原始图 G 中的节点数具有相同的长度?或者我可以只提供一个节点列表并以某种方式让它理解为只有这些节点被设置为 True?

【问题讨论】:

    标签: python graph-tool


    【解决方案1】:

    你是对的。你必须使用GraphView。在以下示例中,从具有 5 个顶点的完整图创建具有顶点 0、1、3 的诱导子图

    from graph_tool import GraphView, generation
    
    g = generation.complete_graph(5)
    
    # select some vertices
    vfilt = g.new_vertex_property('bool');
    vfilt[0] = True
    vfilt[1] = True
    vfilt[3] = True
    
    sub = GraphView(g, vfilt)
    
    print [(g.vertex_index[e.source()], g.vertex_index[e.target()])
               for e in sub.edges()]
    

    输出

    [(0, 1), (0, 3), (1, 3)]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-22
      相关资源
      最近更新 更多