Внутренние свойства BGL для неявного графа - PullRequest
1 голос
/ 24 декабря 2011

Я пытаюсь использовать поиск 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'

Из того, что я понимаю, мне нужно добавить свойства для моего графика.Я считаю, что эти свойства должны быть внутренними свойствами.Мой вопрос: как мне добавить внутренние свойства для моего собственного неявного типа графа?

...