2012-01-16 13 views
6

Dato un grafo, diconoCome trovo tutti i vertici in un grafico con il massimo grado?

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

g

Come faccio a trovare tutti i vertici in un grafico con il massimo grado cioè un elenco di tutti i vertici che ha il maggior numero di bordi, e li evidenziare in il grafo?

In questo caso, sarebbero i vertici {a,c}.

risposta

5

Ecco un approccio usando 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

Penso che 'DegreeCentrality' si comporta in modo simile a' VertexDegree'? +1 per 'Pick' che salva poche righe ed è anche più ordinato [rispetto al mio approccio] –

3

Ecco quello che ho provato

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

hg

Same utilizzando Pick

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

La soluzione si presenta proprio come quello che mi si avvicinò con: 'HighlightGraph [g, VertexList [g] [[Appiattire [Posizione [vd, Max [vd = VertexDegree [g]]], 1]]]] 'Puoi evidenziare' VertexInDegree' o 'VertexOutDegree' usando i rispettivi predicati al posto di' VertexDegree'. – DavidC

+0

Mi sembra giusto. – kkm

5

È generalmente possibile evidenziare i vertici per il loro grado:

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

enter image description here

+0

Benvenuti in StackOverflow! Ho guardato il tuo blog e il canale Vimeo, è molto iterestante. :-) Un nuovo sito specifico Mathematica nello stesso formato di SO verrà lanciato in un paio di giorni. Puoi [impegnarti a farlo qui] (http://area51.stackexchange.com/proposals/37304/mathematica?referrer=23yK9sXkBPQIDM_9uBjtlA2) qui per ottenere l'accesso anticipato. – Szabolcs

+0

Grazie, Szabolcs! Ho già commesso ;-) –

Problemi correlati