МАТЕМАТИКА
Вестник Омского университета, 2002. №2. С. 14-16.
© Омский государственный университет УДК 519.8
АЛГОРИТМ НУМЕРАЦИИ ВЕРШИН ГРАФА СПЕЦИАЛЬНОГО ВИДА
Г.Г. Забудский|, Д.Ф. Бикбавов^
\ Омский филиал ИМ СО РАН 644099, Омск, Певцова 131 , X Омский государственный университет кафедра прикладной и вычислительной математики 644077, Омск, пр. Мира, 55А
Получена 26 февраля 2002 г.
In this paper we present an O(n log n) minimum linear arrangement algorithm for a special type of graph. Graph has two chosen vertices «source» and «sink» connected by nonintersecting chains.
1. Постановка задачи
Задача оптимальной нумерации вершин графа является одной из классических задач комбинаторной оптимизации. Она заключается в присвоении номеров вершинам графа таким образом, чтобы сумма модулей разностей между номерами смежных вершин была минимальной [1,4,5].
Для произвольного графа задача является NP - трудной [1]. Задача нумерации вершин дерева полиномиально разрешима. Предложены алгоритмы трудоёмкости O(n3) и O(n2 2), где n -количество вершин графа [1,5]. Более эффективные алгоритмы разработаны для деревьев специального вида, например, графов, гомеоморфных звёздам [3]. Интерес представляет поиск других структур графа, для которых задача нумерации решается за полиномиальное время.
В данной статье предложен полиномиальный алгоритм оптимальной нумерации вершин графа специального вида (рис.). Трудоёмкость алгоритма - O(n log n). В графе выделены две вершины -«источник» и «сток», соединённые произвольным количеством вершинно-непересекающихся цепей. Ориентированные графы такого типа относятся к классу последовательно-параллельных. Такие графы с весами на дугах рассматриваются в работе [2].
Пусть P(V, E) - граф, вершины которого необходимо перенумеровать, V - множество его вершин (| V | = n), E = {(vi, Vj)} - множество рёбер. Обозначим выделенные вершины через s и t, а некоторую цепь, соединяющую их, через
1 e-mail: [email protected]
Рис. 1. Граф специального вида
С;; «X 6 V - вершина цепи С;. Если принадлежность вершины к конкретной цепи не важна, верхний индекс в её обозначении опускается. Количество вершин в цепи е; равно щ, щ > 1. Степени всех вершин, за исключением 8 и t, равны 2, а степени выделенных вершин равны р, где р - количество цепей, их соединяющих.
Пусть А - подмножество натуральных чисел. Нумерацией вершин графа Р (нумерацией графа) называется взаимно-однозначное отображение множества вершин V в множество А (1р : V ^ А), а множество А - нумерующей последовательностью. Необходимо найти нумерацию, минимизирующую функционал:
р(<Р,Р)= Е I - ) |.
(уг,у, )еЕ
В дальшейшем всегда предполагается А = {1, 2, ... , п}, поскольку при этом величина Р(<£>, Р) не больше, чем при выборе другой нумерующей последовательности.
Так как между нумерацией вершин графа и их размещением в целых точках на прямой существует взаимно-однозначное соответствие, то нам иногда будет удобно говорить именно о размещении вершин в целых точках. Другими словами,
Алгоритм нумерации вершин графа специального вида
15
можно говорить «одна вершина расположена левее (правее) другой».
Введем некоторые определения [3].
Нумерация у вершин цепи са графа Р называется монотонной, если для произвольной пары несмежных вершин «а и и? и любой вершины «а, входящей в состав подцепи, соединяющей «а и «а, имеют место неравенства у(«а) > у(«а) > > у^") или у («а) < у («Г) < у^). Будем говорить, что нумерация вершин графа Р монотонна, если монотонны нумерации всех его цепей.
Нумерующая последовательность нумерации у вершин цепи сь графа Р называется сплошной, если для любого ребра «Ь) 6 сь не существует вершины «а 6 са, а = Ь: у^) < у(«а) < у(«Ь)
или уКЬ) > у(«а) > у(«Ь).
Нумерующую последовательность нумерации у вершин цепи са = {«а, «а, ••• «а} графа Р ((в, «а), («а, ¿) 6 Е) будем называть прямой, если справедливо у(«а) < у («г) < • • • < У («а); и обратной в случае у(«а) < ^(^-1) < •••
• •• < у(« а).
2. Свойства минимальной нумерации
В этом пункте приведены некоторые свойства оптимальной нумерации вершин графа Р . Будем рассматривать нумерации, для которых у(«) < у(г). Ввиду ограниченности объема статьи доказательства утверждений в основном не приводятся.
Свойство 1. Существует монотонная минимальная нумерация у вершин цепей графа Р.
Выбирается минимальная нумерация, и путем последовательных перестановок вершин эта нумерация приводится к монотонной. Функционал при этом не увеличивается.
Пусть у - монотонная нумерация графа Р. Обозначим через у 1 монотонную нумерацию: у1^) = у(^) V«: у(^) / [у(в) + 1, у (г) - 1]; а для всех : у (и,-) 6 (у(«), у (г)) имеет место у1^,) 6 (у1^), у1 (г)), и при этом нумерующие последовательности нумераций цепей, находящихся между 8 и г, остаются такими же, как и в нумерации у (прямыми или обратными).
Справедливо
Утверждение 1. Е(у1, Р) = Е(у, Р)
Это утверждение позволяет произвольно переставлять вершины цепей, находящихся между 8 и г, не меняя при этом значения функционала.
Свойство 2. Существует минимальная нумерация у вершин цепей графа Р, нумерующая последовательность которой является сплошной.
Другими словами, существует минимальная нумерация, в которой смежные вершины одной цепи располагаются в соседние целые точки, т. е. цепь не «прерывается». Отметим, что это не касается вершин 8 и г.
Из отмеченных свойств следует, что для поиска минимальной нумерации вершин графа Р достаточно рассматривать монотонные нумерации вершин всех цепей, нумерующие последовательности которых являются сплошными.
Кроме того, справедливо
Следствие. Если нумерация у вершин графа Р минимальна и для некоторой цепи ст
у(«т) < у(«) (либо у(«т) > у(г)) у«т 6 ст,
то нумерующая последовательность нумерации цепи ст может быть как прямой, так и обратной.
Отметим, что в отличие от оптимальной нумерации цепей, расположенных левее 8 или правее г (см. следствие), для цепей, расположенных между 8 и г, нумерующая последовательность оптимальной нумерации должна быть прямой.
Далее будут приведены некоторые утверждения, обосновывающие алгоритм минимальной нумерации вершин графа Р.
Пусть цепи ст и с;: пт > п;, и для некоторой минимальной нумерации у выполняется:
у(«т) < у(«), у(«У) < у(«) 6 ст, V«, 6 сг.
Тогда имеет место
Утверждение 2. Существует минимальная нумерация у1 вершин графа Р такая, что
у1(«т) < у1 («У) 6 ст, 6 с;.
Из этого утверждения следует, что существует минимальная нумерация, в которой из любых двух цепей слева от 8 правее расположена цепь с меньшим количеством вершин. Аналогичное утверждение можно доказать для случая, когда вершины указанных цепей располагаются правее г. Очевидно, что это утверждение обобщается на произвольное количество цепей.
Упорядочим цепи, соединяющие 8 и г, по неубыванию количества вершин в них. Без ограничения общности будем считать, что п1 < п2 < • • • < пр.
Утверждение 3. Существует минимальная нумерация у вершин графа Р, в которой у(й) < у(«Х) < у (г) 6 с1; а для произвольной цепи ст, т = 1, либо у(«т) < у(й), либо
у«) > у(г) ^ 6 ст.
Для некоторой нумерации у графа Р обозначим через I и г количество цепей, расположенных слева от 8 и справа от г соответственно (т.е. для которых у(«т) < у(в) У^т 6 ст и у («9) > у (г) V«« 6 с,).
Утверждение 4. Существует минимальная нумерация у вершин графа Р, для которой
| I - г |< 1.
16
Г.Г. Забудский, Д.Ф. Бикбавов
Утверждение 5. Существует минимальная нумерация ^ вершин графа Р вида:
• . . С2к С2к-2 . . . С2 й е1 Ь С3 ... С2к-1 С2к + 1
Доказательство. Индукцией по числу цепей графа Р.
Основание индукции очевидно: для р = 1, 2 и 3 минимальные нумерации будут выглядеть соответственно: й в! Ь, с2 й в! Ь и с2 й в! Ь с3 (это очевидно следует из утверждений 4 и 5 и свойств 1 и 2).
Предположение индукции. Предположим, что для 2к + 1 цепей утверждение верно. Покажем, что для 2к+2 цепей тоже будет верно. Не ограничивая общности, будем считать, что П1 < П2 < ... < П2^+! < П2^+2. Покажем, что цепь С2^+2 (т.е. цепь наибольшей длины) располагается слева от цепи С2к :
C2k+2 C2fc
С4 С2 S Cj t C3 C5
C2k -1 C2k + 1
Согласно утверждению 2 и свойствам 1 и 2 цепь С2&+2 может быть расположена справа от цепи С2^+!. В этом случае значение функционала больше по сравнению с тем, когда цепь С2к+2 расположена слева от цепи С2к, на величину 2[(п2&+! - П2к) + (п2&-1 - П2к-2) + ... ... + (п5 — П4) + (пз — П2)]. Выражение в каждой скобке по условию неотрицательно, следовательно, и вся сумма неотрицательна. Таким образом, предположив, что утверждение верно для 2к + 1 цепей, мы доказали, что оно справедливо и для 2к + 2 цепей.
В результате доказанных свойств и утверждений мы можем сформулировать алгоритм построения минимальной нумерации графа Р, изображённого на рисунке.
Трудоёмкость алгоритма определяется временной сложностью упорядочения цепей (по неубыванию количества вершин в них) и очевидно равна 0(n log n).
[1] Гольдберг М.К., Клипкер И.А. Алгоритм минимальной нумерации вершин дерева // Сообщения АН ГрССР. 1976. Т.81. № 3. С. 553-556.
[2] Забудский Г.Г. О задаче линейного упорядочения вершин параллельно-последовательных графов // Дискретный анализ и исследование операций. Новосибирск, 2000. Сер. 2. Т.7. № 1. C. 61-64.
[3] Иорданский М.А. Минимальные плоские размещения деревьев // Методы дискретного анализа в решении экстремальных задач. Новосибирск: ИМ СО АН СССР, 1979. Вып. 33. С. 3-29.
[4] Танаев В.С., Гордон В.С., Шафранский Я.М. Теория расписаний. Одностадийные системы. М.: Наука, 1984. 384 с.
[5] Shiloach Y. A minimum linear arrangement algorithm for undirected trees // SIAM J. Comput., 1979. Vol.8. № 1. P. 15-32.
3. Алгоритм минимальной нумерации
Упорядочим р цепей графа Р по неубыванию количества вершин в них. Размещаем цепь наименьшей длины между двумя выделенными вершинами. Далее располагаем остальные цепи поочерёдно слева от 8 и справа от t. Нумерующая последовательность нумерации каждой такой цепи может быть как прямой, так и обратной. Шаг 1. Упорядочиваем цепи по неубыванию количества вершин в них:
ni < n2 <
< np
Шаг 2. Строим минимальную нумерацию следующего вида:
C2k . . . С4 С2 S Cj t C3 C5 ... C2k +1