2011-10-28 10 views
6

Como mi gráfico usa setS para vertex, debo proporcionar un mapa de propiedades vertex_index para mi gráfico, o dar un argumento vertex_id explícito a write_graphviz, para poder usar write_graphviz. My graph is defined as: typedef adjacency_list<setS, setS, undirectedS, NodeData, EdgeData> Graph; Donde NodeData y EdgeData son estructuras. ¿Podría darme un ejemplo muy simple de cómo proporcionar un mapa de propiedades vertex_index para mi gráfico? o cómo dar un argumento vertex_id explícito a write_graphviz?cómo proporcionar una propiedad vertex_index para mi gráfico

Gracias

Respuesta

11

la solución es sólo para: 1) Diga el descriptor de vértice se define como typedef Graph::vertex_descriptor NodeID; continuación, es necesario definir un mapa de la propiedad asociativa de la siguiente manera:

typedef map<NodeID, size_t> IndexMap; 
IndexMap mapIndex; 
associative_property_map<IndexMap> propmapIndex(mapIndex); 

2) En el código , el índice de todos los vértices de la siguiente manera:

int i=0; 
BGL_FORALL_VERTICES(v, g, Graph) 
{ 
    put(propmapIndex, v, i++); 
} 

3) ahora puede utilizar graphvize drow/visualizar el gráfico de la siguiente manera:

ofstream myfile; 
myfile.open ("example.txt"); 
write_graphviz(myfile, g, default_writer(), default_writer(), default_writer(), propmapIndex); 
myfile.close(); 

El gráfico se describirá en example.txt, puede visualizarlo usando graphviz.

Cuestiones relacionadas