Frage

Ich versuche, ein Diagramm mit ungerichteten Kanten aus einem Satz von Paaren (int, int) zu definieren (wobei jedes int einen Scheitelpunktindex darstellt). Jede solche Kante hat einen eigenen Index.

Der Haken ist, dass ich möchte, dass der interne Scheitelpunktindex des Diagramms mit den ursprünglichen Vertex -Indizes übereinstimmt. Ich möchte auch den ursprünglichen Kantenindex aus einem Kantendeskriptor extrahieren.

Aus http://www.boost.org/doc/libs/1_47_0/libs/graph/doc/using_property_maps.html (Außeneigenschaften Abschnitt) Ich verstehe, dass ich den folgenden Graphentyp verwenden sollte:

typedef adjacency_list<vecS, vecS, udirectedS, 
no_property, property<edge_index_t, std::size_t> > Graph;

Leider gibt es keine Erläuterung, wie Sie die Eigenschaft von Edge_index_t verwenden.

Es ist klar, dass ich nur eine Karte (Paar (int, int), int) verwenden könnte, aber ich suche eine elegantere, botorientierte Lösung.

Danke, Kiril

War es hilfreich?

Lösung

Da Sie Vektoren verwenden, um die Sammlung von Scheitelpunkten zu definieren, gibt es eins zu einer Korrespondenz zwischen Scheitelpunktindizes und Vertex-Deskriptoren. Sie müssen nur Ihr Diagrammobjekt wie folgt definieren:

Graph g(N);

Wobei n Anzahl der Eckpunkte ist. Dies zuweist n Scheitelpunkte, jeder Scheitelpunktdeskriptor ist eine Zahl von 0 bis n-1.

Um den Edge -Index vom Edge -Deskriptor zu erhalten, können Sie die GET -Funktion verwenden:get(edge_index, g, edge_descriptor);. Der Edge -Deskriptor, den Sie von Iteratoren erhalten können, die von zurückgegeben werden können adjacent_vertices(v, g) Funktion.

Hoffe es, was du gemeint hast.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top