Алгоритм Graphviz Dot

есть ли документация (полный псевдокод?) об алгоритме из точки в библиотеке Graphviz?

Я нашел только часть документации псевдо-кода.

1 ответов


вот несколько ссылок для вас. Наиболее полным (за исключением самого исходного кода точки), вероятно, является #2, статья "техника рисования направленных графов", написанная несколькими самими участниками Graphiz.

(1)"рисование графиков с точкой"

на рисование графиков с точкой, алгоритм компоновки точки описывается следующим образом:

dot рисует графики в четырех основных фазах. Знание этого помогает тебе понять. какие макеты точка делает и как вы можете их контролировать. Процедура компоновки, используемая dot, зависит от ациклического графика. Таким образом, первый шаг состоит в том, чтобы разорвать любые циклы, которые происходят во входном графе, изменив внутреннее направление некоторых циклических ребер. На следующем шаге узлы присваиваются дискретным рангам или уровням. На чертеже сверху вниз ранги определяют координаты Y. Ребра, охватывающие более одного ранга, разбиваются на цепочки "виртуальных" узлов и ребер единичной длины. Третий шаг приказывает узлам внутри рядов избегать пересечений. На четвертом шаге задаются координаты X узлов, чтобы ребра оставались короткими, а на последнем шаге маршрутизируются реберные сплайны. Это тот же общий подход, что и большинство иерархических программ рисования графов, основанных на работах Уорфилда [War77], Карпано [Car80] и Сугиямы [STT81]. Мы отсылаем читателя к [GKNV93] для подробного объяснения алгоритмов dot

документы приведенные в этом пункте эти:

  • [Car80] М. Карпаев. Автоматическое отображение иерархизированных графиков для компьютерного анализа решений. IEEE Transactions on Software Engineering, SE-12 (4):538-546, April 1980. (Очевидно, доступно для покупки здесь.)

  • [GKNV93] Эмден Р. Gansner, Элефтериос Koutsofios, Стивен С. Север, и озера-Фонг во. Методика рисования направленных графов. Стандарт IEEE Транс. Sofware Eng., 19 (3):214-230, May 1993. (Доступный здесь на Graphviz.org сайт.)

  • [STT81] K. Сугияма, С. Тагава и М. Тода. Методы визуального понимания иерархических системных структур. IEEE Transactions on Systems, Man, and Cybernetics, SMC-11 (2):109-125, February 1981. (Очевидно, доступно для покупки здесь.)

  • [War77] Джон Уорфилд. Теория пересечения и отображение иерархии. Транзакции IEEE по системам, человеку и кибернетике, SMC-7 (7):505-523, июль 1977 года. (Очевидно, доступно для покупки здесь.)

(2)"техника рисования направленных графов"

алгоритм dot подробно описан в статье "техника рисования направленных графов", опубликованной в журнале транзакции IEEE по программной инженерии в 1993 (и доступный бесплатно на Graphviz.org сайт). Это источник" [GKNV93] " цитируется выше.

абстрактное, для чего оно стоит, это:

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

(3)"Использование Graphviz в качестве библиотеки"

"использование Graphviz в качестве библиотеки" предоставляет сводку алгоритмов каждого движка компоновки в разделе 3.1. Часть описания для dot является следующим:

алгоритм dot создает ранжированный макет графика с учетом направлений ребер, если это возможно. Это особенно подходит для отображение иерархий или направленных ациклических графиков. Основная схема компоновки относится к Sugiyama et al.[STT81] конкретный алгоритм, используемый dot, следует шагам, описанным Ганснером и др.[GKNV93]

шаги в макете точки: 1) инициализировать 2) ранг 3) минкросс 4) позиция 5) sameports 6) сплайны 7) compoundEdges

после инициализации алгоритм присваивает каждому узлу дискретный ранг (ранг) с помощью целочисленной программы для минимизации суммы (дискретной) длины ребер. Следующий шаг (mincross) переставляет узлы в рядах, чтобы уменьшить пересечения кромок. За этим следует присвоение (положение) фактических координат узлам, используя другую целочисленную программу для сжатия графика и выпрямления ребер. На этом этапе все узлы будут иметь позицию, заданную в атрибуте coord. Кроме того, задается атрибут BB ограничивающего поля для всех кластеров.

ссылка" [GKNV93] "относится к" технике рисования, направленной Графики", как указано выше.

ссылка" [STT81] "относится к" методам визуального понимания иерархических системных структур", как указано выше.

(4) Вы также можете быть заинтересованы в: