Я пытаюсь использовать поиск A * от Boost BGL для неявного графа.Я реализовал свой собственный тип графика, который моделирует концепцию Graph и IncidenceGraph.В соответствии с документацией A *, я должен использовать функцию astar_search_no_init с неявными графами.
Чтобы все это работало, я попытался реализовать фиктивные версии всех необходимых концепций.Это включает в себя график, посетителя, эвристику и тип вершины.Моя основная функция выглядит так:
int main()
{
graph g;
// The vertex type is a simple wrapper for int.
vertex start(1);
vertex goal(10);
boost::astar_search_no_init(g, start, heuristic(),
boost::visitor(visitor(goal)));
}
Без указания какого-либо из названных параметров, реализация должна использовать некоторые значения по умолчанию.Видимо эти значения по умолчанию требуют некоторой поддержки от моего графика.График выглядит следующим образом:
struct graph
{
typedef void adjacency_iterator;
typedef void in_edge_iterator;
typedef void vertex_iterator;
typedef void edge_iterator;
typedef void vertices_size_type;
typedef void edge_iterator;
typedef void edges_size_type;
typedef vertex vertex_descriptor;
typedef double edge_descriptor;
typedef boost::directed_tag directed_category;
typedef boost::disallow_parallel_edge_tag edge_parallel_category;
typedef boost::incidence_graph_tag traversal_category;
typedef std::vector<double>::iterator out_edge_iterator;
typedef int degree_size_type;
};
При компиляции первая и самая интересная ошибка:
Ошибка C2039: 'edge_property_type': не является членом 'graph'
Из того, что я понимаю, мне нужно добавить свойства для моего графика.Я считаю, что эти свойства должны быть внутренними свойствами.Мой вопрос: как мне добавить внутренние свойства для моего собственного неявного типа графа?