टिप्पणी में सवाल के बारे में:
- उदाहरण कुलपति ++ के sourcecode में टिप्पणी के अनुसार named parameter mechanism used के साथ कुछ समस्या है। इसलिए मुझे लगता है कि दोनों शाखाएं मूल रूप से वीसी ++ संस्करण के साथ एक ही सोचती हैं जो कि अधिक वर्बोज़ होती है (हालांकि इसमें 100% सुनिश्चित होने के लिए पर्याप्त समय तक इसमें डुबकी नहीं थी)।
- ए
property_map
विशेष वर्टेक्स/किनारे से जुड़े अतिरिक्त डेटा के लिए नक्शा शिखर/किनारों। जैसे उदाहरण में weightmap
प्रत्येक किनारे के साथ एक वजन (यात्रा लागत) को जोड़ता है।
predecessor_map
सभी शीर्षकों के लिए पथ रिकॉर्ड करने के लिए उपयोग किया जाता है (प्रत्येक चरम सीमा के लिए रूट पर पथ पर पूर्ववर्ती रिकॉर्ड किया जाता है)। इसकी आवश्यकता क्यों है: ठीक है कि जानकारी कुछ ऐसा होता है जो अक्सर एल्गोरिदम से बाहर निकलने की उम्मीद करता है।
पैरामीटर स्पष्ट रूप से description में सूचीबद्ध हैं। दो संस्करणों को नोट करें, नामित पैरामीटर वाले एक और बिना किसी (बाद में वीसी ++ में उपयोग किया जा रहा है)।
the documentation में दिए गए उदाहरण कोड के कदम से कुछ हद तक एक कदम के लिए
अब (ध्यान दें कि मैं वास्तव में कभी Boost.Graph इस्तेमाल किया है, तो यह शुद्धता पर कोई गारंटी है, यह भी मैं केवल प्रासंगिक भागों शामिल है और छोड़े गए कुलपति ++ के लिए) #if
:
const int num_nodes = 5;
//names of graph nodes
enum nodes { A, B, C, D, E };
char name[] = "ABCDE";
//edges of the graph
Edge edge_array[] = { Edge(A, C), Edge(B, B), Edge(B, D), Edge(B, E),
Edge(C, B), Edge(C, D), Edge(D, E), Edge(E, A), Edge(E, B)
};
//weights/travelling costs for the edges
int weights[] = { 1, 2, 1, 2, 7, 3, 1, 1, 1 };
int num_arcs = sizeof(edge_array)/sizeof(Edge);
//graph created from the list of edges
graph_t g(edge_array, edge_array + num_arcs, weights, num_nodes);
//create the property_map from edges to weights
property_map<graph_t, edge_weight_t>::type weightmap = get(edge_weight, g);
//create vectors to store the predecessors (p) and the distances from the root (d)
std::vector<vertex_descriptor> p(num_vertices(g));
std::vector<int> d(num_vertices(g));
//create a descriptor for the source node
vertex_descriptor s = vertex(A, g);
//evaluate dijkstra on graph g with source s, predecessor_map p and distance_map d
//note that predecessor_map(..).distance_map(..) is a bgl_named_params<P, T, R>, so a named parameter
dijkstra_shortest_paths(g, s, predecessor_map(&p[0]).distance_map(&d[0]));
मैं टिप्पणी में उल्लेख किया है व्यक्तिगत रूप से मुझे लगता है lemon अधिक तो Boost.Graph उपयोग करने के लिए सहज ज्ञान युक्त है, तो हो सकता है आप को देने के लिए चाहते हो सकता है कि एक नज़र बजाय
पोस्ट सामग्री के कुछ उदाहरण आपने कोशिश की है कि खराब नहीं है ked। – Wug
".. उनके उदाहरण और दस्तावेज़ीकरण" - आप किसके उदाहरण और दस्तावेज़ीकरण का उपयोग कर रहे हैं? – hatchet
@hatchet: मुझे लगता है कि यह http://www.boost.org/doc/libs/1_38_0/libs/graph/example/dijkstra-example.cpp –