Алгоритмы отображения графов

yolki

Граф задан логически - вершины, рёбра (связи граф ориентирован.
Требуется: на картинке отобразить более-менее красиво, т.е. что-нибудь более-менее интелектуальное.
Вершины имеют размер (скажем, MxN пикселей).
Есть две задачи в этом направлении, условно называемые "расстановка" и "трассировка".
"Расстановка" - это как расставить вершины, чтобы получилось наглядно.
"Трассировка" - это как соединить вершины так, чтобы рёбра (это не обязательно прямые) огибали вершины.
В общем случае расположить граф на плоскости так, чтобы рёбра не пересекались нельзя. Но можно к этому стремиться.
Синим отмечены весьма субъективные термины.
Сходные идеи могут применяться при проектировании печатных плат.
Может, у кого есть готовые реализации?

sergey_m

> Может, у кого есть готовые реализации?
graphviz?

yolki

Толстая слишком. Но спасибо, гляну.
Ожидаемое количество кода 3000 строк или 100Кб.
Если есть владельцы книжек
http://www.cs.brown.edu/people/rt/gdbook.html
или
Н.В. Касьянов, В.А. Евтигнеев "Графы в Программировании:обработка, визуализация и применение." BHV 2003.
буду весьма признателен.

koly

Так называемый алгоритм Альфа позволяет определять, является ли граф планарным. При определенной доработке он позволит также рисовать планарную укладку графа.
Ссылки:
http://rain.ifmo.ru/cat/view.php/vis/graph-coloring-layout/planar-layout-2003 - планарная укладка (Java applet)
http://www.yandex.ru/yandsearch?text=%EF%EB%E0%ED%E0%F0%ED%EE%F1%F2%FC+%E3%F0%E0%F4%E0&stype=www так следует искать

SCIF32

по поводу graphvis-a чем именно толстая? в каких целях собираешься использовать:
каков порядок количества вершин, ребер?

yolki

Отображение блок-схем программ.
Кол-во вершин - <1000.
Хочу реализацию алгоритма в своей системе.

sergey_m

Отображение блок-схем программ.
Стандартное решения для этого - graphviz. Зачем изобретать велосипед?

mysha

Непростая задача. Приведи определение красивости.
Знаю работы, где красивость определялалсь через функциональность -
например, если граф двудольный -то он и выглядит как двудольный, если планарный -
то и выводится как планарный. Все априорные способы отображения графа обычно идут боком -
т.к. не рассчитаны на сложные графы
Оставить комментарий
Имя или ник:
Комментарий: