DOT (язык)

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск
6n-graf.svg

DOT — язык описания графов.

Граф, описанный на языке DOT, обычно представляет собой текстовый файл с расширением .gv или .dot в понятном для человека и обрабатывающей программы формате.

В графическом виде графы, описанные на языке DOT, представляются с помощью специальных программ, например Graphviz.

Расширение[править | править исходный текст]

Хотя язык допускает использование стандартных расширений .gv и .dot, следует отдавать предпочтение первому варианту — .gv, так как расширение .dot используется в Microsoft Office 2003[1].

Синтаксис[править | править исходный текст]

Общие положение[править | править исходный текст]

Структура графа на языке DOT описывается в виде списка субграфов, каждый элемент которого представляет собой конструкцию:

 
graph %имя_графа% {
}

внутри которой (в фигурных скобках — { }) находятся комментарии и инструкции, описывающие субграф. Инструкции описывают вершины и рёбра целевого графа и разделяются символом точки с запятой — ;.

Комментарии[править | править исходный текст]

Язык DOT поддерживает комментарии в стиле языков C и C++ — // и /**/, а также используемый для этих целей в некоторых языках программирования символ # в качестве первого символа однострочного комментария.

 // Комментарий в одну строку.
 # Комментарий в одну строку.
 /* Комментарий
    из нескольких
    строк. */

Типы графов[править | править исходный текст]

Неориентированный граф[править | править исходный текст]

Неориентированный граф

Неориентированный граф в языке DOT описывается списком вершин и рёбер, представленных названием вершин и двойным тире (--) между связанными вершинами.

 
graph graphname {
    a;
    b;
    c;
    d;
    a -- b;
    b -- c;
    b -- d;
}

Или эквивалентным образом, опустив избыточные описания:

 
graph graphname {
     a -- b -- c;
     b -- d;
}

Ориентированный граф[править | править исходный текст]

Ориентированный граф

Ориентированный граф в языке DOT описывается списком вершин и рёбер, представленных названием вершин и стилизованной тире и треугольной скобкой стрелочкой (->) между связанными вершинами:

 
digraph graphname {
     a -> b -> c;
     b -> d;
}

Либо с избыточным описанием:

 
digraph graphname {
    a;
    b;
    c;
    d;
    a -> b;
    b -> c;
    b -> d;
}

Атрибуты[править | править исходный текст]

Граф с атрибутами

При описании графов на языке DOT можно использовать атрибуты, определяющие цвет, форму и стиль вершин и рёбер. Аттрибуты описываются парами ключ=значение, заключёнными в квадратные скобки ([ключ=значение]). Для каждого элемента графа может быть определено несколько атрибутов, разделённых пробелом

graph graphname {
     // label - видимое название вершины
     a [label="Foo"];
     // shape - определение формы вершины
     b [shape=box];
     // color - определение цвета ребра
     a -- b -- c [color=blue];
     // style - определение стиля ребра
     b -- d [style=dotted];
}

Ограничения[править | править исходный текст]

Расположение элементов не соответствует ожидаемому.
Расположение элементов после ручной корректировки.

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

Для корректировки визуального представления используются графические редакторы.

Например:

digraph g {
	node [shape=plaintext]
	A1 -> B1
	A2 -> B2
	A3 -> B3
 
	A1 -> A2 [label=f]
	A2 -> A3 [label=g]
	B2 -> B3 [label="g'"]
	B1 -> B3 [label="(g o f)'" tailport=s headport=s]
 
	{ rank=same; A1 A2 A3 }
	{ rank=same; B1 B2 B3 } 
}

Программное обеспечение[править | править исходный текст]

Для представления графов, описанных на языке DOT используется множество программ, виджетов и библиотек, среди которых:

Аналоги[править | править исходный текст]

См. также[править | править исходный текст]

Примечания[править | править исходный текст]

Ссылки[править | править исходный текст]