这是一个关于图形工具的一个荒谬的基本问题,如果要弄清楚如何使用文档解决这个问题应该是微不足道的,但我在圈子里旋转。我并不怀疑这些文档是否全面,但它肯定不会让这很容易。
目标:给定图G,根据G的顶点列表提取诱导子图。
我知道我应该以{{1}}某种方式做到这一点。我明白了。我也明白我需要为此创建一个顶点GraphView
。但究竟应该创造什么呢?
这里的文档非常缺乏。例如,page on PropertyMaps表示每个PropertyMap
可以是某种类型,但我还没弄清楚这意味着什么。这些类型代表什么?我什么时候想要使用另一种类型?鉴于PropertyMap
对图表工具的有效使用显然有多重要,我对文档的不清楚感到有些困惑。
对于这个问题,我感到模糊,我需要使用布尔类型,因为我想在子图中将我想要的顶点设置为" true"虽然我不希望子图中的顶点变为" false。"但这是否意味着我创建的PropertyMaps
需要与原始图G中的节点数具有相同的长度?或者我可以只提供一个节点列表,并以某种方式让它被理解为那些是唯一被设置为True的节点?
答案 0 :(得分:5)
你是对的。您必须使用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)]