2011-10-28 16 views
6

Od mojego wykresu użycia setS dla wierzchołka, muszę albo dostarczyć mapę właściwości vertex_index dla mojego wykresu, albo podać jawny argument argument vertex_id do write_graphviz, aby móc użyć write_graphviz. My graph is defined as: typedef adjacency_list<setS, setS, undirectedS, NodeData, EdgeData> Graph; Gdzie NodeData i EdgeData są strukturami. Czy możesz podać mi bardzo prosty przykład jak dostarczyć mapę właściwości vertex_index dla mojego wykresu? lub jak podać jawny argument argument vertex_id do write_graphviz?sposób dostarczania właściwości vertex_index dla mojego wykresu

Dzięki

Odpowiedz

11

Rozwiązaniem jest po prostu: 1) Say deskryptor wierzchołek jest zdefiniowany jako typedef Graph::vertex_descriptor NodeID; następnie trzeba określić asocjacyjną właściwości mapę w następujący sposób:

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

2) W kodzie indeks wszystkie wierzchołki w następujący sposób:

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

3) można teraz używać graphvize do drow/wizualizacji wykresu w następujący sposób:

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

Wykres zostanie opisany w przykładzie.txt, można go wizualizować za pomocą graphviz.