Известно много способов представления графов в памяти компьютера,
различающихся объемом занимаемой памяти и скоростью выполнения
операций над графами. Представление выбирается исходя из
потребностей конкретной задачи. Перечислим три наиболее
характерных способа представления графа с p вершинами и q ребрами.
Матрица смежности — булевская квадратная матрица M размера p×p,
в которой элемент
M[i,j]=1, если вершины i и j смежны. Объем
занимаемой памяти — O(p
2
). Списки смежности — структура данных,
построенная на указателях, где для каждой вершины хранится связный
список смежных вершин. Объем занимаемой памяти — O(p+4q). Список
ребер — массив длины q, хранящий пары смежных вершин. Объем
занимаемой памяти — O(2q).
На практике используется, как правило, некоторая комбинация
указанных представлений с добавлением структур для хранения
информации, нагруженной на вершины и ребра. Очевидные
модификации позволяют использовать эти представление для мульти,
псевдо и орграфов. Следует подчеркнуть, что нельзя указать
представление графа, которое было бы наилучшим во всех возможных
случаях. В разных ситуациях оказывается выгодным использовать
различные представления.
Разработчики инструментов для моделирования на UML вправе использовать
любое представление или придумать свое (что обычно и делается). Важным общим
правилом UML является спецификация того, какую именно семантическую
информацию, связанную с тем или иным графическим элементом нотации,
инструмент обязан хранить. Другими словами, у каждой картинки есть оборотная
сторона, где все записано, даже то, что в данном контексте ненужно или нельзя
показывать на картинке. Например, инструмент может поддерживать режим, в
котором часть информации о классе (скажем, список операций) не отображается на
картинке или отображается не полностью. Но при этом полный список со всеми
деталями во внутреннем представлении сохраняется. Более того, внутреннее
представление может быть переведено
в текст в формате XMI (конкретное
приложение XML) без потери информации. Таким образом, в UML определен
результат сериализации модели. Это важное правило, на котором базируется
интероперабельность инструментов.
В первом приближении можно считать, что внутреннее представление содержит
список стандартных свойств (то есть пар имя–значение), определенных для
каждого элемента модели. Понятно, что такое внутреннее представление
может
быть однозначно (без потери информации) переведено во внешнее представление,
в том числе в линейное текстовое представление. Это сделать можно и
инструменты, соответствующие стандарту UML, умеют это делать. Однако такое
текстовое представление не предназначено для чтения и понимания человеком.
Оно неизбежно оказывается необозримо длинным, ненаглядным и плохо
структурированным. Текстовое представление моделей UML
не отвечает
основному назначению языка (см. раздел 1.2.6), а потому не используется людьми,
но используется инструментами, например, для обмена моделями.