2011-09-30 15 views
5

Estoy usando paquetes de propiedades y adjacency_list y me gustaría utilizar la clase subgraph.Boost Subgraph and Bundled properties

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; 

La parte property<edge_index_t,int,Edge> se necesita, como subgrafo necesita edge_index_t para comparar dos bordes.

Ahora mi pregunta es ¿cómo puedo agregar un borde utilizando propiedades agrupadas en un Subgraph? En la gráfica normal sin property<edge_index_t,int,Edge> agrego una ventaja de la siguiente manera:

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

Pero esto no funciona para subgrafo.

Espero que alguien sepa una solución para esto.

Gracias

Ben

Respuesta

1

Una lista de adyacencia no tienen edge_index: ES. Debe asignar un índice usted mismo, pero eso es tan simple como agregar un size_t index al Edge y asignar un índice a medida que crea los bordes.

Probablemente no necesite crear bordes para el subgrafo, ya que los subgrafos de refuerzo son subgrafos inducidos. Por lo tanto, todos los bordes en el gráfico de los cuales ambos extremos se encuentran en el subgrafo se incluirán en sus subgrafos.

+1

Si simplemente agrego el tamaño del índice a mi estructura Edge, todavía no encontrará este índice, ya que es necesario en 'propertey ' – Ben

0

yo sólo corrió en un problema similar cuando se trata de añadir un vértice con la función add_vertex() y encontraron que hay un (muy viejo) problema no resuelto en la bugtracker impulso:

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

Los adaptadores de gráfico (como el subgráfico) no son compatibles con las propiedades de paquete , pero deberían serlo.


busca, además, llevar a los 2 parches siguientes, que aún no se fusionan, pero parece que finalmente llevar el soporte para propiedades agrupados en subgrafos:

Así que supongo que la respuesta es: por ahora, no use propiedades empaquetadas. Pero en el futuro, el problema debería desaparecer.