2012-01-16 16 views
6

は、私はエッジのほとんどの数を持っているすべての頂点のリストすなわち、最大次数を持つグラフのすべての頂点を見つけるにはどうすればよい度数が最大のグラフのすべての頂点を見つけるにはどうすればよいですか?グラフを考えると

g = Graph[{x -> a, y -> c, a -> b, 
      b -> c, a -> c, d -> c, 
      a -> d, b -> d}, 
     VertexLabels -> "Name"] 

g

を言う、そして、それらを強調しますグラフ?

この場合、頂点は{a,c}です。ここで

答えて

5

はここDegreeCentralityを使用してのアプローチです:

(* In[41]:= *) max = Pick[VertexList[g], DegreeCentrality[g], Max[DegreeCentrality[g]]] 

(* Out[41]= *) {a, c} 

(* In[42]:= *) HighlightGraph[g, max] 

enter image description here

+0

'DegreeCentrality'は' VertexDegree'と同じように動作すると思いますか? +1は 'ピック'のためにいくつかの行を節約し、よりきれいです[私のアプローチよりも] –

3

は私がPick

HighlightGraph[g, Pick[[email protected], [email protected], Max[[email protected]]]] 
+0

あなたのソリューションは、ちょうど私が思い付いたように見えます: 'HighlightGraph [グラム、 VertexListを[G] [[[平らに位置[VertexDegree [g]]、1]]]] 'VertexDegree'の代わりにそれぞれの述語を使って、' VertexInDegree'または 'VertexOutDegree'をハイライトすることができます。 – DavidC

+0

私に見える権利。 – kkm

5

を使用して

同じ
HighlightGraph[g, 
Part[[email protected], 
    [email protected][[email protected], Max[[email protected]]]]] 

hg

を試してみましたが、何であるあなたは、一般的にその程度で頂点を強調表示することができます。

HighlightGraph[g, 
Table[Style[VertexList[g][[i]], 
    ColorData["TemperatureMap"][ 
    VertexDegree[g][[i]]/Max[VertexDegree[g]]]], {i, VertexCount[g]}]] 

enter image description here

+0

ようこそStackOverflow!私はあなたのブログとvimeoチャンネルを見て、それは非常に面白いです。 :-) SOと同じ形式の新しいMathematica固有のサイトが数日で起動します。ここに早くアクセスするには、ここで(http://area51.stackexchange.com/proposals/37304/mathematica?referrer=23yK9sXkBPQIDM_9uBjtlA2)ここにコミットすることができます。 – Szabolcs

+0

ありがとう、Szabolcs!私はすでにコミットしました;-) –

関連する問題