воскресенье, февраля 19, 2006

Библиотеки для отрисовки графов

Несмотря на то, что проблему с отрисовкой своего графа я решила с помощью GraphViz'а, я успела к тому моменту основательно порыться в Интернете в поисках библиотеки отрисовки графов, плюс сейчас порылась, освежила воспоминания и нашла кое-что новое.
Всегда приятно, когда есть хорошая библиотека для решения какого-либо класса задач. С открытыми исходниками, подробной документацией, живым форумом и прочими прелестями, которые есть у хороших библиотек. Сразу вспоминается Boost.
В Boost Graph library реализовано большое количество алгоритмов на графах, в том числе несколько алгоритмов отрисовки графов, но как-то маловато...

Самая достойная из бесплатных библиотек, что мне встретилась - это Lib tulip, на ней построена демонстрационная программа отрисовки графов Tulip. Документация несколько мутная, но есть. Есть форум, ну и конечно же есть исходники (C++). Умеет несколько двумерных раскладок, умеет рисовать трехмерные графы. Для отрисовки в 3D использует OpenGL.

Остальные бесплатные проекты, что я видела, либо полудохлые, либо им чего-то да не хватает. Привлекательно выглядит uDraw, раньше он назывался daVinci и под старым именем был довольно известен. Он без исходников, но есть дистрибутивы под большое количество платформ: под Windows, под разные Unix'ы...

Пожалуй самой известной библиотекой для отрисовки графов является LEDA, написана на С++. Это не только библиотека отрисовки графов, там много чего есть как касающегося графов, так и не касающегося. Но это платная библиотека, платная даже для вузов. И стоит она немеряно. Насколько мне известно, раньше она была бесплатной для учебных заведений и получила довольно-таки широкое распространение. И часто в форумах в обсуждениях отрисовки графов она упоминается. Но сейчас говорить о ней большого смысла нет. Соответственно, теряют смысл библиотеки, которые написаны на основе LEDA. Это AGD (Algorithms for Graph Drawing), GDT (Graph Drawing Toolkit).

В прошлом посте я упоминала yFiles, на базе которой построена бесплатная программи yEd. yFiles yаписана на Java, есть yFiles.NET. Стоит тоже неслабо.

Вот, собственно и все. Негусто получилось. В принципе, можно взять какую-либо программу для отрисовки графов с открытыми исходниками, и использовать ее в своем проекте. Но это совсем не то, что настоящая библиотека, задача сильно усложняется.

В комментариях упоминались коллекции ссылок на проекты, посвященные отрисовке графов, приведу их здесь. Возможно кому-то удастся отыскать в них еще что-то полезное.
Graph Drawing в каталоге Google
Graph Drawing на dmoz.org

Это продолжение рассказа об отрисовке графов. Начало можно найти тут: Нарисовать граф красиво.

8 коммент.:

Анонимный комментирует...

libgraph и libagraph - возможность использовать GraphViz из своей программы.

Ivan Sagalaev комментирует...

Кстати, для Питона тоже есть удобный wrapper для GraphViz: pydot.

Я надеюсь, меня не съедят за то, что я использую не C++ :-).

Анонимный комментирует...

для .NET очень удобная штука:
http://netron.sourceforge.net/

Анонимный комментирует...

Есть еще несколько библиотек, которые показались мне любопытными:

http://www.oreas.com/products_en.php

http://www.tomsawyer.com/home/products.php

http://www.lassalle.com/index.html

Unknown комментирует...

http://www.algorithmic-solutions.com/leda/ledak/index.htm
Бесплатная версия LEDA

Анонимный комментирует...

А каким образом вам удалось использовать GraphViz?
Лично мне не удалось его использовать под Windows как библиотеку в своих приложениях на С++

http://www.cyberforum.ru/cpp-beginners/thread783380.html

Alena комментирует...

Анонимный комментирует...
А каким образом вам удалось использовать GraphViz?

Я не библиотеки подключала, а готовые экзешники запускала.

Анонимный комментирует...

Ну так я думал название блога говорит именно про библиотеки C/C++.
Вводите в заблуждение.