2011-10-28 20 views
6

Vì biểu đồ của tôi sử dụng setS cho đỉnh, tôi phải cung cấp bản đồ thuộc tính vertex_index cho biểu đồ của tôi hoặc đưa ra đối số vertex_id rõ ràng để write_graphviz, để có thể sử dụng write_graphviz. My graph is defined as: typedef adjacency_list<setS, setS, undirectedS, NodeData, EdgeData> Graph; Trường hợp NodeData và EdgeData là cấu trúc. Bạn có thể vui lòng cho tôi một ví dụ rất đơn giản về cách cung cấp bản đồ thuộc tính vertex_index cho biểu đồ của tôi không? hoặc làm thế nào để đưa ra một đối số vertex_id rõ ràng để write_graphviz?cách cung cấp thuộc tính vertex_index cho biểu đồ của tôi

Cảm ơn

Trả lời

11

Giải pháp là chỉ để: 1) Nói descriptor đỉnh được định nghĩa là typedef Graph::vertex_descriptor NodeID; thì bạn cần phải xác định một bản đồ hữu kết hợp như sau:

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

2) Trong mã , lập chỉ mục tất cả các đỉnh như sau:

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

3) Bây giờ bạn có thể sử dụng graphvize để vẽ/hình dung biểu đồ của mình như sau:

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

Biểu đồ sẽ được mô tả trong example.txt, bạn có thể hình dung nó bằng graphviz.

Các vấn đề liên quan