воскресенье, февраля 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 комментариев:

  1. Анонимный19/2/06 20:09

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

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

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

    ОтветитьУдалить
  3. Анонимный1/5/06 13:13

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

    ОтветитьУдалить
  4. Анонимный29/7/06 11:29

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

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

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

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

    ОтветитьУдалить
  5. Анонимный19/2/15 23:13

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

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

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

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

    ОтветитьУдалить
  7. Анонимный21/2/15 14:17

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

    ОтветитьУдалить