Модульное разложение (Bk;rl,uky jg[lk'yuny)
Модульное разложение — это разложение графа на подмножества вершин, называемых модулями. Модуль является обобщением компоненты связности графа. В отличие от компонент связности, однако, один модуль может быть собственным подмножеством другого. Модули, поэтому, ведут к рекурсивной (иерархической) декомпозиции графа, а не просто к разбиениям.
Существуют варианты модульного разложения для неориентированных графов и ориентированных графов. Для каждого неориентированного графа такая декомпозиция единственна.
Это понятие может быть обобщено на другие структуры (например, ориентированные графы) и полезно для разработки эффективных алгоритмов для распознания некоторых классов графов, для поиска транзитивных ориентаций графов сравнимости, для задач оптимизации на графах и для визуализации графов.
Модули
[править | править код]Понятие модуля было переоткрыто во многих областях. Для этого понятия использовались названия автономные множества, однородные множества, интервалы и дробные множества. Видимо, самым ранним упоминанием и первым описанием модульных частных и разбиения графов, возникающего при этом, было в статье Галаи в 1967.
Модуль графа является обобщением компоненты связности. Компонента связности имеет свойство, что она является множеством вершин, таких, что любой член не является соседом какой-либо вершины не из . Обобщением будет, является модулем тогда, когда для каждой вершины , либо любой член не является соседом или любой член является соседом .
Эквивалентно, является модулем, если все члены имеют то же множество соседей среди вершин не из .
В отличие от компонент связности, модули графа, это то же самое, что и модули его дополнения, и модули могут быть «вложенными» — один модуль может быть собственным подмножеством другого. Заметим, что множество вершин графа является модулем, как и одноэлементные множества и пустое множество. Они называются тривиальными модулями. Граф может иметь, а может и не иметь, другие модули. Граф называется простым, если все его модули тривиальны.
Несмотря на различия, модули сохраняют желательное свойство компонент связности, заключающееся в том, что многие свойства подграфа , порожденного компонентой связности , не зависят от остальной части графа. Похожее явление наблюдается для подграфов, порождённых модулями.
Модули графа представляют поэтому большой алгоритмический интерес. Множество вложенных модулей, для которых модульное разложение является примером, может быть использовано для получения рекурсивного решения многих комбинаторных задач на графах, таких как распознавание и поиск транзитивной ориентации графов сравнимости, распознавание и нахождение перестановочного представления графов перестановок, распознавание, является ли граф кографом, распознавание интервальных графов и нахождение интервального представления для него, определение дистанционно-наследуемых графов[1] и для визуализации графов[2]. Они играют важную роль в доказательстве теоремы о совершенных графах[3].
Для распознавания дистанционно-наследуемых графов и круговых графов особенно полезно дальнейшее обобщение модульного разложения, называемое расщепляемой декомпозицией[англ.][1].
Во избежание двусмысленности вышеприведённого определения дадим следующее формальное определение модулей. . является модулем графа , если:
- вершины нельзя отличить по вершине в , то есть либо смежна и с , и с , или не смежна как с , так и с .
- вершины имеют тот же набор внешних соседей, то есть .
, и все синглтоны для являются модулями и они называются тривиальными модулями. Граф является простым, если все его модули тривиальны. Компоненты связности графа или их дополнения являются также модулями графа .
является сильным модулем графа , если не перекрывает (частично) какой-либо другой модуль графа — модуля графа либо , либо , либо .
Модульные частные и множители
[править | править код]Если и являются непересекающимися модулями, то легко видеть, что либо любой член является соседом любого элемента , либо никакой член не смежен никакому члену . Таким образом, все элементы двух непересекающихся модулей либо смежны, либо не смежны. Никакое промежуточное состояние между этими двумя крайностями не существует.
Ввиду этого модульные разложения , где каждый класс разбиения является модулем, представляет особый интерес. Предположим, что является модульным разложением. Поскольку классы разбиений не пересекаются, их смежность образует новый граф, фактор-граф[англ.] , вершинами которого являются члены . То есть каждая вершина является модулем графа G, а смежность этих модулей задаёт рёбра .
На рисунке ниже, вершина 1, вершины от 2 до 4, вершина 5, вершины 6 и 7 и вершины от 8 до 11 являются модулярным разбиением. На верхней правой диаграмме рёбра между этими множествами показывают частные, заданные данным разложением, в то время как рёбра внутри множеств показывают соответствующие множители.
Разбиения и являются тривиальными модульными разбиениями. является одновершинным графом, в то время как . Предположим, что является нетривиальным модулем. Тогда и одноэлементные подмножества является нетривиальным модульным разбиением . Таким образом, существование любых нетривиальных модулей влечёт за собой существование нетривиальных модульных разбиений. В общем случае большинство или все члены могут быть нетривиальными модулями.
Если является нетривиальным модульным разбиением, то является компактным представлением всех рёбер, которые имеют концы в различных классах разбиения . Для каждого класса разбиения в подграф , порождённый , называется множителем и он даёт представление всех рёбер с обоими концами в . Таким образом, рёбра графа могут быть восстановлены, если известен фактор-граф и его множители. Термин простой граф приходит из факта, что простой граф имеет только тривиальные частные и множители.
Если является множителем модульного частного , может оказаться, что может быть рекурсивно разложен на множители и частные. Каждый уровень рекурсии даёт частное. Как базовый случай, граф имеет одну вершину. Граф можно реконструировать путём реконструкции множителей снизу, обращая шаги разбиения путём сборки множителей с частными на каждом уровне.
На рисунке ниже такое рекурсивное разложение представлено в виде дерева, которое отражает один из способов рекурсивного разложения множителей начального модульного разложения на меньшие модульные разбиения.
Способ рекурсивного разбиения графа на множители и частные может не быть единственным. (Например, все подмножества вершин полного графа являются модулями, это означает, что существует много путей различного рекурсивного разложения этого графа.) Некоторые способы разложения могут оказаться более полезными по сравнению с другими.
Модульное разложение
[править | править код]К счастью, существует рекурсивное разложение графа, которое неявно представляет все способы его разложения. Это модульное разложение. Оно само по себе является способом рекурсивного разложения графа на частные, но оно включает все остальные. Разложение, показанное на рисунке ниже, является специальным разложением заданного графа.
Ниже ключевое наблюдение для понимания модульного разложения:
Если является модулем графа и является подмножеством , то является модулем тогда и только тогда, когда оно является модулем .
Галлаи[4] определил модульное разложение рекурсивно на графе с множеством вершин следующим образом:
- В базовом случае, если имеет лишь одну вершину, его модульное разложение является деревом с одним узлом.
- Галлаи показал, что если связан и таково же его дополнение, то максимальные модули, являющиеся собственными подмножествами , являются разбиением . Они поэтому являются модульным разбиением. Частные, которые они определяют, являются простыми. Корень дерева помечается как простой узел, а эти модули принимаются потомками множества . Поскольку они максимальны, любой модуль, не представленный таким образом, содержится в потомке множества . Для каждого потомка множества замена деревом модульного разложения даёт представление всех модулей графа согласно ключевому наблюдению выше.
- Если не связен, его дополнение связно. Любое объединение компонент связности является модулем графа . Все другие модули являются подмножествами отдельной компоненты связности. Это представляет все модули, за исключением подмножеств компонент связности. Для каждой компоненты замена деревом модульного разложения даёт представление всех модулей графа согласно ключевому наблюдению выше. Корень дерева помечается как параллельный узел, а является потомком корня. Частное, определённое потомком, является дополнением полного графа.
- Если дополнение графа не связно, граф связен. Поддеревья, которые являются потомками , определяются симметрично случаю, когда граф не связен, поскольку модули графа — это то же самое, что и модули его дополнения. Корень дерева помечается как последовательный узел, а частное, определяемое потомками, является полным графом.
Конечное дерево имеет одноэлементный набор вершин графа в качестве листьев, которые являются базовым случаем. Набор вершин графа является модулем тогда и только тогда, когда он является узлом дерева или объединением потомков последовательного или параллельного узла. Это неявно задаёт все модулярные разложения вершине . В этом смысле дерево модульного разложения «сосредотачивает в себе» все другие способы рекурсивного разложения графа на частные.
Алгоритмические проблемы
[править | править код]Структура данных для представления дерева модульного разложения должна поддерживать операции, принимающие узел в качестве входа и возвращают набор вершин графа , которые узел представляет. Очевидным способом это сделать является назначение каждому узлу списка вершин графа , которые узел представляет. Если дан указатель на узел, набор вершин графа , которые узел представляет, можно получить за время . Однако такая структура потребует в худшем случае памяти.
Альтернатива с памятью получается путём представления дерева модульного разложения с помощью любой стандартной структуры данных на основе корневого дерева, и пометкой каждого листа вершиной графа , которую он представляет. Множество, представленное внутренним узлом , задаётся набором меток его листьев-наследников. Хорошо известно, что любое корневое дерево с листьями имеет не более внутренних узлов. Можно использовать поиск в глубину, начав с , чтобы получить метки листьев-наследников за время .
Каждый узел является набором вершин графа и, если является внутренним узлом, набор потомков является разбиением , где каждый класс разбиения является модулем. Поэтому они порождают частное в . Вершины этого частного являются элементами , так что может быть представлен путём установления рёбер между потомками . Если и являются двумя членами и , , то и смежны в тогда и только тогда, когда и смежны в частном. Для любой пары вершин графа это определяется частным потомков наибольшего общего предка и в дереве модульного разложения. Поэтому модульное разложение, помеченное частными таким образом, даёт полное представление графа .
Многие комбинаторные задачи можно решить на графе путём решения их отдельно для каждого частного. Например, является графом сравнимости тогда и только тогда, когда каждый из этих частных является графом сравнимости[4][5]. Следовательно, чтобы определить, является ли граф графом сравнимости, достаточно проверить это для каждого его частного. Фактически, чтобы найти транзитивную ориентацию графа сравнимости, достаточно найти транзитивную ориентацию каждого из его частных в модульном разложении[4][5]. Аналогичное явление обнаруживается для графов перестановок[6], интервальных графов[7], совершенных графов и других классов графов. Некоторые важные комбинаторные оптимизационные задачи на графах могут быть решены с помощью аналогичных стратегий[8].
Кографы — это графы, которые имеют только параллельные или последовательные узлы в их дереве модульного разложения.
Первый алгоритм полиномиального времени для вычисления дерева модульного разложения графа был опубликован в 1972[9], а теперь доступны алгоритмы линейного времени[6][10].
Обобщения
[править | править код]Модульное разложение ориентированных графов может быть получено за линейное время[11].
За небольшим количеством простых исключений любой граф с нетривиальным модульным разложением имеет также косое разбиение[12].
Примечания
[править | править код]- ↑ 1 2 Spinrad, 2003.
- ↑ Papadopoulos, Voglis, 2005.
- ↑ Golumbic, 1980.
- ↑ 1 2 3 Gallai, 1967, с. 25–66.
- ↑ 1 2 Möhring, 1985a, с. 41–101.
- ↑ 1 2 McConnell, Spinrad, 1999, с. 189–241.
- ↑ Hsu, Ma, 1999, с. 1004–1020.
- ↑ Möhring, 1985b, с. 195–225.
- ↑ James, Stanton, Cowan, 1972, с. 281–290.
- ↑ Tedder, Corneil, Habib, Paul, 2008, с. 634–645.
- ↑ McConnell, de Montgolfier, 2005, с. 198–209.
- ↑ Reed, 2008.
Литература
[править | править код]- Tibor Gallai. Transitiv orientierbare Graphen // Acta Mathematica Academiae Scientiarum Hungaricae. — 1967. — Т. 18. — doi:10.1007/BF02020961.
- Lee O. James, Ralph G. Stanton, Donald D. Cowan. Graph decomposition for undirected graphs // Proc. 3rd Southeastern International Conference on Combinatorics, Graph Theory, and Computing (Florida Atlantic Univ., Boca Raton, Fla., 1972). — Florida Atlantic University, 1972.
- Martin C. Golumbic. Algorithmic Graph Theory and Perfect Graphs. — Academic Press, 1980. — ISBN 0-444-51530-5.
- Hsu W.L., Ma T. Fast and simple algorithms for recognizing chordal comparability graphs and interval graphs // SIAM Journal on Computing. — 1999. — Т. 28, вып. 3. — doi:10.1137/S0097539792224814.
- Ross M. McConnell, Fabien de Montgolfier. Linear-time modular decomposition of directed graphs // Discrete Applied Mathematics. — 2005. — Т. 145, вып. 2. — doi:10.1016/j.dam.2004.02.017.
- Ross M. McConnell, Jeremy P. Spinrad. Modular decomposition and transitive orientation // Discrete Mathematics. — 1999. — Т. 201. — doi:10.1016/S0012-365X(98)00319-7.
- Rolf H. Möhring. Algorithmic aspects of comparability graphs and interval graphs // Graphs and Order. — D. Reidel, 1985a.
- Rolf H. Möhring. Algorithmic aspects of the substitution decomposition in optimization over relations, set systems and Boolean functions // Annals of Operations Research. — 1985b. — Т. 4. — doi:10.1007/BF02022041.
- Charis Papadopoulos, Constantinos Voglis. Drawing graphs using modular decomposition // Proc. 13th International Symposium on Graph Drawing (GD'05). — Springer-Verlag, 2005. — Т. 3843. — (Lecture Notes in Computer Science). — doi:10.1007/11618058_31.
- Bruce Reed. Skew partitions in perfect graphs // Discrete Applied Mathematics. — 2008. — Т. 156, вып. 7. — С. 1150–1156. — doi:10.1016/j.dam.2007.05.054. Архивировано 19 сентября 2015 года.
- Jeremy P. Spinrad. Efficient Graph Representations. — American Mathematical Society, 2003. — (Fields Institute Monographs). — ISBN 0-8218-2815-0.
- Marc Tedder, Derek Corneil, Michel Habib, Christophe Paul. Simpler Linear-Time Modular Decomposition Via Recursive Factorizing Permutations // Proc. 35th International Colloquium on Automata, Languages and Programming (ICALP 2008). — Springer-Verlag, 2008. — Т. 5125. — (Lecture Notes in Computer Science). — doi:10.1007/978-3-540-70575-8_52.
- Emad Zahedi, Jason Smith. Modular Decomposition of Graphs and the Distance Preserving Property // Discrete Applied Mathematics. — 2018. — Вып. 7.
Ссылки
[править | править код]- Имплементация на языке Perl алгоритма модульного разложения
- Имплементация на языке Java алгоритма модульного разложения
- Имплементация на языке Julia алгоритма модульного разложения
Для улучшения этой статьи желательно:
|