Модульное разложениеМодульное разложение — это разложение графа на подмножества вершин, называемых модулями. Модуль является обобщением компоненты связности графа. В отличие от компонент связности, однако, один модуль может быть собственным подмножеством другого. Модули, поэтому, ведут к рекурсивной (иерархической) декомпозиции графа, а не просто к разбиениям. Существуют варианты модульного разложения для неориентированных графов и ориентированных графов. Для каждого неориентированного графа такая декомпозиция единственна. Это понятие может быть обобщено на другие структуры (например, ориентированные графы) и полезно для разработки эффективных алгоритмов для распознания некоторых классов графов, для поиска транзитивных ориентаций графов сравнимости, для задач оптимизации на графах и для визуализации графов. МодулиПонятие модуля было переоткрыто во многих областях. Для этого понятия использовались названия автономные множества, однородные множества, интервалы и дробные множества. Видимо, самым ранним упоминанием и первым описанием модульных частных и разбиения графов, возникающего при этом, было в статье Галаи в 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]. Примечания
Литература
Ссылки
|