2012 Математические основы информатики и программирования №2(16)
МАТЕМАТИЧЕСКИЕ ОСНОВЫ ИНФОРМАТИКИ И ПРОГРАММИРОВАНИЯ
УДК 519.178
FPT-АЛГОРИТМЫ на графах ОГРАНИЧЕННОЙ ДРЕВОВИДНОЙ ШИРИНЫ
В. В. Быкова
Институт математики Сибирского федерального университета, г. Красноярск
E-mail: [email protected]
Исследован специальный метод конструирования FPT-алгоритмов — метод динамического программирования на основе дерева декомпозиции. Выявлены проблемы, ограничивающие применение этого метода на практике. Предложено проблему памяти решать с помощью бинарного сепараторного дерева декомпозиции, снижающего теоретические и реальные размеры таблиц динамического программирования. Табличная техника описана на языке реляционной алгебры.
Ключевые слова: алгоритмы на графах, дерево декомпозиции, динамическое программирование.
Введение
Параметризированный подход к оценке сложности вычислений — естественный способ справиться с трудноразрешимостью задач, которые охарактеризованы как NP-трудные в соответствии с классической дихотомией P против NP [1]. Основная идея параметризированного подхода состоит в том, чтобы с помощью некоторого числового параметра учесть структуру исходных данных и выделить основной источник трудноразрешимости задачи. Параметризированный подход позволяет исследовать различные параметризации одной и той же задачи, каждая из которых может приводить или не приводить к FPT-алгоритмам. Такие алгоритмы представляют интерес для алгоритмической практики, так как при ограниченном значении параметра время их выполнения полиномиально зависит от длины входа алгоритма [2].
В настоящее время уже известны некоторые специальные методы проектирования FPT-алгоритмов. Наиболее известный из них — метод динамического программирования на основе дерева декомпозиции, автором которого считается Г. Бодлаендер [3]. Этот метод ориентирован на класс задач, решение которых ищется в конечной области. При этом поиск решения подразумевает нахождение одного из допустимых решений (в задачах разрешения и удовлетворения ограничений) или оптимального решения (в задачах комбинаторной оптимизации). Такие задачи в литературе часто называют задачами выбора [4]. Параметризация задачи в данном случае осуществляется по древовидной ширине входного графа. Несмотря на теоретическую привлекательность метода динамического программирования по дереву декомпозиции, практическое его применение ограничивается двумя проблемами, первая из них связана с высокими потребностями в памяти получаемых FPT-алгоритмов, а вторая — с вычислением древовидной ширины и построением дерева декомпозиции. В данной работе предложены
средства решения первой из указанных проблем. Методы решения второй проблемы рассмотрены в работе автора [5].
1. Дерево декомпозиции и древовидная ширина графа
Динамическое программирование по дереву декомпозиции — это сочетание декомпозиционного подхода к решению задачи выбора с декомпозиционным представлением входного графа, когда выделение подзадач и построение их решений осуществляется исходя из этого представления. Дерево декомпозиции графа — это специальная конструкция, которая описывает структуру графа «с точностью до клик и сепараторов» и определяется следующим образом. Пусть задан связный граф С = (V, Е), п = IV| ^ 1 и т = |Е| ^ 1. Дерево декомпозиции графа С — пара (М, Т), задающая разбиение множества вершин и множества рёбер этого графа, где М = : г Е I} — семейство
подмножеств множества V, называемых «мешками», а Т = (I, Ш) —дерево, узлам которого сопоставлены эти «мешки». Вершины дерева Т принято называть узлами, чтобы избежать путаницы с вершинами графа С. Семейство М = {Xi : г Е I} и множество Ш рёбер дерева Т = (I, Ш) такие, что справедливы следующие условия [3]:
1) объединение всех подмножеств, образующих «мешки», даёт множество V;
2) для всякого ребра графа С существует хотя бы один «мешок», содержащий обе вершины этого ребра;
3) для любой вершины V графа С множество узлов {г Е I : V Е Х^, «мешки» которых содержат эту вершину, индуцирует связный подграф, являющийся поддеревом дерева Т.
Ширина дерева декомпозиции (М,Т) равна шах{|Х^ — 1}. Древовидная ширина,
ie/
(Ьтееи!1сСЬК) графа С определяется как наименьшая ширина всех допустимых его деревьев декомпозиции и обозначается через 1'№(С). Дерево декомпозиции ширины 1'№(С) называется оптимальным, а без кратных и вложенных «мешков» — фундаментальным. В фундаментальном дереве декомпозиции всегда О(п) узлов и к нему можно перейти за время О(111). Для 1'№(С) верны естественные границы: 1 ^ 1'№(С) ^ п — 1. Считается, что граф С обладает ограниченной древовидной шириной, если 1'№(С) ^ к и к есть целая положительная константа, не зависящая от п.
Заметим, что всякое дерево декомпозиции (М, Т) графа С = (V, Е) есть не что иное, как дерево соединений ациклического гиперграфа Н = (V, М), рёбрами которого выступают «мешки» этого дерева [6]. При этом граф смежности вершин гиперграфа Н является некоторой (не обязательно минимальной) триангуляцией графа С.
2. Описание метода
Пусть задана некоторая параметризированная задача П, которую надо решить для графа С = (V, Е). Полагаем, что в качестве параметра задачи взята древовидная ширина 1'№(С) и 1'№(С) ^ к, к — целая положительная константа. Кроме того, считаем, что задача П сформулирована в оптимизационной конструктивной постановке, то есть задана некоторая числовая характеристика (целевая функция) графа С = (V, Е), которую надо оптимизировать и указать решение, отвечающее оптимальному значению этой характеристики.
Пусть для исходного графа С = (V, Е) известно корневое дерево декомпозиции (М, Т), М = {Xi : г Е I}, Т = (I, Ш), ширины к и с узлом г в роли корня. Семейство подзадач в данном случае можно задать следующим образом. Определим для всякого узла г Е I множество вершин:
Y = {v £ Xj : j = i или j —потомок для i в T}. (1)
Множество Y индуцирует в G подграф Gi = G(Y) а в T — поддерево с корневым узлом i. Примечательно, что Yr = V и Gr = G. Тогда в качестве подзадачи ni можно рассматривать решение задачи П применительно к Gi, i £ I. Понятно, что для каждой конкретной задачи П специфичны характеристика решения и рекуррентные процедуры, связывающие решения подзадач. Между тем сценарий действия алгоритмов, основанных на динамическом программировании по дереву декомпозиции, общий.
Работа подобных алгоритмов включает в себя два этапа. На первом этапе для исходного графа G = (V, E) строится корневое дерево декомпозиции (M, T) ширины k. На втором этапе решается задача П с помощью (M, T): сначала обход всех узлов дерева T снизу вверх (от листьев к корню г) с целью вычисления необходимой информации и нахождения значений характеристик подзадач; затем обход всех узлов дерева T сверху вниз (от корня г к листьям) с целью конструирования оптимального решения задачи П для исходного графа G. При этом вся нужная информация вычисляется и хранится в виде таблиц. Каждому узлу i £ I дерева T соответствует таблица Ai, которая содержит информацию по задаче ni.
Процесс формирования таблиц и решений отвечает следующим необходимым требованиям. При любом i £ I решение задачи ni находится исключительно из таблицы Ai. Для всякого листа i £ I дерева T соответствующая таблица вычисляется непосредственно из G(Xi). Для каждого внутреннего узла i £ I таблица создается из информации о G(Xi) и таблиц, которые отвечают прямым потомкам узла i в T. Дерево декомпозиции гарантирует выполнение указанных требований, поскольку справедливо
Утверждение 1 [3]. Пусть i £ I — произвольный внутренний узел дерева T .Вершины графа Gi = G(Y) которые смежны с вершинами, находящимися вне Gi, обязательно содержатся в «мешке» Xi (и таких вершин не более k + 1). Иными словами, графы G(Yi) и G(V\Yi) «связаны» между собой в G только с помощью вершин из Xi.
В общем случае поиск точного решения задачи ni для каждого узла i дерева T осуществляется полным перебором в Ai, где представляются различные подмножества множества вершин как претенденты на оптимальное или допустимое решение. Очевидно, что время подъёма и спуска по дереву декомпозиции зависит от числа и размера создаваемых таблиц динамического программирования, а также от времени обработки каждой строки такой таблицы.
3. Достаточные условия FPT-разрешимости относительно
древовидной ширины
Оказывается, что описанный выше метод динамического программирования на основе дерева декомпозиции приводит к FPT-алгоритму относительно древовидной ширины, если задача выбора может быть сформулирована в монадической логике второго порядка. Монадическая логика второго порядка (Monadic Second Order Logic, или MSOL) для графа G = (V, E) —язык исчисления предикатов выражения его свойств. Предикатные формулы в MSOL, описывающие свойства графа G, состоят из следующих символов [7]:
— предметных переменных vi и ej, при этом каждой переменной vi соответствует
отдельная вершина, а переменной ej — отдельное ребро графа G (1 ^ i ^ n = |V|, 1 ^ j ^ m = |E|);
— предметных переменных V и Ej, где переменной V отвечает некоторое подмножество множества вершин V, а переменной Ej —некоторое подмножество множества рёбер графа G (0 ^ i ^ 2n, 0 ^ j ^ 2m);
— предикатных переменных и логических связок &, V, —, ^, ^;
— кванторов V и 3, запятых и круглых скобок.
В состав атомарных формул входят:
— предикат совпадения (x = x;). Принимает значение «истина», если вершины (рёбра) x и x1 графа G совпадают;
— предикат принадлежности (x Є X), где предметная переменная x отвечает вершине (ребру) графа G, а переменная X — подмножеству вершин (рёбер) этого графа;
— предикат инцидентности Incident(vi,ej). Принимает значение «истина», если вершина vi и ребро ej инцидентны в G.
Все другие формулы MSOL формируются из атомарных формул MSOL с помощью логических связок, кванторов 3x и Vx (x — предметная переменная, соответствующая вершине или ребру графа G) и кванторов 3X и VX (X — предметная переменная, отвечающая подмножеству вершин или ребер графа G). Заметим, что монадическая логика первого порядка (Monadic First Order Logic, или MFOL) отличается от MSOL лишь тем, что в ней не допускаются кванторы 3X и VX.
Всякое свойство графа G может быть задано некоторым предикатом P. Предикат P для графа G (обозначается через P(G)) принимает значение «истина», если рассматриваемое свойство выполняется для этого графа, и «ложь» в противном случае. Некоторые популярные свойства графа, выраженные в виде формул MSOL, представлены в таблице. Из всех указанных в этой таблице свойств только свойства связности и гамильтоновости графа не могут быть выражены в MFOL. Заметим, что длина всех формул, приведённых в таблице, не зависит от размера (числа вершин и рёбер) графа G. Такие формулы MSOL называются конечными.
Пусть граф G имеет ограниченную древовидную ширину, то есть tw(G) ^ k, где k — некоторая целая положительная константа. Пусть проверяемое свойство графа G представлено в виде MSOL-формулы P и |P| —длина этой формулы.
Теорема 1 (теорема Курселя [7]). Для графа G = (V, E) с tw(G) ^ k существует функция f : N х N ^ N и алгоритм, который проверяет истинность P(G) за время
O(n ■ f (|P|,k)).
Очевидно, что если величина |P| не зависит от n = |V| и m = |E|, например, является постоянной или зависит только от k, то по теореме Курселя для графа, удовлетворяющего условиям теоремы 1, существует алгоритм со временем работы O(n■ f (k)), то есть FPT-алгоритм относительно древовидной ширины графа G. Таким образом, всякое свойство графа G = (V, E), выраженное в виде конечной формулы MSOL, может быть проверено за полиномиальное время при условии, что граф G имеет ограниченную древовидную ширину. Теорема Курселя демонстрирует широту класса FPT-разрешимых графовых задач, но не даёт точного ответа, как устроен FPT-алгоритм для задачи, отвечающей условиям этой теоремы. Единственное, что известно,—это общая схема такого алгоритма, описанная выше в п. 2.
Для применения теоремы Курселя на практике необходимо: найти MSOL-формулу проверяемого свойства графа; убедиться, что заданный граф G имеет древовидную ширину tw(G) ^ k; построить для G дерево декомпозиции ширины k. Относительно последних действий известен следующий результат.
Формулы MSOL, определяющие некоторые свойства графа
Свойство графа Предикат Формула MSOL, определяющая предикат
Совпадение рёбер в* и — Cj (Vvi)(Incident(vi, e*)) ^ (Incident(vi, ej))
Смежность вершин V* и Adjacent (v, vj) —(v* = Vj)&(3e1) (Incident(vj,e1) & & Incident(vj, e1))
V — независимое множество вершин IndependentSet(V) (Vv2)(Vv3)((v2 £ Vi & V3 £ Vi) ^ —Adjacent (v2, v3))
V — вершинное покрытие VertexCover(Vi) (Ve2)(3v3)(v3 £ Vi & Incident(v3,e2))
VI — клика Clique(Vi) (Vv2)(Vv3)((v2 £ Vi & v3 £ Vi) ^ Adjacent(v2, v3))
VI — доминирующее множество DominatingSet(Vi) (Vv2)(v2 £ Vi V (3v3)(v3 £ Vi & & Adjacent(v2, v3)))
Вершинная к-раскраска VertexColorable(V1,..., Vk) (Vvo)(vo £ Vi V ... V vo £ Vk) & IndependentSet(Vi) & ... & IndependentSet(Vk)
Еі — связность Connected(Ei) (VV2)(VV3)( —(3v4)(v4 £ V2))V ( — (3v5)(v5 £ V3))V (3v6)(—(v6 £ V2) & — (v6 £ V3))V (3e7)(3vg)(3vg)(e7 £ Ei & v8 £ V2 & v9 £ V3 & Incident(v8, e7) & Incident (v9, e7))
Еі — гамильтонов цикл HamCycle(Ei) Connected(Ei) & (Vv2)(3e3)(3e4) (в3 £ Ei & в4 £ Ei & '(в3 = в4) & Incident (v2, e3) & Incident (v2, e4) & (Ve5)((e5 £ Ei & Incident(v2, e5)) ^ (в5 = в3 V в5 = в4)))
Теорема 2 (Г. Бодлаендер, Т. Клокс [8]). Существует функция f : N х N ^ N и алгоритм, который за время 0(п • f (к)) проверяет, имеет ли граф С древовидную ширину 1'№(С) ^ к, и если да, то строит для С дерево декомпозиции ширины к.
Данная теорема свидетельствует о том, что условия применимости теоремы Курсе-ля, касающиеся древовидной ширины графа, могут быть проверены соответствующим ЕРТ-алгоритмом за полиномиальное время.
4. Вычислительная сложность метода и её преодоление с помощью
Б&8-дерева
Динамическое программирование — метод, рекурсивный по своей природе. Однако рекурсивная реализация данного метода при числе подзадач больше единицы неминуемо влечёт неполиномиальное время вычислений относительно длины входных данных [9]. Согласно соотношению (1), число подзадач на каждом шаге динамического программирования по дереву декомпозиции определяется арностью данного дерева. Очевидно, что в общем случае эта арность больше единицы. Поэтому для получения ЕРТ-алгоритма необходимо динамическое программирование осуществлять итерационно с помощью табличной техники. Между тем эта техника порождает проблему памяти для размещения создаваемых таблиц, поскольку размер всякой таблицы экспоненциально зависит от арности и древовидной ширины применяемого дерева декомпозиции.
Пусть для задачи П, решаемой на графе С = (V, Е) с 1-№(С) ^ к, построено корневое дерево декомпозиции (М, Т), М = {Xi : г Е I}, Т = (I, Ш), ширины к и с узлом г в роли корня. Если дерево Т содержит II| = О(п) узлов, то при динамическом программировании придется хранить О(п) таблиц г Е I. Предположим, что всякая вершина
из Xi может находиться по отношению к возможному решению в q состояниях. Например, в задаче о вершинном покрытии q = 2 («принадлежит вершинному покрытию», «не принадлежит вершинному покрытию»), а в задаче о доминирующем множестве q = 3 («входит в доминирующее множество», «не входит в доминирующее множество, но доминируется», «не входит в доминирующее множество и не доминируется»). Тогда таблица Ai узла i, являющегося листом в T, имеет размер O(kqk), так как |Xi| ^ k + 1. Размер таблицы Ai для внутреннего узла i с двумя прямыми потомками может достигать O(kq3k). Ясно, что чем больше арность дерева T (число прямых потомков для узлов этого дерева) и чем больше ширина (M, T), тем большего размера таблицы могут возникать в процессе вычислений и тем больше времени потребуется для их обработки. Таким образом, проблема памяти — серьезное препятствие практического применения FPT-алгоритмов, основанных на динамическом программировании по дереву декомпозиции. Эта проблема является предметом теоретических исследований многих авторов [3, 8, 10, 11]. В работах практической направленности преимущественно предлагаются различные улучшения дерева декомпозиции. Наиболее известное в этом отношении — «хорошее» дерево декомпозиции (nice tree decomposition), описанное Т. Клоксом [12]. Его принято называть деревом декомпозиции Kloks-вида (или просто Kloks-деревом).
Корневое дерево декомпозиции (M, T), M = {Xi : i £ I}, T = (I, W), отвечает Kloks-виду, если оно удовлетворяет следующим условиям:
1) каждый узел дерева имеет не более двух узлов прямых потомков;
2) если узлу i непосредственно подчинены два узла l и j, то Xi = X^ = Xj (i — узел-соединение);
3) если узел i располагает одним прямым потомком j, то
— либо |Xi| = |Xj| + 1 и Xj С Xi (i — узел-вставка),
— либо |Xi| = |Xj| — 1 и Xi С Xj (i — узел-удаление).
В работе [12] доказано, что всякое фундаментальное дерево декомпозиции (M, T), имеющее ширину k и O(n) узлов, может быть преобразовано за время O(k2n) в Kloks-дерево, которое обладает той же шириной и O(kn) узлами. Заметим, что мощности «мешков» Kloks-дерева, соответствующие смежным узлам этого дерева, различаются не более чем на единицу. Такая сглаженность и бинарность Kloks-дерева даёт возможность размер создаваемых таблиц удерживать в пределах оценки O(kqk). Понятно, что это достигается за счет увеличения (возможно в k раз) числа узлов дерева и таблиц динамического программирования.
Желательно иметь такой вид дерева декомпозиции, который бы обеспечивал компромисс между размером и числом таблиц динамического программирования. Для достижения этой цели предлагается использовать бинарное сепараторное дерево декомпозиции (или просто BfeS-дерево). Для него характерны следующие особенности: переход от бинарного корневого дерева декомпозиции к BfeS-дереву увеличивает число таблиц не более чем в два раза; оно, как и Kloks-дерево, позволяет удерживать размер всякой таблицы динамического программирования в пределах оценки O(kqk); для вычисления таблиц динамического программирования по BfeS-дереву возможно привлечение аппарата реляционной алгебры и свойств ациклических баз данных. Дадим пояснение и обоснование сказанному.
Корневое дерево декомпозиции (M,T), M = {Xi : i £ I}, T = (I,W), графа G назовём BfeS-деревом, если в нём каждый узел имеет не более двух прямых потомков и относится к одному из четырёх типов узлов:
1) узел-лист — узел, у которого нет потомков;
2) узел-сепаратор — узел 8 с одним прямым потомком ] и узлом г в роли родителя. Всегда Х8 — сепаратор графа О и Х8 = Хг П Х^- = 0, Х8 С Хг, Х8 С Х^-;
3) узел-расширение — узел г с одним прямым потомком 8. В данном случае Х* С Хг;
4) узел-соединение — узел г с двумя прямыми потомками I и ]. Здесь Х/ и Х^ С Хг.
Утверждение 2. Всякое фундаментальное дерево декомпозиции (М,Т) графа О, где М = {Хг : г е I}, Т = (1,Ш), имеющее ширину к и |11 = О(п) узлов, может быть преобразовано за время О(п) в Б&Б-дерево, которое обладает той же шириной и О(п) узлами.
Доказательство. Преобразование заданного дерева декомпозиции (М, Т) в Б&Б-дерево можно выполнить за два шага.
Шаг 1. Сначала выбрать любой узел г е I в роли корня. Затем снизить арность дерева до двух следующим образом. Если внутренний узел г е I обладает одним или двумя прямыми потомками, то ничего не делать. Если внутренний узел г е I имеет в качестве прямых потомков узлы ,..., , d ^ 3, то выполнить «клонирование» узла г
в узлы г1,..., и приписать каждому из них «мешок» Хг. Отношение подчинённости
между узлами установить так, как показано на рис. 1. В результате будет добавлено О(п) узлов.
Рис. 1. Схема преобразования дерева декомпозиции к бинарному виду
Шаг 2. Для любых двух узлов і, і є I, смежных в Т и имеющих «мешки» X* и Х^ соответственно, добавить промежуточный узел 8 и сопоставить ему в качестве «мешка» множество вершин Х8 = X* П Х^ = 0 (рис. 2). Исходя из известных свойств дерева декомпозиции [5, с. 67, утверждение 1], множество Х8 — сепаратор графа О и, следовательно, 8 есть узел-сепаратор. Таких узлов будет добавлено О(п).
Рис. 2. Схема формирования узла-сепаратора
Общее число узлов в Б&Б-дереве составит О(п). Время реализации каждого шага — также О(п). Ни одно из действий, предусмотренных шагами 1 и 2, не увеличивает вместимость «мешков» для (М,Т), поэтому значение к не изменится. Построенное Б&Б-дерево — дерево декомпозиции графа О, так как оно очевидным образом отвечает условиям 1-3 определения дерева декомпозиции. ■
Чтобы убедиться, что Б&Б-дерево сохраняет размер всех создаваемых в процессе динамического программирования таблиц в пределах оценки О(кди), сначала рассмотрим, как это достигается при применении Юокя-дерева. Здесь целесообразно прибегнуть к языку реляционной алгебры (алгебры таблиц) [6].
Пусть (М,Т), М = {Хг : г е I}, Т = (^Ш), —некоторое корневое бинарное дерево декомпозиции графа О = (V, Е) ширины к. Решение подзадачи Пг вычисляется из таблицы Аг, в которой сформированы все допустимые решения для подграфа О(Уг), где У задается формулой (1). В общем случае данная таблица может содержать У столбцов (по одному столбцу на каждую вершину из У) и д1^1 строк (по одной на каждое допустимое решение) при условии, что д — число состояний вершины графа по отношению к допустимому решению. Тот факт, что в таблице Аг столбцами выступают все вершины из Уг, обозначим через Аг(Уг). Аналогичным образом обозначим через А'(Хг) таблицу, содержащую допустимые решения для подграфа О(Хг), то есть подграфа, индуцированного вершинами только одного «мешка» Хг, и назовем её локальной таблицей. Если узел г является листом, то А'(Хг) совпадает с Аг(У). Если г — внутренний узел или корень, то таблица Аг(У) формируется из таблицы А'(Хг) и таблиц узлов прямых потомков узла г путем их согласования по строкам. Такое согласование таблиц в реляционной алгебре выполняет естественное соединение [х] (далее просто соединение). Данная операция бинарная и отвечает законам коммутативности и ассоциативности. Поэтому общая схема формирования таблицы Аг(У) для внутреннего или корневого узла г, имеющего узлы ] и I в качестве прямых потомков, может быть представлена рис. 3. Так как |Хг| ^ к + 1 при всех г е I, то число столбцов всякой таблицы Аг(Уг), соответствующей узлу г с двумя прямыми потомками, может достигать 3(к +1), а число строк в худшем случае (когда операция соединения вырождается
\ зи
в декартово произведение) —значения д .
Рис. 3. Создание таблицы для внутреннего узла путем соединения
Пусть (М, Т) —Юокэ-дерево ширины к. Тогда для всех типов узлов |У | ^ к + 1. Действительно, если узлу г непосредственно подчинены два узла I и ], то
Хг = Х/ = Х,, Уг = Хг и Х, и Х/ = Хг, |У| ^ к + 1.
Если г — узел-вставка с прямым потомком ], то
Х, С Хг, |Хг| = |Х,| + 1, Уг = Хг и Х, = Хг, |У| ^ к + 1.
Если г — узел-удаление с прямым потомком ], то
Хг С Х,, |Хг| = |Х, | - 1, Уг = Хг и Х, = Х,, |У'| ^ к +1.
Пусть теперь (М, Т) — Б&Б-дерево ширины к. В данном случае также для всех типов узлов |Уг| ^ к + 1. Для узлов-листьев это очевидно. Рассмотрим внутренние узлы. Заметим, что по построению Б&Б-дерева узел-сепаратор 8 всегда имеет только одного родителя (согласно рис. 2 это узел г), одного прямого потомка (это узел ]) и Х* = Хг П Х, = 0, Х* С Хг, Х* С Х,. Поэтому для таблицы узла-сепаратора 8 выполняются отношения У* = Х* и Х, = Х,, |У* | ^ к + 1.
Для узла г, играющего роль родителя узла 8, справедливы подобные отношения: У = Хг и Х* = Хг, |Уг| ^ к +1. В Б&Б-дереве любой внутренний узел г является либо узлом-сепаратором, либо родителем одного или двух узлов-сепараторов. Поэтому для него всегда |Уг| ^ к +1. Значит, с точки зрения числа столбцов Б&Б-дерево сопоставимо с Юокя-деревом, хотя имеет в большинстве случаев меньшее число таблиц.
Для Юокя-дерева и Б&Б-дерева число строк создаваемых таблиц динамического программирования в худшем случае составляет О(ди). Это теоретическая оценка, и она слишком пессимистичная. На самом деле, как было ранее замечено, всякое дерево декомпозиции (М, Т), М = {Хг : г е I}, Т = (!,Ш), графа О = (V, Е) есть не что иное, как дерево соединений ациклического гиперграфа Н = (V, М). Исходя из свойств ациклических гиперграфов, совокупность таблиц Аг, г е I, обладает монотонным планом соединения. Монотонный план — это такой порядок соединения таблиц, когда число строк всякой промежуточной таблицы не превышает числа строк результирующей таблицы. Монотонный план соединения отвечает обходу дерева соединения ациклического гиперграфа Н = (V, М) снизу вверх (от листьев к корню), при этом в роли корня может выступать произвольный узел дерева соединений [6]. Таким образом, при реализации метода динамического программирования по Юокя-дереву или
Б&Б-дереву ширины к в большинстве случаев лишь для таблицы корневого узла число
и
строк достигает значения ди.
Исключительная особенность Б&Б-дерева состоит в том, что к нему применимо еще одно свойство ациклических гиперграфов — существование программы полусоеди-нений для совокупности таблиц Аг, г е I. Представим себе, что мы имеем реляционную базу данных, состоящую из множества таблиц А', г е I. Пусть эта база данных распределена по узлам сети так, что в каждом узле находится только одна таблица, а конфигурация сети задана деревом Т. Требуется выполнить запрос к базе данных, в котором надо соединить все таблицы А', г е I. Пусть запрос сформулирован в корневом узле. Тогда процесс вычисления запроса сводится к последовательному соединению таблиц снизу вверх по дереву Т с передачей по каналам связи промежуточных таблиц на вышестоящий уровень узлов этой сети. Предположим, что большая часть времени выполнения запроса приходится на время передачи данных. В этом случае
эффективность вычисления запроса зависит от минимизации объёма передаваемых данных. В ациклических реляционных базах данных это достигается за счёт применения программы полусоединений, когда вверх по дереву соединений передаются только те данные, которые участвуют в соединении далее. Очевидно, что процесс выполнения запроса по дереву соединений (М, Т) идентичен процессу формирования таблиц динамического программирования по дереву декомпозиции (М, Т), а минимизации объёма передаваемых данных — сокращение числа строк промежуточных таблиц динамического программирования.
Поясним действия, выполняемые операцией полусоединения. Пусть заданы две таблицы Аг(Хг) и А,(Х,), отвечающие узлам г и ], где узел ] —прямой потомок узла г. Тогда полусоединением Аг(Хг) и А, (Х,) называется таблица, определяемая равенством
А, к а' = п*(А, мА'), (2)
то есть А, к А' — эта часть строк таблицы А,, которая участвует в соединении со строками из А'. По законам реляционной алгебры [6, с. 348]
пXi (А, А') = ПХ;ПХ^ (А, ) ^3 А'; (3)
А, сз А' = (А, сз А') сз А'. (4)
Если Х* = Хг П Х,, то из (2)-(4) следует, что
А ^Аг = пх3 (а, ) (5)
где пх3 (А,) —таблица, которая получается из А, извлечением столбцов, входящих в Х*, и удалением строк-дубликатов. Так действует операция п, называемая в реляционной алгебре проекцией. Эта операция неизменно уменьшает число строк и столбцов таблицы-операнда. Заметим, что множество Х* = Хг П Х, соответствует узлу-сепаратору 8 в Б&Б-дереве (рис. 2). Если таблицу для узла-сепаратора получать из таблицы прямого его потомка, применяя операцию проекции, то, согласно (5), операцию соединения таблиц можно осуществить более эффективно с точки зрения времени и памяти. Узел-сепаратор играет в этом случае роль транзита, передающего вверх по дереву только те данные, которые используются для формирования таблицы Аг. Такой эффект от узла-сепаратора гарантируется ацикличностью гиперграфа, ассоциированного с Б&Б-деревом.
5. Решение задачи о вершинном покрытии методом динамического
программирования по Б&8-дереву
Задача о вершинном покрытии является типичной КР-трудной задачей на графах, к которой сводятся многие подобные задачи. Напомним, что подмножество VI С V образует вершинное покрытие графа О = (V, Е), если каждое ребро из Е инцидентно хотя бы одной вершине из VI. Покрытие называется минимальным, если оно не содержит покрытия с меньшим числом вершин, и наименьшим, если число вершин в нём наименьшее среди всех покрытий графа О. Число вершин в наименьшем покрытии графа О называется числом вершинного покрытия этого графа и обозначается во (О). В оптимизационной постановке данная задача формулируется следующим образом. Задан граф О = (V, Е). Требуется найти число вершинного покрытия в0(О) и наименьшее вершинное покрытие графа О, отвечающее в0(О).
Свойство подмножества V С V быть вершинным покрытием графа G = (V, E) выражается конечной MSOL-формулой (см. таблицу):
VertexCover(Vi) ^ (Ve2)(3v3)(v3 G Vi & Incident(v3, e2)). (6)
Согласно теореме Курселя, применение к данной задаче метода динамического программирования по дереву декомпозиции приведёт к FPT-алгоритму при условии, что входному графу свойственна ограниченная древовидная ширина. Убедимся в этом. Пусть заданы граф G с tw(G) ^ k, его BfeS-дерево (M, T), M = (Xj : i G I}, T = (I, W), ширины k и с узлом r в роли корня. Реализация метода динамического программирования по BfeS-дереву (M, T) предполагает конкретизацию рекуррентной процедуры формирования таблиц АДУ), то есть определения для каждого из четырёх типов узлов правил, по которым вычисляются все допустимые решения подзадачи П (i G I). Дадим описание этих правил для задачи о вершинном покрытии, используя язык реляционной алгебры.
Пусть имеем узел-лист i с «мешком» Xj. Для графа G(Xj) задача решается полным перебором. Для этого создается таблица АДУ) как Aj(Xj) по следующим правилам. В этой таблице |Xj| + 1 столбцов и 2|Xi| строк, отдельная строка для каждого из
2IX I различных подмножеств Z С Xj. Состав вершин, входящих в Z, представляется битовой шкалой b: b(v) = 1, если вершина v G Z, и b(v) = 0 в противном случае. Столбец c(Z) таблицы Aj(Xi) содержит характеристику решения: c(Z) = |Z|, если Z — вершинное покрытие для G(Xj), иначе c(Z) = +то. Является ли подмножество Z допустимым решением для Пг, устанавливается путём проверки на истинность значения предиката (6). Если да, то c(Z) вычисляется по формуле c(Z) = |Z| = b(v).
veXi
Рассмотрим узел-сепаратор s с «мешком» Xs и одним прямым потомком j, который имеет «мешок» Xj. В данном случае Xs С Xj С Yj, где Yj —множество вершин исходного графа G, которые принадлежат Xj и всем «мешкам» узлов, являющихся в T потомками узла j. Пусть для узла j ранее уже была построена таблица Aj (Yj). Тогда таблица As(Ys) вычисляется по формуле
As = nQ(Aj), (7)
где п — операция проекции, которая выбирает из таблицы Aj (Yj) подмножество столбцов Q = Xs U (c(Z)}. В полученной таблице возможны строки, совпадающие по битовым шкалам и имеющие разные значения c1(Z), c2(Z),... , c^(Z), h ^ 1. Для всех таких строк полагается
c(Z) = min(ci(Z), C2(Z),..., Ch(Z)} (8)
и в As(y) оставляется только одна из них. После этого результирующая таблица As (У) содержит только ту информацию из Aj (Yj), которая необходима для согласования её с таблицей вышестоящего узла. Справедливость формул (7) и (8) вытекает из наследственности свойства, представленного формулой (6): если Z — вершинное покрытие графа Gj = G(y), то множество Z П Xs С Yj является вершинным покрытием графа G(Xs).
Пусть i — узел-расширение с одним прямым потомком s, для которого Xs С Xj. Предположим, что для узла s ранее уже была создана таблица As(YS). В данной ситуации вначале формируется локальная таблица Aj(Xj), которая затем связывается с таблицей As(y), и результат записывается в Aj (Yj):
Ai = A' x A,.
(9)
Поскольку Х3 С Хг, то, согласно (9), в Лг(У) войдут все столбцы из Л'(Хг) и добавится ещё дополнительный столбец со значениями с^) из ЛДУ). Пусть Л'.с(^) и Л3.е(И) — характеристики Z С Хг, включённые в результирующую таблицу Лг(Уг) из А' и Л3 соответственно. В этих обозначениях формула пересчёта значений с^) для Лг имеет вид
с^) = Л'.c(Z) + Л«.с^) — ^2 ь(у). (10)
'и£Ха
Данная формула реализует принцип включения и исключения: мощности допустимых и согласованных между собой решений складываются и вычитается число вершин, учтённых дважды (это вершины из «мешка» узла-сепаратора). Справедливость этой формулы вытекает из наследственности свойства, представленного формулой (6).
Пусть узел г имеет в качестве прямых потомков узлы-сепараторы I и ] с «мешками» Хг и Х^ соответственно. Допустим, что этим узлам отвечают таблицы Лг(У) и Л^- (У^), а узлу г — локальная таблица Л'(Хг). Сначала таблица Л'(Хг) связывается с таблицей Лг(У) по формулам (9), (10), а затем полученная таблица — с таблицей Л^- ^). Таким образом, обработка узла-соединения сводится к двукратному повторению действий, определённых для узла-расширения.
Как только достигается корневой узел г и вычисляется таблица Лг (V), значение числа вершинного покрытия графа О находится по формуле
в0(О) = шт{с^) : Z С Уг}. (11)
Построение самого вершинного покрытия выполняется при обходе всех узлов дерева Т сверху вниз (от корня к листьям) с использованием созданных ранее таблиц динамического программирования. Для хранения О(п) таблиц, каждая из которых имеет размер О(к2к), необходима память О(к2кп). Обход дерева Т с О(п) узлами можно реализовать за время О(п). Время обработки каждого узла сопоставимо с размером создаваемых таблиц. Поэтому для задачи о вершинном покрытии время работы ЕРТ-алгоритма, реализующего метод динамического программирования по Б&Б-дереву ширины к, составляет О(к2кп). Это полностью согласуется с оценкой, приведенной в теореме Курселя. На практике эта оценка может быть более оптимистичной за счет применения Б&Б-дерева.
Рассмотрим конкретный граф О вместе с его деревом декомпозиции (рис. 4).
Рис. 4. Граф С и его оптимальное дерево декомпозиции ширины 2
Соответствующее Б&Б-дерево графа О изображено на рис. 5. Найдём наименьшее вершинное покрытие заданного графа с помощью описанного выше ЕРТ-алгоритма. Процесс подъёма по Б&Б-дереву начнём с узла 1. Это узел-лист. Узел 2 является узлом-
Рис. 5. Б&Я-дерево ширины 2. Узлу с номером % отвечает «мешок» X, % = 1, 2,..., 7
сепаратором и родителем для узла 1. Таблицы А1 и А2 отвечают узлам 1 и 2 (рис. 6, а и б). Исходя из (7), (8), А2 = Пф(А1), Ц = {#} и {с)}. Аналогично узлам 4 и 5 соответствуют таблицы А4, А5 (рис. 6,в и г) и А5 = Пф(А4), Ц = (у} и (с(^)}. Узел 3 — это узел-объединение по отношению к узлам 2 и 5. Для него таблица А'3 (рис. 6,д) содержит локальную информацию для подграфа С(Х3). Соединение А'3 с таблицей А2, а затем с таблицей А5 по формулам (9) и (10) даёт А3 (рис. 6,е). Узел 6 —узел-сепаратор. Для него А6 = Пф(А3), Ц = {у,^} и {с(^)} (рис. 6,ж). Корневой узел 7 —это узел-расширение по отношению к узлу 6. В соответствии с формулами (9) и (10) таблица А7 имеет вид, представленный на рис. 6,з. Таблица А7 отвечает корневому узлу. Применение формулы (11) к А7 даёт во(^) = 3.
А\ Аг Алс А$
9 V ей
0 0 ОС
0 1 1
1 0 1
1 1 2
9 ей
0 1
1 1
У и ей
0 0 оО
0 1 1
1 0 1
1 1 2
У ей
0 1
1 1
Аз Аз Аб Аі
У IV 9 ей
0 0 0 00
0 0 1 1
0 1 0 00
0 1 1 2
1 0 0 00
1 0 1 2
1 1 0 2
1 1 1 3
У IV 9 ей
0 0 0 00
0 0 1 2
0 1 0 00
0 1 1 3
1 0 0 00
1 0 1 2
1 1 0 3
1 1 1 3
У IV ей
0 0 2
0 1 3
1 0 2
1 1 3
X У IV с И
0 0 0 00
0 0 1 00
0 1 0 оо
0 1 1 3
1 0 0 3
1 0 1 4
1 1 0 3
1 1 1 4
Рис. 6. Таблицы динамического программирования для вычисления вершинного покрытия графа с рис. 4
Спуск по BfeS-дереву от корня к листьям определяет следующие наименьшие вершинные покрытия графа G : {x,y,g}, {x,g,u}, {y,w,g}, {y,w,v}. Заметим, что для исходного графа допустимы деревья декомпозиции, отличные от дерева, указанного на рис. 4, а значит, и Б&Б-деревья, несхожие с рассмотренным выше Б&Б-деревом. Решение задачи о вершинном покрытии на их основе приведёт, возможно, к другим оптимальным решениям, хотя неизменным будет значение ß0(G) = 3.
Очевидно, что приведённый выше FPT-алгоритм можно применять для взвешенной версии задачи о вершинном покрытии, а его идеи относительно правил формирования таблиц динамического программирования для различных типов узлов B&S-дерева — для решения других подобных графовых задач: нахождения наибольшего независимого множества вершин, поиска наибольшей клики, отыскания наименьшего доминирующего множества графа. Конечно, для этих задач необходимо уточнение формул вычисления числовых характеристик решения.
Заключение
Метод динамического программирования на основе дерева декомпозиции — один из современных способов преодоления вычислительной сложности NP-трудных задач выбора с помощью FPT-алгоритмов. В работе предложено бинарное сепараторное дерево декомпозиции, которое обеспечивает компромисс между размером и числом таблиц динамического программирования и расширяет область практического применения данного подхода. Реляционный взгляд на процесс динамического программирования (как процесс соединения таблиц базы данных, распределённой по узлам сети, конфигурация которой задаётся деревом декомпозиции) позволяет применять при решении задач выбора свойства ациклических гиперграфов и способствует алгоритмической конкретизации метода.
ЛИТЕРАТУРА
1. Downey R. and Fellows M. Parameterized complexity. New York: Springer Verlag, 1999.
2. Быкова В. В. FPT-алгоритмы и их классификация на основе эластичности // Прикладная дискретная математика. 2011. №2(12). С. 40-48.
3. Bodlaender H. L. Treewidth: Algorithmic techniques and results // LNCS. 1997. V. 1295. P. 19-36.
4. Компьютер и задачи выбора. М.: Наука, 1989.
5. Бытова В. В. Вычислительные аспекты древовидной ширины графа // Прикладная дискретная математика. 2011. №3(13). С. 65-79.
6. Мейер Д. Теория реляционных баз данных. М.: Мир, 1987.
7. Courcelle B. The monadic second-order logic of graphs. III. Tree decompositions, minors and complexity issues // RAIRO Inform. Theor. Appl. 1992. V. 26(3). P. 257-286.
8. Bodlaender H. L. and Kloks T. Efficient and constructive algorithms for the pathwidth and treewidth of graphs // J. Algorithms. 1996. V. 21. P. 358-402.
9. Бытова В. В. Математические методы анализа рекурсивных алгоритмов // Журнал СФУ. Математика и физика. 2008. № 1(3). С. 236-246.
10. Aspvall B., Proskurowski A., and Telle J. A. Memory requirements for table computations in partial k-tree algorithms // Algorithmica. 2000. V. 27(3). P. 382-394.
11. Bodlaender H. L. and Fomin F. V. Tree decompositions with small cost // Discr. Appl. Math. 2005. V. 145(2). P. 143-154.
12. Kloks T. Treewidth. Computations and Approximations. Springer Verlag. LNCS. 1994. V. 842.