Как найти все вершины в графе с максимальной степенью?
учитывая график, скажем
g = Graph[{x -> a, y -> c, a -> b,
b -> c, a -> c, d -> c,
a -> d, b -> d},
VertexLabels -> "Name"]
Как найти все вершины в графе с максимальной степенью, т. е. список всех вершин, имеющих наибольшее количество ребер, и выделить их в графе?
в этом случае это будут вершины {a,c}
.
3 ответов
вот подход с использованием DegreeCentrality
:
(* In[41]:= *) max = Pick[VertexList[g], DegreeCentrality[g], Max[DegreeCentrality[g]]]
(* Out[41]= *) {a, c}
(* In[42]:= *) HighlightGraph[g, max]
вы обычно можете выделить вершины по их степени:
HighlightGraph[g,
Table[Style[VertexList[g][[i]],
ColorData["TemperatureMap"][
VertexDegree[g][[i]]/Max[VertexDegree[g]]]], {i, VertexCount[g]}]]
вот что я пробовал
HighlightGraph[g,
Part[VertexList@g,
Flatten@Position[VertexDegree@g, Max[VertexDegree@g]]]]
С Pick
HighlightGraph[g, Pick[VertexList@g, VertexDegree@g, Max[VertexDegree@g]]]