С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.94/140: Рейтинг темы: голосов - 140, средняя оценка - 4.94
Эксперт С++
8483 / 6150 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
1

Визуализация графов

10.02.2013, 19:55. Показов 29347. Ответов 38
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
В общем есть такой пакет http://ru.wikipedia.org/wiki/Graphviz

С помощью него можно вводить граф ввиде dot файла и получать её визуализацию
( вершины графа располагаются оптимальным образом )

Описание утилит на русском тут http://rus-linux.net/nlib.php?... 10-16.html

Оф. сайт http://www.graphviz.org/ Тут же можно скачать и установить, причем как пакет с утилитами и dll -ками, инклюдами так и сами соры.

Сама библиотека написана на Си. Никак не могу понять как использовать эту либу в своих программах.
Пытаюсь скомпилить примеры из доки но без успешно то ли программа завершается крахом то ли требует несуществующие dll.

Возможно кто-то имел дело с этой библиотекой и знает как её использовать?
2
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
10.02.2013, 19:55
Ответы с готовыми решениями:

Теорие графов. Композиция двух неор. графов.
Здравствуйте. Прошу помощи уже здесь :| (old topic)... Прошу помочь с составлением алгоритма...

Представление графов С++
#include <iostream> #include <vector> using namespace std; int n; int m; vector<int>...

Представление графов С++
Считывания графу из входного файла. На вход подается текстовый файл следующего вида: n m v1 u1...

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

38
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
18.02.2013, 22:33 21
Author24 — интернет-сервис помощи студентам
Цитата Сообщение от Avazart Посмотреть сообщение
но как к примеру сделать свой редактор, что бы пользователь мог "двигать" узлы, а не имел просто статическую картинку?
QGraphicsScene позволяет "двигать" графические элементы сцены

Не по теме:

а вообще господа пишущие на js посмеются над таким заданием

0
Эксперт С++
8483 / 6150 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
18.02.2013, 22:51  [ТС] 22
Цитата Сообщение от Jupiter Посмотреть сообщение
QGraphicsScene позволяет "двигать" графические элементы сцены
Это чЁ такое?
Qt класс или обвертка Qt над тем же GraphViz ?

Добавлено через 1 минуту
Цитата Сообщение от Jupiter Посмотреть сообщение
а вообще господа пишущие на js посмеются над таким заданием
А какое тут задание ?
Тут вопрос прикрутки либы ... думаю использовать было бы не проблема...
0
Эксперт С++
8483 / 6150 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
20.02.2013, 22:52  [ТС] 23
Хорошо если нельзя получить координаты напрямую с помощью прикрутки либы к С++ программе то как ?

Вызывать dot.exe и парсить dot - файл который получается на выходе вытаскивая координаты ?

Или возможно есть готовый редактор который позволяет редактировать и передвигать узлы ?
0
Эксперт С++
8483 / 6150 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
24.02.2013, 18:10  [ТС] 24
Для того что бы попробовать реализовать алгоритм визуализации самому создал новую тему Визуализация графа (реализация алгоритма)
0
127 / 131 / 11
Регистрация: 25.12.2011
Сообщений: 443
13.05.2013, 15:38 25
Цитата Сообщение от Avazart Посмотреть сообщение
Или возможно есть готовый редактор который позволяет редактировать и передвигать узлы ?
Если просто попользоваться, то довольно удобен yEd. А для встраивания в программу я бы тоже раскладку делал на основе graphviz, он умеет отдавать координаты для вершин и для контрольных точек сплайнов, через которые ребра представляются.
0
Эксперт С++
8483 / 6150 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
13.05.2013, 15:44  [ТС] 26
Цитата Сообщение от kamre Посмотреть сообщение
то довольно удобен yEd
Чет не видел там варианта для С++, а внешне можно и GraphViz использовать только это порождает другие проблемы.

Цитата Сообщение от kamre Посмотреть сообщение
А для встраивания в программу я бы тоже раскладку делал на основе graphviz, он умеет отдавать координаты для вершин и для контрольных точек сплайнов, через которые ребра представляются.
Под Windоws, GraphViz не получается использовать как библиотеку в том то и проблема !!!

Читай тему сначала ...
0
127 / 131 / 11
Регистрация: 25.12.2011
Сообщений: 443
13.05.2013, 16:31 27
Цитата Сообщение от Avazart Посмотреть сообщение
Чет не видел там варианта для С++
Так это "готовый редактор который позволяет редактировать и передвигать узлы", сам им периодически пользуюсь. А на чем он написан не важно.

Цитата Сообщение от Avazart Посмотреть сообщение
Под Windоws, GraphViz не получается использовать как библиотеку в том то и проблема
Можно вызывать как подпроцесс и парсить его выход, если уж совсем все так плохо.
0
Эксперт С++
8483 / 6150 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
13.05.2013, 16:38  [ТС] 28
Цитата Сообщение от kamre Посмотреть сообщение
Так это "готовый редактор который позволяет редактировать и передвигать узлы", сам им периодически пользуюсь. А на чем он написан не важно.
И что оно оптимально расставляет узлы как graphviz ?

