Построение рисунка плоского графа и визуализация его
изображения [1-5] являются важными подзадачами, возникающими при решении многих
актуальных прикладных задач. Например, для визуализации различных задач современного
производства [6,7], а также при создании систем автоматизации проектирования плоских
конструктивов, где под плоским конструктивом будем понимать техническое устройство
(конструкцию), в котором непересекающиеся соединения между элементами устройства
и сами элементы расположены в параллельных (эквидистантных) плоскостях. Это могут
быть печатные платы, интегральные микросхемы, БИС, СБИС и т.д. В работе [8] авторами
данной статьи был представлен метод проверки планарности графа с одновременным построением
математических структур для описания топологического рисунка графа с целью его визуализации.
Метод основывается на построении системы изометрических циклов [9,10], понятии
вращения вершин графа [11], а также введении операции определения пересечения рёбер
как пересечения их проекций на координатно-базисную систему, в качестве которой
выступает опорный цикл DFS-дерева графа [8]. Стоит отметить, что на сегодняшний
день существуют эффективные алгоритмы, позволяющие определить, является ли граф
планарным, со сложностью характеризующейся линейной зависимостью от количества вершин
графа [12]. В отличие от алгоритмов с линейной сложностью, метод, описанный в работе
[8], обладает более высокой вычислительной сложностью (O(m2), где m – количество
вершин графа). Хотя этот метод позволяет не только определить, является ли граф
планарным, но и получить топологический рисунок графа, который может затем использоваться
для визуализации графа, высокую вычислительную сложность можно считать его существенным
недостатком. В данной работе мы будем рассматривать модифицированный метод определения
планарности и построения вращения вершин с вычислительной сложностью
соизмеримой с алгоритмом Хопкрофта-Тарьяна [13]. Для этой цели необходимо
исключить из расчета самую длительную процедуру сравнения проекций обратных маршрутов
на координатно-базисную систему, образованную опорным циклом. Такой способ
существует! Он основан на способе переформирования DFS-дерева
и обратных путей, а также на рекурсивном способе построения обручей.
Напомним основные положения и определения, необходимые для
описания наших алгоритмов. Пусть задан произвольный граф G. Последовательно просматривая все вершины графа,
удалим петли, «висячие» вершины и кратные ребра (если таковые будут найдены). Затем
удалим мосты и точки сочленения, тем самым получив несколько компонент связности,
которые можно рассматривать по отдельности. Два ребра, соединённых одной
вершиной, имеющей локальную степень равную двум, можно заменить одним ребром. Естественно,
что преобразование нужно запомнить для последующего восстановления первоначального
вида графа G после проверки.
В дальнейшем будем рассматривать несепарабельные
неориентированные графы G = (X,
U). С этой целью расширим понятие несепарабельного
графа.
Определение 1. Несепарабельным графом G будем называть связный неориентированный граф без петель и
кратных ребер, без мостов и точек сочленения, без вершин с локальной степенью меньшей
или равной двум.
К таким несепарабельным графам для определения планарности
можно применить критерий планарности Маклейна [14] и использовать операцию
кольцевого суммирования суграфов в подпространстве циклов.
Пусть G = (X,U) – несеперабельный граф с пронумерованным
множеством ребер U = {u1, u2,...,um} и X = {x1,x2,...,xn}
вершин, причём card X = n и card U = m. Обычно граф G представляется
матрицей инциденций или матрицей смежностей. Графически граф может быть
представлен диаграммой, в которой вершина изображена точкой или кружком, а
ребро – отрезком линии, соединяющим вершины [15-17].
|
|
|
Рис. 1. Различные диаграммы
графа G
|
В случае планарного графа всегда имеется возможность
проведения соединений (рёбер графа) без пересечений. Такое представление
планарного графа называется плоским изображением графа (см. рис. 1).
Следует отметить, что существуют структуры, которые являются
общими для любого плоского изображения графа. Рассмотрим множество простых
циклов являющихся границами граней плоского изображения. В качестве примера
рассмотрим граф G, представленный на рис. 1. Запишем
множество граничных циклов в виде элементов пространства суграфов:
c1 = {u2,u5,u10}; c2 = {u3,u5,u12}; c3 = {u8,u10,u12}; c4 = {u8,u9,u11};
c5 = {u6,u7,u9}; c6 = {u3,u4,u11}; c7 = {u1,u4,u7}; c8 = {u1,u2,u6}.
Цикломатическое число определяет количество независимых
циклов графа . Кольцевая сумма независимых
циклов определяет обод.
Рис. 2. Задание
направления обхода рёбер в циклах
Если
задать направление обхода рёбер в циклах с соблюдением условия планарности Маклейна
[14], то можно записать циклы как кортежи вершин (см. рис. 2):
c1 = {u2,u5,u10}<x1,x3,x6>; c2 = {u3,u5,u12}<x1,x6,x4>; c3 = {u8,u10,u12}<x4,x6,x3>;
c4 = {u8,u9,u11}<x4,x3,x5>; c5 = {u6,u7,u9}<x3,x2,x5>; c6 = {u3,u4,u11}<x4,x5,x1>;
c7 = {u1,u4,u7}<x1,x5,x2>; c8 = {u1,u2,u6}<x1,x2,x3>.
С
другой стороны, заданное подмножество циклов с направлением обхода рёбер порождает
(индуцирует) определённый циклический порядок расположения смежных вершин для
каждой вершины (см. рис. 3).
Рис. 3. Вращение
вершины х1
Определение
2.
Для данного графа G вращение вершины А графа G – это ориентированный
циклический порядок (или циклическая перестановка) всех рёбер, инцидентных вершине
А.
Вращение
графа можно описывать и представлять следующим образом. Обозначим вершины x1,x2,...,xn. Затем выпишем
циклическую перестановку соседей для каждой вершины xi. Эта перестановка
порождается вращением вершины xi, которое является
циклической перестановкой рёбер, инцидентных вершине xi.
Вращение
вершины xi будем обозначать . Вращение всех вершин описывается диаграммой
вращения вершин . В нашем случае диаграмма
вращения вершин имеет вид:
: x2 x5 x4 x6 x3
: x3 x5 x1
: x1 x6 x4 x5 x2
: x6 x1 x5 x3
: x4 x1 x2 x3
: x1 x4 x3
Пусть
x1 – вершина
инцидентная ребру u1 в графе G с вращением . Тогда можно построить в графе G замкнутый
маршрут:
х1,u1,х2,u2,х3,u3,...,
(1)
где
вершина х2 – второй конец ребра u1, а ребро
u2 следует за ребром u1 во вращении
вершины х2 определяемом вращением .
Затем определяется х3 как вершина инцидентная ребру u2
и не равная х2. После этого в качестве u3
выбирается ребро, следующее за ребром u2 во вращении вершины х3
и т.д. Закончим процесс в точности перед тем моментом когда должна повториться
пара х1, u1. Она должна повториться,
так как граф G конечный, а наш процесс однозначно определён и в обратном
направлении, а именно, если часть хt-1,ut,хt,...
известна, то ребро ut-1 определяется вращением вокруг вершины
хt-1. Мы назовём такой замкнутый маршрут циклом, порождённым
вершиной х1 и ребром u1 и индуцированным
вращением .
Тем
самым вращение вершин индуцирует (порождает)
простые циклы. В свою очередь система независимых циклов и обод индуцируют
вращение вершин .
Введём
следующие понятия, связанные с метрикой графа.
Определение
3 [7]. Изометрический
подграф – подграф G* графа G, у которого все расстояния внутри G* те же самые, что и в G.
Определение
4. Изометрическим
циклом
в графе называется простой цикл, для которого кратчайший путь между любыми
двумя его вершинами состоит из рёбер этого цикла. Изометрический цикл – частный
случай изометрического подграфа.
В
таком цикле между любыми двумя его несмежными вершинами в графе G не существует
маршрутов меньшей длины, чем маршруты, принадлежащие данному циклу.
Теперь
предположим, что планарный граф G вложен в евклидову плоскость, причём
выполняется такое свойство:
Граница
любой внутренней грани – изометрический цикл графа G.
Теперь
можно дать определение топологического рисунка графа.
Определение
5.
Топологическим рисунком планарного графа будем называть одинаково
направленное вращение всех его вершин ,
индуцирующее множество изометрических циклов графа, которое удовлетворяет критерию
планарности Маклейна [14].
Перед
тем как перейти к описанию алгоритма, рассмотрим вопросы необходимых действий
над суграфами.
Любой
суграф может быть записан как множество его рёбер. Что касается ориентированных
циклов, то здесь возможно три вида записи цикла, например (см. рис. 4):
c4 = {u4,u5,u6,u9,u27}→ <x2,x3,x4,x15,x14,x2> → <x2,x3> + <x3,x4> + <x4,x15> + <x15,x14> + <x14,x2>.
Первая
запись {u4,u5,u6,u9,u27} характеризуется
множеством рёбер. Вторая запись характеризует кортеж, состоящий из
последовательности вершин. Третья запись представляет цикл в виде
последовательного сложения ориентированных дуг.
Рис. 4. Граф G1
Известно
также, что любое неориентированное ребро в графе можно представить в виде двух разнонаправленных
ориентированных рёбер [15-17]. Например, ребро u4 можно записать
как u4 = {x2,x3} → <x2,x3> + <x3,x2>. Тогда сложение
двух ориентированных циклов можно представить в виде последовательного сложения
ориентированных рёбер, например (см. рис. 4):
c4 ⊕ c5 = {u4,u5,u6,u9,u27} ⊕ { u8,u9,u10,u13,u28} → < x2,x3,x4,x15,x14,x2> + < x4,x5,x6,x16,x15,x4> → <x2,x3> + <x3,x4> + <x4,x15> + <x15,x14> + <x14,x2> + <x4,x5> + <x5,x6> + <x6,x16> + <x16,x15> + <x15,x4> = <x2,x3,x4,x5,x6,x16,x15,x14,x2>.
В
этой операции разнонаправленные ориентированные рёбра попарно сокращаются.
Другой
важной операцией является включение ребра в цикл. Данная операция позволяет
разбить цикл на две части. Например, в произвольный цикл ci = <x18,x9,x10,x11,x12,x13,x17,x1,x18> нужно
включить ребро {x10,x17}. Для выполнения
этой операции необходимо чтобы концевые вершины вновь введённого ребра (или
совокупности рёбер) принадлежали циклу. Тогда к содержимому цикла можно добавить
ориентированные дуги данного ребра (или совокупности рёбер):
ci
= <x18,x9> + <x9,x10>
+ <x10,x11> + <x11,x12>
+ <x12,x13> + <x13,x17>
+ <x17,x1> + <x1,x18>
+ <x17,x10> + <x10,x17>
При
этом содержимое цикла разбивается на части, где концевые вершины ребра участвуют
в формировании маршрутов:
<x17,x1> + <x1,x18> + <x18,x9> + <x9,x10>;
<x10,x11> + <x11,x12> + <x12,x13> + <x13,x17>.
Затем
с соблюдением последовательности к выделенным частям присоединяются дуги. Таким
образом, образуются два новых обруча:
<x17,x1> + <x1,x18> + <x18,x9> + <x9,x10>+ <x10,x17>;
<x10,x11> + <x11,x12> + <x12,x13> + <x13,x17> + <x17,x10>.
Введя
необходимые обозначения и операции, продолжим рассмотрение вопросов дальнейшего
развития методов и алгоритмов проверки графа на планарность с одновременным
получением топологического рисунка графа.
Рассмотрим следующий пример проверки на планарность графа G1 представленного на рис. 4. Выделим DFS-дерево методом поиска в глубину (см. рис. 5).
Построим фундаментальную матрицу циклов для выбранного
дерева.
Используя фундаментальную матрицу циклов, выберем самый длинный
цикл, образованный ветвями дерева и одной хордой (см. рис. 5). Пусть это будет
цикл <x4,x5,x6,x7,x8,x9,x10,x11,x12,x13,x14,x4>.
Данный цикл будем называть опорным.
Определение 6. Обратным ребром – называется
ориентированный маршрут, состоящий из одной хорды.
Определение 7. Обратным путём – называется
ориентированный маршрут, состоящий из последовательно расположенных ветвей
дерева и одной, и только одной, хорды. Причем, концевые вершины такого
обратного пути не всегда принадлежат опорному циклу.
Очевидно, что обратные ребра являются частным случаем
обратных путей.
Как известно, матрица фундаментальных циклов состоит из двух
подматриц: единичной подматрицы и подматрицы состоящей
только из ветвей дерева.
Рис. 5. DFS-дерево графа G1,
опорный цикл и обратные пути.
Фундаментальная подматрица имеет
вид:
Разбиваем подматрицу на
две части: часть, состоящую из ветвей дерева принадлежащих опорному циклу, и
часть, состоящую из ветвей дерева не принадлежащих опорному циклу (выделены
серым цветом). Строим обратные пути. Для этого объединяем ветви дерева, не включённые
в опорный цикл и соответствующую хорду:
s1 = {u27,u9}
<x14,x15,x4>
<x14,x15>
+ <x15,x4>;
s2 = {u27,u28,u24}
<x14,x15,x16,х12> <x14,x15>
+ <x15,x16> + <x16,x12>;
s3 = {u27,u28,u13}
<x14,x15,x16,х6> <x14,x15>
+ <x15,x16> + <x16,x6>;
s4 = {u26,u21}
<x13,x17,x10>
<x13,x17>
+ <x17,x10>;
s5 = {u26,u2,u1}
<x13,x17,x1,х2> <x13,x17>
+ <x17,x1> + <x1,x3>;
s6 = {u19,u3,u1}
<x9,x18,x1,x2>
<x9,x18>
+ <x18,x1> + <x1,x2>;
s7 = {u19,u29,u7}
<x9,x18,x19,х3> <x9,x18>
+ <x18,x19> + <x19,x3>;
s8 = {u19,u29,u30,u11}
<x9,x18,x19,x20,x5>
<x9,x18>
+ <x18,x19> + <x19,x20>
+ <x20,x5>;
s9 = {u19,u29,u30,u17}
<x9,x18,x19,x20,x8>
<x9,x18>
+ <x18,x19> + <x19,x20>
+ <x20,x8>.
Объединяем обратные пути в блоки. Объединение в блоки
осуществляется по первой вершине:
Блок B1 включает
следующие обратные пути:
{s1 = <x14,x15,x4>, s2
= <x14,x15,x16,х12>, s3
= <x14,x15,x16,х6>}.
Блок B2 включает
следующие обратные пути:
{s4 = <x13,x17,x10>, s5
= <x13,x17,x1,х2>}.
Блок B3 включает
следующие обратные пути:
{s6 = <x9,x18,x1,x2>,
s7 = <x9,x18,x19,х3>, s8 = <x9,x18,x19,x20,x5>,
s9 = <x9,x18,x19,x20,x8>}.
В блоке обратных путей B1
выбираем самый длинный путь, и называем его главным обратным путём для
блока B1. В данном случае это
будет путь s3 = <x14,x15,x16,х6>.
Следующий обратный путь s2 = <x14,x15,x16,х12> имеет
последовательность вершин <x14,x15,x16>
уже включённую в главный обратный путь. Остаётся только блочное обратное ребро,
состоящее из вершин <x16,x12>. Следующий обратный путь s1 = <x14,x15,x4>
имеет последовательность вершин <x14,x15> уже включённую в главный обратный
путь. Остаётся только блочное обратное ребро, состоящее из вершин <x15,x4>.
В блоке обратных путей B2
выбираем самый длинный путь, и называем его главным обратным путём для
блока B2. В данном случае это
будет путь s5 = <x13,x17,x1,х2>. Следующий обратный путь s4 = <x13,x17,x10>
имеет последовательность вершин <x13,x17> уже включённую в главный обратный
путь. Остаётся только блочное обратное ребро, состоящее из вершин <x17,x10>.
В блоке обратных путей B3
выбираем самый длинный путь, и называем его главным обратным путем для
блока B3. В данном случае
выбираем путь s9 = <x9,x18,x19,x20,x8>.
Следующий обратный путь s8 = <x9,x18,x19,x20,x5> имеет последовательность вершин <x9,x18,x19,x20>
уже включённую в главный обратный путь. Остаётся только блочное обратное ребро,
состоящее из вершин <x20,x5>. Следующий обратный путь s7 = <x9,x18,x19,х3>
имеет последовательность вершин <x9,x18,x19>
уже включённую в главный обратный путь. Остаётся только блочное обратное ребро
состоящее из вершин <x19,x3>. Наконец, обратный путь s6 = <x9,x18,x1,x2> имеет последовательность вершин <x9,x18>
уже включённую в главный обратный путь, но вершины х1 и х2
не включены в главный обратный путь. Поэтому формируем частичный обратный путь <x18,x1,x2> из концевой вершины х18
и остатка х1,х2.
Рис. 6. Порождение
обратных путей
Таким образом, можно сказать, что разбиение на блоки
породило систему обратных маршрутов:
Блок B1 {s3 = <x14,x15,x16,х6>
– главный обратный путь;
u24
= <x16,x12>
– блочное обратное ребро;
u9
= <x15,x4>}
– блочное обратное ребро.
Блок B2 {s5 = <x13,x17,x1,х2>
– главный обратный путь;
u21
= <x17,x10>}
– блочное обратное ребро.
Блок B3 {s9 = <x9,x18,x19,x20,x8>
– главный обратный путь;
u11
= <x20,x5>
– блочное обратное ребро;
u7
= <x19,x3>
– блочное обратное ребро;
s6
= <x18,x1,x2>} – частичный обратный путь.
И обратные рёбра: u5 = <x14,x2>; u15 = <x11,x7>.
Произведем расположение обратных маршрутов в следующем порядке:
вначале разместим главные обратные пути, затем частичные обратные пути, затем
блочные обратные рёбра и, наконец, обратные рёбра. Последовательно просматривая
порядок расположения обратных маршрутов, производим их включение в обручи с
дальнейшим разбиением. В нашем случае порядок расположения обратных маршрутов
имеет вид: М = <s9,s3,s5,s6,u11,u7,u24,u9,u21,u5,u13,u15>. Кортеж
M будем называть списком
очередности обратных маршрутов.
Опорный цикл разбивает поверхность R2
на две области: внутреннюю и внешнюю. Границы этих областей могут быть описаны
двумя симметричными циклами (обручами):
c1 = <x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,x13,x14,x2>,
и
c2 = <x2,x14,x13,x12,x11,x10,x9,x8,x7,x6,x5,x4,x3,x2>.
Определение 9. Обруч – это простой цикл,
образованный кольцевой суммой изометрических циклов, каждый из которых имеет,
по крайней мере, одно общее ребро с другим изометрическим циклом.
Заметим, что изометрический цикл можно рассматривать как
частный случай обруча. В свою очередь, обратные ребра и обратные пути разбивают
поверхности на грани, где границами граней служат обручи [8].
Применим операцию включения обратного ребра в обруч графа.
Рассмотрим главный обратный путь s9 = <x9,x18,x19,x20,x8> в порядке расположения обратных
маршрутов. Концевые вершины пути х9 и х8
включаются и в цикл с1 и в цикл с2. Учитывая то, что
первый обратный маршрут может быть включен в любой цикл, выбираем цикл с1.
Включаем обратный маршрут s9 в состав цикла
с1. Производим необходимое преобразование. В результате получим два
новых цикла:
с1: <x2,x3> + <x3,x4> + <x4,x5> + <x5,x6> + <x6,x7> + <x7,x8> + <x8,x9> + <x9,x10> + <x10,x11> + <x11,x12> + <x12,x13> + <x13,x14> + <x14,x2> + <x9,x18> + <x18,x19> + <x19,x20> + <x20,x8> + <x8,x20> + <x20,x19> + <x19,x18> + <x18,x9> = <x2,x3> + <x3,x4> + <x4,x5> + <x5,x6> + <x6,x7> + <x7,x8> + <x8,x20> + <x20,x19> + <x19,x18> + <x18,x9> + <x9,x10> + <x10,x11> + <x11,x12> + <x12,x13> + <x13,x14> + <x14,x2> + <x9,x18> + <x18,x19> + <x19,x20> + <x20,x8> + <x8,x9>;
c1' = <x2,x3,x4,x5,x6,x7,x8,x20,x19,x18,x9,x10,x11,x12,x13,x14,x2>;
c3 = <x9,x18,x19,x20,x8,x9>.
Таким образом, система сформированных обручей имеет вид:
c1' = <x2,x3,x4,x5,x6,x7,x8,x20,x19,x18,x9,x10,x11,x12,x13,x14,x2>;
c3 = <x9,x18,x19,x20,x8,x9>;
c2 = <x2,x14,x13,x12,x11,x10,x9,x8,x7,x6,x5,x4,x3,x2>.
Будем размещать главный обратный цикл s5
= <x13,x17,x1,х2>. Концевые вершины x2,x13 включаются
и в цикл c1' и в цикл с2.
Возникла неопределенность. Тогда пробуем разместить главный обратный путь s3 = <x14,x15,x16,х6>,
обе концевые вершины x14,x6 обратного пути s3
= <x14,x15,x16,х6> включаются и в цикл c1' и в цикл с2.
Снова возникла неопределенность. Пробуем поместить путь s6
= <x18,x1,x2>. Он размещается только в c1 , так как только там имеются совместно две
концевые вершины {x18,x2}. В результате получим два новых цикла:
c1': <x2,x3>
+ <x3,x4>
+ <x4,x5>
+ <x5,x6>
+ <x6,x7>
+ <x7,x8>
+ <x8,x20>
+ <x20,x19>
+ <x19,x18>
+ <x18,x9>
+ <x9,x10>
+ <x10,x11>
+ <x11,x12>
+ <x12,x13>
+ <x13,x14>
+ <x14,x2>
+ <x18,x1>
+ <x1,x2>
+ <x2,x1>
+ <x1,x18>
= <x2,x3>
+ <x3,x4>
+ <x4,x5>
+ <x5,x6>
+ <x6,x7>
+ <x7,x8>
+ <x8,x20>
+ <x20,x19>
+ <x19,x18>
+ <x18,x1>
+ <x1,x2>
+ <x18,x9>
+ <x9,x10>
+ <x10,x11>
+ <x11,x12>
+ <x12,x13>
+ <x13,x14>
+ <x14,x2>
+ <x2,x1>
+ <x1,x18>;
с1'' = <x2,x3,x4,x5,x6,x7,x8,x20,x19,x18,x1,x2>;
c4 = <x18,x9,x10,x11,x12,x13,x14,x2,x1,x18>.
Система обручей имеет вид:
с1'' = <x2,x3,x4,x5,x6,x7,x8,x20,x19,x18,x1,x2>;
c4 = <x18,x9,x10,x11,x12,x13,x14,x2,x1,x18>;
c3 = <x9,x18,x19,x20,x8,x9>;
c2 = <x2,x14,x13,x12,x11,x10,x9,x8,x7,x6,x5,x4,x3,x2>.
Размещаем обратный маршрут s3
= <x14,x15,x16,х6> в с2. В
результате получим два новых цикла:
с2' = <x14,x13x12,x11,x10,x9,x8,x7,x6,x16,x15,x14>;
c5 = <x2,x14,x15,x16,x6,x5,x4,x3,x2>.
Система обручей имеет вид:
с2' = <x14,x13x12,x11,x10,x9,x8,x7,x6,x16,x15,x14>;
c5 = <x2,x14,x15,x16,x6,x5,x4,x3,x2>;
с1'' = <x2,x3,x4,x5,x6,x7,x8,x20,x19,x18,x1,x2>;
c4 = <x18,x9,x10,x11,x12,x13,x14,x2,x1,x18>;
c3 = <x9,x18,x19,x20,x8,x9>.
Поочерёдно вставляем обратные маршруты из списка очерёдности
в образованные обручи до полного исчерпания. Если список очередности исчерпан и
все обратные маршруты уложены в обручах, то граф планарен. В противном
случае, если список очередности не исчерпан, граф непланарен.
Окончательная система изометрических циклов имеет вид:
с2''' = <x12,x11,x7,x6,x16,x12> → {u22,u15,u12,u13,u24};
c12 = <x11,x10,x9,x8,x7,x11>
→ {u20,u18,u16,u14,u15};
с1'''' = <x2,x3,x19,x18,x1,x2> → {u4,u7,u29,u3,u1};
c11 = <x3,x4,x5,x20,x19,x3>
→ {u6,u8,u11,u30,u7};
c10 = <x5,x6,x7,x8,x20,x5>
→ {u10,u12,u14,u17,u11};
с4'' = <x18,x9,x10,x17,x1,x18> → {u19,u18,u21,u2,u3};
c9 = <x10,x11,x12,x13,x17,x10>
→ {u20,u22,u23,u26,u21};
с5' = <x2,x14,x15,x4,x3,x2> → {u5,u27,u9,u6,u4};
c8 = <x15,x16,x6,x5,x4,x15>
→ {u28,u13,u10,u8,u9};
c7 = <x14,x13,x12,x16,x15,x14>
→ {u25,u23,u24,u28,u27};
c6 = <x2,x1,x17,x13,x14,x2>
→ {u1,u2,u26,u25,u5};
c3 = <x9,x18,x19,x20,x8,x9>
→ {u19,u29,u30,u17,u16}.
Так как кольцевая сумма циклов есть пустое множество, то
данная система циклов характеризует топологический рисунок плоского графа [5,14].
Диаграмма вращения вершин представлена на рис. 7 [11], а топологический рисунок
представлен на рис. 8.
x1: x2 x17 x18
x2: x3 x14 x1
x3: x19 x4 x2
x4: x5 x15 x3
x5: x20 x6 x4
x6: x7 x16 x5
x7: x8 x11 x6
x8: x9 x7 x20
x9: x10 x8 x18
x10: x9 x17 x11
x11: x10 x12 x7
x12: x11 x13 x16
x13: x12 x17 x14
x14: x15 x13 x2
x15: x16 x14 x4
x16: x6 x12 x15
x17: x13 x10 x1
x18: x9 x19 x1
x19: x18 x20 x3
x20: x8 x5 x19
|
|
Рис. 7. Диаграмма
вращения
вершин
|
Рис. 8.
Топологический рисунок графа
|
|
|
Рис. 9. Граф G2
|
Рис. 10. DFS-дерево графа G2
|
В предыдущем примере рассматривается случай удачного выбора
опорного цикла. В этом случае все концевые вершины обратных маршрутов и
обратных рёбер принадлежат опорному циклу. Рассмотрим случай, когда концевые
вершины обратных маршрутов не принадлежат опорному циклу или обратные маршруты
представляют собой замкнутые маршруты.
Рассмотрим следующий граф, представленный на рис. 9. Выделим
DFS-дерево (см. рис. 10). Выберем
самый длинный цикл <x1,x2,x9,x3,x8,x10,x1> и назовем его опорным циклом. Будем
рассматривать только подматрицу . Выделенный
опорный цикл разбивает подматрицу на две
части. Ветви дерева, вошедшие в опорный цикл, образуют подмножество R1. Ветви дерева, не вошедшие в опорный цикл –
подмножество R2 (серый цвет). Так как
построение дерева определяет ориентированный граф, то в качестве элементов подматрицы
будут выступать и ориентированные рёбра.
Будем строить обратные пути. С этой целью выпишем все
фундаментальные циклы в виде множества ребер:
с1 = {u2,u1,u7,u10,u9};
с2 = {u3,u1,u7};
с3 = {u4,u1,u7,u10,u9,u21}; с4 = {u5,u7,u10};
с5 = {u6,u7,u10,u9,u14}; с6
= {u8,u9,u14}; с7 = {u11,u13,u17,u15}; с8 = {u12,u13,u17};
с9 = {u16,u17,u15}; с10
= {u18,u14,u13}; с11 = {u19,u21,u14,u13}; с12 = {u20,u10,u9}.
Курсивом выделены хорды, жирным шрифтом выделены рёбра дерева,
вошедшие в опорный цикл, простым шрифтом – рёбра дерева, не вошедшие в опорный
цикл. Исключим из описания циклов ребра, вошедшие в опорный цикл. Получим следующие
части циклов:
s1 = {u2}; s2 = {u3}; с3 – опорный цикл; s4 = {u5};
s5 = {u6,u14};
s6 = {u8,u14}; s7 = {u11,u13,u17,u15};
s8 = {u12,u13,u17};
s9 = {u16,u17,u15};
s10 = {u18,u14,u13}; s11
= {u19,u14,u13}; s12 = {u20}.
Запишем полученные части циклов как обратные рёбра в виде
ориентированных маршрутов:
s1 = {u2} <x8,x1>; s2
= {u3} <x9,x1>;
s4 = {u5} <x3,x2>;
s5 = {u6,u14} <x4,x2> + <x8,x4>
= <x8,x4,x2>;
s6 = {u8,u14} <x4,x3> + <x8,x4>
= <x8,x4,x3>;
s7 = {u11,u13,u17,u15} <x5,x4> + <x4,x7>
+ <x7,x6> + <x6,x5> =
<x5,x4,x7,x6,x5>;
s8 = {u12,u13,u17} <x6,x4> + <x4,x7>
+ <x7,x6> = <x6,x4,x7,x6>;
s9 = {u16,u17,u15} <x5,x7> + <x7,x6>
+ <x6,x5>= <x5,x7,x6,x5>;
s10 = {u18,u14,u13} <x7,x8> + <x8,x4>
+ <x4,x7>= <x7,x8,x4,x7>;
s11 = {u19,u14,u13} <x8,x4> + <x4,x7>
+ <x7,x10> += <x8,x4,x7,x10>;
s12 = {u20} <x8,x9>.
Рис. 11. Построение
обратных путей для выбранного опорного цикла
Так как при построении топологического рисунка существование
обратных путей в виде замкнутых маршрутов невозможно по определению, будем
проводить дальнейшие преобразования, увеличивая длину опорного цикла.
Рис. 12. Новое DFS-дерево графа G2 и
новый опорный цикл
Для преобразования ищем единственный элемент в строке подматрицы
R1. Такая подстрока имеется – это хорда u19. Выбираем обратный маршрут s11,
так как в нем количество ветвей дерева, не вошедших в опорный цикл больше, чем в
других случаях. Производим преобразования в подматрице .
Объявляем хорду u19 ребром дерева, принадлежащим
опорному циклу, и включаем в подматрицу ,
а ребро дерева u21 объявляем хордой и исключаем
из подматрицы . Ветви дерева u13
и u14 включаем в опорный цикл. Тем самым
преобразуем DFS-дерево графа G2
(см. рис. 12).
Для нового дерева построим подматрицу :
Рис. 13. Новое DFS-дерево и новый опорный цикл
Продолжим увеличивать длину опорного цикла. Для
преобразования выбираем обратный маршрут характеризующийся строкой матрицы c хордой u11,
так как в ней имеется единственный элемент в подматрице R1
и количество ветвей дерева не вошедших в опорный цикл больше, чем в других
случаях. Производим преобразования в подматрице .
Объявляем хорду u11 ребром дерева, принадлежащим
опорному циклу, и включаем в подматрицу ,
а ребро дерева u13 объявляем хордой и
исключаем из подматрицы . Ветви дерева u15 и u17 включаем
в опорный цикл, изменяя ориентацию. Тем самым преобразуем DFS-дерево
графа G2 (см. рис. 13).
Окончательно подматрица принимает
вид:
В результате получаем множество, состоящее только из обратных
рёбер.
Формируем множество обратных рёбер:
{u2} <x8,x1>; {u3}
<x9,x1>; {u5}
<x3,x2>;
{u6} <x4,x2> ; {u8} <x4,x3> ;
{u13} <x7,x4>; {u12} <x6,x4>;
{u16} <x7,x5>; {u18} <x7,x8>;
{u20} <x8,x9>; {u21}
<x10,x8>.
Будем формировать изометрические циклы графа, встраивая
обратные рёбра в обручи (циклы).
c1 = <x1,x2,x9,x3,x4,x5,x6,x7,x8,x10,x1>;
c2 = <x1,x10,x8,x7,x6,x5,x4,x3,x9,x2,x1>
Вставим в цикл с1 обратное ребро {u2} <x8,x1>.
c1: <x1,x2> + <x2,x9> + <x9,x3> + <x3,x4> + <x4,x5> + <x5,x6> + <x6,x7> + <x7,x8> +
+ <x8,x10> + <x10,x1> + <x8,x1> + <x1,x8> = (<x1,x2> + <x2,x9> + <x9,x3> + <x3,x4> + <x4,x5> + <x5,x6> + <x6,x7> + <x7,x8> + <x8,x1> ) +
+ (<x8,x10> + <x10,x1> + <x1,x8>).
Образуются два новых обруча:
c1' = <x1,x2,x9,x3,x4,x5,x6,x7,x8,x1>;
c3 = <x8,x10,x1,x8>.
Система обручей имеет вид:
c1' = <x1,x2,x9,x3,x4,x5,x6,x7,x8,x1>;
c2 = <x1,x10,x8,x7,x6,x5,x4,x3,x9,x2,x1>;
c3 = <x8,x10,x1,x8>.
Продолжаем процесс введения обратных рёбер до полного их
исчерпания. Окончательно система обручей имеет вид:
с1''''' = <x6,x7,x8,x4,x6>;
с2'''' = <x4,x2,x1,x10,x7,x4>;
c3 = <x8,x10,x1,x8>;
c4 = <x8,x7,x10,x8>;
c5' = <x1,x2,x9,x1>;
c6 = <x3,x9,x2,x3>;
c7 = <x9,x8,x1,x9>;
c8 = <x4,x3,x2,x4>;
c9 = <x9,x3,x8,x9>;
c10 = <x8,x3,x4,x8>;
с11' = <x7,x6,x5,x7>;
c12 = <x4,x5,x6,x4>;
c13 = <x5,x4,x7,x5>.
В результате получен плоский топологический рисунок графа G2 состоящий из изометрических циклов (см. рис. 14).
Рис. 14.
Топологический рисунок графа G2.
Обоснование алгоритма основано на следствии теоремы Маклейна
вытекающей из построения топологического рисунка графа.
Следствие 1. В плоском топологическом рисунке несепарабельного
графа по ребрам маршрута, соединяющего две вершины, принадлежащие простому
циклу, проходят два простых цикла, образованные кольцевой суммой циклов,
принадлежащих инцидентным ребрам внутренних вершин.
Доказательство. Проведение такого маршрута разбивает
выделенный цикл на две части. Тогда, исходя из теоремы Маклейна и как следствие
построения топологического рисунка кольцевая сумма циклов, проходящих по
инцидентным ребрам внутренних вершин, для каждой части разбиения, формирует два
простых цикла проходящих по ребрам маршрута. В случае отсутствия внутренних
вершин, происходит кольцевое суммирование частей выделенного цикла и ребер
маршрута.
Рис. 15. Топологический
рисунок плоского графа.
Например, для топологического рисунка графа, представленного
на рис.15, вращение вершин описывается диаграммой:
x1: u3 u2
u4 u1
x2: u6 u5
u5
x3: u8 u2
u7
x4: u13 u7
u9
x5: u12 u11
u5
x6: u11 u13
u9 u3
x7: u15 u14
u8 u10 u13 u12
x8: u4 u14
u17 u16
x9: u19 u6
u16 u18
x10: u20 u18
u17
x11: u15 u19
u20
Множество изометрических циклов и обод:
с1 = {u1,u3,u5,u11}; с2 = {u1,u4,u6,u16}; с3 = {u2,u3,u7,u9};
с4 = {u2,u4,u8,u14}; с5 = {u5,u6,u12,u15,u19}; с6
= {u7,u8,u10};
с7 = {u9,u10,u13}; с8
= {u11,u12,u13};
с9 = {u16,u17,u18}; с10
= {u18,u19,u20}; с0 = {u14,u15,u17,u20}.
Выделим цикл {u14,u15,u17,u20}. Проведем разрезающий маршрут <u3,u4,u13> вершины которого х7 и х8
принадлежат циклу. Тогда подмножество вершин {x2,x5,x9}
характеризует внутренность левой части, а подмножество вершин {x3,x4}
характеризует внутренность правой части. В свою очередь инцидентные ребра левой
части графа образуют подмножество {u1,u5,u6,u11,u12,u16,u18,u19}, а инцидентные ребра для правой части образуют
подмножество {u2,u7,u8,u9,u10}. Соответственно подмножество циклов {c1,c2,c5,c8,c9,c10} характеризует
левую часть, а подмножество {c3,c4,c6,c7} характеризует правую часть. Тогда можно сформировать
два цикла проходящих по ребрам маршрут и части выделенного цикла:
с1 с2 с5 с8
с9 с11
= {u1,u3,u5,u11} {u1,u4,u6,u16} {u5,u6,u12,u15,u19} {u11,u12,u13} {u16,u17,u18} {u18,u19,u20} = {u3,u4,u15,u13,u17,u20};
с3 с4 с6 с7
= {u2,u3,u7,u9} {u2,u4,u8,u14} {u7,u8,u10} {u9,u10,u13} = {u3,u4,u13,u14}.
Следствие создает основу для создания рекурсивного процесса
построения топологического рисунка графа. С этой целью выделяется простой цикл
и проводится маршрут между его вершинами, разрезающий выделенный цикл на два
цикла меньшей длины принадлежащими данному маршруту. Процесс определяется и
управляется выделенным деревом графа и продолжается рекурсивно до появления
изометрических циклов. В свою очередь выделенные циклы индуцируют (порождают)
вращение его вершин и определяют плоский топологический рисунок графа.
Опишем алгоритм удлинения опорного цикла.
шаг 1. [Выбор максимального по длине цикла]. Строим
матрицу фундаментальных циклов графа. Выбираем максимальный по длине цикл.
шаг 2. [Построение обратных маршрутов]. Формируем
обратные маршруты графа. Для этого объединяем ветви дерева, не включенные в
опорный цикл и соответствующую хорду.
шаг 3. [Проверка обратных маршрутов на замкнутость].
Проверяем обратные пути на замкнутость и соответствие концевых вершин опорному
циклу. Если таких обратных путей нет, конец работы алгоритма.
шаг 4. [Построение нового опорного цикла]. Находим
обратный маршрут, у которого количество ветвей дерева не вошедших в опорный
цикл превышает количество вошедших. Одну из ветвей дерева входящих в опорный
цикл объявляем хордой, а хорду данного обратного маршрута объявляем ветвью
дерева, входящей в опорный цикл. Включаем ветви дерева данного обратного
маршрута, не входящие в опорный цикл во множество ветвей дерева, входящих в
опорный цикл с возможной их переориентацией. В случае необходимости
переориентируем обратные ветви, иначе – окончательный опорный цикл выбран; конец
работы алгоритма.
шаг 5. [Построение новой матрицы фундаментальных
циклов]. Строим новое DFS-дерево и новую матрицу
фундаментальных циклов графа и идем на шаг 4.
Конец алгоритма.
В общем случае, количество операций для выделения дерева
графа поиском в глубину определяется величиной равной рангу графа и не может быть больше количества ребер в
графе [18]. Поэтому вычислительная сложность данного алгоритма может быть
описана как f1(m) = O(m).
Маршрут, начало и конец которого принадлежат различным
вершинам, будем называть нитью. Тогда проведение маршрута (нити)
разбивает цикл, в составе которого находятся вершины характеризующие начало и
конец маршрута, на два цикла меньшей длины, при этом удовлетворяется критерий
планарности Маклейна. Невозможность проведения нити означает, что вершины
характеризующие начало и конец маршрута принадлежат не одному циклу, а разным.
Данный процесс и является обоснованием применения метода нитей для проверки
графа на планарность.
Опишем алгоритм проверки графа на планарность методом нитей.
шаг 1. [Построение DFS-дерева].
Методом поиска в глубину строим DFS-дерево графа.
шаг 2. [Выбор опорного цикла]. Строим матрицу
фундаментальных циклов графа и выбираем опорный цикл.
шаг 3. [Формирование обратных путей]. Формируем
обратные пути графа относительно выбранного опорного цикла. Для этого объединяем
не включённые в опорный цикл ветви дерева и соответствующую хорду. Если
концевые вершины сформированных обратных путей не принадлежат опорному циклу и
имеются обратные пути в виде замкнутых маршрутов, то производим удлинение опорного
цикла и идём на шаг 2.
шаг 4. [Построение блоков обратных путей]. Обратные
пути, имеющие одинаковые вершины в качестве истока, объединяем в блоки.
Ранжируем обратные маршруты в блоках.
шаг 5. [Включение обратных маршрутов в обручи графа].
Последовательно подключаем обратные маршруты в обручи графа согласно рангу. При
подключении образуем новые обручи графа.
шаг 6. [Построение системы изометрических циклов и
топологического рисунка плоского графа]. В результате построения, если
подключены все обратные пути и обратные рёбра, получаем систему изометрических
циклов графа. Строим диаграмму вращения вершин. Если имеются неподключенные
обратные маршруты, то граф непланарен.
Конец алгоритма.
В свою очередь, количество последовательно подключаемых
обратных маршрутов (нитей) не может быть больше, чем количество рёбер графа.
Поэтому вычислительную сложность алгоритма включения обратных маршрутов можно
определить как f2(m)
= O(m).
Последовательное применение алгоритмов можно оценить как аддитивную
сумму их вычислительных сложностей f1(m) + f2(m)
= O(m).
Исходной информацией для проведения расчетов служит
связанный список вершин графа (аналог матрицы смежностей графа без учета
нулевых элементов) и количество ребер m.
Процесс построения такого списка состоит из перечисления
всех ребер графа представленных в виде uk = (xi,xj) (xj,xi), k{1,…,m} с записью текущего номера ребра в ячейку
соответствующую записи вершин (xi,xj) для прямого ребра, и в ячейку соответствующую записи
вершин (xj,xi) для обратного
ребра. Вычислительная сложность процесса может быть представлена как функция f1 = m. В
крайнем случае, m = n(n-1)/2 и тогда вычислительная сложность данного процесса
определяется как O(n2).
Трудоемкость процесса выделения DFS-дерева
можно определить как перечисление всех веощин x X для неоткрытых вершин, и первое, что она делает – это
помечает переданную в качестве параметра вершину. Но для каждой вершины осуществляется
просмотр и проверка на смежность всех остальных вершин. Вычислительная сложность
процесса может быть представлена как функция f2
= nn
= n2. Итого O(n2),
где n - количество вершин в графе. Параллельно определяются хорды и
ветви дерева.
Процесс построения фундаментальной подматрицы циклов относительно множества хорд Н = {h1,h2,…,hm-n+1} осуществляется процедурой поиска в ширину для
каждой хорды (число которых равно цикломатическому числу графа) на ациклическом
подграфе, состоящем только из ветвей дерева, и определением пути между двумя
вершинами. Вычислительная сложность процесса может быть представлена функцией f3 = (m-n+1)n = mn - n2 + n. В наихудшем случае, m =
n(n-1)/2, тогда f3 = (n3
–3n2)/2 + n.
Итого O(n3).
Задача выделения опорного цикла состоит из операции
определения количества ребер в каждом цикле и выборе максимального по длине
цикла. Длина максимально возможного цикла может быть определена как ранг графа
(n-1). Вычислительная сложность процесса может быть
представлена функцией f4 = (m – n + 1)(n –
1) = m(n – 1) – n2 + 2n – 1. В
крайнем случае, m = n(n-1)/2, тогда f4
= (n3 –4n2+5n–2)/2. Итого O(n3).
Процесс разделения элементов подматрицы на ветви дерева, принадлежащие и не
принадлежащие опорному циклу, касается всех элементов подматрицы циклов, число
которых может быть определено как (m-n+1)(n-1). Параллельно с
этим определяется количество ветвей дерева принадлежащих и не принадлежащих
опорному циклу, проходящему по данной хорде. Тогда вычислительную сложность
процесса можно представить функцией f5
= (m-n+1)(n-1) = m(n – 1)-n2+2n-1 =(n3-4n2+5n-2)/2. Итого O(n3).
Увеличение длины опорного цикла приводит к преобразованию
всех элементов подматрицы циклов и добавлению к
ней элементов. Общее число преобразуемых элементов может быть определено как (m-n+1)(n-1). Но так как операция увеличения длины опорного цикла
производится для всех циклов, число которых равно количеству хорд графа, то
выражение (m-n+1)(n-1) нужно умножить на величину (m-n+1). Тогда вычислительную сложность процесса можно
представить функцией f6 = (m-n+1)(m-n+1)(n-1) = (n5-7n4+19n3-25n2+16n-4)/4.
Итого O(n5).
Формирование обратных ветвей и блоков обратных ветвей может
быть произведено для множества хорд графа, количество которых равно числу m-n+1. Параллельно определяем общие
вершины для обратных маршрутов, входящих в блок. Тогда вычислительную сложность
процесса можно представить функцией f7
= (m-n+1) = (n2-3n+2)/2.
Итого O(n2).
Вычислительный процесс формирования множества изометрических
циклов начинается с записи опорного цикла в виде последовательности
ориентированных ребер для соответствующей хорды с последовательным порядком
подключения входящих ветвей дерева. В результате формируется запись цикла в
векторном виде. Для формирования другого цикла производится запись векторов
цикла в обратном порядке. Очевидно, что функцию вычислительной сложности можно
записать как f8=2(n-1).
Итого O(n).
Дальнейшее формирование изометрических циклов производится
путем выбора единственного из вновь образованных циклов, содержащего концевые
вершины обратного маршрута. Количество вновь образованных циклов не может превышать
цикломатическое число графа и в наихудшем случае равно ему. Далее выбранный
цикл разбивается на две части относительно концевых вершин с подключением
соответствующих ориентированных обратных маршрутов. Число просматриваемых при
этом ориентированных ребер можно определить, как 2(n-1).
Параллельно определяется количество обратных маршрутов, еще не участвовавших в
процессе формирования изометрических циклов. В конце расчета, если количество
оставшихся обратных маршрутов не равно нулю, делается вывод о том, что исходный
граф не планарный. Учитывая, что количество изометрических циклов равно
цикломатическому числу графа, то вычислительную сложность процесса можно
представить функцией f9 = (m-n+1)(m-n+1)(n-1) = (n5-7n4+19n3-25n2+16n-4)/4.
Итого O(n5).
Вычислительный процесс построения диаграммы вращения вершин,
характеризующей топологический рисунок графа, заключается в последовательном
просмотре всех ориентированных ребер в изометрическом цикле или ободе и записью
для каждой вершины смежной вершины соответствующего ориентированного ребра.
Вычислительную сложность алгоритма можно представить функцией f10 = (m-n+2)(n-1)=(n3-4n2+7n-4)/2. Итого O(n3).
Общую вычислительную сложность алгоритма можно представить
аддитивным сложением всех вычислительных сложностей процедур f = . Данная функция позволяет
оценить общую вычислительную сложность алгоритма как O(n5).
В данной работе рассматривается модифицированный алгоритм
проверки графа на планарность с одновременным построением математических
структур для описания топологического рисунка плоского графа. Основой расчета
является выделение DFS-дерева графа. Затем производится
выделение опорного цикла, который производит разбиение поверхности R2 на внутреннюю и внешнюю области. Выделенное
дерево позволяет построить фундаментальную матрицу циклов. В свою очередь,
выделение опорного цикла разбивает подматрицу фундаментальной
матрицы циклов на две подматрицы: с ветвями дерева входящими, и с ветвями
дерева не входящими в опорный цикл. Подматрица, состоящая только из ветвей
дерева не вошедших в опорный цикл, позволяет формировать обратные маршруты. В
случае существования обратных замкнутых маршрутов и обратных маршрутов с
концевыми вершинами, не принадлежащими опорному циклу, алгоритмом удлинения
опорного цикла строится новый опорный цикл, что порождает новое построение DFS-дерева графа и новую фундаментальную матрицу циклов. В
случае отсутствия обратных замкнутых маршрутов и обратных маршрутов с концевыми
вершинами, не принадлежащими опорному циклу, производится объединение обратных
маршрутов в блоки и их ранжирование. Обратные маршруты последовательно
просматриваются согласно их рангу, и в случае, если их концевые вершины
принадлежат единственному обручу, производится размещение данного обратного
маршрута с разбиением данного обруча на два обруча меньшей длины. Процесс
продолжается рекурсивно до полного исчерпания списка обратных маршрутов. В этом
случае граф планарен. Если список обратных маршрутов не исчерпан, то граф не
планарен. Вычислительная сложность алгоритма оценивается как O(n5). Полученная система изометрических циклов
графа индуцирует вращение вершин для описания топологического рисунка плоского
графа. Топологический рисунок плоской части графа позволяет описывать процесс планаризации
алгебраическими методами, не производя никаких геометрических построений на плоскости.
Получение вращения вершин графа сразу решает две важнейшие задачи теории графов:
задачу проверки графа на планарность и задачу построения топологического рисунка
плоского графа.
В работах [5-7] нами показано, что задачу построения рисунка
непланарного графа можно свести к задаче построения рисунка плоского графа с
учетом введения дополнительных вершин характеризующих пересечение рёбер.
Естественно, что применение этого подхода требует решения таких задач теории
графов как проверка планарности графа, выделение максимально плоского суграфа,
определение толщины графа, получение графа с минимальным количеством
пересечений и т.д. Таким образом, на первый план по важности решения
выдвигается задача визуализации плоского рисунка графа. Эта задача решается в
два этапа: задаётся топологический рисунок плоского графа и производится геометрическое
расположение вершин и рёбер, так чтобы не нарушить структуру топологического
рисунка графа.
- З. В. Апанович. От рисования графов к визуализации
информации. Новосибирск, РАН, 2007. – 24 c.;
- G. Di Battista. Algorithms for Drawing Graphs: an
Annotated Bibliography / G. Di Battista, P. Eades, R. Tamassia, I.G.
Tollis // Comp. Geom., Theory and Appl. – 1994. – N 4. – P. 235–282.
- R. Tamassia. Handbook of Graph Drawing and Visualization.
C&H/CRC – 2013. – 844 p.
- В. Н. Касьянов, В. А. Евстигнеев. Графы в
программировании: обработка, визуализация и применение. СПб.:
БХВ-Петербург, 2003. – 1104 c.;
- С. В. Курапов, А. В. Толок. Методы построения топологического
рисунка графа // Автоматика и телемеханика. 2013. №9. C.78–97; англ. пер.: S. V.
Kurapov, A. V. Tolok. The topological drawing of a graph: Construction
methods // Autom. Remote Control. 2013. Vol. 74, Issue 9. – P. 1494–1509.
- С. В. Курапов, М. В. Давидовский. Два подхода к проведению
соединений в плоских конструктивах. Компоненты и технологии. 2015. № 7. С.
142–147;
- С. В. Курапов, М. В. Давидовский. Топологический подход к проведению
соединений в плоских конструктивах. Компоненты и технологии. 2015. № 11. С.
127–130;
- С. В. Курапов, М. В. Давидовский. Проверка планарности и
построение топологического рисунка плоского графа (поиском в глубину) //
ПДМ. 2016. №2(32). С.100–115.
- T. Kavitha, C. Liebchen, K. Mehlhorn, D. Michail, et al.
Cycle bases in graphs – characterization, algorithms, complexity, and
applications // Comput. Sci. Rev. 2009. No.3. P.199–243.
- М. Деза. Изометрические полиэдральные подграфы в гиперкубах
и кубических решетках. / М. Деза, В. Гришухин, А.И. Штогрин – М.: МЦНМО,
2007. – 192 с.;
- Г. Рингель. Теорема о раскраске карт. / Г. Рингель – М.:
Мир. – 1977. – 126 с.;
- M. Patrignani. Planarity testing and embedding. Chapter 1.
Handbook of Graph Drawing and Visualization. Roberto Tamassia, Editor. CRC
Press. June 24, 2013. – P.1–42.
- Дж.Е., Хопкрофт, Р.Е. Тарьян. Изоморфизм планарных графов
/ Дж.Е. Хопкрофт, Р.Е. Тарьян // В кн.: Кибернетический сборник. Новая
серия. Вып. 12. – 1975. – С.39–61;
- С. Мак-Лейн. Комбинаторное условие для плоских графов / С.
Мак-Лейн // В кн.: Кибернетический сборник. Новая серия. – 1970. Вып. 7. –
С.133–144.;
- А.А. Зыков. Теория конечных графов. Новосибирск: ГРФМЛ. –
1963. – 542 с.;
- М. Свами. Графы, сети и алгоритмы. М.: Мир. – 1984. – 455
с.;
- Ф. Харари. Теория графов. – Пер. с англ. Козырева В.П. /
под ред. Гаврилова В.Г. / Ф. Харари – М.: Мир. – 1973. – 300 с.;
- E. Korach, Z. Ostfeld. DFS tree construction: Algorithms
and characterizations // In: van Leeuwen J. (eds) Graph-Theoretic Concepts
in Computer Science. WG 1988. Lecture Notes in Computer Science. – Vol
344. – Springer, Berlin, Heidelberg. – 1989.
A modified algorithm for planarity testing and constructing the topological drawing of a graph. The thread method.
Authors: S.V. Kurapov1,A, M.V. Davidovsky2,B, A.V. Tolok3,C
A Zaporizhzhia National Universite, Ukraine
B Zaporozhye Institute of Postgraduate Pedagogical Education, Ukraine
C Moscow State Technological University «STANKIN», Russia
1 ORCID: 0000-0003-4563-7227, lilili5050@rambler.ru
2 ORCID: 0000-0002-9472-3351, m.davidovsky@gmail.com
3 ORCID: 0000-0002-7257-9029, a.tolok@stankin.ru
Abstract
In this article we present a modified algorithm for graph planarity testing with simultaneous con-struction of a mathematical framework for representing the topological drawing of a plane graph. This mathematical framework is based on the notions of graph isometric cycles and rotation of graph vertices. Obtaining the rotation of graph vertices solve two major problems: the problem of graph planarity testing and the problem of constructing the topological drawing of a planar graph. The system of graph isometric cycles, which is obtained as a result of the algorithm execution, induces the rotation of graph vertices for representing the topological drawing of the graph. The topological drawing is used subsequently for visualization of the plane graph. The topological drawing of the flat part of a graph allows describing the process of planarization by algebraic methods without making any geometric constructions on the plane. The proposed algorithm is based on the reconstruction of the reference cycle and construction of reverse path blocks. The basis for calculation is the selection of the DFS-tree of the graph by the depth-first-search meth-od. Visualization of planar graphs is one of the most important sub-tasks in addressing a number of topical applications, such as the design of complex products and systems, flat constructions, social network analysis and many others. The computational complexity of the algorithm is esti-mated as O(m) = f1(m) + f2(m), where m – is the number of graph edges.
Keywords: graph, planarity testing, graph visualization, topological graph drawing, vertices rotation diagram, isometric cycles, reference cycle.
- Z.V. Apanovich. Ot risovaniya grafov k vizualizatsii
informatsii [From Graph Drawing to Information Visualization],
Novosibirsk: Nauka, 2007. – 24 s. [In Russian]
- G. Di Battista. Algorithms for Drawing Graphs: an
Annotated Bibliography / G. Di Battista, P. Eades, R. Tamassia, I.G.
Tollis // Comp. Geom., Theory and Appl. – 1994. – N 4. – P. 235–282.
- R. Tamassia. Handbook of Graph Drawing and Visualization.
C&H/CRC – 2013. – 844 p.
- V. N. Kas'yanov, V. A. Evstigneev. Grafy v
programmirovanii: obrabotka, vizualizaciya i primenenie. SPb.:
BHV-Peterburg, 2003. – 1104 s. [In Russian]
- S. V. Kurapov, A. V. Tolok. The topological drawing of a
graph: Construction methods // Autom. Remote Control. 2013. Vol. 74, Issue
9. – P. 1494–1509. [In Russian]
- S. V. Kurapov, M. V. Davidovskii. Dva podhoda k
provedeniyu soedinenij v ploskih konstruktivah. Komponenty i tekhnologii.
2015. № 7. S. 142–147; [In Russian]
- S. V. Kurapov, M. V. Davidovskii. Topologicheskij podhod k
provedeniyu soedinenij v ploskih konstruktivah. Komponenty i tekhnologii.
2015. № 11. S. 127–130; [In Russian]
- S. V. Kurapov, M. V. Davidovskii. Proverka planarnosti i
postroenie topologicheskogo risunka ploskogo grafa (poiskom v glubinu) //
PDM. 2016. №2(32). S.100–115. [In Russian]
- T. Kavitha, C. Liebchen, K. Mehlhorn, D. Michail, et al.
Cycle bases in graphs – characterization, algorithms, complexity, and
applications // Comput. Sci. Rev. 2009. No.3. P.199–243.
- M. Deza, V. Grishukhin, M. Shtogrin. Scale-Isometric Polytopal Graphs in Hypercubes and Cubic Lattices. Imperial College Press,
2004. – 175 p.
- G. Ringel. Map Color Theorem. Repr. of the orig. 1st ed.
(1974), Springer, 2011. – 212 p.
- M. Patrignani. Planarity testing and embedding. Chapter 1.
Handbook of Graph Drawing and Visualization. Roberto Tamassia, Editor. CRC
Press. June 24, 2013. – P.1–42.
- J. E. Hopcroft, R. E. Tarjan. Isomorphism of Planar Graphs
// Complexity of Computer Computations / The IBM Research Symposia Series.
– 1972. – P.131–152.
- S. MacLane. A combinatorial condition for planar graphs //
Fund. Math., 28. – 1937. – P. 22–32.
- A.A Zykov. Teoriya konechnykh grafov [Theory of Finite
Graphs]. Novosibirsk: Nauka, 1963. [In Russian]
- M. N. S. Swamy, K. Thulasiraman. Graphs, networks, and
algorithms. – J. Wiley & Sons, 1981.
- Harary, F. Graph Theory, Reading: Addison-Wesley. – 1969.
- E. Korach, Z. Ostfeld. DFS tree construction: Algorithms
and characterizations // In: van Leeuwen J. (eds) Graph-Theoretic Concepts
in Computer Science. WG 1988. Lecture Notes in Computer Science. – Vol
344. – Springer, Berlin, Heidelberg. – 1989.