В комбинаторной математике задача о дереве Штейнера или задача о минимальном дереве Штейнера , названная в честь Якоба Штейнера , является общим термином для класса задач комбинаторной оптимизации . Хотя задачи о дереве Штейнера могут быть сформулированы в ряде настроек, все они требуют оптимального соединения для заданного набора объектов и предопределенной целевой функции . Одним из известных вариантов, который часто используется как синоним термина задача о дереве Штейнера, является задача о дереве Штейнера в графах . При наличии неориентированного графа с неотрицательными весами ребер и подмножества вершин, обычно называемых терминалами, задача о дереве Штейнера в графах требует дерева минимального веса, которое содержит все терминалы (но может включать дополнительные вершины) и минимизирует общий вес его ребер. Другими известными вариантами являются задача о евклидовом дереве Штейнера и задача о прямолинейном минимальном дереве Штейнера .
Задачу о дереве Штейнера в графах можно рассматривать как обобщение двух других известных задач комбинаторной оптимизации: задачи о (неотрицательном) кратчайшем пути и задачи о минимальном остовном дереве . Если задача о дереве Штейнера в графах содержит ровно два терминала, она сводится к поиску кратчайшего пути. Если же все вершины являются терминалами, задача о дереве Штейнера в графах эквивалентна задаче о минимальном остовном дереве. Однако, хотя и задача о неотрицательном кратчайшем пути, и задача о минимальном остовном дереве разрешимы за полиномиальное время , для задачи о дереве Штейнера такое решение неизвестно. Ее вариант решения , спрашивающий, имеет ли заданный вход дерево с весом меньше некоторого заданного порога, является NP-полным , что подразумевает, что вариант оптимизации, спрашивающий о дереве с минимальным весом в заданном графе, является NP-трудным . Фактически, вариант решения был среди исходных 21 NP-полных задач Карпа . Задача о дереве Штейнера в графах имеет приложения в схемах схем или проектировании сетей . Однако практические приложения обычно требуют вариаций, что приводит к появлению множества вариантов задачи о дереве Штейнера.
Большинство версий задачи дерева Штейнера являются NP-трудными, но некоторые ограниченные случаи могут быть решены за полиномиальное время. Несмотря на пессимистическую сложность в худшем случае , несколько вариантов задачи дерева Штейнера, включая задачу дерева Штейнера в графах и прямолинейную задачу дерева Штейнера, могут быть эффективно решены на практике, даже для крупномасштабных реальных задач. [1] [2]
Первоначальная задача была сформулирована в форме, которая стала известна как задача евклидова дерева Штейнера или геометрическая задача дерева Штейнера : даны N точек на плоскости . Требуется соединить их линиями минимальной общей длины таким образом, чтобы любые две точки могли быть соединены между собой отрезками прямых либо напрямую, либо через другие точки и отрезки прямых.
Хотя задача названа в честь Штайнера, впервые она была поставлена в 1811 году Жозефом Диезом Жергонном в следующей форме: «Несколько городов расположены в известных местах на плоскости; задача состоит в том, чтобы связать их вместе системой каналов, общая длина которых должна быть как можно меньше». [3]
Можно показать, что соединительные отрезки линий пересекаются только в конечных точках и образуют дерево, отсюда и название задачи.
Проблема для N = 3 рассматривалась давно и быстро была расширена до проблемы поиска звездной сети с одним хабом, соединяющим все N заданных точек, с минимальной общей длиной. Однако, хотя полная проблема дерева Штейнера была сформулирована в письме Гаусса , ее первое серьезное рассмотрение было в статье 1934 года, написанной на чешском языке Войтехом Ярником и Милошем Кёсслером . Эта статья долгое время оставалась незамеченной, но она уже содержит «практически все общие свойства деревьев Штейнера», позже приписанные другим исследователям, включая обобщение проблемы с плоскости на более высокие измерения. [4]
Для евклидовой задачи Штейнера точки, добавленные к графу ( точки Штейнера ), должны иметь степень три, а три ребра, инцидентные такой точке, должны образовывать три угла по 120 градусов (см. Точка Ферма ). Из этого следует, что максимальное число точек Штейнера, которое может иметь дерево Штейнера, равно N − 2 , где N — начальное число заданных точек. (все эти свойства были установлены еще Жергонном.)
Для N = 3 возможны два случая: если треугольник, образованный заданными точками, имеет все углы, которые меньше 120 градусов, то решение дается точкой Штейнера, расположенной в точке Ферма ; в противном случае решение дается двумя сторонами треугольника, которые встречаются под углом 120 градусов или более.
Для общего N задача евклидова дерева Штейнера является NP-трудной , и, следовательно, неизвестно, можно ли найти оптимальное решение с помощью алгоритма с полиномиальным временем . Однако существует схема аппроксимации с полиномиальным временем (PTAS) для евклидовых деревьев Штейнера, т. е. решение , близкое к оптимальному , может быть найдено за полиномиальное время. [5] Неизвестно, является ли задача евклидова дерева Штейнера NP-полной, поскольку принадлежность к классу сложности NP неизвестна.
Задача о прямолинейном дереве Штейнера является вариантом геометрической задачи о дереве Штейнера на плоскости, в которой евклидово расстояние заменяется прямолинейным расстоянием . Задача возникает при физическом проектировании автоматизации электронного проектирования . В схемах VLSI прокладка проводов осуществляется проводами , которые часто ограничены правилами проектирования, чтобы проходить только в вертикальном и горизонтальном направлениях, поэтому задача о прямолинейном дереве Штейнера может использоваться для моделирования прокладки сетей с более чем двумя терминалами. [6]
Деревья Штейнера были широко изучены в контексте взвешенных графов . Прототипом, возможно, является задача о дереве Штейнера в графах . Пусть G = ( V , E ) — неориентированный граф с неотрицательными весами ребер c и пусть S ⊆ V — подмножество вершин, называемых терминалами . Дерево Штейнера — это дерево в G , охватывающее S . Существует две версии задачи: в задаче оптимизации, связанной с деревьями Штейнера, задача состоит в том, чтобы найти дерево Штейнера с минимальным весом; в задаче принятия решения веса ребер являются целыми числами, а задача состоит в том, чтобы определить, существует ли дерево Штейнера, общий вес которого не превышает предопределенного натурального числа k . Задача принятия решения является одной из 21 NP-полной задачи Карпа ; следовательно, задача оптимизации является NP-трудной . Задачи о дереве Штейнера в графах применяются к различным проблемам в исследованиях и промышленности, [7] включая многоадресную маршрутизацию [8] и биоинформатику. [9]
Частным случаем этой проблемы является случай, когда G является полным графом , каждая вершина v ∈ V соответствует точке в метрическом пространстве , а веса ребер w ( e ) для каждого e ∈ E соответствуют расстояниям в пространстве. Иначе говоря, веса ребер удовлетворяют неравенству треугольника . Этот вариант известен как задача метрического дерева Штейнера . Учитывая пример (неметрической) задачи дерева Штейнера, мы можем преобразовать его за полиномиальное время в эквивалентный пример задачи метрического дерева Штейнера; преобразование сохраняет фактор аппроксимации. [10]
В то время как евклидова версия допускает PTAS, известно, что метрическая задача дерева Штейнера является APX-полной , т. е., если P = NP , невозможно достичь коэффициентов аппроксимации, которые сколь угодно близки к 1 за полиномиальное время. Существует алгоритм с полиномиальным временем, который аппроксимирует минимальное дерево Штейнера с точностью до множителя ; [11] однако, аппроксимация в пределах множителя является NP-трудной. [12] Для ограниченного случая задачи дерева Штейнера с расстояниями 1 и 2 известен алгоритм аппроксимации 1,25. [13] Карпинский и Александр Зеликовский построили PTAS для плотных экземпляров задач дерева Штейнера. [14]
В частном случае задачи о графе, задаче о дереве Штейнера для квазидвудольных графов , требуется, чтобы S включало по крайней мере одну конечную точку каждого ребра в G.
Проблема дерева Штейнера также была исследована в более высоких измерениях и на различных поверхностях. Алгоритмы для нахождения минимального дерева Штейнера были найдены на сфере, торе, проективной плоскости , широких и узких конусах и других. [15]
Другие обобщения задачи дерева Штейнера — это задача сети Штейнера с k -связными ребрами и задача сети Штейнера с k -связными вершинами , где цель состоит в том, чтобы найти граф с k -связными ребрами или граф с k -связными вершинами, а не любой связный граф. Еще одно хорошо изученное [16] обобщение — это задача проектирования живучей сети (SNDP) , где задача состоит в том, чтобы соединить каждую пару вершин с заданным числом (возможно, 0) путей, не пересекающихся по ребрам или вершинам.
Проблема Штейнера была также сформулирована в общем случае метрических пространств и, возможно, для бесконечного числа точек. [17]
Общую задачу дерева Штейнера для графа можно аппроксимировать путем вычисления минимального остовного дерева подграфа метрического замыкания графа, индуцированного конечными вершинами, как впервые опубликовано в 1981 году Коу и др. [18] Метрическое замыкание графа G — это полный граф, в котором каждое ребро взвешено по кратчайшему расстоянию между узлами в G. Этот алгоритм создает дерево, вес которого находится в пределах 2 − 2/ t от веса оптимального дерева Штейнера, где t — количество листьев в оптимальном дереве Штейнера; это можно доказать, рассмотрев тур коммивояжера по оптимальному дереву Штейнера. Это приближенное решение вычисляется за полиномиальное время O(|S| |V|²) , если сначала решить задачу кратчайших путей для всех пар для вычисления метрического замыкания, а затем решить задачу минимального остовного дерева .
Другой популярный алгоритм для аппроксимации дерева Штейнера в графах был опубликован Такахаши и Мацуямой в 1980 году. [19] Их решение постепенно строит дерево Штейнера, начиная с произвольной вершины и многократно добавляя кратчайший путь от дерева до ближайшей вершины в S, которая еще не была добавлена. Этот алгоритм также имеет время выполнения O(| S | | V |²) и создает дерево, вес которого находится в пределах 2 − 2/| S | от оптимального.
В 1986 году Ву и др. [20] значительно улучшили время выполнения, избежав предварительного вычисления кратчайших путей всех пар. Вместо этого они используют аналогичный подход к алгоритму Крускала для вычисления минимального остовного дерева, начиная с леса из | S | непересекающихся деревьев и «выращивая» их одновременно с помощью поиска в ширину, напоминающего алгоритм Дейкстры , но начиная с нескольких начальных вершин. Когда поиск встречает вершину, которая не принадлежит текущему дереву, два дерева объединяются в одно. Этот процесс повторяется до тех пор, пока не останется только одно дерево. Используя кучу (структуру данных) для реализации очереди с приоритетами и структуру данных непересекающегося множества для отслеживания того, к какому дереву принадлежит каждая посещенная вершина, этот алгоритм достигает времени выполнения O(| E | log | V |), хотя он не улучшает соотношение затрат 2 − 2/ t из Коу и др.
В серии статей были представлены алгоритмы аппроксимации для задачи минимального дерева Штейнера с коэффициентами аппроксимации, которые улучшили коэффициент 2 − 2/ t . Эта последовательность достигла кульминации с алгоритмом Робинса и Зеликовского в 2000 году, который улучшил коэффициент до 1,55 путем итеративного улучшения минимального по стоимости терминального остовного дерева. Однако совсем недавно Бирка и др. доказали аппроксимацию с использованием релаксации линейного программирования и техники, называемой итеративным рандомизированным округлением. [11]
Известно, что общая задача дерева графа Штейнера является поддающейся обработке с фиксированным параметром , с числом терминалов в качестве параметра, с помощью алгоритма Дрейфуса-Вагнера. [21] [22] Время работы алгоритма Дрейфуса-Вагнера равно , где n — число вершин графа, а S — множество терминалов. Существуют более быстрые алгоритмы, работающие за время для любого или, в случае малых весов, за время, где W — максимальный вес любого ребра. [23] [24] Недостатком вышеупомянутых алгоритмов является то, что они используют экспоненциальное пространство ; существуют алгоритмы с полиномиальным пространством, работающие за время и время. [25] [26]
Известно, что общая задача дерева Штейнера для графа не имеет параметризованного алгоритма, работающего за время для любого , где t — число ребер оптимального дерева Штейнера, если только задача покрытия множеств не имеет алгоритма, работающего за время для некоторого , где n и m — число элементов и число множеств, соответственно, экземпляра задачи покрытия множеств. [27] Кроме того, известно, что задача не допускает полиномиального ядра , если только , даже параметризованного числом ребер оптимального дерева Штейнера и если все веса ребер равны 1. [28]
В то время как задача дерева графа Штейнера не допускает полиномиального ядра , если оно не параметризовано числом терминалов, она допускает схему приближенного ядра полиномиального размера (PSAKS): для любого можно вычислить ядро полиномиального размера, что теряет лишь один фактор в качестве решения. [29]
При параметризации задачи дерева графа Штейнера числом p нетерминалов (вершин Штейнера) в оптимальном решении задача является W[1]-трудной (в отличие от параметризации числом терминалов, как упоминалось выше). В то же время задача является APX-полной и, таким образом, не допускает PTAS , если только P = NP . Однако существует параметризованная схема аппроксимации , которая для любого вычисляет -аппроксимацию за время. [30] Также существует PSAKS для этой параметризации. [30]
Отношение Штейнера — это супремум отношения общей длины минимального остовного дерева к минимальному дереву Штейнера для набора точек на евклидовой плоскости. [31]
В задаче о евклидовом дереве Штейнера предполагается, что отношение Штейнера равно , отношению, которое достигается тремя точками в равностороннем треугольнике с остовным деревом, которое использует две стороны треугольника и деревом Штейнера, которое соединяет точки через центроид треугольника. Несмотря на более ранние заявления о доказательстве, [32] гипотеза все еще остается открытой. [33] Лучшая общепринятая верхняя граница для задачи — 1,2134, по Чангу и Грэму (1985).
Для прямоугольной задачи дерева Штейнера отношение Штейнера равно в точности , отношению, которое достигается четырьмя точками в квадрате с остовным деревом, которое использует три стороны квадрата, и деревом Штейнера, которое соединяет точки через центр квадрата. [34] Точнее, для расстояния квадрат должен быть наклонен относительно осей координат, в то время как для расстояния квадрат должен быть выровнен по осям.