在图形工具中过滤子图
Filtering a subgraph in graph-tool
这是一个关于图形工具的荒谬基本问题,使用文档弄清楚如何解决这个问题应该是微不足道的,但我在兜圈子。我不怀疑文档的全面性,但肯定不会让这一切变得简单。
目标:给定图 G,根据 G 的顶点列表提取导出子图。
我知道我应该以某种方式用 GraphView
来做这件事。我明白了。我也明白我需要为此制作一个顶点 PropertyMap
。但我到底应该创造什么?
这里非常缺乏文档。例如,page on PropertyMaps表示每个PropertyMap
都可以是某种类型,但我还没有弄明白那是什么意思。类型代表什么?我什么时候想使用一种类型而不是另一种类型?鉴于 PropertyMaps
显然对图形工具的有效使用有多么重要,我对文档的含糊不清感到有点困惑。
对于这个问题,我隐约觉得需要使用布尔类型,因为可能我想把子图中我想要的顶点设置为"true",而我不想要的顶点在 "false." 的子图中但这是否意味着我创建的 PropertyMap
需要与原始图 G 中的节点数具有相同的长度?或者我可以只提供一个节点列表,并以某种方式让人们理解这些是唯一要设置为 True 的节点吗?
你是对的。你必须使用 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)]
这是一个关于图形工具的荒谬基本问题,使用文档弄清楚如何解决这个问题应该是微不足道的,但我在兜圈子。我不怀疑文档的全面性,但肯定不会让这一切变得简单。
目标:给定图 G,根据 G 的顶点列表提取导出子图。
我知道我应该以某种方式用 GraphView
来做这件事。我明白了。我也明白我需要为此制作一个顶点 PropertyMap
。但我到底应该创造什么?
这里非常缺乏文档。例如,page on PropertyMaps表示每个PropertyMap
都可以是某种类型,但我还没有弄明白那是什么意思。类型代表什么?我什么时候想使用一种类型而不是另一种类型?鉴于 PropertyMaps
显然对图形工具的有效使用有多么重要,我对文档的含糊不清感到有点困惑。
对于这个问题,我隐约觉得需要使用布尔类型,因为可能我想把子图中我想要的顶点设置为"true",而我不想要的顶点在 "false." 的子图中但这是否意味着我创建的 PropertyMap
需要与原始图 G 中的节点数具有相同的长度?或者我可以只提供一个节点列表,并以某种方式让人们理解这些是唯一要设置为 True 的节点吗?
你是对的。你必须使用 GraphView
。在以下示例中,从具有 5 个顶点
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)]