Гамма-алгоритм

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

Гамма-алгоритм — это алгоритм плоской укладки графа и попутной проверки его на планарность.

Определения[править | править код]

  • Сегмент графа Г относительно подграфа H — компонента связности графа G\H.
  • Допустимая грань сегмента — грань графа H, содержащая все контактные вершины.
  • Контактная вершина сегмента S графа Г подграфа H — любая вершина в S и в H.
  • Гамма-цепь сегмента — любая цепь без повторов вершин, содержащих ровно две контактные вершины — начало и конец.

Алгоритм[править | править код]

Уложить на плоскость любой цикл H графа G без повторов вершин.[править | править код]

  1. Построить все сегменты S1,..,Sk графа G по H.
  2. Если есть сегмент Si c одной допустимой гранью — выбрать его.
  3. Если все сегменты имеют несколько дополнительных граней — выбрать любой.
  4. Выбрать произвольную гамма-цепь сегмента и уложить её в допустимую грань.
  5. Перейти к шагу (2), добавив гамма-цепь к графу H.

Свойства графов для корректной работы алгоритма[править | править код]

  1. Граф должен являться связным.
  2. Граф должен иметь хотя бы один цикл.
  3. Граф не должен иметь мостов, то есть ребер, после удаления которых, граф распадается на две компоненты связности.

Если нарушено свойство (1), то граф нужно укладывать отдельно по компонентам связности. Если нарушено свойство (2), то граф — дерево и нарисовать его плоскую укладку тривиально.

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

Теорема[править | править код]

Граф Г планарен тогда и только тогда, когда гамма-алгоритм разместит его на плоскости.

Доказательство[править | править код]

В обратную сторону доказательство очевидно.

Докажем в прямую сторону. Если граф Г планарен, то уложенный на плоскость подграф H может быть достроен до укладки графа Г. В частности, для последнего шага это означает, что граф Г полностью уложен на плоскость.

Пусть граф Г планарен. Тогда любой цикл графа Г при укладке изображается как многоугольник. Этот многоугольник входит в укладку графа Г на плоскости.

Пусть утверждение верно вплоть до n-ой итерации алгоритма.

Варианты:

  1. S укладывается в единственную грань графа H, граф H достраивается до укладки графа Г, и в этой укладке сегмент S лежит в единственной грани. Следовательно, укладка в этой грани любой гама-цепи C сегмента S приводит к графу H в объединение с C, достраиваемому до укладки Г.
  2. Каждый сегмент имеет несколько допустимых граней.

Пусть S — сегмент с допустимыми гранями F1 и F2. Подграф H достраивается до укладки графа Г по предположению индукции. При этом, сегмент S укладывается в одну из допустимых граней. Без ограничений общности пусть эта грань F1. Докажем, что существует продолжение H до укладки графа Г, в котором сегмент S лежит в грани F2. Поскольку F1 и F2 — дополнительные грани, обе они содержат все контактные вершины сегмента S. Следовательно, все контактные вершины сегмента S лежат во множестве общих вершин F1 и F2. Пусть S1,..,Sk — все сегменты, уложенные в F1. Пусть S'1,..,S'm — все сегменты уложенные в F2, содержащие одну из вершин. Пусть сегмент S'i имеет контактную вершину и другую контактную вершину не принадлежащую F1. Тогда допустимые грани S'i это грань F2, а это предположению пункта (2). Из противоречия следует, что все контактные вершины S'i (аналогично Si) лежат во множестве вершин сегментов S'1,..,S'm.

Следовательно, в укладке графа Г можно сегменты S1,..,Sk переместить в F2, а S'1,..,S'm в F1, это приведет к укладке графа Г в котором сегмент S лежит в грани F2.

Следовательно, алгоритм уложит на плоскость любой планарный граф. Что и требовалось.

См. также[править | править код]

Литература[править | править код]

  • Иринёв Антон, Каширин Виктор Алгоритм плоской укладки графов [1]
  • Новиков И. А. Дискретная математика дл я программистов: Учебник дл я вузов. 3-е изд. — СПб.: Питер, 2009. — 384 е.: ил. — (Серия «Учебник для вузов»), ISBN 978-5-91180-759-7
  • Нефедов В. Н., Осипова В. А. Курс дискретной математики: Учеб. пособие.—М.; Изд-во МАИ, 1992.—264 с: ил., ISBN 5-7035-0157-X