DOT (язык)

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску

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 используется множество программ, виджетов и библиотек, среди которых:

Примечания

[править | править код]
  1. File extension .dot or .gv? Дата обращения: 8 марта 2011. Архивировано из оригинала 5 сентября 2012 года. (англ.)