5

これは、ドキュメントを使用して解決する方法を理解するのは簡単なグラフツールに関するばかばかしいほど基本的な質問ですが、私はぐるぐる回っています。ドキュメンテーションが包括的であることは間違いありませんが、これが簡単ではないことは確かです。

GOAL: 与えられたグラフ G から、G の頂点のリストに基づいて誘導されたサブグラフを抽出します。

GraphView私はどういうわけかでこれをやるべきだと知っています。わかりました。また、これには頂点を作成する必要があることも理解していPropertyMapます。しかし、正確には何を作成すればよいのでしょうか?

ここではドキュメントが非常に不足しています。たとえば、PropertyMaps のページには、それぞれPropertyMapが特定のタイプになる可能性があると書かれていますが、それが何を意味するのかわかりません。タイプは何を表していますか?あるタイプを別のタイプよりも優先して使用するのはいつですか? グラフツールを効率的に使用することがいかに重要であるかを考えるとPropertyMaps、ドキュメントがどれほど不明確であるかに少し当惑しています。

この問題では、サブグラフに必要な頂点を「true」に設定し、サブグラフに不要な頂点を「false. " しかし、それはPropertyMap私が作成する必要があることを意味しますか? 元のグラフ G のノードの数と同じ長さを持つ必要がありますか? または、ノードのリストを提供して、True に設定するのはそれらのノードだけであることを理解させることはできますか?

4

1 に答える 1

7

あなたが正しいです。を使用する必要があります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)]
于 2016-05-05T23:58:30.373 に答える