![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
dodikk |
|
|||
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 9.10.2008 Репутация: нет Всего: нет |
Доброго времени суток.
Пытаюсь решить одну проблему. Нужно сформировать некоторый граф, а затем сохранить его матрицу смежности в текстовом формате. Для формирования графа собираюсь использовать boost::graph (а именно, subgraph<Graph>). После построения графа, нужно сохранить его матрицу смежности. В как можно более простом тескстовом формате. В мануалах нашел возможности вывода в форматах graphviz и graphml. Но мне это не совсем подходит. Проблема в том, что файл с матрицей будет вычитываться другим приложением (matlab). Поэтому формат должен быть предельно прост. Указанные выше форматы прийдется дополнительно парсить средствами matlab, что не очень хочется исполнять. Подскажите, пожалуйста как получить матрицу смежности adjacency_matrix графа именно в виде матрицы. Ибо в мануалах (http://www.boost.org/doc/libs/1_37_0/libs/graph/doc/) я этого не нашел. Заранее благодарен. |
|||
|
||||
Peter |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 771 Регистрация: 28.7.2003 Где: Ставрополь Репутация: -1 Всего: 1 |
adjacency_matrix - это всего лишь способ хранения графа в памяти. Матрицу смежности можно получить и для adjacency_list. Различие будет только в скорости работы программы.
Словесный алгоритм такой:
Теперь осталось записать то же самое на языке BGL. -------------------- всё, что делаете, делайте от души, как для Господа (Послание апостола Павла колоссянам, 3:23). |
|||
|
||||
dodikk |
|
|||
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 9.10.2008 Репутация: нет Всего: нет |
Спасибо за ответ.
То есть, насколько я понял, преобразование в матрицу нужно делать руками. Если честно, ожидал какой-либо стандартной функции преобразования графа в матрицу (имеется в виду не способ хранения графа к памяти, а структура данных). А так приходится изобретать свой велосипед... Надеюсь, когда-нибудь такие велосипеды добавят в boost::graph ![]() Проблему, собственно, уже решил, отказавшись от subgraph<Graph>, работая с матрицами напрямую. А после этого перевожу их в некоторое из представлений BGL преобразованием, обратным описанному выше. Не очень хорошее, но решение. |
|||
|
||||
dodikk |
|
|||
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 9.10.2008 Репутация: нет Всего: нет |
Итог :
- Подскажите, пожалуйста, в том магазине, где я хочу купить раму, велосипеды продаются? А то очень уж не хочется изобретать и самому собирать... - А я уже изобрел. Вот Вам чертеж. Теперь вам изобретать уже не нужно. Осталось только собрать... ![]() P.S. Построить матрицу смежности, в принципе, - не проблема. Проблема в том, чтобы сделать это не изобретая лишних велосипедов. P.P.S. Peter, большое спасибо за ответ. Отсутствие результата, в принципе, - тоже результат. Прошу извинить, если Вас обидело приведенное выше сравнение. |
|||
|
||||
Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 53 Всего: 183 |
А что есть какой-то один стандартный тип "матрица"? -------------------- ... |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |