2016-06-24 17 views
1

Ich habe festgestellt, dass die Funktion degree in iGraph nicht direkt erlaubt, den Grad des ungerichteten Skelettgraphen eines gerichteten Graphen zu berechnen, wenn bidirektionale Kanten beteiligt sind. Zum Beispiel habeR iGraph: Grad im Fall von bidirektionalen Kanten

g <-graph_from_literal(a-+b,a++c,d-+a,a-+e,a-+f) 

d1 <- degree(g,v='a',mode="all") 
# 6 
nn <- unique(neighbors(g,'a',mode='all')) 
d2 <- length(nn) 
# 5 

Als ich d2 wollte, statt d1, ich eine andere Route basierend auf der Suche nach den Nachbarn des betrachteten Scheitelpunktes verwendet. Meine Frage ist: Gibt es einen besseren/schnelleren Weg, dies zu tun, vielleicht mit einer anderen iGraph-Funktion, die mir nicht bekannt ist?

Antwort

1

eine ungerichtete Kopie des Graphen erstellen, in dem ungerichteten Graphen in eine einzige Kante, die mehrere Kanten zusammenbrechen, und dann den Grad an, dass berechnen:

> g2 <- as.undirected(g, mode="collapse") 
> degree(g2) 
+0

schön, danke! – Nonancourt