2016-05-05 7 views
2

これは、グラフツールについてのばかげた基本的な質問です。ドキュメントを使って解決する方法を理解するのは簡単ですが、私は円で回転しています。私はその文書を包括的には疑っていないが、確かにこれを簡単にしているわけではない。グラフツールで部分グラフをフィルタリングする

GOAL:グラフGを考えると、私は私が何とかGraphViewでこれをやるべきことを知っているG.

の頂点のリストに基づいて誘起される部分グラフを抽出します。私はそれを得る。また、頂点を作るためにはPropertyMapを作る必要があることも理解しています。しかし、私は正確に何を作り出すべきですか?

ここにはドキュメントがほとんどありません。たとえば、page on PropertyMapsは、それぞれPropertyMapが特定のタイプである可能性があると言いますが、その意味を理解していません。タイプは何を表していますか?どのタイプを別のタイプよりも使いたいのですか?明らかに、グラフツールの効率的な使用法については、どれほど重要であるかを考えると、私はドキュメントがどのように不明確であるかに少しはわかりません。

ブール型を使用する必要があるという漠然とした感覚があります。サブグラフに必要な頂点を「true」に設定したいのではないかと思います「偽」にする。しかし、私が作成するPropertyMapは、元のグラフGのノード数と同じ長さを持つ必要がありますか?あるいは、ノードのリストを提供するだけで、それらがTrueに設定される唯一のものであると理解できるようにすることはできますか?

答えて

3

あなたは正しいです。 GraphViewを使用する必要があります。次の例では、頂点0、1と誘導される部分グラフ、3、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)] 
と完全グラフから作成され
関連する問題