|
Boost Users : |
Subject: Re: [Boost-users] Default weight map doesn't work for weighted grid graph in A-star search
From: Jeremiah Willcock (jewillco_at_[hidden])
Date: 2010-07-14 21:42:01
> All of this is true when building against revision 64030 of Boost.Â
>
> graph_traits.hpp:226: error: no type named âvertex_property_typeâ in âclass gridâ Â I noticed that the documentation for the the
> vertex_index_map parameter says that the graph must have an internal vertex_index property. Â Could this be the problem? Â If I try to
> add the following line to a working build:
>
> typedef grid::vertex_index grid_vertex_index;
>
> I get this error:
>
> g++ -g -I/src/boost-trunk -Wall -Werror -O3 Â -c -o astar_maze.o astar_maze.cpp
> astar_maze.cpp:62: error: âvertex_indexâ in class âgridâ does not name a type
>
>
> What is supposed to work is:
>
> boost::property_map<grid, boost::vertex_index>::const_type pm
> Â = get(boost::vertex_index, grid());
>
> If that succeeds, it's an algorithm bug most likely.
>
>
> First, I can't get grid_graph's argumentless constructor to work. Â The following program does not build.
OK -- I was just saying to try that with some object of type "grid",
however you can construct one.
> #include <boost/graph/grid_graph.hpp>
>
> int main (int argc, char const *argv[]) {
> Â Â boost::grid_graph<2> g = boost::grid_graph<2>();
> Â Â return 0;
> }
>
> g++ -g -I/src/boost-trunk -Wall -Werror -O3 Â -c -o grid.o grid.cpp
> grid.cpp: In function âint main(int, const char**)â:
> /src/boost-trunk/boost/graph/grid_graph.hpp:232: error: âboost::grid_graph<DimensionsT, VertexIndexT, EdgeIndexT>::grid_graph() [with long unsigned int
> Dimensions = 2ul, VertexIndex = size_t, EdgeIndex = size_t]â is private
> grid.cpp:4: error: within this context
> /src/boost-trunk/boost/graph/grid_graph.hpp: In constructor âboost::grid_graph<DimensionsT, VertexIndexT, EdgeIndexT>::grid_graph() [with long unsigned int
> Dimensions = 2ul, VertexIndex = size_t, EdgeIndex = size_t]â:
> grid.cpp:4: Â instantiated from here
> /src/boost-trunk/boost/graph/grid_graph.hpp:232: error: uninitialized member âboost::grid_graph<2ul, size_t, size_t>::m_dimension_lengthsâ with âconstâ type
> âconst boost::array<size_t, 2ul>â
>
> It looks like the grid_graph() constructor at line grid_graph.hpp 232 needs to initialize m_dimension_lengths.  (Tricky because you need to use curly braces
> and assignment.)
>
> The program does build if you change the line to:
>
> Â Â boost::grid_graph<2> g();
That declares a function, though, not a real graph.
> But that's an aside. Â In my code can use the m_grid grid graph, which has already been created. Â If I remove all the vertex index code and the call to
> astar_search from my program, and add the following line to the maze::solve() function:
>
> boost::property_map<grid, boost::vertex_index_t>::const_type pm = get(boost::vertex_index, m_grid);
>
> The program builds. Â Does that indicate that it's a problem with astar_search then?
I think so. Does a line like that work with the filtered_graph too?
-- Jeremiah Willcock
Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net