Позвольте мне прежде всего извиниться, если я нарушил правила, так как я знаю, что мой вопрос уже задан здесь измененным образом: Lengauer Tarjan Algorithm in BGL (boost graph library). Тем не менее, я (по-прежнему) не могу использовать ответ для правильного отображения результата.Вычисление графа доминанта с использованием алгоритма Лунгауэра Тарьяна Boost и его отображение с помощью graphviz
Чтобы быть более точным: я следил за ответом и успешно применил алгоритм Ленгауэра-Тарьяна к моему графику (который для удобства является частью документации Boost: http://www.boost.org/doc/libs/1_55_0/libs/graph/test/dominator_tree_test.cpp). Теперь, если понять код правильно соответствующую информацию о владычества дерева хранится в domTreePredMap, который имеет тип PredMap:
const int numOfVertices = testSet[i].numOfVertices;
//See example for test_sets - it just the same routine
G g(
testSet[i].edges.begin(), testSet[i].edges.end(),
numOfVertices);
typedef graph_traits<G>::vertex_descriptor Vertex;
typedef property_map<G, vertex_index_t>::type IndexMap;
typedef
iterator_property_map<vector<Vertex>::iterator, IndexMap>
PredMap;
vector<Vertex> domTreePredVector, domTreePredVector2;
IndexMap indexMap(get(vertex_index, g));
graph_traits<G>::vertex_iterator uItr, uEnd;
int j = 0;
for (tie(uItr, uEnd) = vertices(g); uItr != uEnd; ++uItr, ++j)
{
put(indexMap, *uItr, j);
}
// Lengauer-Tarjan dominator tree algorithm
domTreePredVector =
vector<Vertex>(num_vertices(g), graph_traits<G>::null_vertex());
PredMap domTreePredMap =
make_iterator_property_map(domTreePredVector.begin(), indexMap);
lengauer_tarjan_dominator_tree(g, vertex(0, g), domTreePredMap);`
Для меня одна из главных преимуществ бустера является возможность автоматически генерируется графический вывод с помощью Graphviz с write_graphviz (соиЬ, г), где г представляет собой граф из ЬурейеЕ G:
typedef adjacency_list<
listS,
listS,
bidirectionalS,
property<vertex_index_t, std::size_t>, no_property> G;
Однако, я не могу перевести DomTreePredMap в нечто write_graphviz (COUT, X) можно понять. Я ценю любую помощь, излагающую, как график можно построить из domTreePredMap, который может быть напечатан с использованием графика.
Спасибо, что прочитали все это и помогли мне.
я предлагаю использовать динамические свойства. Посмотрите на мои [ответы, используя 'write_graphviz_dp'] (https://stackoverflow.com/search?tab=newest&q=write_graphviz_dp) для вдохновения. – sehe
Спасибо @sehe. Я вижу, что вы специалист по повышению. Однако, глядя на ваши ссылки, я не могу понять, как реально хранить информацию, хранящуюся в domTreePredMap, чтобы сопоставить ее с объектом графика. – user3661732
Мне грустно это слышать. Возможно, вы можете показать нам, где вы застряли. [MCVE] (http://stackoverflow.com/help/mcve) помогает нам направлять нашу энергию :) – sehe