Re: [Boost-users] [Graph] newbie to graph (Andrew Sutton)
The compilation output of the code above includes errors and can be found here:
http://www.cs.huji.ac.il/~lweizm45/compile_output2.txthttp://www.cs.huji.ac.il/%7Elweizm45/compile_output2.txt
I'm only slightly less of a newbie when it comes to the boost graph libraries. I ran into these same types of errors when I was trying to use kruskal's minimum spanning tree algorithm. This error from your output: error: cannot convert `boost::detail::error_property_not_found' to `long int' in assignment indicates that there is a property that is not defined in your graph, but that is needed by the kolmogorov_max_flow() function. There's two options: 1) Use the internal properties, kolmogorov_max_flow() will use them. 2) Use bundled properties, you must explicitly tell komogorov_max_flow() which property is which using bgl_named_params. You've probably already noticed that the code listing here does not work (as it appears your example is based from it): http://www.boost.org/doc/libs/1_36_0/libs/graph/doc/kolmogorov_max_flow.html For one thing, there's a typo in the #include line, but also it is incomplete and leads to all the errors you listed. The code listed here actually works: http://www.boost.org/doc/libs/1_36_0/libs/graph/example/kolmogorov-eg.cpp So you might prefer to use that as a base. Of course, it uses internal properties, and the documentation indicates that bundled properties are the preferred method now. For bundled properties, you would do something like this: struct Node { std::string name; long index; boost::default_color_type color; long distance; graph_traits<Graph>::edge_descriptor predecessor; }; struct Arc { long capacity; long residual; graph_traits<Graph>::edge_descriptor rev; }; and then call the function like so: flow = kolmogorov_max_flow(g, s, t, capacity_map(get(&Arc::capacity, g)). residual_capacity_map(get(&Arc::residual, g)). reverse_edge_map(get(&Arc::rev, g)). predecessor_map(get(&Node::predecessor, g)). color_map(get(&Node::color, g)). distance_map(get(&Node::distance, g)). vertex_index_map(get(&Node::index, g)) ); Note that each named parameter is separated by a period, not a comma. I am not able to get an error free compile using bundled properties - but by making the above changes it gets you down to about 2 errors. Maybe you can figure out the last steps (I can't). I stuck with using the internal properties because I had an example that worked, and the documentation on how to get bundled properties working with the functions is lacking.
participants (1)
-
Phillip Jones