Цитата Сообщение от kamre Посмотреть сообщение
Можно вызывать как подпроцесс и парсить его выход, если уж совсем все так плохо.
А нафига такое щастье, если для этого нужно садится и писать парсер dot ?
0
127 / 131 / 11
Регистрация: 25.12.2011
Сообщений: 443
13.05.2013, 17:02 29
Цитата Сообщение от Avazart Посмотреть сообщение
И что оно оптимально расставляет узлы как graphviz ?
Умеет автоматическую раскладку, там в ролике показывается.


Цитата Сообщение от Avazart Посмотреть сообщение
А нафига такое щастье, если для этого нужно садится и писать парсер dot ?
Ну раз dot не подходит, можно еще в svg получать раскладку, для него уже готовые парсеры есть. А лучше всего собрать из исходников самому и вызывать напрямую.
0
Эксперт С++
8483 / 6150 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
13.05.2013, 17:07  [ТС] 30
Цитата Сообщение от kamre Посмотреть сообщение
Ну раз dot не подходит, можно еще в svg получать раскладку, для него уже готовые парсеры есть. А лучше всего собрать из исходников самому и вызывать напрямую.
Ха собрать ... под Windows ? по мойму сильно оптимистично. К тому же там вроде исходники только старых версий...
Вопрос в том что под Ubuntu все работает без проблем ...
Да и сами утилиты как-то работают же ?

Насчет готовых парсеров не слышал вообще, в любом это через десятую дорогу.
0
670 / 198 / 29
Регистрация: 10.05.2012
Сообщений: 595
13.05.2013, 17:43 31
Avazart, Хочу напомнить вам, вдруг вы забыли, что в 3D граф куда легче отобразить, да и там вообще можно всегда без пересечений сделать, тем более 3-х мерная проволочная проекция крайне проста в реализации.
0
Эксперт С++
8483 / 6150 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
13.05.2013, 17:47  [ТС] 32
Ага и насколько это будет наглядно, a ?

Все делается ради простоты и наглядности ...
0
670 / 198 / 29
Регистрация: 10.05.2012
Сообщений: 595
13.05.2013, 17:50 33
Avazart, это будет крайне наглядно и очень удобно. Лично моё мнение, так как сам уже делал.

Добавлено через 1 минуту
Avazart, http://www.youtube.com/watch?v=FjY3EPR369o
0
Эксперт С++
8483 / 6150 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
13.05.2013, 17:55  [ТС] 34
Ну и где тут наглядность ? Красиво да, но явно не наглядно...

К тому же с реализацией тоже придется попотеть ибо тоже как то надо расставлять вершины, тоже нужно считать...
Ко всем проблемам добавляется еще и 3D графика ...

Да и то что делает graphviz тоже можно реализовать только это затраты и время, при том что уже это реализовано и работает по крайней мере в Linux
0
670 / 198 / 29
Регистрация: 10.05.2012
Сообщений: 595
13.05.2013, 18:00 35
Цитата Сообщение от Avazart Посмотреть сообщение
Ко всем проблемам добавляется еще и 3D графика ...
Это обычный 3д разворот вокруг 3 осей, сдвиг и умножение на число и перспективное преобразование, ничего более. В 3D тут нет проблем.
Такая работа с нуля пишется за час.
0
Эксперт С++
8483 / 6150 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
13.05.2013, 18:03  [ТС] 36
Ага а кто вершины расставлять будет в 3d проекции ?
Насколько это будет наглядным если необходимо буде отображать надпись возле каждой вершины,ребра ?
Как дать возможность двигать элементы пользователю в 3D ?
0
670 / 198 / 29
Регистрация: 10.05.2012
Сообщений: 595
13.05.2013, 18:19 37
Цитата Сообщение от Avazart Посмотреть сообщение
Ага а кто вершины расставлять будет в 3d проекции ?
Вы хотите сказать, вам сложно взять обычное распределение координат вершин в пространстве ?
"наглядность" заключается в равномерности распределения, с учётом min расстояния между парой вершин графа.
Алгоритмом Флойда вам в помощь, тут O(N^3).

Добавлено через 5 минут
Можно придумать и быстрее, возможно, хотя и сомнительно, но вам нужна простота.

