Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> boost::graph помогите разобраться, boost graph сохранение матрицы смежности 
V
    Опции темы
dodikk
Дата 29.11.2008, 20:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 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/)  я этого не нашел.

Заранее благодарен.
PM MAIL   Вверх
Peter
Дата 13.12.2008, 12:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 771
Регистрация: 28.7.2003
Где: Ставрополь

Репутация: -1
Всего: 1



adjacency_matrix - это всего лишь способ хранения графа в памяти. Матрицу смежности можно получить и для adjacency_list. Различие будет только в скорости работы программы.
Словесный алгоритм такой:
Код
Цикл по vi - итератор всех вершин графа
{
    цикл по vi2 - второй итератор всех вершин графа
    {
        Если есть дуга (vi, vi2)
            печатать '1 ';
        иначе
            печатать '0 ';
    }
    печатать '\n';
}

Теперь осталось записать то же самое на языке BGL.


--------------------
всё, что делаете, делайте от души, как для Господа (Послание апостола Павла колоссянам, 3:23).
PM MAIL WWW   Вверх
dodikk
Дата 14.12.2008, 15:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 9.10.2008

Репутация: нет
Всего: нет



Спасибо за ответ.

То есть, насколько я понял, преобразование в матрицу нужно делать руками.
Если честно, ожидал какой-либо стандартной функции преобразования графа в матрицу (имеется в виду не способ хранения графа к памяти, а структура данных). А так приходится изобретать свой велосипед...
Надеюсь, когда-нибудь такие велосипеды добавят в boost::graph   smile 


Проблему, собственно, уже решил, отказавшись от subgraph<Graph>, работая с матрицами напрямую.
А после этого перевожу их в некоторое из представлений BGL преобразованием, обратным описанному выше.
Не очень хорошее, но решение.
PM MAIL   Вверх
dodikk
Дата 21.12.2008, 13:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 9.10.2008

Репутация: нет
Всего: нет



Итог : 

- Подскажите, пожалуйста, в том магазине, где я хочу купить раму, велосипеды продаются? А то очень уж не хочется изобретать и самому собирать...
- А я уже изобрел. Вот Вам чертеж. Теперь вам изобретать уже не нужно. Осталось только собрать...
 smile 


P.S. Построить матрицу смежности, в принципе, - не проблема. Проблема в том, чтобы сделать это не изобретая лишних велосипедов.
P.P.S. Peter, большое спасибо за ответ. Отсутствие результата, в принципе, - тоже результат. Прошу извинить, если Вас обидело приведенное выше сравнение.
PM MAIL   Вверх
Earnest
Дата 23.12.2008, 13:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 53
Всего: 183



Цитата(dodikk @  14.12.2008,  16:36 Найти цитируемый пост)
ожидал какой-либо стандартной функции преобразования графа в матрицу 

А что есть какой-то один стандартный тип "матрица"?


--------------------
...
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0644 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.