Question

J'essaie de définir un diagramme avec des bords non orientés à partir d'un ensemble d'arêtes de paires (int, int) (où chaque int représente un indice de sommet). Chacun de ces bord a un indice de son propre.

Le hic est que je veux que l'indice de sommet interne du graphique sera compatible avec les indices des sommets d'origine. Je aime aussi d'être en mesure d'extraire l'index de bord d'origine d'un descripteur de bord.

De http://www.boost.org /doc/libs/1_47_0/libs/graph/doc/using_property_maps.html ( Propriétés extérieures ) Je comprends que je devrais utiliser le type de graphique suivant:

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

Malheureusement, il n'y a pas d'explication sur la façon d'utiliser les biens de edge_index_t.

Il est clair que je pouvais utiliser une carte (paire (int, int), int) mais je suis à la recherche d'une solution orientée poussée plus élégante.

Merci, Kiril

Était-ce utile?

La solution

Puisque vous utilisez des vecteurs pour définir ensemble de sommets il y a une correspondance biunivoque entre les indices des sommets et les descripteurs de sommet. Vous avez juste besoin de vous définir l'objet représenté graphiquement comme suit:

Graph g(N);

Où N est le nombre de sommets. Cette alloue N sommets, chaque descripteur de sommet est un nombre de 0 à N-1.

Pour obtenir l'index de bord à partir du descripteur de bord, vous pouvez utiliser la fonction get: get(edge_index, g, edge_descriptor);. Le descripteur de bord que vous pouvez obtenir à partir itérateurs renvoyés par la fonction adjacent_vertices(v, g).

espère que ce que vous avez voulu dire.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top