Re: boost/graph поиск несвязаных между собой наборов вершин
От: Аноним  
Дата: 07.11.07 11:40
Оценка:
По всей видимости Вам необходимо использовать associative_property_map, он описан <boost\property_map.hpp>. Там есть вспомогательная функция make_assoc_property_map. Этот класс/функция используется для фтыкания ассоциативных контейнеров типа std::map в алгоритмы BGL в виде отображений свойств. Для определения "островов", то есть компонент связности, в Вашем случае неориентированного графа лучше использовать connected_components. Во всяком случае у меня получилось, правда для хранения вершин я использовал vecS. В вашем случае надо примерно так:

typedef graph_traits<GraphType>::vertex_descriptor vertex_desc;
typedef graph_traits<GraphType>::vertices_size_type vertices_size_type;
typedef std::map<vertex_desc, vertices_size_type> ComponentMap;
typedef std::map<vertex_desc, vertices_size_type> ComponentMap;
ComponentMap comp_map;
associative_property_map<ComponentMap> ass_map=make_assoc_property_map(comp_map);

//потом где-то в вызове connected_components передать ass_map, примерно так
//int com_count=connected_components(graph, ass_map);
//или
//int com_count=connected_components(graph, make_assoc_property_map(comp_map));

потом уже из comp_map извлекать номер компоненты дял каждого дескриптора вершины.

Я так в принципе не делал, но думаю будет работать. А ввобще есть хорошая книжка на русском по Boost Graph Library, на Books.ru купил, не нарадуюсь
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.