Добавлено через 1 минуту
Avazart, Вообще, вы правы, раскидать вершины в пространстве, будет посложнее чем 3д написать, но времени не займёт много всё равно. Я, вообще, упругими связями их раскидывал, прибегнув к физической модели, алгоритм ооочень простой, но не max "наглядно"
0
5 / 6 / 4
Регистрация: 18.11.2009
Сообщений: 661
25.06.2014, 20:47 38
Работая в программах на С++ с графами я тоже сталкивался с проблемой визуализации. Она решалась мной примерно так. Характеристики граaа (вершины и списки инцидентности или матрица смежности в подобных задачах удобно хранить в файле или БД MS Access. Но кроме характеристик вершин храните дополнительно и ее пару координат.Функцию отрисовки графа в Delphi или C++ Builder не так сложно написать. (единственное усложнение -отрисовка связей со стрелками в случае орграфа). Для каждой вершины создается при работе в VCL визуальный объект - лучше всего TStaticText , сойдет и TButton - правда нет управления цветом и переносом текста.
При их создании закладывают возможность передвижения их юзером с помощью мышки по экрану.
Другими словами, граф 1-й раз как-то загружается. Юзер распутывает клубок расставляя вершины по своему усмотрению. И следующее сохранение в файл и следующая загрузка уже будут с "хорошими" координатами.
0
Avazart
25.06.2014, 21:22  [ТС]     Визуализация графов
  #39

Не по теме:

Цитата Сообщение от eugrita Посмотреть сообщение
Другими словами, граф 1-й раз как-то загружается. Юзер распутывает клубок расставляя вершины по своему усмотрению. И следующее сохранение в файл и следующая загрузка уже будут с "хорошими" координатами.
Запарится распутывать.

0
25.06.2014, 21:22
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.06.2014, 21:22
Помогаю со студенческими работами здесь

Теория графов
Есть задание. найти максимальное и среднее расстояние между центральными вершинами...

Реализация графов
Помогите пожалуйста!!!!! как написать программу на Си ++ на эту тему :реализация различных типов...

Визуализация
Добрый день, подскажите пожалуйста, чем лучше отображать 2d графику - хочу поиграться с алгоритмами...

Визуализация
Здравствуйте, уважаемые форумчане. Хотелось бы узнать, возможно ли визуализировать(создать...

Генерирование особых графов
кто может привести какой-либо тест(пример в текстовом файле) или алгоритм генерирования тестов для ...

Методы обхода графов
Всем привет! Есть задание : Обойти граф, используя заданный алгоритм ( Обход в глубину по...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
39
Ответ Создать тему
Новые блоги и статьи
Это работает. Скорость асинхронной логики велика. Вопрос видимо останется в стабильности. Плата - огонь!
Hrethgir 13.01.2025
По прошлому проекту в Logisim Evolution прилагаю файл архива проекта Gowin Eda и снимок. Восьмибитный счётчик из сумматора+ генератор сигнала согласования+ стартер fast регистров. Файлы прилагаю. . . .
UserScript для подсветки кнопок языков программировани­­­­я в зависимости от текущего раздела
volvo 13.01.2025
В результате работы этого скрипта подсвечиваются нужные кнопки не только в форме быстрого ответа, но и при редактировании сообщения: / / ==UserScript== / / @name CF_DefaultLangSelect / / . . .
Введение в модели и алгоритмы машинного обучения
InfoMaster 12.01.2025
Машинное обучение представляет собой одну из наиболее динамично развивающихся областей искусственного интеллекта, которая фокусируется на разработке алгоритмов и методов, позволяющих компьютерам. . .
Как на Python создать нейросеть для решения задач
InfoMaster 12.01.2025
В контексте стремительного развития современных технологий особое внимание уделяется таким инструментам, как нейросети. Эти структуры, вдохновленные биологическими нейронными сетями, используются для. . .
Как создать нейросеть для генерации картинок на Python
InfoMaster 12.01.2025
Генерация изображений с помощью искусственных нейронных сетей стала одним из наиболее захватывающих направлений в области компьютерного зрения и машинного обучения. В этой статье мы рассмотрим. . .
Создание нейросети для генерации текста на Python
InfoMaster 12.01.2025
Нейросети, или искусственные нейронные сети, представляют собой модели машинного обучения, вдохновленные работой человеческого мозга. Они состоят из множества взаимосвязанных узлов, или "нейронов",. . .
Как создать нейросеть распознавания изображений на Python
InfoMaster 12.01.2025
Введение в распознавание изображений с помощью нейросетей Распознавание изображений с помощью нейронных сетей стало одним из самых впечатляющих достижений в области искусственного интеллекта. Эта. . .
Основы искуственного интеллекта
InfoMaster 12.01.2025
Искусственный интеллект (ИИ) представляет собой одну из наиболее динамично развивающихся областей современной науки и технологий. В широком смысле под искусственным интеллектом понимается способность. . .
Python и нейросети
InfoMaster 12.01.2025
Искусственные нейронные сети стали неотъемлемой частью современных технологий, революционизировав множество областей - от медицинской диагностики до автономных транспортных средств. Python, благодаря. . .
Python в машинном обучении
InfoMaster 12.01.2025
Python стал неотъемлемой частью современного машинного обучения, завоевав позицию ведущего языка программирования в этой области. Его популярность обусловлена несколькими ключевыми факторами, которые. . .
Создание UI на Python с TKinter
InfoMaster 12.01.2025
TKinter — это одна из наиболее популярных библиотек для создания графических интерфейсов пользователей (GUI) в языке программирования Python. TKinter входит в стандартную библиотеку Python, что. . .
HTML5 в разработке мобильных приложений
InfoMaster 12.01.2025
Введение: Обзор роли HTML5 в мобильной разработке В современном мире мобильных технологий HTML5 стал ключевым инструментом для разработки кроссплатформенных приложений. Эта технология произвела. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru