2011-10-28 21 views
6

के लिए वर्टेक्स_इंडेक्स प्रॉपर्टी कैसे प्रदान करें, क्योंकि मेरा ग्राफ वर्टेक्स के लिए सेट्स सेट करता है, मुझे या तो अपने ग्राफ के लिए vertex_index प्रॉपर्टी मैप प्रदान करना होगा, या write_graphviz का उपयोग करने में सक्षम होने के लिए write_graphviz को स्पष्ट vertex_id तर्क देना होगा। My graph is defined as: typedef adjacency_list<setS, setS, undirectedS, NodeData, EdgeData> Graph; जहां नोडडाटा और एजडेटा संरचनाएं हैं। क्या आप कृपया मुझे अपने ग्राफ के लिए vertex_index प्रॉपर्टी मैप प्रदान करने का एक बहुत ही सरल उदाहरण दे सकते हैं? या write_graphviz को स्पष्ट vertex_id तर्क कैसे देना है?मेरे ग्राफ

धन्यवाद

उत्तर

11

समाधान सिर्फ करने के लिए है:

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

2) कोड में: 1) के रूप में typedef Graph::vertex_descriptor NodeID; तो आप के रूप में निम्नलिखित एक साहचर्य संपत्ति नक्शा परिभाषित करने की जरूरत कहो शिखर वर्णनकर्ता परिभाषित किया गया है , सूचकांक निम्नलिखित के रूप में सभी कोने:

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

3) अब आप graphvize का उपयोग drow करने के लिए कर सकते हैं/निम्नलिखित के रूप में अपने ग्राफ कल्पना:

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

ग्राफ को example.txt में वर्णित किया जाएगा, आप इसे ग्राफविज़ का उपयोग करके कल्पना कर सकते हैं।