График черт подграфа

У меня есть график, и я хочу изменить его тип на подграф, чтобы иметь возможность разделить его на несколько подграфов, чтобы получить более точную печать с помощью Graphviz.
Проблема в том, что когда я добавляю правильность подграфа в мой граф, дескриптор вершины больше не работает.

Код до модификации:

    #include "Node.cpp"#include <boost/graph/adjacency_list.hpp>
#include <boost/property_map/property_map.hpp>
#include <boost/graph/graph_traits.hpp>
#include <boost/graph/subgraph.hpp>

using namespace boost;

typedef adjacency_list<vecS, vecS, directedS, Node, property < edge_weight_t, float > > mygraph;
typedef graph_traits < mygraph >::vertex_descriptor vertex_descriptor;
...

Код после изменения графика на подграф:

    #include "Node.cpp"#include <boost/graph/adjacency_list.hpp>
#include <boost/property_map/property_map.hpp>
#include <boost/graph/graph_traits.hpp>
#include <boost/graph/subgraph.hpp>

using namespace boost;

typedef subgraph<adjacency_list<vecS, vecS, directedS, Node, property < edge_weight_t, float > > >mygraph;
typedef graph_traits < mygraph >::vertex_descriptor vertex_descriptor;   //ERROR
...

В чем проблема? И как я могу это исправить?

2

Решение

Проблемы не с чертами как таковыми.

Подграф требует свойство edge_index, потому что оно хранит локальное отображение:

    typedef std::map<edge_index_type, edge_descriptor> LocalEdgeMap;
LocalEdgeMap m_local_edge; // global -> local

Потому что нет edge_index_t свойство, тип ключа карты оценивается как void,

Это задокументировано здесь: http://www.boost.org/doc/libs/1_55_0b1/libs/graph/doc/subgraph.html

Базовый тип графа должен иметь внутренние свойства vertex_index и edge_index, поэтому мы добавляем свойство индекса края в список смежности. Нам не нужно добавлять свойство индекса вершины, потому что оно встроено в adjacency_list. Мы будем строить график и подграфы на рисунке 1, поэтому нам нужно всего шесть вершин

Попробуйте добавить индекс ребра:

typedef subgraph<adjacency_list<vecS, vecS, directedS, Node, property < edge_index_t, index > > >mygraph;
typedef graph_traits < mygraph >::vertex_descriptor vertex_descriptor;   // COMPILES
3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]