2011-10-28 2 views
6

Dato che il mio grafico usa setS per vertice, devo fornire una mappa delle proprietà vertex_index per il mio grafico, o dare un argomento vertex_id esplicito a write_graphviz, per poter usare write_graphviz. My graph is defined as: typedef adjacency_list<setS, setS, undirectedS, NodeData, EdgeData> Graph; Dove NodeData e EdgeData sono strutture. Puoi per favore darmi un esempio molto semplice di come fornire una mappa delle proprietà vertex_index per il mio grafico? o come dare un argomento vertex_id esplicito a write_graphviz?come fornire una proprietà vertex_index per il mio grafico

Grazie

risposta

11

la soluzione è solo per: 1) Dire il descrittore vertice viene definito come typedef Graph::vertex_descriptor NodeID; allora avete bisogno di definire una mappa delle proprietà associativa come segue:

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

2) Nel codice , indice di tutti i vertici come segue:

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

3) È ora possibile utilizzare graphvize per drow/visualizzare il grafico come segue:

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

Il grafico verrà descritto in example.txt, è possibile visualizzarlo utilizzando graphviz.