2010-04-09 9 views
5

मैं बूस्ट ग्राफ़ लाइब्रेरीज़ के उपयोग की जांच कर रहा हूं ताकि उन्हें ध्यान में रखते हुए विभिन्न नेटवर्क समस्याओं पर लागू किया जा सके।बूस्ट ग्राफ़ लाइब्रेरीज़: किनारे वजन मान सेट करना

int weights[] = { 1, 1, 2, 7, 3, 1, 1, 1 }; 

मेरे समस्या है अगर मैं कोशिश:

उदाहरण मैं ग्राफ बढ़त मूल्यों ("वजन") को देख कर दिया है में हमेशा इस तरह के इन Bellman-Ford और Kruskal एल्गोरिदम जैसे के रूप में पूर्णांक, के रूप में प्रारंभ कर रहे हैं और वजन को दोगुना करने के लिए, मुझे रूपांतरण आदि के बारे में चेतावनी संदेशों का ढेर मिलता है, जो अब तक मैं यह समझने में सक्षम नहीं हूं कि कैसे उबरना है।

क्या कोई इस के आसपास एक रास्ता देखता है?

उत्तर

6

यह weights[] सरणी और प्रकार अपने को बढ़ावा देने ग्राफ/एल्गोरिथ्म द्वारा किनारे वजन के लिए इस्तेमाल के बीच एक बेमेल के कारण होती है।

पहले जुड़ा हुआ नमूना, जैसे, आप यह भी

struct EdgeProperties { 
    int weight; 
}; 
[...] 
property_map<Graph, int EdgeProperties::*>::type 

को
struct EdgeProperties { 
    double weight; 
}; 
[...] 
property_map<Graph, double EdgeProperties::*>::type 

दूसरा

typedef adjacency_list < vecS, vecS, undirectedS, 
    no_property, property < edge_weight_t, int > > Graph; 

में बदल जानी चाहिए

typedef adjacency_list < vecS, vecS, undirectedS, 
    no_property, property < edge_weight_t, double > > Graph; 
+0

नमस्ते कोड उन लिंक में देखा जा सकता है: bellman-example.cpp और kruskal-example.cpp – AndyUK

+0

इसे देखा और तदनुसार उत्तर अपडेट किया। – baol

+0

दूसरे (क्रस्कल) के लिए आपके सुझाव ने काम किया है, चीयर्स। मैं अभी तक बेलमैन बाधा से ज्यादा नहीं मिल सकता। – AndyUK

संबंधित मुद्दे