2011-09-30 12 views
5

Używam pakietów właściwości i adjacency_list i chciałbym użyć klasy subgraph.Podnieś subgraph i właściwości w wiązce

struct Vertex 
{ 
    int index; 
    int seed; 
}; 

struct Edge 
{ 
bool visted; 
double weight; 
}; 

typedef adjacency_list<listS, listS, undirectedS, Vertex, property<edge_index_t,int,Edge> > Graph; 
typedef subgraph<Graph> testSubgraph; 

property<edge_index_t,int,Edge> część jest potrzebna, jako subgraph potrzebuje edge_index_t porównać dwie krawędzie.

Teraz moje pytanie brzmi, w jaki sposób dodać Edge za pomocą dołączonych właściwości w Subgraph? W normalnym wykresie bez property<edge_index_t,int,Edge> dodam przewagę w następujący sposób:

Edge e; 
vertex_descriptor u,v; 
// fill in u and v; 
e.weight = 1.0; 
e.visted=false; 
add_edge(u,v,e,graph); 

Ale to nie działa dla podgrafu.

Mam nadzieję, że ktoś zna rozwiązanie tego problemu.

Dzięki

Ben

Odpowiedz

1

lista sąsiedztwa nie mają edge_index: es. Musisz sam przypisać indeks, ale jest to tak proste, jak dodanie size_t index do Edge i przypisanie indeksu podczas tworzenia krawędzi.

Prawdopodobnie nie ma potrzeby tworzenia krawędzi dla podgraphu, ponieważ podgrupy pobudzające są wywołanymi podgraphami. Dlatego wszystkie krawędzie na wykresie, których oba punkty końcowe znajdują się w podgraph będą zawarte w twoich podgraphach.

+1

Jeśli po prostu dodaję indeks size_t do mojej struktury Edge, to nadal nie znajdzie tego indeksu, ponieważ jest potrzebny w 'propertey ' – Ben

0

Właśnie wpadł do podobnego problemu, gdy próbuje dodać wierzchołek z funkcją add_vertex() i stwierdził, że nie jest (bardzo stary) nierozwiązany problem na bugtracker doładowania:

Ticket #380: Support for bundled properties in graph adaptors:

Adaptery wykresów (takie jak subgraph) nie obsługują dołączonych właściwości , ale powinny.


Dalsze poszukiwania prowadzą do następujących 2 plastry, które nie są jeszcze połączone i pojawiają się w końcu przynieść wsparcie dla wiązanych właściwości w subgraphs:

Więc domyślam się, że odpowiedź brzmi: Na razie nie używaj dołączonych właściwości. Ale w przyszłości problem powinien zniknąć.

Powiązane problemy