2015-11-14 3 views
6

Ich schreibe eine Funktion, die ein Diagramm als Eingabe empfängt. Das erste, was ich tun muss, ist die Reihenfolge des Graphen zu bestimmen (dh die Anzahl der Eckpunkte im Graphen).Wie finde ich die Anzahl der Scheitelpunkte in einem Diagramm, das von iGraph in Python erstellt wurde?

Ich meine, ich könnte g.summary() verwenden (die eine Zeichenfolge zurückgibt, die die Anzahl der Scheitelpunkte enthält), aber dann hätte ich die Zeichenfolge analysieren, um die Anzahl der Scheitelpunkte zu bekommen - und das ist nur böse.

Um die Anzahl der Kanten, die ich verwende len(g.get_edgelist()), die funktioniert. Aber es gibt keine g.get_vertexlist(), also kann ich nicht die gleiche Methode verwenden.

Sicher gibt es eine einfache Möglichkeit, dies zu tun, die keine Syntaxanalyse von Zeichenfolgen.

Antwort

9

g.vcount() ist eine dedizierte Funktion in igigraph, die die Anzahl der Scheitelpunkte zurückgibt. Ähnlich gibt g.ecount() die Anzahl der Kanten zurück, und es ist viel schneller als len(g.get_edgelist()), da es die vollständige Kantenliste nicht im Voraus erstellen muss.

1

g.vs sollte die Reihenfolge der Eckpunkte als igraph.VertexSeq Objekt zurückgeben:

>>> from igraph import Graph 
>>> g = Graph.Formula("A-B") 
>>> g.vs["name"] 
['A', 'B'] 
>>> len(g.vs) 
2 
>>> g.vcount() 
2 

Edit: Wie @Tamas unten erwähnt, g.vcount() wird auch die Anzahl der Scheitelpunkte zurück. Beispiel bearbeitet, um dies zu berücksichtigen.