Введение

Отображение графа в дерево, древовидная структура графов.

В теории графов, дерево декомпозиции — это отображение графа в дерево, которое может быть использовано для определения древовидности графа и ускорения решения определенных вычислительных задач на графе. Деревья декомпозиции также называются деревьями соединений, деревьями клик или объединительными деревьями. Они играют важную роль в задачах, таких как вероятностный вывод, задача об удовлетворимости ограничений, оптимизация запросов и разложение матриц. Концепция дерева декомпозиции была первоначально введена, а затем повторно открыта и с тех пор изучалась многими другими авторами.

Ширина дерева

Ширина разложения дерева равна размеру его наибольшего множества минус один. Древесная ширина tw(G) графа G — это минимальная ширина среди всех возможных разложений дерева для G. В этом определении размер наибольшего множества уменьшается на единицу, чтобы древесная ширина дерева была равна одному. Древесную ширину можно также определить на основе других структур, отличных от разложений дерева, включая хордальные графы, brambles и havens. Определение того, имеет ли данный граф G древесную ширину не более заданной величины k, является NP-полной задачей. Однако, если k — фиксированная константа, графы с древесной шириной k можно распознать и построить для них дерево разложения ширины k за линейное время. Многие алгоритмические задачи, NP-полные для произвольных графов, могут быть эффективно решены с помощью динамического программирования для графов с ограниченной древесной шириной, используя разложения дерева этих графов. В качестве примера рассмотрим задачу нахождения максимального независимого множества в графе с древесной шириной k. Чтобы решить эту задачу, сначала произвольно выберите один из узлов разложения дерева в качестве корня. Для узла разложения дерева пусть S будет объединением множеств, нисходящих от него. Для независимого множества пусть A(S, i) обозначает размер наибольшего независимого подмножества I из S, такого что I ⊆ S. Аналогично, для пары смежных узлов i и j, где j находится дальше от корня дерева, чем i, и независимого множества пусть B(S, i, j) обозначает размер наибольшего независимого подмножества I из S, такого что I ⊆ S. Мы можем вычислить эти значения A и B, проходя по дереву снизу вверх:

где сумма в вычислении A(S, i) берется по всем дочерним узлам узла i.
На каждом узле или ребре необходимо вычислить значения для не более k множеств S, поэтому, если k — константа, все вычисления занимают постоянное время на ребро или узел. Размер максимального независимого множества — это наибольшее значение, хранящееся в корневом узле, а само максимальное независимое множество можно найти (как это обычно делается в алгоритмах динамического программирования) путем обратного прохода по этим сохраненным значениям, начиная с этого наибольшего значения. Таким образом, в графах с ограниченной древесной шириной задача максимального независимого множества может быть решена за линейное время. Подобные алгоритмы применимы ко многим другим задачам теории графов. Этот подход динамического программирования используется в машинном обучении через алгоритм дерева соединений для распространения убеждений в графах с ограниченной древесной шириной. Он также играет ключевую роль в алгоритмах для вычисления древесной ширины и построения разложений дерева: обычно такие алгоритмы состоят из первого шага, который приближает древесную ширину, строя разложение дерева с этой приблизительной шириной, и второго шага, который выполняет динамическое программирование в приблизительном разложении дерева для вычисления точного значения древесной ширины.