В математической области теории графов остовное дерево T неориентированного графа G — это подграф, который является деревом , включающим все вершины G. [1] В общем случае граф может иметь несколько остовных деревьев, но несвязный граф не будет содержать остовного дерева (см. ниже о остовных лесах). Если все ребра G также являются ребрами остовного дерева T графа G , то G является деревом и идентично T (то есть дерево имеет уникальное остовное дерево, и оно является им самим).
Несколько алгоритмов поиска пути , включая алгоритм Дейкстры и алгоритм поиска A* , внутренне строят остовное дерево в качестве промежуточного шага в решении задачи.
Чтобы минимизировать затраты на электросети, проводные соединения, трубопроводы, автоматическое распознавание речи и т. д., люди часто используют алгоритмы, которые постепенно строят остовное дерево (или множество таких деревьев) в качестве промежуточных шагов в процессе поиска минимального остовного дерева . [2]
Интернет и многие другие телекоммуникационные сети имеют каналы передачи, которые соединяют узлы вместе в топологии сетки , которая включает некоторые петли. Чтобы избежать мостовых петель и петель маршрутизации , многие протоколы маршрутизации, разработанные для таких сетей, включая протокол связующего дерева , Open Shortest Path First , протокол маршрутизации на основе состояния канала , маршрутизацию на основе расширенного дерева и т. д., требуют, чтобы каждый маршрутизатор помнил связующее дерево. [3]
Специальный вид остовного дерева, дерево Сюонга , используется в топологической теории графов для поиска вложений графов с максимальным родом . Дерево Сюонга — это остовное дерево, такое, что в оставшемся графе число связанных компонентов с нечетным числом ребер минимально. Дерево Сюонга и связанное с ним вложение максимального рода можно найти за полиномиальное время . [4]
Дерево — это связный неориентированный граф без циклов . Это остовное дерево графа G , если оно охватывает G (то есть включает в себя каждую вершину G ) и является подграфом G (каждое ребро в дереве принадлежит G ). Остовное дерево связного графа G также можно определить как максимальный набор ребер G , не содержащий циклов, или как минимальный набор ребер, соединяющих все вершины.
Добавление всего одного ребра к остовному дереву создаст цикл; такой цикл называется фундаментальным циклом по отношению к этому дереву. Существует отдельный фундаментальный цикл для каждого ребра, не входящего в остовное дерево; таким образом, существует взаимно-однозначное соответствие между фундаментальными циклами и ребрами, не входящими в остовное дерево. Для связного графа с V вершинами любое остовное дерево будет иметь V − 1 ребро, и, таким образом, граф из E ребер и одно из его остовных деревьев будут иметь E − V + 1 фундаментальных циклов (количество ребер, вычтенное из количества ребер, включенных в остовное дерево; что дает количество ребер, не включенных в остовное дерево). Для любого заданного остовного дерева множество всех E − V + 1 фундаментальных циклов образует базис цикла , т. е. базис для пространства циклов . [5]
Двойственным к понятию фундаментального цикла является понятие фундаментального разреза относительно данного остовного дерева. При удалении только одного ребра остовного дерева вершины разбиваются на два непересекающихся множества. Фундаментальный разрез определяется как множество ребер, которые необходимо удалить из графа G для достижения того же разбиения. Таким образом, каждое остовное дерево определяет множество из V − 1 фундаментальных разрезов, по одному для каждого ребра остовного дерева. [6]
Двойственность между фундаментальными сечениями и фундаментальными циклами устанавливается путем отметки того, что ребра цикла, не входящие в остовное дерево, могут появляться только в сечениях других ребер цикла; и наоборот : ребра в остовном дереве могут появляться только в тех циклах, которые содержат ребро, соответствующее остовному множеству. Эта двойственность также может быть выражена с помощью теории матроидов , согласно которой остовное дерево является базой графического матроида , фундаментальный цикл является уникальной схемой внутри множества, образованной добавлением одного элемента к базе, а фундаментальные сечения определяются таким же образом из дуального матроида . [7]
Коллекция непересекающихся (несвязанных) деревьев описывается как лес . Связующий лес в графе — это подграф, который является лесом с дополнительным требованием. Используются два несовместимых требования, одно из которых встречается относительно редко.
Чтобы избежать путаницы между этими двумя определениями, Гросс и Йеллен (2005) предлагают термин «полный остовной лес» для остовного леса с тем же количеством компонентов, что и у данного графа (т. е. максимальный лес), в то время как Бонди и Мёрти (2008) вместо этого называют этот вид леса «максимальным остовным лесом» (что является излишним, поскольку максимальный лес обязательно содержит каждую вершину). [11]
Число t ( G ) остовных деревьев связного графа является хорошо изученным инвариантом .
В некоторых случаях t ( G ) легко вычислить напрямую:
В более общем случае, для любого графа G число t ( G ) можно вычислить за полиномиальное время как определитель матрицы, полученной из графа, используя теорему Кирхгофа о матричном дереве . [14]
В частности, для вычисления t ( G ) строится матрица Лапласа графа, квадратная матрица, в которой строки и столбцы индексируются вершинами G. Запись в строке i и столбце j имеет одно из трех значений:
Полученная матрица является сингулярной , поэтому ее определитель равен нулю. Однако удаление строки и столбца для произвольно выбранной вершины приводит к меньшей матрице, определитель которой равен в точности t ( G ).
Если G — граф или мультиграф , а e — произвольное ребро G , то число t ( G ) остовных деревьев G удовлетворяет рекуррентному соотношению удаления-сокращения t ( G ) = t ( G − e ) + t ( G / e ), где G − e — мультиграф, полученный удалением e , а G / e — сокращение G на e . [ 15] Член t ( G − e ) в этой формуле подсчитывает остовные деревья G , которые не используют ребро e , а член t ( G / e ) подсчитывает остовные деревья G , которые используют e .
В этой формуле, если заданный граф G является мультиграфом , или если стягивание приводит к тому, что две вершины соединяются друг с другом несколькими ребрами, то избыточные ребра не должны удаляться, поскольку это приведет к неправильной сумме. Например, граф связей, соединяющий две вершины k ребрами, имеет k различных остовных деревьев, каждое из которых состоит из одного из этих ребер.
Полином Тутта графа можно определить как сумму по остовным деревьям графа, членов, вычисленных из "внутренней активности" и "внешней активности" дерева. Его значение при аргументах (1,1) является числом остовных деревьев или, в несвязном графе, числом максимальных остовных лесов. [16]
Полином Тутте также может быть вычислен с использованием рекуррентного уравнения удаления-сжатия, но его вычислительная сложность высока: для многих значений его аргументов его точное вычисление является #P-полным , и его также трудно аппроксимировать с гарантированным отношением аппроксимации . Точка (1,1), в которой его можно оценить с помощью теоремы Кирхгофа, является одним из немногих исключений. [17]
Одно остовное дерево графа может быть найдено за линейное время либо с помощью поиска в глубину , либо с помощью поиска в ширину . Оба эти алгоритма исследуют заданный граф, начиная с произвольной вершины v , проходя по соседям вершин, которые они обнаруживают, и добавляя каждого неисследованного соседа в структуру данных, которая будет исследована позже. Они различаются тем, является ли эта структура данных стеком ( в случае поиска в глубину) или очередью (в случае поиска в ширину). В любом случае можно сформировать остовное дерево, соединив каждую вершину, кроме корневой вершины v , с вершиной, из которой она была обнаружена. Это дерево известно как дерево поиска в глубину или дерево поиска в ширину в соответствии с алгоритмом исследования графа, использованным для его построения. [18] Деревья поиска в глубину являются особым случаем класса остовных деревьев, называемых деревьями Тремо , названными в честь первооткрывателя поиска в глубину в 19 веке. [19]
Связующие деревья важны в параллельных и распределенных вычислениях, как способ поддержания связи между набором процессоров; см., например, протокол связующего дерева, используемый устройствами канального уровня OSI , или Shout (протокол) для распределенных вычислений. Однако методы построения связующих деревьев в глубину и ширину на последовательных компьютерах не очень подходят для параллельных и распределенных компьютеров. [20] Вместо этого исследователи разработали несколько более специализированных алгоритмов для поиска связующих деревьев в этих моделях вычислений. [21]
В некоторых областях теории графов часто бывает полезно найти минимальное остовное дерево взвешенного графа . Также изучались другие задачи оптимизации остовных деревьев, включая максимальное остовное дерево, минимальное дерево, охватывающее не менее k вершин, остовное дерево с наименьшим количеством ребер на вершину , остовное дерево с наибольшим числом листьев , остовное дерево с наименьшим количеством листьев (тесно связанное с проблемой гамильтонового пути ), остовное дерево минимального диаметра и остовное дерево минимального расширения. [22] [23]
Оптимальные проблемы остовного дерева также изучались для конечных множеств точек в геометрическом пространстве, таком как евклидова плоскость . Для таких входных данных остовное дерево снова является деревом, вершинами которого являются заданные точки. Качество дерева измеряется так же, как и в графе, используя евклидово расстояние между парами точек в качестве веса для каждого ребра. Таким образом, например, евклидово минимальное остовное дерево совпадает с графовым минимальным остовным деревом в полном графе с евклидовыми весами ребер. Однако для решения задачи оптимизации не обязательно строить этот граф; например, задача евклидова минимального остовного дерева может быть решена более эффективно за время O ( n log n ) путем построения триангуляции Делоне и последующего применения линейного алгоритма планарного графа минимального остовного дерева к полученной триангуляции. [22]
Связующее дерево, выбранное случайным образом из всех совпадающих деревьев с равной вероятностью, называется равномерным остовным деревом . Алгоритм Уилсона может быть использован для генерации равномерных остовных деревьев за полиномиальное время с помощью процесса случайного обхода по заданному графу и стирания циклов, созданных этим обходом. [24]
Альтернативной моделью для генерации остовных деревьев случайным, но не равномерным образом является случайное минимальное остовное дерево . В этой модели ребрам графа назначаются случайные веса, а затем строится минимальное остовное дерево взвешенного графа. [25]
Поскольку граф может иметь экспоненциально много остовных деревьев, невозможно перечислить их все за полиномиальное время . Однако известны алгоритмы для перечисления всех остовных деревьев за полиномиальное время на дерево. [26]
Каждый конечный связный граф имеет остовное дерево. Однако для бесконечных связных графов существование остовных деревьев эквивалентно аксиоме выбора . Бесконечный граф связен, если каждая пара его вершин образует пару конечных точек конечного пути. Как и в случае с конечными графами, дерево является связным графом без конечных циклов, и остовное дерево может быть определено либо как максимальный ациклический набор ребер, либо как дерево, содержащее каждую вершину. [27]
Деревья в графе могут быть частично упорядочены по их отношению подграфа, и любая бесконечная цепь в этом частичном порядке имеет верхнюю границу (объединение деревьев в цепи). Лемма Цорна , одно из многих эквивалентных утверждений аксиомы выбора, требует, чтобы частичный порядок, в котором все цепи ограничены сверху, имел максимальный элемент; в частичном порядке на деревьях графа этот максимальный элемент должен быть остовным деревом. Следовательно, если предполагается лемма Цорна, каждый бесконечный связный граф имеет остовное дерево. [27]
В другом направлении, если задано семейство множеств , можно построить бесконечный граф, такой, что каждое остовное дерево графа соответствует функции выбора семейства множеств. Следовательно, если каждый бесконечный связный граф имеет остовное дерево, то аксиома выбора верна. [28]
Идея остовного дерева может быть обобщена на направленные мультиграфы. [29] Для заданной вершины v на направленном мультиграфе G ориентированное остовное дерево T с корнем в v является ациклическим подграфом G , в котором каждая вершина, отличная от v, имеет исходящую степень 1. Это определение выполняется только тогда, когда «ветви» T указывают на v .
Для деревьев и древовидных структур можно добавить прилагательное "охватывающий", чтобы обозначить, что граф, рассматриваемый как лес/ветвление, состоит из одного дерева/древовидной структуры, включающей все узлы в графе.