Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 16 additions & 19 deletions include/boost/graph/astar_search.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -120,13 +120,11 @@ namespace detail
typedef typename property_traits< CostMap >::value_type C;
typedef typename property_traits< ColorMap >::value_type ColorValue;
typedef color_traits< ColorValue > Color;
typedef
typename property_traits< DistanceMap >::value_type distance_type;

astar_bfs_visitor(AStarHeuristic h, UniformCostVisitor vis,
UpdatableQueue& Q, PredecessorMap p, CostMap c, DistanceMap d,
WeightMap w, ColorMap col, BinaryFunction combine,
BinaryPredicate compare, C zero)
BinaryPredicate compare, C inf, C zero)
: m_h(h)
, m_vis(vis)
, m_Q(Q)
Expand All @@ -137,13 +135,19 @@ namespace detail
, m_color(col)
, m_combine(combine)
, m_compare(compare)
, m_inf(inf)
, m_zero(zero)
{
}

template < class Vertex, class Graph >
void initialize_vertex(Vertex u, const Graph& g)
{
put(m_color, u, Color::white());
put(m_distance, u, m_inf);
put(m_cost, u, m_inf);
put(m_predecessor, u, u);

m_vis.initialize_vertex(u, g);
}
template < class Vertex, class Graph >
Expand Down Expand Up @@ -176,6 +180,8 @@ namespace detail
template < class Edge, class Graph >
void tree_edge(Edge e, const Graph& g)
{
initialize_vertex(target(e, g), g);

using boost::get;
bool m_decreased = relax(e, g, m_weight, m_predecessor, m_distance,
m_combine, m_compare);
Expand Down Expand Up @@ -241,6 +247,7 @@ namespace detail
ColorMap m_color;
BinaryFunction m_combine;
BinaryPredicate m_compare;
C m_inf;
C m_zero;
};

Expand All @@ -256,7 +263,7 @@ inline void astar_search_no_init(const VertexListGraph& g,
AStarHeuristic h, AStarVisitor vis, PredecessorMap predecessor,
CostMap cost, DistanceMap distance, WeightMap weight, ColorMap color,
VertexIndexMap index_map, CompareFunction compare, CombineFunction combine,
CostInf /*inf*/, CostZero zero)
CostInf inf, CostZero zero)
{
typedef typename graph_traits< VertexListGraph >::vertex_descriptor Vertex;
typedef boost::vector_property_map< std::size_t, VertexIndexMap >
Expand All @@ -271,7 +278,11 @@ inline void astar_search_no_init(const VertexListGraph& g,
PredecessorMap, CostMap, DistanceMap, WeightMap, ColorMap,
CombineFunction, CompareFunction >
bfs_vis(h, vis, Q, predecessor, cost, distance, weight, color, combine,
compare, zero);
compare, inf, zero);

bfs_vis.initialize_vertex(s, g);
put(distance, s, zero);
put(cost, s, h(s));

breadth_first_visit(g, s, Q, bfs_vis, color);
}
Expand Down Expand Up @@ -359,20 +370,6 @@ inline void astar_search(const VertexListGraph& g,
CombineFunction combine, CostInf inf, CostZero zero)
{

typedef typename property_traits< ColorMap >::value_type ColorValue;
typedef color_traits< ColorValue > Color;
typename graph_traits< VertexListGraph >::vertex_iterator ui, ui_end;
for (boost::tie(ui, ui_end) = vertices(g); ui != ui_end; ++ui)
{
put(color, *ui, Color::white());
put(distance, *ui, inf);
put(cost, *ui, inf);
put(predecessor, *ui, *ui);
vis.initialize_vertex(*ui, g);
}
put(distance, s, zero);
put(cost, s, h(s));

astar_search_no_init(g, s, h, vis, predecessor, cost, distance, weight,
color, index_map, compare, combine, inf, zero);
}
Expand Down
Loading